←2019-08 2019-09 2019-10→ ↑2019 ↑all
2019-09-01
00:04:33 -!- tromp has quit (Ping timeout: 252 seconds).
00:15:11 -!- b_jonas has quit (Remote host closed the connection).
00:19:07 -!- unlimiter has joined.
00:25:21 -!- unlimiter has quit (Quit: WeeChat 2.5).
00:40:50 -!- Phantom_Hoover has quit (Quit: Leaving).
00:52:24 <esowiki> [[Deadfish]] M https://esolangs.org/w/index.php?diff=65851&oldid=65850 * A * (+102) /* Julia */
00:53:12 <esowiki> [[Deadfish]] M https://esolangs.org/w/index.php?diff=65852&oldid=65851 * A * (+257) /* R */
00:54:02 <esowiki> [[Deadfish]] M https://esolangs.org/w/index.php?diff=65853&oldid=65852 * A * (+1422) /* A:; */
01:13:10 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=65854&oldid=65635 * A * (+45) /* Sandbox */ new section
02:06:20 -!- atslash has quit (Quit: This computer has gone to sleep).
03:21:29 <esowiki> [[User talk:Zzo38]] https://esolangs.org/w/index.php?diff=65855&oldid=52832 * YamTokTpaFa * (+503) /* I'd like to learn about AAAAAAAAAAAAAA!!!! more. */ new section
03:22:35 -!- nfd9001 has quit (Ping timeout: 258 seconds).
03:23:17 <esowiki> [[AAAAAAAAAAAAAA!!!!]] https://esolangs.org/w/index.php?diff=65856&oldid=63961 * YamTokTpaFa * (+130) /* See Also */
03:35:19 <esowiki> [[Talk:ABCDXYZ]] N https://esolangs.org/w/index.php?oldid=65857 * YamTokTpaFa * (+127) Created page with "== Link to implementation? == --~~~~"
04:29:29 -!- xkapastel has quit (Quit: Connection closed for inactivity).
04:42:22 -!- nfd9001 has joined.
05:11:11 -!- MrBismuth has joined.
05:16:24 -!- tromp has joined.
05:20:59 -!- tromp has quit (Ping timeout: 252 seconds).
06:04:08 -!- Frater_EST has joined.
06:42:53 -!- tromp has joined.
06:43:47 -!- tromp has quit (Remote host closed the connection).
06:43:59 -!- tromp has joined.
07:07:03 <esowiki> [[User:Dtuser1337/Sandbox]] https://esolangs.org/w/index.php?diff=65858&oldid=65843 * Dtuser1337 * (-157) /* commands */
07:07:57 <esowiki> [[User:Dtuser1337/Sandbox]] https://esolangs.org/w/index.php?diff=65859&oldid=65858 * Dtuser1337 * (-17) /* commands */
07:08:29 <esowiki> [[User:Dtuser1337/Sandbox]] https://esolangs.org/w/index.php?diff=65860&oldid=65859 * Dtuser1337 * (-12) /* commands */
07:09:04 <esowiki> [[User:Dtuser1337/Sandbox]] https://esolangs.org/w/index.php?diff=65861&oldid=65860 * Dtuser1337 * (+0) /* Hello world! */
07:11:24 <esowiki> [[User:Dtuser1337/Sandbox]] https://esolangs.org/w/index.php?diff=65862&oldid=65861 * Dtuser1337 * (+17) /* string types */
07:29:46 <esowiki> [[User:Dtuser1337/Sandbox]] https://esolangs.org/w/index.php?diff=65863&oldid=65862 * Dtuser1337 * (+39) /* commands */
08:06:29 -!- AnotherTest has joined.
08:07:19 -!- ArthurStrong has joined.
08:32:42 -!- atslash has joined.
08:36:16 -!- ArthurStrong has quit (Ping timeout: 246 seconds).
08:40:26 -!- Lord_of_Life has quit (Ping timeout: 244 seconds).
08:42:51 -!- Lord_of_Life has joined.
08:50:41 -!- Frater_EST has left.
09:12:32 -!- nfd9001 has quit (Ping timeout: 245 seconds).
09:26:25 -!- nfd9001 has joined.
09:30:39 -!- ArthurStrong has joined.
09:34:35 -!- Lykaina has joined.
09:34:45 <Lykaina> B00HAE00AB00eAE00AB00lAE00AB00lAE00AB00oAE00AB00,AE00AB00 AE00AB00wAE00AB00oAE00AB00rAE00AB00lAE00AB00dAE00AB00!AE00AG
09:35:19 <Lykaina> do you like it?
09:37:28 <shachaf> Is this it?
09:39:40 <Lykaina> current sample
09:40:40 <Lykaina> still working on the specifics
09:41:18 <Lykaina> it's a "Hello, world!" program
09:43:32 <Lykaina> B00HAE00A = put 00 'H' act out 00 act
09:45:43 <Lykaina> there are still numerous bugs to be worked out
09:47:28 <Lykaina> and figuring out how i will code this in c
09:48:56 <Lykaina> like, i think i'm typing in prefix notation when i should be using postfix
09:53:55 <Lykaina> B00HAE00A maybe should be 4800BA00EA
09:59:23 <Lykaina> 480000BA00EA690000BA00EA210000BA00EAG
09:59:31 <Lykaina> that's more like it
10:02:05 <Lykaina> crap, move the 'G' at the end to the beginning so we get the famous "!iH" message
10:04:04 <Lykaina> i'll type more *after* i have these bugs worked out.
10:09:15 -!- arseniiv has joined.
10:42:23 <Lykaina> this make more sense?
10:42:29 <Lykaina> 000001@C000b00@K00GB00F000101@Q01@CL.Hello, world!
11:06:45 -!- b_jonas has joined.
11:18:58 -!- sprocklem has quit (Ping timeout: 268 seconds).
11:20:26 -!- sprocklem has joined.
11:46:57 -!- atslash has quit (Ping timeout: 244 seconds).
11:47:13 -!- atslash has joined.
12:36:03 -!- Frater_EST has joined.
13:35:28 -!- Frater_EST has quit (Remote host closed the connection).
13:38:53 <int-e> I don't recognize the language, which makes this rather boring.
13:39:48 <arseniiv> Lykaina: I presume what’s considered esoteric in part depends on our history. By this day, there is many things which were novel in their days because of obfuscation of code. Now, obfuscation alone is usually not enough to be interesting
13:39:57 <Lykaina> L100010@Q10@B00@D00@Cb00000@J000010B.Hello, world!
13:41:16 <int-e> Seriously, you could be pasting random strings and I would be just as thrilled.
13:41:27 <Lykaina> oh
13:41:38 <arseniiv> several people don’t consider obfuscation alone esoteric from the start, even. Ideally, a good esolang is a whole from which you can’t subtract anything or add anything to it (ideally)
13:41:58 <arseniiv> so it could include several striking ideas
13:42:18 <arseniiv> though sometimes there are too many. Though usually it’s pretty subjective
13:43:23 <arseniiv> I can’t advice, my esolangs are quite ordinary
13:43:36 <arseniiv> though one time I had an obfuscation idea
13:44:34 <arseniiv> it was to represent various constructs of a simple functional language by fearful mathematical expressions like integrals
13:44:52 <int-e> Lykaina: I might care if I knew how to decipher this, that is, what the underlying language is... then I could jump to the meta level and ponder questions like computational power, the ability to make quines, stuff like that, which I find interesting.
13:45:02 <arseniiv> an anonymous function was expressed as ∫ body d var
13:45:33 <int-e> (That's not a promise though... a lot of the time I find something too similar to something else I already know and leave it at that.)
13:45:41 <arseniiv> it was quite fun for me, though I don’t think someone would like write in it more than ten or so programs
13:45:54 <Lykaina> https://paste.ee/p/p4BVc
13:46:00 <int-e> arseniiv: yes, indefinite integrals have binders! :)
13:46:05 <arseniiv> I was glad how it looked in LaTeX
13:46:18 <arseniiv> int-e: indeed, that was why I used them
13:46:36 <int-e> (definite ones as well, but they also have bounds, which are a bit odd in programming... especially since you get two of them)
13:46:51 <int-e> Lykaina: thanks
13:46:56 <arseniiv> maybe I’d described that draft on the wiki for fun but it requires math support :P
13:47:59 <int-e> . o O ( Hosted by cloudflare: [email protected]@[email protected]@[email protected], world! )
13:50:02 <b_jonas> yeah, I've seen such code in mailing list archives
13:51:54 <Lykaina> A - M leave nothing behind, N - Z leave a single value behind. forgot to type that.
13:52:03 <arseniiv> int-e: oh I was wrong, an integral is a function definition, ∫ anonymous-function-body d defined-name
13:53:37 <arseniiv> I like my named let syntax more: \prod_name arg1 ∧ value1 ∨ … ∨ argn ∧ valuen ∨ body
13:54:13 <int-e> arseniiv: that's nasty :P
13:54:36 <int-e> arseniiv: I guess you called that language "continuous integration" to make it easy to find on google
13:54:54 <arseniiv> int-e: (rofl)
13:56:02 <Lykaina> https://paste.ee/p/Orcqj
13:56:12 <Lykaina> sorry about that
13:56:50 <arseniiv> int-e: also there are string literals which can contain [A-Za-z] and are written in \mathfrak
13:58:53 <int-e> Lykaina: is the "jump counter" what would normally be a "program counter"?
13:59:17 <int-e> arseniiv: stylish
13:59:23 <Lykaina> oh no...
13:59:57 <Lykaina> it counts jump recursion from while or if ops
14:00:25 <Lykaina> name is holdover from earlier draft
14:00:30 <int-e> ah
14:00:34 <arseniiv> so Hello world in TeX syntax will be \{\mathfrak{Hello}^\sigma\{p_{32}\
14:00:36 <arseniiv> oh
14:00:45 <arseniiv> I was not finished
14:02:28 <arseniiv> \{\mathfrak{Hello}^\sigma\{p_{32}\mid\mathrm{sg}\}^\sigma\mathfrak{world}^\sigma\{p_{33}\mid\mathrm{sg}\}\mid\mathscr E\}
14:02:51 <esowiki> [[User:FAKE1007]] N https://esolangs.org/w/index.php?oldid=65864 * FAKE1007 * (+9) Created page with "Hi there."
14:04:17 <int-e> Lykaina: I don't think I can piece it together just yet. Btw, for stack manipulation, there's the notation (from Forth, I believe) i1 ... in -- o1 ... om, so for example addition could be specified as a b -- a+b.
14:05:28 <arseniiv> instead of \{ arg \mid f \}, one should really write \varepsilon^{f}arg (or arg^{f}\varepsilon), but the former deprecated syntax is just imaginarily-deprecated; a1 ^{f} a2 ^{f} a3 is equivalent to \{ a1, a2, a3 \mid f \} and so on and \{ \mid f \} ≡ \varepsilon^{f}
14:06:21 <int-e> arseniiv: I'm not really following anymore btw.
14:07:43 <arseniiv> it’s okay (for completeness, σ concatenates lists, sg(a) gives [a], p_n means n, strings are lists of integers, ℰ writes a string to output)
14:12:07 <Lykaina> int-e: thanks for looking
14:21:51 <Lykaina> making some minor fixes, no point in re-uploading
14:51:25 -!- ArthurStrong has quit (Remote host closed the connection).
14:57:15 <Lykaina> Simplification:
14:57:16 <Lykaina> Stack 1: B@100000K@000012C@00D@00LA
14:57:16 <Lykaina> Stack 2: Hello, world!
14:57:41 <Lykaina> damn
14:58:11 <Lykaina> Stack 1: B@100000K@000021C@00D@00LA
14:59:02 <Lykaina> this is with stacks being read from left
15:00:03 <esowiki> [[Random Malbolge]] N https://esolangs.org/w/index.php?oldid=65865 * Palaiologos * (+703) Created page with "Random Malbolge is esoteric programming language made by [[User:Palaiologos]] in 2019. Programs in Random Malbolge have following form: ``` nChars nOffset rSeed [... n times]..."
15:00:46 <esowiki> [[Random Malbolge]] M https://esolangs.org/w/index.php?diff=65866&oldid=65865 * Palaiologos * (+10) Fix the code formatting.
15:01:43 <esowiki> [[Language list]] https://esolangs.org/w/index.php?diff=65867&oldid=65701 * Palaiologos * (+22)
15:45:22 -!- atslash has quit (Ping timeout: 246 seconds).
15:46:13 -!- atslash has joined.
16:03:36 <Lykaina> with current set of ops: JU00030U4S000AG ~= putchar(rand()%10 + 48)
16:07:31 <Lykaina> i rearranged some things
16:08:55 <Lykaina> is that esoteric?
16:16:03 <Lykaina> never mind
16:16:32 -!- Lykaina has left.
16:17:17 -!- Guest24768 has quit (Quit: WeeChat 2.4).
16:18:44 -!- GeekDude has joined.
16:31:43 <rain1> hi
16:31:47 <kmc> hello
16:38:21 -!- Sgeo_ has joined.
16:41:27 -!- Sgeo has quit (Ping timeout: 258 seconds).
16:46:12 <rain1> hey kmc how are you doing
16:46:29 <kmc> pretty good
17:26:05 -!- MDude has quit (Quit: Going offline, see ya! (www.adiirc.com)).
17:26:09 -!- Phantom_Hoover has joined.
17:26:54 -!- Sgeo__ has joined.
17:30:01 -!- Sgeo_ has quit (Ping timeout: 244 seconds).
17:49:06 <esowiki> [[Rejji]] N https://esolangs.org/w/index.php?oldid=65868 * FAKE1007 * (+4978) Created page with "'''Rejji''' is a programming language made by ~~~ in 2019. == Commands == ln('''text''') - Prints text to screen from new line. pr('''text''') - Prints text to screen on the..."
17:49:56 <esowiki> [[User:FAKE1007]] https://esolangs.org/w/index.php?diff=65869&oldid=65864 * FAKE1007 * (+70)
17:50:53 -!- BWBellairs has quit (Quit: boxmein's znc went down :().
17:51:48 <esowiki> [[Rejji]] https://esolangs.org/w/index.php?diff=65870&oldid=65868 * FAKE1007 * (+2)
18:13:49 -!- BWBellairs has joined.
18:22:37 -!- heroux has quit (Ping timeout: 268 seconds).
18:25:40 -!- glowcoil has quit (Ping timeout: 252 seconds).
18:26:49 <esowiki> [[Special:Log/upload]] upload * Hakerh400 * uploaded "[[File:Grid entities.png]]"
18:27:00 -!- glowcoil has joined.
18:27:17 -!- heroux has joined.
18:43:27 <zzo38> Do you like Scrabble with Go stones and chess pieces also?
18:43:49 <kmc> how does that work?
18:47:13 <zzo38> I thought how to make Scrabble with Go stones, but there might be other way too possibly a better way than what I have. I haven't thought of how to do with Go and chess.
18:48:18 <zzo38> After each turn if you played any letters, you may play a Go stone on a vacant cell, and then make captures. Keep track of who played each letter; they are like Go stones but will not be captured until the game ends.
18:49:38 <zzo38> You can play letters where there are currently stones; this removes the stones and affects your score according to which stones have been removed in this way and which letters were played there, but you are not allowed to play if your total score for that turn would be zero or negative.
18:50:05 <zzo38> (Also you cannot play two wild cards and nothing else on the first turn of the game, since, that would earn zero points.)
18:54:26 <b_jonas> but.. do the stones go to the crossings of the lines, and the letters in the squares between them?
18:55:48 <zzo38> Stones go in the same square where the letters would go, in how I have, so that they can interfere with each other.
18:57:03 <b_jonas> and do the letter multipliers of the board apply to a stone, and does it apply to a letter tile if it's played on a stone?
18:57:41 <b_jonas> also what's the exchange rate for go points to scrabble points?
18:58:52 <zzo38> The multiplier still applies to a letter played on a stone, but if it is opponent's stone then that letter is worth nothing for that turn. If it is your own stone then it is one more than normal. Word multipliers do not apply to stones, but letter multipliers do.
18:59:47 <zzo38> I have Go points and Scrabble points at 1:1 (and you will add them when the game ends), but I don't know if a different exchange rate may be better. Also, if a letter is captured at the end of the game then whoever played that letter loses its base value (ignoring all multiplies).
19:01:16 <b_jonas> how do turns work? do you place one go stone and then one scrabble word or other scrabble move in your turn?
19:01:29 <b_jonas> ah, you said go stone after the scrabble move
19:01:47 <zzo38> Yes, and only if you actually played any letters. You cannot add a stone without also adding at least one letter.
19:02:21 <zzo38> (It is, however, allowed to play one or more letters and then not play a stone.)
19:02:26 <b_jonas> this might work
19:05:56 <b_jonas> what if you play with reversi stones instead of go stones, and stones can convert other stones as in reversi, with tiles counting as empty space for the purpose of conversion?
19:06:23 <zzo38> Yes, that could be another game, I suppose; you can try that.
19:09:20 -!- nfd9001 has quit (Read error: Connection reset by peer).
19:19:23 <esowiki> [[Special:Log/upload]] upload * Hakerh400 * uploaded "[[File:Esolang Grid - cursor and lines.png]]"
19:20:33 -!- oerjan has joined.
19:22:53 <int-e> `? password
19:22:55 <HackEso> The password of the month is surprising.
19:25:19 <oerjan> `learn The password of the month is ninjaed.
19:25:22 <HackEso> Relearned 'password': The password of the month is ninjaed.
19:25:29 <oerjan> *MWAHAHAHA*
19:25:51 <oerjan> admittedly you didn't seem in much of a hurry.
19:26:52 <int-e> I wasn't.
19:27:17 <int-e> I was happy about the final surprise ;-)
19:28:27 <int-e> But I feel I got more than my fair share of potms recently.
19:31:00 <arseniiv> hm I strangely misread this as “potm points” and was about to ask if there are points
19:32:37 <oerjan> `cwlprits password
19:32:39 <HackEso> oerjän int-̈e shachäf int-̈e fizzïe int-̈e fizzïe int-̈e int-̈e b_jonäs int-̈e int-̈e oerjän oerjän int-̈e int-̈e oerjän int-̈e oerjän oerjän oerjän int-̈e int-̈e oerjän oerjän shachäf oerjän oerjän oerjän oerjän int-̈e shachäf shachäf oerjän boil̈y oerjän int-̈e int-̈e oerjän shachäf shachäf oerjän oerjän oerjän oerjän oerjän oerjän oerjän oerjän oerjän gameman̈j int-̈e
19:33:09 <b_jonas> oh, it's month again
19:33:34 <int-e> Just another September.
19:33:56 <oerjan> `hurl wisdom/password
19:33:57 <HackEso> https://hack.esolangs.org/repo/log/tip/wisdom/password
19:35:30 <oerjan> has it really been 11 months since i set it
19:36:47 <int-e> amazing, isn't it
19:41:27 -!- xkapastel has joined.
19:47:02 <arseniiv> the next password of the month could accidentally be not what it seems
20:05:04 -!- heroux has quit (Ping timeout: 246 seconds).
20:07:02 -!- heroux has joined.
20:10:23 <esowiki> [[Rejji]] M https://esolangs.org/w/index.php?diff=65873&oldid=65870 * Ais523 * (-39) unpipe link to userspace
20:29:13 -!- AnotherTest has quit (Ping timeout: 245 seconds).
20:40:21 -!- Lord_of_Life_ has joined.
20:42:31 -!- Lord_of_Life has quit (Ping timeout: 246 seconds).
20:43:15 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
20:45:09 <b_jonas> ``` hg log -T "{date|shortdate}\n" wisdom/password
20:45:11 <HackEso> 2019-09-01 \ 2019-08-01 \ 2019-07-01 \ 2019-06-02 \ 2019-05-01 \ 2019-04-09 \ 2019-03-30 \ 2019-02-04 \ 2019-02-03 \ 2019-01-01 \ 2018-12-01 \ 2018-11-01 \ 2018-10-02 \ 2018-09-05 \ 2018-08-03 \ 2018-07-20 \ 2018-06-03 \ 2018-05-05 \ 2018-04-14 \ 2018-04-14 \ 2018-03-07 \ 2018-02-15 \ 2017-12-31 \ 2017-12-01 \ 2017-12-01 \ 2017-11-04 \ 2017-10-01 \ 2017-09-02 \ 2017-08-22 \ 2017-08-16 \ 2017-07-11 \ 2017-06-02 \ 2017-06-02 \ 2017-06-02 \ 2017-05-14 \ 2017-
21:04:21 <arseniiv> now I’m dreaming about setting the password the next month. Of course I’ll forget and be too slow to matter
21:05:42 <arseniiv> bad immodest thoughts
21:06:32 <arseniiv> wow, modest is related to modus
21:11:12 <b_jonas> arseniiv: you could ask a computer that has a clock and is good at remembering dates to set it in your name at the start of next month
21:13:44 <arseniiv> b_jonas: hmmmm though 0: UTC is 5: here so if I won’t repair my schedule I can be there in person and need only a reminder
21:15:26 <int-e> . o O ( maybe it's time for a potmlist :-P )
21:17:04 <arseniiv> int-e: announcing the time has come or announcing when the new is set?
21:17:23 <b_jonas> it's the phase of the moon list, announcing every new moon and every full moon
21:17:42 <int-e> arseniiv: the former :P (and generalizing the concept to a waiting list)
21:17:53 <arseniiv> b_jonas: :D oh that would be more useful
21:18:03 <int-e> well, s/generalizing/adapting/
21:18:38 <int-e> (I hope this sounds ridiculous.)
21:18:45 <arseniiv> I like moonphases more, yes
21:18:52 <b_jonas> or maybe warning a few days before new moon and a few days before full moon, to be able to prepare for werewolves and other magic
21:21:02 <int-e> Would it include updates for Phobos and Deimos?
21:22:05 <arseniiv> I wish I had occurring something useful on full moon, but no, the most I get is that white-gray dish staring in the window. Though it adds some comfort
21:24:55 -!- MDude has joined.
21:26:21 <arseniiv> today I reread domino examples in Concrete mathematics, they’re just too good
21:26:32 -!- oerjan has quit (Quit: Nite).
21:28:49 <arseniiv> it also reminds me I have almost no clue about combinatory species and especially their computational aspects (like enumeration or counting)
21:29:44 <arseniiv> isn’t there something like a Baez page on them?
21:34:40 -!- ARCUN has joined.
21:35:16 <ARCUN> I think it would be cool to not only parse HTML using regex, but to combine them in some way
21:35:44 <ARCUN> A markup language that operates using regex, called REML
21:36:36 <ARCUN> Of course, I don't believe it's possible to completely parse HTML with regex, but the idea is nice
21:46:31 <ARCUN> I think a language that uses the REML concept would be befitting for the wiki
21:46:44 <ARCUN> It's definitely not your everyday language
22:05:14 <esowiki> [[Special:Log/upload]] upload * Hakerh400 * uploaded "[[File:Esolang Grid - Fragments.png]]"
22:05:15 -!- ARCUN has quit (Ping timeout: 260 seconds).
22:21:06 -!- xkapastel has quit (Quit: Connection closed for inactivity).
22:48:21 -!- Sgeo_ has joined.
22:48:56 -!- Camto[m] has quit (Ping timeout: 252 seconds).
22:50:30 -!- Phantom_Hoover has quit (Quit: Leaving).
22:51:45 -!- Sgeo__ has quit (Ping timeout: 258 seconds).
22:53:30 -!- Camto[m] has joined.
23:07:14 <esowiki> [[+-]] https://esolangs.org/w/index.php?diff=65875&oldid=63919 * Voltage2007 * (+977)
23:20:19 -!- FreeFull has quit.
2019-09-02
00:13:15 <esowiki> [[GML]] https://esolangs.org/w/index.php?diff=65876&oldid=46716 * B jonas * (+8)
00:20:38 <zzo38> I am writing "pollcube" software for making a survey. What formats of questions might it be? So far I have "Select all that apply", "Select [number]", "Select up to [number]", "Select [number] to [number]", "Enter any text", "Enter a number up to [number]", "Enter numbers adding up to [number]", and "Enter numbers adding up to not more than [number]".
00:21:37 -!- MDude has quit (Ping timeout: 246 seconds).
00:33:11 <b_jonas> zzo38: a table of multiple questions, one question per table row, where you select an option button with a fixed small number of buttons for each question, and short labels for the answers above, poll creator chooses the short labels eg. they could be (true, false) or (1,2,3,4,5,N/A)
00:33:48 <b_jonas> zzo38: also option buttons to select exactly one answer, and a version where the last option is write-in with a text box
00:33:49 -!- Sgeo__ has joined.
00:34:29 <b_jonas> zzo38: also perhaps a field where you enter either a number or nothing
00:35:19 <b_jonas> for entering text, you probably want both short (one-line) answer input fields and longer answer textareas
00:36:47 -!- Sgeo_ has quit (Ping timeout: 244 seconds).
00:38:09 <esowiki> [[Beets]] N https://esolangs.org/w/index.php?oldid=65877 * Qpliu * (+2703) Created page with "The Beets programming language enables expressing calculations on infinite binary trees of bits. ==Grammar== program = definition* definition = identifier identifier* '='..."
00:38:19 <esowiki> [[Language list]] https://esolangs.org/w/index.php?diff=65878&oldid=65867 * Qpliu * (+12) /* B */
00:38:28 -!- b_jonas has quit (Remote host closed the connection).
00:42:52 -!- MDude has joined.
00:52:25 -!- arseniiv has quit (Ping timeout: 246 seconds).
02:01:10 <zzo38> b_jonas: "Select one" would mean you have to select exactly one; it is a case of the "Select [number]" format.
02:02:05 <zzo38> In any case, the system is designed to be UI-independent. Still, the table of questions is a suitable idea.
02:02:59 <zzo38> A version where the last option is write-in with a text box, is one idea I did think of though; if it says "(please specify)" then you can add your own text.
02:06:41 -!- adu has joined.
02:24:15 -!- MrBismuth has quit (Read error: Connection reset by peer).
03:29:07 -!- MrBismuth has joined.
03:35:53 <esowiki> [[Pxem]] https://esolangs.org/w/index.php?diff=65879&oldid=65222 * YamTokTpaFa * (+0) /* Conditional looping */
05:15:26 <esowiki> [[User:YamTokTpaFa/sandbox4]] https://esolangs.org/w/index.php?diff=65880&oldid=64854 * YamTokTpaFa * (+1284)
05:21:32 <esowiki> [[User:YamTokTpaFa]] https://esolangs.org/w/index.php?diff=65881&oldid=65804 * YamTokTpaFa * (+136)
05:23:02 <esowiki> [[User:YamTokTpaFa/sandbox5]] N https://esolangs.org/w/index.php?oldid=65882 * YamTokTpaFa * (+135) Created page with "'''Qyfn''' (official pronunciation: ku-you-fu-na) is a programming language designed by [[User:YamTokTpaFa]], a derivation of [[Pxem]]."
05:53:48 <shachaf> ais523: Are you going to http://events.cs.bham.ac.uk/syco/strings3-syco5/ ?
06:34:10 <esowiki> [[Special:Log/upload]] upload * Hakerh400 * uploaded "[[File:Esolang "Grid" - example of initial grid transformation.png]]"
07:34:28 <esowiki> [[Special:Log/upload]] upload * Hakerh400 * uploaded "[[File:Esolang "Grid" - example of connecting external shapes.png]]"
07:45:15 -!- cpressey has joined.
08:06:33 -!- adu has quit (Quit: adu).
08:07:58 -!- wob_jonas has joined.
08:08:31 <wob_jonas> zzo38: sure, multiple UIs can work for the same questionnaire, but you still need some hints in the questions so that the UI can present the forms reasonably
08:08:49 <wob_jonas> HTML already works sort of like that
08:18:50 -!- tromp_ has joined.
08:22:15 -!- tromp has quit (Ping timeout: 264 seconds).
08:22:22 <esowiki> [[Special:Log/upload]] upload * Hakerh400 * uploaded "[[File:Esolang "Grid" - Example of connecting internal shapes 1.png]]"
08:42:19 -!- Frater_EST has joined.
08:42:32 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
08:46:04 -!- Lord_of_Life has joined.
09:37:28 -!- MDude has quit (Quit: Going offline, see ya! (www.adiirc.com)).
11:07:52 -!- xylochoron[m] has quit (Remote host closed the connection).
11:07:52 -!- ivzem[m] has quit (Remote host closed the connection).
11:07:55 -!- wmww has quit (Remote host closed the connection).
11:08:18 -!- Camto[m] has quit (Remote host closed the connection).
11:08:18 -!- tswett[m] has quit (Write error: Connection reset by peer).
11:13:43 -!- Camto[m] has joined.
11:36:02 -!- tswett[m] has joined.
11:36:02 -!- wmww has joined.
11:36:02 -!- xylochoron[m] has joined.
11:36:10 -!- ivzem[m] has joined.
11:50:00 -!- Frater_EST has quit (Ping timeout: 244 seconds).
12:25:33 -!- arseniiv has joined.
12:26:59 <esowiki> [[Special:Log/upload]] upload * Hakerh400 * uploaded "[[File:Esolang "Grid" - loop.png]]"
12:40:10 -!- xkapastel has joined.
13:08:05 -!- MDude has joined.
14:05:39 <esowiki> [[Hello++]] https://esolangs.org/w/index.php?diff=65887&oldid=58441 * Gamer * (+426) /* Interpreter */
14:42:20 -!- Sgeo_ has joined.
14:45:27 -!- Sgeo__ has quit (Ping timeout: 245 seconds).
14:53:51 <esowiki> [[Enigma-2D]] https://esolangs.org/w/index.php?diff=65888&oldid=62056 * YamTokTpaFa * (+41) Linking
14:59:19 <esowiki> [[Pxem]] https://esolangs.org/w/index.php?diff=65889&oldid=65879 * YamTokTpaFa * (+6) /* pxemi.7z and text2pxem.pl */
15:04:36 <esowiki> [[Hello world program in esoteric languages]] M https://esolangs.org/w/index.php?diff=65890&oldid=65762 * YamTokTpaFa * (+302) /* Pxem */
15:37:13 -!- wob_jonas has quit (Remote host closed the connection).
15:42:54 -!- Sgeo__ has joined.
15:45:58 -!- Sgeo_ has quit (Ping timeout: 246 seconds).
15:50:35 <cpressey> Well, I learned enough QuickCheck to write some crude property tests for the Robin interpreter. To do it properly I'd probably want to make custom generators for particular kinds of expressions (particularly environments), and so forth.
15:51:04 <cpressey> Will probably release Robin 0.4 tomorrow and then not think about it for a long time again.
15:51:43 <cpressey> And there's absolutely no reason you should care, I'm just typing this out as some sort of coping mechanism probably.
15:52:09 -!- cpressey has quit (Quit: A la prochaine.).
15:53:10 <Taneb> Future cpressey, who I assume log reads, are you OK?
17:02:02 -!- FreeFull has joined.
17:18:39 -!- Phantom_Hoover has joined.
17:26:59 -!- b_jonas has joined.
17:48:08 -!- tromp_ has quit (Read error: Connection reset by peer).
17:49:47 -!- tromp has joined.
17:50:46 -!- tromp_ has joined.
17:50:47 -!- tromp has quit (Read error: Connection reset by peer).
18:27:32 <zzo38> I suppose if you want to use bitmap fonts or other external fonts with PostScript, one possibility might be to define a Type 3 font which is programmed to determine the current position on the page and to write that together with the character code to a separate output file, and then afterward, they can be combined with the main output file.
18:31:09 <b_jonas> zzo38: but postscript already supports bitmap fonts in some existing font formats
18:35:47 <zzo38> How to work that? I also don't know if it is a feature that Ghostscript supports
18:40:28 <b_jonas> zzo38: I don't know, ask the converters that make postscript from TeX's dvi files and use TeX fonts
18:41:07 <b_jonas> but I think ghostscript supports it
18:42:46 <b_jonas> https://www.ghostscript.com/doc/9.27/Fonts.htm says something about BDF fonts
18:44:38 <zzo38> Yes, although that just converts a bitmap font into a Type 1 font, which will not be of a such good quality.
18:45:22 <b_jonas> right, so maybe get the TeXlive sources and look at how they handle TeX fonts
18:45:48 <b_jonas> I never tried to dive into those details
18:47:04 -!- tromp_ has quit (Remote host closed the connection).
18:48:49 <zzo38> There are also other uses of external fonts other than bitmap fonts, such as if you want to convert PostScript or DVI.
18:49:30 <b_jonas> zzo38: sure
18:50:00 <b_jonas> hmm, python doesn't seem to have an equivalent of the perl/sed tr operator that also gives you the count of characters it's replaced
18:50:04 <b_jonas> that's a pity
18:51:18 <b_jonas> though I guess since it also doesn't have the bitwise operators for bytes objects, so you couldn't do that sort of thing so easily anyway
19:17:43 -!- tromp has joined.
19:18:27 -!- tromp has quit (Remote host closed the connection).
19:18:43 -!- tromp has joined.
19:44:10 -!- MrBusiness3 has joined.
19:47:28 -!- MrBismuth has quit (Ping timeout: 264 seconds).
20:08:46 -!- rain1 has quit (Read error: Connection reset by peer).
20:11:13 -!- rain1 has joined.
20:12:11 <b_jonas> oh
20:40:19 <b_jonas> now that's evil
20:43:02 -!- Lord_of_Life_ has joined.
20:43:43 -!- Lord_of_Life has quit (Ping timeout: 244 seconds).
20:46:00 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
20:47:20 <zzo38> Now I wrote a program in PostScript to write out JSON data to a file. For example, if the PostScript code is: << /hello true /world false /this [1 2 5 << /a (aaa) /b (ccc\\ddd\n123"!@#$) >> null] /that << /hello false /world true >> then it will write: {"that":{"world":true,"hello":false},"world":false,"hello":true,"this":[1,2,5,{"a":"aaa","b":"ccc\u005Cddd\u000A123\u0022!@#$"},null]}
20:48:03 <zzo38> (The next thing to write is to parse the JSON data.)
20:48:43 <b_jonas> why do you need a JSON parser? isn't it generally more convenient to make the other side write postscript code? or do you want to parse untrusted data?
20:49:09 <zzo38> In case the other side is not meant to work with PostScript.
20:49:32 <zzo38> But is rather a program designed to be used with stuff other than PostScript.
20:59:34 -!- xkapastel has quit (Quit: Connection closed for inactivity).
21:07:43 <esowiki> [[User:Dtuser1337/Sandbox]] https://esolangs.org/w/index.php?diff=65891&oldid=65863 * Dtuser1337 * (-1065) I have another language in draft from my head, so i used [za hando] to replace it with another one in draft.
21:09:27 <esowiki> [[User:Dtuser1337/Sandbox]] https://esolangs.org/w/index.php?diff=65892&oldid=65891 * Dtuser1337 * (+7) /* Beginning of the Sandbox line */
21:17:40 <esowiki> [[User:Dtuser1337/Sandbox]] https://esolangs.org/w/index.php?diff=65893&oldid=65892 * Dtuser1337 * (+0) /* instruction wheels */
21:27:31 <esowiki> [[User:Dtuser1337/Sandbox]] https://esolangs.org/w/index.php?diff=65894&oldid=65893 * Dtuser1337 * (+305) /* instruction wheels */
22:10:51 -!- arseniiv has quit (Ping timeout: 264 seconds).
22:18:52 -!- grumble has quit (Quit: 𝑽𝒆𝒍𝒐𝒄𝒊𝒓𝒂𝒑𝒕𝒐𝒓).
22:21:49 -!- grumble has joined.
22:29:19 -!- FreeFull has quit.
22:37:31 <esowiki> [[Underload]] M https://esolangs.org/w/index.php?diff=65895&oldid=57502 * CatIsFluffy * (+0) /* Numbers */ Alignment of 1
22:39:16 -!- Phantom_Hoover has quit (Quit: Leaving).
23:29:45 -!- budonyc has joined.
23:30:54 <esowiki> [[Underload/Numbers]] M https://esolangs.org/w/index.php?diff=65896&oldid=43690 * CatIsFluffy * (-14) optimize a few numbers
2019-09-03
00:23:46 -!- ivzem[m] has quit (Remote host closed the connection).
00:24:02 -!- Camto[m] has quit (Remote host closed the connection).
00:24:11 -!- xylochoron[m] has quit (Read error: Connection reset by peer).
00:24:16 -!- wmww has quit (Remote host closed the connection).
00:24:16 -!- tswett[m] has quit (Remote host closed the connection).
00:32:01 -!- Camto[m] has joined.
00:39:13 -!- Lykaina has joined.
00:40:08 <Lykaina> is this esoteric or just confusing? https://paste.ee/p/8JCjK
00:51:37 -!- MDude has quit (Ping timeout: 246 seconds).
00:52:23 -!- wmww has joined.
00:52:23 -!- tswett[m] has joined.
00:52:23 -!- xylochoron[m] has joined.
00:52:29 -!- MDude has joined.
00:52:31 -!- ivzem[m] has joined.
00:55:02 -!- budonyc has quit (Quit: Leaving).
00:59:34 <zzo38> Is the ability for PostScript programs to have command-line arguments specific to Ghostscript? (Even if so, it would be possible to emulate it just as well with other implementations.)
01:12:38 <esowiki> [[Grid]] N https://esolangs.org/w/index.php?oldid=65897 * Hakerh400 * (+23410) New language: Grid
01:13:16 <Lykaina> zzo38: hi
01:14:34 <esowiki> [[Language list]] https://esolangs.org/w/index.php?diff=65898&oldid=65878 * Hakerh400 * (+11) Add "Grid" to the language list
01:15:33 <esowiki> [[User:Hakerh400]] https://esolangs.org/w/index.php?diff=65899&oldid=64427 * Hakerh400 * (+11)
01:15:50 <zzo38> Hello
01:16:54 <Lykaina> could you take a look at the language specs i posted and give me your opinion?
01:17:20 <zzo38> I looked at it, and currently do not have something to say about it.
01:17:38 <Lykaina> finally got it working
01:19:06 <Lykaina> it's my first with loops
01:19:44 <Lykaina> instead of jumps
01:23:09 <Lykaina> and my first that doesn't require an "assembler"
01:30:47 <Lykaina> https://paste.ee/p/m0sel better paste (has source)
01:38:17 <esowiki> [[Grid]] M https://esolangs.org/w/index.php?diff=65900&oldid=65897 * Hakerh400 * (+1)
01:45:11 -!- Lykaina has quit (Quit: leaving).
01:47:31 <esowiki> [[Grid]] M https://esolangs.org/w/index.php?diff=65901&oldid=65900 * Hakerh400 * (+0)
01:48:35 <esowiki> [[Grid]] M https://esolangs.org/w/index.php?diff=65902&oldid=65901 * Hakerh400 * (+0)
01:50:24 -!- xkapastel has joined.
01:52:09 <esowiki> [[Grid]] M https://esolangs.org/w/index.php?diff=65903&oldid=65902 * Hakerh400 * (-5)
01:54:09 <esowiki> [[Grid]] M https://esolangs.org/w/index.php?diff=65904&oldid=65903 * Hakerh400 * (+1)
03:24:24 -!- Sgeo__ has quit (Read error: Connection reset by peer).
03:24:52 -!- Sgeo__ has joined.
04:04:00 <esowiki> [[Underload/Numbers]] https://esolangs.org/w/index.php?diff=65905&oldid=65896 * CatIsFluffy * (-17) Run length encoding
05:20:51 <esowiki> [[Underload/Numbers]] M https://esolangs.org/w/index.php?diff=65906&oldid=65905 * CatIsFluffy * (-17) removing old 36
05:26:44 <esowiki> [[Underload/Numbers]] M https://esolangs.org/w/index.php?diff=65907&oldid=65906 * CatIsFluffy * (-25) A few more changes
06:38:32 <esowiki> [[Truth-machine]] https://esolangs.org/w/index.php?diff=65908&oldid=65782 * Dtuser1337 * (+173) /* Stupid */
06:40:08 -!- xkapastel has quit (Quit: Connection closed for inactivity).
07:25:56 -!- b_jonas has quit (Quit: leaving).
07:41:51 -!- cpressey has joined.
07:47:37 <cpressey> Pythagorus's Lesser Known Theorem: the square of one side of an equilateral triangle is equal to the average of the squares of the other two sides.
07:54:33 <cpressey> Er, Pythagorus, yeah, he was Pythagoras's cousin dontchaknow.
08:29:49 -!- wob_jonas has joined.
08:35:03 <wob_jonas> cpressey: no, that theorem is more general. it says that for a triangle with a pi/3 or 2*pi/3 angle (rather than a right angle), c = a**2 + b**2 \pm a*b, where a and b are the sides next to that angle, c is the side opposite of that, and you take the negative sign for the non-acute angle. what you say is the special case for a=b and acute angle.
08:35:19 <wob_jonas> no argh, I said that wront
08:35:26 <wob_jonas> that theorem is more general. it says that for a triangle with a pi/3 or 2*pi/3 angle (rather than a right angle), c = a**2 + b**2 \pm a*b, where a and b are the sides next to that angle, c is the side opposite of that, and you take the negative sign for the acute angle. what you say is the special case for a=b and acute angle.
08:35:45 <Taneb> cpressey: due to unique properties of equilateral triangles, it's also equal to the geometric mean of the squares of the other two sides
08:36:52 <wob_jonas> also http://www.madore.org/~david/weblog/d.2013-12-17.2175.trigonometrie-triangle.html is a handy reference for triangle formulas on euclidean, hyperbolic and spheric triangles
08:36:57 <wob_jonas> some of those formulas count as lesser known too
08:39:54 -!- arseniiv has joined.
08:42:22 -!- Lord_of_Life has quit (Ping timeout: 246 seconds).
08:45:03 -!- Lord_of_Life has joined.
08:57:34 -!- ArthurStrong has joined.
09:12:16 <esowiki> [[Pth]] N https://esolangs.org/w/index.php?oldid=65909 * A * (+945) Created page with "[[Pth]] is a dedicated declarative path-finding language created in order to make path-finding challenges on CGCC very trivial. ==Example program== <pre> # Transition starts..."
09:17:19 <int-e> wob_jonas: are you reading the whole madore website?
09:21:28 <arseniiv> int-e: IIRC he said he’s not as familiar with older posts there when we were talking about card deck design
09:26:58 <wob_jonas> int-e: no, but most of the new posts.
09:27:16 <wob_jonas> int-e: I haven't read most of the older year's blog part, and probably won't
09:27:20 <wob_jonas> years'
09:48:01 <esowiki> [[Pth]] M https://esolangs.org/w/index.php?diff=65910&oldid=65909 * A * (-181)
09:48:39 <esowiki> [[Pth]] M https://esolangs.org/w/index.php?diff=65911&oldid=65910 * A * (+56)
09:49:19 -!- fungot has quit (Ping timeout: 250 seconds).
09:52:00 <esowiki> [[Pth]] M https://esolangs.org/w/index.php?diff=65912&oldid=65911 * A * (+0)
09:53:14 <esowiki> [[Pth]] M https://esolangs.org/w/index.php?diff=65913&oldid=65912 * A * (+2)
09:57:35 <esowiki> [[Pth]] M https://esolangs.org/w/index.php?diff=65914&oldid=65913 * A * (+58)
10:08:36 <wob_jonas> strange... python 3.6 adds a subscripting operator to the re.Match object, but doesn't go the whole way to make it iterable so you can conveniently multipe-assign from it
10:33:30 <esowiki> [[Special:Log/newusers]] create * Kritixilithos * New user account
10:39:21 -!- wob_jonas has quit (Quit: Ping timeout (120 seconds)).
10:39:57 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=65915&oldid=65772 * Kritixilithos * (+195)
10:44:51 <esowiki> [[AlphaBeta]] https://esolangs.org/w/index.php?diff=65916&oldid=60820 * Kritixilithos * (+23) Fixed the cat program
11:18:17 -!- fungot has joined.
11:20:03 <int-e> fungot!
11:20:03 <fungot> int-e: brought home a nice carpet from summer fnord garden shed a tear" as a verb when an existing verb works perfectly well for me
12:05:12 <fizzie> Was some internet trouble at home.
12:05:21 <fizzie> I'd like if they'd provide a little more information about these things.
12:06:05 <fizzie> There's a "dashboard", but it's just an orb that's either green with a hover-tip of "no problems" (paraphrasing), or red with a stock "we're sorry, our engineers are investigating, thank you for your patience" message.
12:07:45 <fizzie> fungot: Welcome back online.
12:07:45 <fungot> fizzie: want an explanation of access either the path or the closure out of it
12:07:53 <fizzie> ...scary...
12:08:21 <fizzie> fungot: Well, as I just said, the ISP isn't too forthcoming with information. Maybe you could contact their support yourself?
12:08:21 <fungot> fizzie: e!bf http://kidsquid.com/ fnord translation for this. easy to translate to void fnord blah fnord " a deep dark secret". even though the guy was real idiot...
12:08:41 <fizzie> In retrospect, maybe that's not such a great idea.
12:53:40 <esowiki> [[ASCII @]] N https://esolangs.org/w/index.php?oldid=65917 * A * (+3895) Created page with "[[ASCII @]] is a programming language created by [[User:A]], due to failing code-golf competitions because @ instructions sometimes take 2 characters. This transpiles to [[@]]..."
12:59:25 <esowiki> [[ASCII @]] M https://esolangs.org/w/index.php?diff=65918&oldid=65917 * A * (-1)
13:12:51 -!- tromp has quit (Remote host closed the connection).
13:44:17 -!- tromp has joined.
13:48:57 -!- tromp has quit (Ping timeout: 250 seconds).
14:17:15 -!- tromp has joined.
14:30:03 <esowiki> [[Special:Log/newusers]] create * Dominic3203 * New user account
14:53:23 -!- Sgeo__ has quit (Ping timeout: 245 seconds).
14:58:28 -!- cpressey has quit (Quit: A la prochaine.).
15:30:41 <shachaf> `olist 1178
15:30:42 <HackEso> olist 1178: shachaf oerjan Sgeo FireFly boily nortti b_jonas
15:41:06 <arseniiv> <fungot> fizzie: want an explanation of access either the path or the closure out of it => I think fungot mentions the free category of a graph! :o
15:41:06 <fungot> arseniiv: any string containing neither nor is a symbol, whose hash value will itself have been updated with a new program, like bf dev??
15:41:54 <arseniiv> hm stop no paths are already a “closure” of a graph’s edges
15:44:29 <arseniiv> fungot: neither nor?
15:44:30 <fungot> arseniiv: annnd my irssi runs over ssh on bistromath. hrm. that doesn't mean we have the long one, but the
16:46:27 -!- FreeFull has joined.
17:02:53 -!- b_jonas has joined.
17:10:24 -!- xkapastel has joined.
17:35:38 <arseniiv> for a linear approximation to some f: A → B, to have a graph which is a subspace of A × B, A and B are sufficient to be affine spaces (and for graph of f itself to be such, linear spaces). What weakest kind of spaces may A, B be for f’s quadratic approximation to have a graph being a subspace of A × B?
17:36:01 <arseniiv> clearly any differentiable manifold suffices but it’s too strong
17:37:21 <arseniiv> I think someone had already developed what those spaces could be
17:38:16 <arseniiv> and maybe I should restate the question in terms of no graphs and products of spaces, it seems superfluous
17:38:32 <arseniiv> but I don’t know how right now
17:40:00 <arseniiv> oh I seem to misplace linear spaces here
17:41:07 <arseniiv> it should be something of a “constant space”
17:45:07 <arseniiv> i. e. all or some conic hypersurfaces should be subspaces in this “quadratic-affine space”
17:45:48 <arseniiv> hm isn’t it what affine varieties are about
17:48:27 <arseniiv> this question is weird, I don’t understand which way it could be restated to make sense of “constant spaces” where only graphs of constant functions are subspaces of dom f × cod f
18:18:35 <int-e> `quote election
18:18:36 <HackEso> 528) <Gregor> Hulu's movie selection is like MST3K without the MST3K characters. \ 943) * ais523 challenges the americans here to remember who lost in the most recent UK general election <Phantom_Hoover> ais523, the lib dems
18:25:42 <esowiki> [[Underload/Numbers]] M https://esolangs.org/w/index.php?diff=65919&oldid=65907 * CatIsFluffy * (-5) A few more improvements
19:49:40 -!- xkapastel has quit (Quit: Connection closed for inactivity).
20:42:58 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
20:45:26 -!- Lord_of_Life has joined.
21:22:10 -!- ArthurStrong has quit (Quit: leaving).
21:24:19 -!- sftp has quit (Ping timeout: 246 seconds).
22:09:24 -!- sftp has joined.
22:21:16 -!- FreeFull has quit.
22:42:35 -!- hakatashi has quit (Remote host closed the connection).
22:42:52 -!- hakatashi has joined.
23:30:40 -!- arseniiv has quit (Ping timeout: 246 seconds).
23:30:56 -!- Sgeo has joined.
23:40:47 -!- Sgeo_ has joined.
23:41:55 -!- Sgeo has quit (Ping timeout: 244 seconds).
23:47:43 <zzo38> Now I wrote the JSON parser as well as JSON writer in PostScript.
23:48:00 <shachaf> Why not PSON?
23:49:37 <zzo38> Only one feature is not yet implemented, which is if JSON.utf8 is true then it will not support Unicode characters outside of the ASCII range yet; that option is supposed to enable that feature. (If JSON.utf8 is false, then it will work, but any \u escapes will use only the low 8-bits of the character code.)
23:50:24 <zzo38> shachaf: What is PSON?
2019-09-04
00:00:43 <shachaf> PostScript Object Notation
00:01:09 <zzo38> If you want to use PostScript Object Notation then you can use the built-in commands of PostScript.
00:02:28 <zzo38> It is good if the data is only written and read by PostScript programs, or if used with other programs that are designed to be used with PostScript, but some programs are not designed for use with PostScript and are using JSON, so, this way, if the external data is JSON then still you can use it with PostScript anyways.
01:23:54 <zzo38> Usenet article <1567559086.bystand@zzo38computer.org> includes this program. It can also be downloaded from: https://arin.ga/yoZtdL
01:33:16 -!- tromp_ has joined.
01:34:49 -!- tromp has quit (Ping timeout: 252 seconds).
01:42:26 -!- aloril_ has joined.
01:43:31 -!- hppavilion[1] has joined.
01:46:09 -!- aloril has quit (Ping timeout: 258 seconds).
02:04:32 -!- Cale has quit (Read error: Connection reset by peer).
03:14:42 -!- hppavilion[1] has quit (Ping timeout: 258 seconds).
03:36:51 -!- Sgeo__ has joined.
03:40:06 -!- Sgeo_ has quit (Ping timeout: 244 seconds).
04:21:40 -!- nfd9001 has joined.
05:22:25 -!- Sgeo__ has quit (Ping timeout: 246 seconds).
05:27:43 -!- nfd9001 has quit (Ping timeout: 258 seconds).
05:31:08 <zzo38> Do you have a slide rule with roman numbers?
05:31:32 -!- nfd9001 has joined.
05:32:55 <shachaf> The numbers keep roamin' back and forth on a log scale.
05:38:27 <esowiki> [[Grid]] M https://esolangs.org/w/index.php?diff=65920&oldid=65904 * Hakerh400 * (-1)
06:41:12 -!- b_jonas has quit (Remote host closed the connection).
07:29:11 -!- hppavilion[1] has joined.
07:48:06 -!- cpressey has joined.
07:56:48 <cpressey> Good morning. Other than Haskell, I can't think of any popular functional languages that actually forbid mutability. The vast majority provide some kind of destructive update, but frown on using it.
07:57:29 <rain1> yeah
07:57:51 <rain1> but in a way there is mutation in haskell, like stref
07:59:22 <myname> or curry
07:59:26 <myname> i love curry
07:59:56 <rain1> I guess minikanren doesn't have mutation
08:01:20 <cpressey> Curry's not exactly popular, and Minikanren isn't really a language :)
08:01:32 <rain1> oh yeah because its not turing complete
08:01:52 <cpressey> Well, it needs another language to be embedded in, and that language needs to have things like lambdas
08:03:49 <myname> curry is so unpopular, there isn't even an aur package for one of its implementations
08:04:09 <rain1> how about LSON
08:04:14 <rain1> Lisp Object Notation
08:06:10 <myname> are object notations really programming languages?
08:06:41 <rain1> Object Notation
08:07:11 <rain1> http://www.cs.yorku.ca/~paige/Bon/bon.html
08:07:39 <rain1> https://libujo.org/ UJO Data Object Notation is a binary data serialization format for the Internet of Things and machine to machine (M2M) applications. The name UJO is Esperanto and means container
08:07:43 <rain1> this is epic cringe\
08:09:44 <myname> i like the abbreviation UDON, though
08:09:50 <myname> sound delicious
08:11:01 <Taneb> cpressey: hmm, I don't think jq has mutability
08:12:37 <Taneb> It's a streaming language, so it has things that might look like mutability but aren't (they're closer to record updates)
08:17:53 -!- hppavilion[1] has quit (Remote host closed the connection).
08:18:02 -!- Sgeo has joined.
08:18:26 -!- hppavilion[1] has joined.
08:19:17 <cpressey> https://github.com/MakeNowJust/bf.jq
08:20:21 <cpressey> "Popular enough and Turing-complete enough for someone to have written a Brainfuck interpreter in it"
08:21:20 <FireFly> oh dear
08:29:47 -!- hppavilion[1] has quit (Remote host closed the connection).
08:30:23 -!- hppavilion[1] has joined.
08:33:22 <Taneb> cpressey: I wrote one of those a couple of months back, https://gist.github.com/Taneb/be9d6d5048ce6ca3c5563df223052c6b
08:34:29 <Taneb> (mine has partial support for , and is thus vastly superior)
08:39:07 <cpressey> Indeed!
08:40:05 <cpressey> Taneb: I like the lack of indentation in the nested ifs
08:40:35 <Taneb> :)
08:44:46 <shachaf> I wrote a bf interepreter for my editor once, whose scripting language lacks conditionals.
08:44:56 -!- Lord_of_Life has quit (Ping timeout: 244 seconds).
08:44:57 <shachaf> You can express them in terms of try-catch, though.
08:46:08 -!- Lord_of_Life has joined.
09:06:38 <myname> ah, just like javagony
09:08:03 <shachaf> Hmm, there's also no recursion.
09:08:23 <shachaf> So under normal circumstances infinite loops are impossible.
09:08:41 <shachaf> But you can set things to happen based on events, including "user is idle".
09:09:03 -!- hppavilion[1] has quit (Remote host closed the connection).
09:10:16 -!- hppavilion[1] has joined.
09:14:58 <esowiki> [[Talk:Interfrac]] M https://esolangs.org/w/index.php?diff=65921&oldid=60495 * A * (+270)
09:15:55 -!- nfd has joined.
09:18:44 <esowiki> [[Talk:Interfrac]] M https://esolangs.org/w/index.php?diff=65922&oldid=65921 * A * (+360) /* Proof that your formula is invalid! */
09:19:16 -!- nfd9001 has quit (Ping timeout: 264 seconds).
09:20:06 <esowiki> [[Talk:Interfrac]] M https://esolangs.org/w/index.php?diff=65923&oldid=65922 * A * (+91) /* Proof that your formula is invalid! */
09:20:35 -!- nfd has quit (Ping timeout: 244 seconds).
09:21:20 <esowiki> [[Interfrac]] M https://esolangs.org/w/index.php?diff=65924&oldid=60492 * A * (+110) /* Introduction */ Your formula is wrong.
10:17:20 <esowiki> [[Deadfish]] https://esolangs.org/w/index.php?diff=65925&oldid=65853 * Kritixilithos * (+214) added sed interpreter of deadfish
10:57:26 -!- hppavilion[1] has quit (Remote host closed the connection).
11:32:38 -!- arseniiv has joined.
11:52:41 <esowiki> [[Point]] https://esolangs.org/w/index.php?diff=65926&oldid=65799 * Dtuser1337 * (-12) /* Hello, world! */
11:52:51 <esowiki> [[Point]] https://esolangs.org/w/index.php?diff=65927&oldid=65926 * Dtuser1337 * (-12) /* Countdown */
11:53:00 <esowiki> [[Point]] https://esolangs.org/w/index.php?diff=65928&oldid=65927 * Dtuser1337 * (-12) /* Counting up */
12:03:57 <esowiki> [[Hello world program in esoteric languages]] https://esolangs.org/w/index.php?diff=65929&oldid=65890 * Dtuser1337 * (+55) adding more lang because we need to give esolang maker a pleasure
12:06:13 <esowiki> [[ASCII @]] https://esolangs.org/w/index.php?diff=65930&oldid=65918 * Dtuser1337 * (+2) dont lie, A, this is unimplemented.
12:09:01 <esowiki> [[PureStack]] M https://esolangs.org/w/index.php?diff=65931&oldid=65549 * Dtuser1337 * (+6) FTFY, becuaz your example header has a problemsw
13:01:43 -!- howlands has quit (Ping timeout: 244 seconds).
13:20:01 -!- Sgeo_ has joined.
13:21:55 -!- Sgeo has quit (Ping timeout: 246 seconds).
14:54:54 -!- Sgeo__ has joined.
14:57:57 -!- Sgeo_ has quit (Ping timeout: 245 seconds).
14:58:24 <esowiki> [[Pxem]] M https://esolangs.org/w/index.php?diff=65932&oldid=65889 * YamTokTpaFa * (+2) /* Output */ sing->pl.
14:59:06 <esowiki> [[Pxem]] M https://esolangs.org/w/index.php?diff=65933&oldid=65932 * YamTokTpaFa * (+6) /* Input */ an integer->a signed integer
15:00:49 <esowiki> [[Pxem]] M https://esolangs.org/w/index.php?diff=65934&oldid=65933 * YamTokTpaFa * (-12) /* Output */
15:02:09 <cpressey> Finally got around to officially releasing and announcing Wagon: https://catseye.tc/article/News.md#our-second-esolang-of-2019-wagon
15:03:35 <esowiki> [[Pxem]] M https://esolangs.org/w/index.php?diff=65935&oldid=65934 * YamTokTpaFa * (+64) /* Operating stack */
15:04:00 <esowiki> [[Pxem]] M https://esolangs.org/w/index.php?diff=65936&oldid=65935 * YamTokTpaFa * (-1) /* Operating stack */ del'd s from bold word
15:09:23 <esowiki> [[Trickcode]] N https://esolangs.org/w/index.php?oldid=65937 * Trickbrain26 * (+5237) A language by trickbrain26
15:12:15 <esowiki> [[Pxem]] https://esolangs.org/w/index.php?diff=65938&oldid=65936 * YamTokTpaFa * (+194) /* Operating content of file */
15:13:47 -!- sprocklem has quit (Ping timeout: 245 seconds).
15:14:54 <esowiki> [[Pxem]] https://esolangs.org/w/index.php?diff=65939&oldid=65938 * YamTokTpaFa * (+80) /* Random value */
15:15:06 -!- arseniiv has quit (Read error: Connection reset by peer).
15:15:24 -!- arseniiv has joined.
15:19:13 -!- arseniiv has quit (Read error: Connection reset by peer).
15:19:29 -!- arseniiv has joined.
15:20:13 <esowiki> [[Pxem]] https://esolangs.org/w/index.php?diff=65940&oldid=65939 * YamTokTpaFa * (+332) /* Conditional looping */
15:21:44 <esowiki> [[Pxem]] https://esolangs.org/w/index.php?diff=65941&oldid=65940 * YamTokTpaFa * (+72) /* Termination */
15:22:52 <esowiki> [[Pxem]] M https://esolangs.org/w/index.php?diff=65942&oldid=65941 * YamTokTpaFa * (-25) /* Arithmetic operation */
15:23:38 <esowiki> [[Pxem]] M https://esolangs.org/w/index.php?diff=65943&oldid=65942 * YamTokTpaFa * (+4) /* Hello, world! */
15:24:27 <esowiki> [[Pxem]] M https://esolangs.org/w/index.php?diff=65944&oldid=65943 * YamTokTpaFa * (+12) /* Operating content of file */ group
15:42:05 <esowiki> [[User:Dtuser1337/Sandbox]] https://esolangs.org/w/index.php?diff=65945&oldid=65894 * Dtuser1337 * (+13) /* Beginning of the Sandbox line */
16:25:54 -!- cpressey has quit (Quit: A la prochaine.).
16:58:06 -!- arseniiv_ has joined.
17:01:51 -!- arseniiv has quit (Ping timeout: 264 seconds).
17:01:55 -!- arseniiv__ has joined.
17:02:15 -!- arseniiv__ has changed nick to arseniiv.
17:04:19 <esowiki> [[Fusion Tag]] https://esolangs.org/w/index.php?diff=65946&oldid=65494 * Kritixilithos * (+2) small fix in interpreter
17:04:51 -!- arseniiv_ has quit (Ping timeout: 264 seconds).
17:08:43 <esowiki> [[Nuts]] N https://esolangs.org/w/index.php?oldid=65947 * YamTokTpaFa * (+2125) Created page with "{{Stub}} '''Nuts''' is a [[functional]] programming language designed by [https://qiita.com/hogefuga ''@hogefuga'' or '' '' in Qiita], [https://github.com/hoge-fu..."
17:11:41 <esowiki> [[Nuts]] https://esolangs.org/w/index.php?diff=65948&oldid=65947 * YamTokTpaFa * (+29)
17:16:14 <esowiki> [[Grass]] https://esolangs.org/w/index.php?diff=65949&oldid=11550 * YamTokTpaFa * (+262)
17:21:02 -!- FreeFull has joined.
17:25:19 <esowiki> [[Grass]] https://esolangs.org/w/index.php?diff=65950&oldid=65949 * YamTokTpaFa * (+74)
17:51:21 -!- Phantom_Hoover has joined.
17:59:54 <esowiki> [[Trickcode]] https://esolangs.org/w/index.php?diff=65951&oldid=65937 * Trickbrain26 * (+3)
18:52:15 <arseniiv> what can I do with yeast in Powder Toy?
18:52:39 <arseniiv> (except growing it and making it die)
19:01:00 <esowiki> [[Trickcode]] https://esolangs.org/w/index.php?diff=65952&oldid=65951 * Trickbrain26 * (+0)
19:01:33 <esowiki> [[Trickcode]] https://esolangs.org/w/index.php?diff=65953&oldid=65952 * Trickbrain26 * (+0)
19:09:56 -!- b_jonas has joined.
19:12:48 <esowiki> [[Trickcode]] https://esolangs.org/w/index.php?diff=65954&oldid=65953 * Trickbrain26 * (+101)
19:19:14 -!- oerjan has joined.
19:24:28 <oerjan> oo list
19:24:44 <oerjan> i seem to skip most of the logs these days
19:39:50 -!- ArthurStrong has joined.
20:00:30 <b_jonas> fungot, what cream or filling do you like to eat spongecake with?
20:00:30 <fungot> b_jonas: read the rest of the u.s.
20:16:17 <esowiki> [[Special:Log/newusers]] create * DmilkaSTD * New user account
20:42:54 <b_jonas> fungot, do you ride the horse?
20:42:54 <fungot> b_jonas: looks like it ignores z too? :)
20:43:45 -!- Lord_of_Life_ has joined.
20:45:53 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
20:46:42 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
20:48:11 <b_jonas> no, it only ignores you
20:51:14 <esowiki> [[Intramodular Transaction]] N https://esolangs.org/w/index.php?oldid=65955 * Hakerh400 * (+3860) New language
20:52:02 <shachaf> oo erjan
20:52:33 <esowiki> [[User:Hakerh400]] https://esolangs.org/w/index.php?diff=65956&oldid=65899 * Hakerh400 * (+56)
20:53:40 <esowiki> [[Language list]] https://esolangs.org/w/index.php?diff=65957&oldid=65898 * Hakerh400 * (+56) Add new language
21:05:30 <oerjan> hichaf
21:06:18 -!- hppavilion[1] has joined.
21:06:30 <shachaf> `5 w
21:06:33 <HackEso> 1/2:01//01 is an abbreviation that 01 understands. \ newline//Newlines are le/rn's \ biggest weakness. \  //  is a space, unless you're hackego and don't understand wide characters. \ prography//Prography is the art of turning computational algorithms into something totally incomprehensible to anyone whose brain isn't made of silicon and arsenic. \ haskell'//Unbound implicit parameter (?haskell::Wisdom) \ arising from a use of implicit par
21:06:35 <shachaf> `n
21:06:36 <HackEso> 2/2:ameter `?haskell'
21:09:31 <esowiki> [[Intramodular Transaction]] M https://esolangs.org/w/index.php?diff=65958&oldid=65955 * Hakerh400 * (-3)
21:42:56 -!- atslash has quit (Quit: Leaving).
22:06:58 -!- ArthurStrong has quit (Quit: leaving).
22:08:25 -!- FreeFull has quit.
22:13:55 -!- Cale has joined.
22:31:18 -!- Phantom_Hoover has quit (Ping timeout: 245 seconds).
22:33:40 -!- hppavilion[1] has quit (Ping timeout: 244 seconds).
22:50:22 -!- b_jonas has quit (Quit: leaving).
23:04:36 -!- stux- has joined.
23:06:58 -!- stux|away has quit (Ping timeout: 252 seconds).
23:08:29 -!- xkapastel has joined.
23:09:43 -!- tramplefoot has joined.
23:12:33 -!- tramplefoot has quit (Read error: Connection reset by peer).
23:13:04 -!- hppavilion[1] has joined.
23:31:59 -!- Lykaina has joined.
23:32:22 <Lykaina> anyone like this: https://paste.ee/p/W69OZ ?
23:36:25 <Lykaina> i need advice about totem, and i hate that i don't know about any other chat rooms
23:38:37 -!- Cale has quit (Ping timeout: 276 seconds).
23:40:28 -!- Cale has joined.
23:43:45 <Lykaina> hi Sgeo__
23:43:57 <Sgeo__> Hi Lykaina
23:45:38 <Sgeo__> Lykaina, is the "loop nesting memory" a stack? Which instructions use it?
23:45:38 <Lykaina> can you tell me how to find out if this languge i made is esoteric enough to be talked about here?
23:46:00 <Lykaina> it's like a stack, i guess
23:46:34 <Lykaina> crap...forgot to paste the interpreter's source code
23:47:17 <Lykaina> it allows loops to work
23:47:35 <Sgeo__> I don't know how much interest it would gather, but I think this language qualifies.
23:47:39 <Lykaina> by storing program file positions
23:50:53 <Lykaina> https://paste.ee/p/OKVD1
23:53:29 <Lykaina> sorry i get nudge and desparate at times
23:55:28 <Lykaina> i just figured out subroutines
23:56:47 <Lykaina> Sgeo__: the nesting memory is used by codes N, O, P, and Q
23:58:36 <Sgeo__> Ah. I would suggest the spec stating that, I think?
23:58:38 <Sgeo__> AFK soon
2019-09-05
00:00:22 <Lykaina> k
00:08:57 -!- oerjan has quit (Quit: Nite).
00:10:07 -!- arseniiv has quit (Ping timeout: 246 seconds).
00:37:35 <Lykaina> any other comments about the specs before i re-paste?
00:42:27 <Lykaina> https://paste.ee/p/tloTh updated repaste post Sgeo__'s suggestions...
00:43:27 <Lykaina> replaces paste from 19:32:22 edt
01:16:46 -!- strangleloop has joined.
01:21:31 -!- strangleloop has quit (Ping timeout: 246 seconds).
01:28:33 -!- sprocklem has joined.
01:33:43 <esowiki> [[Language list]] https://esolangs.org/w/index.php?diff=65959&oldid=65957 * Trickbrain26 * (+15) /* T */
01:34:53 <esowiki> [[Trickcode]] https://esolangs.org/w/index.php?diff=65960&oldid=65954 * Trickbrain26 * (-54)
01:36:43 <Lykaina> https://paste.ee/p/Qek9M replaces the source code paste
01:40:13 <esowiki> [[Lazy evaluation]] https://esolangs.org/w/index.php?diff=65961&oldid=49764 * CatIsFluffy * (+14)
01:40:54 <Lykaina> https://paste.ee/p/tloTh information and a sample program is here
01:51:38 <Sgeo__> Lykaina, consider adding it to the Esolangs wiki? (If you're willing to put into public domain). I think people often discuss languages themselves on the talk pages
01:52:20 <Sgeo__> (If you don't want to put into public domain, then making a page and linking should be fine)
01:52:35 <Lykaina> not put the interpreter into public domain when i'm still improving the software
01:53:06 <Lykaina> *I'm not
01:53:19 <Lykaina> *I'm not putting
01:54:05 <Lykaina> the language however...
01:55:49 <Lykaina> when i'm ready
01:56:38 <Lykaina> i want to see what features i can squeeze in
02:09:14 <Sgeo__> Blah, just discovered that in 2018, my https://esolangs.org/wiki/BF-RLE was replaced with a more general discussion. I'm not sure how to feel about this, I felt like "BF-RLE" named a specific encoding
02:11:51 <Sgeo__> This breaks zzo38's https://esolangs.org/wiki/GrainFimple spec unless GrainFimple's spec is updated to more precisely describe what is meant by BF-RLE
02:22:45 -!- hppavilion[1] has quit (Remote host closed the connection).
02:23:34 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=65962&oldid=65915 * Toel F * (+215) /* Introductions */
02:23:43 <esowiki> [[Troll Online]] N https://esolangs.org/w/index.php?oldid=65963 * Toel F * (+404) Created page with "Troll Online is a programming language builded in c#. It can connect to internet. Documentation, interpreter and the source are in this github repository: https://github.com/t..."
02:26:27 <esowiki> [[Language list]] https://esolangs.org/w/index.php?diff=65964&oldid=65959 * Toel F * (+19)
02:30:47 <esowiki> [[Hello world program in esoteric languages]] https://esolangs.org/w/index.php?diff=65965&oldid=65929 * Toel F * (+55)
02:32:17 <esowiki> [[Hello world program in esoteric languages]] https://esolangs.org/w/index.php?diff=65966&oldid=65965 * Toel F * (+2)
03:02:39 -!- Lykaina has quit (Quit: leaving).
03:23:38 -!- stux- has quit (Quit: Aloha!).
03:23:52 -!- stux|away has joined.
03:49:53 <esowiki> [[Troll Online]] https://esolangs.org/w/index.php?diff=65967&oldid=65963 * Toel F * (+1)
04:08:17 -!- nfd9001 has joined.
04:28:12 -!- xkapastel has quit (Quit: Connection closed for inactivity).
06:10:48 <esowiki> [[Special:Log/newusers]] create * Euphoria * New user account
06:24:55 <shachaf> Do you like this?
06:25:29 <shachaf> kmc: hi kmc
06:25:35 <shachaf> non-interactive zero-knowledge proofs are tg
06:26:17 <kmc> hi
06:26:30 <kmc> non-interactive non-zero-knowledge non-proofs
06:27:30 <shachaf> non-interactive hugs
06:29:13 <FireFly> I prefer interactive hugs I think
06:30:18 <shachaf> me too
06:30:22 <shachaf> do you want an interactive hug
06:30:50 <kmc> i would like
07:18:05 -!- cpressey has joined.
07:48:23 -!- Frater_EST has joined.
08:21:31 -!- Phantom_Hoover has joined.
08:21:44 -!- Phantom_Hoover has quit (Client Quit).
08:45:27 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
08:48:28 -!- Lord_of_Life has joined.
09:30:07 -!- Lykaina has joined.
09:31:33 <Lykaina> https://paste.ee/p/FTqsX fixed typos in license and added copyright notice for spec notes + samples
10:05:25 <cpressey> Lykaina: sort of an esoteric computer architecture plus assembler? Do feel free to make an article on the wiki linking to it!
10:06:59 <myname> tg?
10:57:21 <int-e> `? tg
10:57:23 <HackEso> TG is short for Turing-Gödel, the highest possible level of difficulty for a multiplayer game. At this level, it's undecidable whether you can manage to halt before losing or not.
10:57:33 <int-e> this entry may be less useful than you might expect
10:57:45 <Taneb> int-e: that applies to most wisdom entries
10:58:11 <myname> it is way more useful than the monad one
10:58:15 <Taneb> `? monad
10:58:16 <HackEso> Monads are just monoids in the category of endofunctors.
10:58:20 <Taneb> You're right
11:19:15 <fizzie> `? kittegory
11:19:16 <HackEso> A kittegory is just a small category.
11:35:08 -!- arseniiv has joined.
11:48:11 -!- xkapastel has joined.
11:48:41 -!- Frater_EST has quit (Remote host closed the connection).
12:06:56 -!- Lord_of_Life has quit (Max SendQ exceeded).
12:07:29 -!- Lord_of_Life has joined.
13:29:11 <cpressey> > mconcat [\n -> [n+1], \n -> [n-1,n*2]] 4
13:29:14 <lambdabot> [5,3,8]
13:32:18 <cpressey> > (\n -> mconcat [[n+1], [n-1,n*2]]) 4
13:32:21 <lambdabot> [5,3,8]
13:51:11 <cpressey> @pl \x -> foldl (.) id (reverse x) []
13:51:11 <lambdabot> flip (foldl (.) id . reverse) []
14:02:47 <esowiki> [[Garbage]] M https://esolangs.org/w/index.php?diff=65968&oldid=63882 * A * (-16) /* Syntax */
14:05:41 <esowiki> [[Talk:Binary to unary conversion]] N https://esolangs.org/w/index.php?oldid=65969 * CarlosLuna * (+398) Asking for a general Unary to Binary conversion algorithm.
14:05:47 -!- howlands has joined.
14:10:28 -!- howlands has quit (Ping timeout: 245 seconds).
14:18:20 <esowiki> [[Trash]] N https://esolangs.org/w/index.php?oldid=65970 * A * (+1921) Created page with "[[Trash]] is an even simpler [[esoteric programming language]] that is designed to fullfill the CGCC definition of a programming language. ==Syntax== It is very simple (even s..."
14:19:42 <esowiki> [[Trash]] M https://esolangs.org/w/index.php?diff=65971&oldid=65970 * A * (+0) Typo
14:33:48 -!- nfd9001 has quit (Ping timeout: 245 seconds).
14:47:04 <esowiki> [[Lazy evaluation]] M https://esolangs.org/w/index.php?diff=65972&oldid=65961 * A * (+85) Not yet.
14:50:54 <esowiki> [[Lazy evaluation]] M https://esolangs.org/w/index.php?diff=65973&oldid=65972 * A * (+218)
14:53:53 <esowiki> [[Lazy evaluation]] M https://esolangs.org/w/index.php?diff=65974&oldid=65973 * A * (+123)
14:56:03 <Lykaina> currently working on adding bitwise arithmatic
14:58:03 -!- cpressey has quit (Quit: A la prochaine.).
14:59:08 <Lykaina> vote for name: totem vs echidna
14:59:35 <Taneb> Echidna
15:00:18 <esowiki> [[Lazy evaluation]] M https://esolangs.org/w/index.php?diff=65975&oldid=65974 * A * (+308)
15:03:43 * Lykaina votes for Echidna
15:07:40 -!- howlands has joined.
15:18:44 <Lykaina> http://sif.lesidhetree.com/sara/echidna/spec_notes.pdf
15:18:56 <Lykaina> that good?
15:23:10 <Lykaina> Which number does this Befunge code output: 9184611256>\#+:#*9-#\_$.@
15:23:44 <Lykaina> i need to know wtf the captcha is talking about as well as the answer
15:24:44 <Lykaina> correction: 9504611032>\#+:#*9-#\_$.@
15:25:14 <Taneb> Lykaina: have you tried trying to find a befunge interpreter?
15:25:28 -!- howlands has quit (Ping timeout: 245 seconds).
15:25:32 <Lykaina> don't know where to find one
15:26:20 <Lykaina> i'm trying to register on the wiki
15:28:07 <Taneb> Did you try using a search engine such as Google to find a befunge interpreter?
15:29:46 <fizzie> I think there's one on this channel as well?
15:30:49 <fizzie> `! befunge "olleh">:#,_@
15:30:50 <HackEso> hello
15:31:20 <Lykaina> `! befunge 9504611032>\#+:#*9-#\_$.@
15:31:21 <HackEso> 100512662
15:31:40 <esowiki> [[Special:Log/newusers]] create * Lykaina * New user account
15:32:30 <Lykaina> ty fizzie
15:32:33 <fizzie> FWIW, the https://esolangs.org/wiki/Befunge article's "External resources" section also has a lot of interpreters, including at least two online ones.
15:33:02 <Lykaina> that is the weirdist captcha i have ever seen
15:33:15 <fizzie> We've had issues with spammers.
15:33:41 <fizzie> It used to be in Brainfuck, which I guess was a little more approachable?
15:34:09 <fizzie> And before/after that it was a quiz on languages.
15:34:57 <fizzie> All of those were defeated; I think we're maybe assuming by just using humans (to which the current one is vulnerable as well), since it seems unlikely anyone wrote custom code for solving the Brainfuck one, for a website this unpopular.
15:35:35 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=65976&oldid=65962 * Lykaina * (+166) /* Introductions */
15:35:56 <fizzie> (That introduction requirement is another anti-spam barrier.)
15:38:47 <esowiki> [[Echidna]] N https://esolangs.org/w/index.php?oldid=65977 * Lykaina * (+76) Adding a placeholder for my language.
15:41:00 <esowiki> [[Language list]] https://esolangs.org/w/index.php?diff=65978&oldid=65964 * Lykaina * (+14) /* E */ adding Echidna to language list.
15:41:27 <Lykaina> good?
15:45:05 <esowiki> [[Echidna]] https://esolangs.org/w/index.php?diff=65979&oldid=65977 * Lykaina * (+90) adding a link for current information
15:48:02 <Lykaina> brb shower
15:56:28 <esowiki> [[Talk:Binary to unary conversion]] https://esolangs.org/w/index.php?diff=65980&oldid=65969 * CarlosLuna * (+1055) Adding an example of bounded Unary to Binary converter
16:01:06 <Lykaina> back
16:08:29 -!- howlands has joined.
16:16:19 -!- b_jonas has joined.
16:16:33 <b_jonas> I like the current captcha, and I could solve it without an interpreter
16:16:58 <b_jonas> I figured out what the loop does, it's like making a base 9 number from those digits but there was some little twist
16:17:17 <b_jonas> a brainfuck one would be harder
16:17:25 <b_jonas> I'd probably need an actual interpreter for it
16:21:59 <esowiki> [[Talk:Binary to unary conversion]] https://esolangs.org/w/index.php?diff=65981&oldid=65980 * CarlosLuna * (-504) Improving the example of bounded Unary to Binary converter
16:24:09 <esowiki> [[Talk:Binary to unary conversion]] M https://esolangs.org/w/index.php?diff=65982&oldid=65981 * CarlosLuna * (+6) Adding boldface formatting
16:24:13 <Lykaina> gtg
16:24:43 -!- Lykaina has quit (Quit: leaving).
16:40:28 -!- howlands has quit (Ping timeout: 245 seconds).
17:05:17 <fizzie> b_jonas: FWIW, the brainfuck one wasn't that bad. I think it produced a random string of the alphabet {a, b, c, d} by first forming the constant `a`, then having a sequence of +s, -s and .s with no loops.
17:07:55 <fizzie> And yes, it's a base 9 number except with 9 as a sentinel value and the digits backwards because of the stack.
17:08:10 <fizzie> `` dc -e '9i 230116405p'
17:08:11 <HackEso> 100512662
17:22:16 <b_jonas> fizzie: ok, that would work
17:22:59 <b_jonas> fizzie: but does it subtract 9 from each digit before interpreting it in base 9?
17:23:43 <fizzie> No. Well, technically yes, but only for the 'if' condition on whether the digit was 9.
17:25:09 <fizzie> Flattened out, the relevant snippet is :9-_ aka dup-nine-minus-if; so the stack will have [x x-9] at the _ (where x is the original digit), the _ pops off the x-9 and the rest (\9*+) multiplies the accumulator by 9 and adds x to it.
17:25:51 <fizzie> It's reusing the 9 both for the 9-_ condition (when going left-to-right) and for the 9* of the accumulator (when going right-to-left).
17:26:27 <b_jonas> but what does the ending with the dollar sign do?
17:26:48 <fizzie> That just drops off the extra 9.
17:27:30 <fizzie> The full stack at the if is [acc digit digit-9], the _ pops off digit-9 and the $ pops off digit (which in this case must've been 9, since digit-9 was zero) so that . prints the accumulator.
17:27:41 <b_jonas> wait, let me look at the befunge rules, I don't remmeber them
17:28:24 <b_jonas> ok, makes sense
17:28:44 <fizzie> It also uses one of the implicit infinite number of 0s under the bottom of the stack as the initial accumulator value.
17:29:04 <fizzie> ...or does it. I guess it doesn't.
17:29:20 <fizzie> Yeah, no, I confused myself. Of course it doesn't, it would hit that sentinel.
17:29:26 -!- howlands has joined.
17:29:48 <fizzie> It's just that the last digit (the 2 there) is considered the initial accumulator, not one of the base-9 digits, arguably.
17:30:58 <b_jonas> yeah, that looks about right
17:31:19 <b_jonas> [ 9 #. 8 4 6 1 1 2 5 6
17:31:20 <j-bot> b_jonas: 40751313
17:31:33 <b_jonas> oh, backwards
17:31:35 <b_jonas> [ 9 #. |. 8 4 6 1 1 2 5 6
17:31:36 <j-bot> b_jonas: 31480937
17:31:49 <b_jonas> [ 9 #. |. 5 0 4 6 1 1 0 3 2
17:31:50 <j-bot> b_jonas: 100512662
17:35:11 <fizzie> Turns out the Brainfuck variant was mostly as I described, except with a bigger alphabet. It starts with a common initial prefix that loads 100 'd' (as 10*10), then generates a random sequence of X.X.X.X.X.X.X.X. where each of the Xs is uniformly randomly either "", "+" or "-", except the + or - is omitted if that would make the value less than 97 'a' or more than 122 'z'.
17:35:34 <fizzie> It's still pretty prone to creating strings from the beginning of the alphabet, since it starts from 'd' and does a random walk with a maximum step size of 1.
17:35:52 <b_jonas> yeah
17:35:56 <fizzie> And in fact it can never reach 'z' because the longest sequence is 16.
18:20:11 -!- FreeFull has joined.
18:40:34 <int-e> Has Dr. Seuss ever been involved in any lawsuits?
18:41:47 <Hooloovo0> seems at least his estate was https://boingboing.net/2019/03/14/fair-use-vs-seuss.html
18:47:02 <int-e> Oh so some people got to say "Dr. Seuss sues [...]" :)
19:00:45 <esowiki> [[Troll Online]] M https://esolangs.org/w/index.php?diff=65983&oldid=65967 * Dtuser1337 * (+3) Your page might suck, but i converted the example text to headings.
19:03:08 <esowiki> [[Hello world program in esoteric languages]] https://esolangs.org/w/index.php?diff=65984&oldid=65966 * Dtuser1337 * (+39) /* PUBERTY */
19:09:00 <esowiki> [[Grid]] https://esolangs.org/w/index.php?diff=65985&oldid=65920 * Hakerh400 * (+122) Corrected the algorithm description
19:17:54 -!- xkapastel has quit (Quit: Connection closed for inactivity).
19:31:08 -!- imode has joined.
19:33:29 <esowiki> [[Unified HQ9+]] https://esolangs.org/w/index.php?diff=65986&oldid=59395 * Dtuser1337 * (+28)
19:34:06 <esowiki> [[Unified HQ9+]] https://esolangs.org/w/index.php?diff=65987&oldid=65986 * Dtuser1337 * (+26)
20:22:18 -!- imode has quit (Quit: WeeChat 2.5).
20:25:06 -!- Lykaina has joined.
20:27:33 <Lykaina> hi
20:28:20 -!- xkapastel has joined.
20:30:03 <Lykaina> i must apoligize for misleading everybody into thinking ops L and M in Echidna were functioning. In reality, I haven't even designed the code for those, much less written them.
20:31:00 <Lykaina> but i'm working on it
20:33:55 <Lykaina> i know the input. i know the intended output
20:42:23 <Lykaina> L is done
20:42:35 <Lykaina> but untested
20:47:01 -!- Lord_of_Life has quit (Ping timeout: 246 seconds).
20:49:03 -!- Lord_of_Life has joined.
20:55:33 <Lykaina> same for M now
21:04:40 <Lykaina> M isn't working right...
21:07:18 <Lykaina> neither is L
21:15:36 <Lykaina> since when does 0xff6a == 0xffb5?
21:15:43 <Lykaina> grrr
21:20:50 <Lykaina> and 0xAAAA xor 0x5555 = 0xFFFE ?
21:25:05 <Lykaina> and 0xFFFF AND 0xFFFF = 0xFFFE ?
21:25:18 <Lykaina> something weird is going on
21:27:29 -!- oerjan has joined.
21:29:38 <Lykaina> 0xFFFF AND 0xFFFF = 0xFFFE, 0xFFFE AND 0xFFFF = 0xFFFC ? where's the bug? I demand you show me, codeblocks
21:30:22 <Lykaina> hi oerjan
21:34:08 <Lykaina> fixed operation M
21:37:05 <Lykaina> and L
21:39:34 <oerjan> that's two letters down
21:43:10 <Lykaina> no
21:43:52 <Lykaina> it was shifting the output to the left by 1 too much
21:47:17 <Lykaina> updated Echidna's documentation file
21:49:24 <Lykaina> it's a self-hosted pdf on the Echidna page. Not ready to be public domain.
22:00:44 <arseniiv> I thought about morphism composition notations and about (more or less natural) notations for application of a linear operator or its adjoint to a (co)vector and found out I think a very funny thing
22:03:39 <arseniiv> suppose A: U → V, B: V → W, v ∈ U, f ∈ W*, then if we agree to write Av for the application of A to v, it’s for a couple of reasons (regarding left and right modules, and also matrix notation) natural to write fB* for the application of B* to f. Now,
22:05:42 <arseniiv> we can end with * altogether (we have a type system to back us!) and write fB. Then we can write fBAv, for example. And now notice that BA here can denote both B <<< A and B* >>> A*
22:06:05 <arseniiv> this is fun
22:08:58 <arseniiv> or not here, but standalone also. But invoking fBAv beforehand could appeal for this notation choice
22:09:45 <arseniiv> (it reminds me of lenses now, and not without a reason)
22:09:58 <arseniiv> bye I hope this was interesting
22:11:58 <esowiki> [[Echidna]] https://esolangs.org/w/index.php?diff=65988&oldid=65979 * Lykaina * (+137) adding a link for an interpreter.
22:13:32 <Lykaina> can someone look at what i linked about echidna and help me figure out what kind of esolang it is?
22:14:08 <Lykaina> I want to have a description on there at least.
22:14:52 -!- ais523 has joined.
22:15:01 <ais523> it looks like an assembly language to me
22:15:02 <Lykaina> hi ais523
22:15:09 <ais523> hi
22:17:40 -!- arseniiv has quit (Ping timeout: 246 seconds).
22:19:12 -!- FreeFull has quit.
22:23:22 <esowiki> [[Echidna]] https://esolangs.org/w/index.php?diff=65989&oldid=65988 * Lykaina * (+106) a little description
23:01:08 <b_jonas> Lykaina: so are the comparison, divide, modulus and shift right arithmetic instruction unsigned ones, and is there no signed less than instruction?
23:01:47 <b_jonas> Lykaina: and are those bitwise instructions the only way to do an indirect load (as opposed to an indirect store, for which you have a specific instruction)? that will lead to a lot of use of those bitwise thingies with redundant arguments I think
23:02:42 <b_jonas> it seems a bit odd that indirect load works that way, but you seem to allow immediate operands basically everywhere
23:02:48 <b_jonas> it's a strange instruction set
23:02:49 <ais523> b_jonas: you just reminded me of the "load data by rotating it ten times" trick that's sometimes used in Malbolge
23:05:18 <b_jonas> Lykaina: also I find the spec a bit hard to read and unclear, but it's not as bad as some of the things we see on the wiki
23:05:18 <shachaf> ais523: Did you go to the thing?
23:05:37 <ais523> what thing?
23:05:52 <shachaf> http://events.cs.bham.ac.uk/syco/strings3-syco5/
23:06:02 <ais523> no
23:06:16 <ais523> I'm not all that interested in string diagrams
23:06:21 <b_jonas> oh
23:06:25 <ais523> and I'm fairly busy with other things at work
23:06:35 <shachaf> Hmm, what about compositional structures?
23:06:38 <shachaf> Anyway that makes sense.
23:06:41 <ais523> I have been known to go to locally hosted conferences that I'm only tangentially interested in, but not this time
23:08:52 <b_jonas> I only went to locally hosted conferences where I was actually at least somewhat interested in the topic at the time, but of course within conferences I listened to talks in which I'm not too interested, if there isn't a better talk available in another track,
23:09:20 <b_jonas> and I definitely went to PhD dissertations where I wasn't interested in the topic, because those are social events for meeting friends and the thesis topic doesn't matter
23:13:00 <ais523> PhD defences/vivas aren't public in the UK (I know this differs between countries)
23:13:05 <ais523> it's just the candidate and the examiners
23:13:10 <b_jonas> what the...
23:13:12 <b_jonas> that's odd
23:13:20 <b_jonas> they're always public here, they have to be
23:13:30 <ais523> well, they'd be hard to watch because the examiners are supposed to have learned everything from the PhD thesis already
23:13:39 <b_jonas> well, I think there may be closed ones if they're like connected to classified military stuff
23:13:46 <ais523> so they jump straight into asking technical questions about it, there'd basically be no context for anyone else
23:14:50 <b_jonas> so is there a formal celebration open to public after, or do the graduates skip right to the pub run?
23:14:55 <ais523> I can see the argument in wanting the candidate to give a presentation on the topic of their PhD and defend that, I guess it comes down to whether it's more important to defend the principle or the details
23:15:24 <ais523> you don't get the verdict right away, it comes by post a few weeks later after the examiners have discussed, and is normally several pages full of things they're concerned about and want correcting
23:15:45 <ais523> then you make the corrections and resubmit
23:16:04 <b_jonas> mind you, there is a closed part within the public defense, namely the part after all the questions when the committee discuss their decision, and for that part everyone else is ordered out of the room
23:16:11 <ais523> when they're finally happy you get told you're accepted, and then there are mass graduation ceremonies you can go to if you want a big official celebration
23:16:16 <b_jonas> I describe this in a comment, let me find the link
23:16:32 <ais523> I think the UK method is pretty good at avoiding, say, fallacious proofs
23:16:46 <ais523> especially if it's unclear how much effort they'll take to fiix
23:17:41 <shachaf> Does the UK still do snake fights?
23:18:33 <shachaf> Speaking of the UK, I'm a bit confusil about what's going on with parliament nowadays.
23:18:40 <ais523> no idea; I have a suspicion they'd be illegal, which doesn't mean they wouldn't happen but does mean I'd be unlikely to be aware of them if they did
23:18:40 <b_jonas> found it: http://www.madore.org/cgi-bin/comment.pl/showcomments?href=http%3a%2f%2fwww.madore.org%2f~david%2fweblog%2f2015-12.html%23d.2015-12-05.2340#comment-22088
23:19:12 <shachaf> I mean mandatory snake fights after your thesis defense.
23:19:21 <ais523> I didn't have one of those
23:19:23 <ais523> so probably not?
23:19:37 <shachaf> @google snake fight thesis defense
23:19:38 <lambdabot> https://www.mcsweeneys.net/articles/faq-the-snake-fight-portion-of-your-thesis-defense
23:20:09 <b_jonas> ais523: members of the committee get the thesis well in advance, suppoedly read it and understand it, and even send questions to the candidate at least a few days before the defense,
23:20:29 <ais523> as for what's going on in parliament, right now nothing, Commons won't be back until Monday, Lords are asleep but will probably be approving the EUWA #6 tomorrow (they agreed to meet on Friday, which they normally don't, to get enough time to approve it)
23:20:54 <ais523> what's happened over the past couple of days is more interesting
23:21:30 <b_jonas> shachaf: about the parliament, I think because of conflicting promises, they have to sarifice two or three prime ministers every year, so that they can remain in the EU but have someone take the blame for the government not keeping their promise of exiting the EU
23:21:30 <ais523> basically there's a new prime minister (because the old prime minister resigned, the new prime minister is appointed by the same party that the old one came from)
23:22:19 <b_jonas> I understand the prime minister part, what I don't understand is in what way the queen was involved
23:22:29 -!- ais523 has quit (Remote host closed the connection).
23:22:42 -!- ais523 has joined.
23:22:46 <b_jonas> shachaf: we don't have mandatory snake fights for PhD defenses here either
23:23:00 <shachaf> b_jonas: Odd. Maybe it's an American tradition.
23:23:02 <ais523> there is some concern among MPs that he will attempt to leave the EU with no agreements in place, which became much greater when he announced that parliament would be prorogued (basically shut down) until mid-October, when there might not be time to agree on a course of action
23:24:02 <fizzie> The Finnish thesis defence has a /lectio præcursoria/ in the front, and IIRC it's typically the only part done in Finnish (because normally the opponents are from abroad, and the thesis is in English) and I think it's mostly there so that the candidate's family has something for them as well.
23:24:03 <b_jonas> it's possible that some people fight snakes, because the less formal part of the celebration afterwards usually involves heavy drinking, but I'm quite sure it's not mandatory
23:24:21 <b_jonas> the snake fight is not mandatory that is, the heavy drinking is
23:24:59 <ais523> a while ago, because some of the Prime Minster's competitors in the (Conservative Party-internal) leadership debate had threatened to shut down parliament to prevent them interfering with Conservative plans for Brexit, a Northern Ireland-related bill got amended to force regular updates in Parliament on the situation in Northern Ireland, purely for the side effect of forcing Parliament to be open whilst not being offtopic
23:25:09 <ais523> which is why Parliament can't be shut down until beyond mid-October
23:25:58 <fizzie> I went to one thesis examination while in Leuven for a while, and all the questioning part was in Flemish, which made it a little hard to follow for me.
23:26:04 <ais523> anyway, the prorogation doesn't start until next week, and there's a clear majority among Members of Parliament (and Members of the House of Lords) that we shouldn't leave the EU without an agreement in place as to how it's done
23:26:13 <b_jonas> shachaf: hmm, that FAQ says it can involve both venomous snakes and snakes with physical attacks
23:27:03 <ais523> so they've been trying to rush through an emergency law to prevent it happening (known the European Union (Withrdawal) Act No. 6), and the Government (i.e. the Prime Minister + allies) have been trying to stop them
23:28:13 <ais523> the problem is that sufficiently many MPs in the Conservative Party, together with almost all the MPs outside, disagree with the Prime Minister; this lead to some (~20) Conservatives voting against party line in order to get the EUWA #6 through, despite the Prime Minister threatening to throw them out of the party
23:28:20 <shachaf> Did the conservative party kick out all the people who voted against the act?
23:28:38 <ais523> yes! and as a result they no longer have a majority, i.e. they have less than half of the MPs even if you count allies
23:28:40 <b_jonas> ais523: would this be a normal summer break of the parliament, or a special break?
23:28:50 <fizzie> We had a "Brexit info" email at work for all UK employees today. The email just said the situation is "fluid" and that there's nothing new to report.
23:28:54 <ais523> b_jonas: we just had our normal summer break (it ended on Tuesday)
23:29:04 <shachaf> Right, I understood they lost their majority but I wasn't sure whether they'd left themselves or were kicked out.
23:29:10 <ais523> there's normally a small break over October, this is theoretically that break but it's been made way longer
23:29:23 <fizzie> I think they lost the majority even before the rebel alliance got kicked out?
23:29:26 <ais523> shachaf: one left of their own accord, the others were kcked out
23:29:31 <shachaf> I know one person joined the liberal democrats but the rest (including the father of the house?) are now just independent?
23:29:32 <fizzie> Because of that one defection, right.
23:29:48 <ais523> the rest are independent unless or until they join a party or form a new party
23:30:19 <ais523> although I think many of them are planning to be independent until the next election and then leave politics (some want to stay but may have problems being elected with the Conservatives running against them)
23:30:27 <b_jonas> but if the party kicks out their members, then don't they get replaced by other people on the party's list?
23:30:36 <ais523> b_jonas: no, we elect MPs not parties
23:30:39 <b_jonas> for parliament seats that is
23:30:42 <b_jonas> hmm
23:30:54 <ais523> getting rid of an MP is almost impossible, there are only two ways
23:31:32 <b_jonas> strange
23:31:41 <ais523> a) if the MP is convicted of a sufficiently serious crime, then a petition of 10% of their constituents can force a new election (but they can run for the election if they want to; so far this has proven to be a bad idea but it hasn't stopped some MPs trying)
23:32:01 <ais523> b) MPs automatically get fired if they accept money from the Queen
23:32:22 <b_jonas> isn't there also a new MP if the old one dies?
23:32:34 <ais523> OK, yes, but I wouldn't recommend killing MPs
23:32:50 <b_jonas> they don't have to be killed
23:32:51 <ais523> point b) here is mostly used as a loophole for MPs to voluntarily step down, because they aren't legally allowed to resign; the Queen maintains a couple of useless jobs purely for the purpose of hiring MPs that want to resign
23:32:52 <b_jonas> they can die otherwise
23:33:34 <ais523> one of them is a job hunting down outlaws in the Chiltern Hills, which became irrelevant ages ago because a) we have police and b) outlaws don't really exist as a concept any more
23:33:40 <ais523> so it's vacant execept when an MP needs to resign
23:33:51 <b_jonas> it's not theoretical, because Antall József died while he was minister-president, and got replaced by a different minister-president because he died
23:34:06 <shachaf> Oh man. That's pretty good.
23:34:16 <b_jonas> hehe
23:34:19 <b_jonas> yes, that's indeed nice
23:34:30 <ais523> anyway, the Commons passed through all the stages of the EUWA #6 in a single day, so now the Lords have to confirm it
23:34:31 <b_jonas> I mean, we have had positions just to pay people, without a real job
23:35:07 <ais523> there was an attempted filibuster but the Lords have a huge majority against the Prime Minister's position, so the filibusterers gave up at about 1:30am
23:35:22 <shachaf> They submitted 100 amedments to the bill, right?
23:35:37 <ais523> (the opposition Lords were taking it seriously, though; they had a rota set up, and brought lots of food, sleeping bags, etc. to the House of Lords to make sure they could outlast their much smaller number of political opponents)
23:35:39 <ais523> right
23:35:42 <ais523> sl a
23:35:45 <shachaf> Did they give up on them?
23:35:55 <ais523> *so an amendment can be dealt with in a few seconds if there's no real support or no real opposition to it
23:36:12 <ais523> show of hands or voice vote, move on
23:36:27 <shachaf> "opposition lords" means opposed to the majority in the house of lords, or opposed to the government?
23:36:29 <ais523> so for a filibuster to work, you need sufficiently many Lords on your side that the verdict is unclear
23:36:36 <ais523> shachaf: opposed to the government
23:36:42 <b_jonas> but if you don't elect parties, then how are the members of the parliament chosen?
23:37:06 <b_jonas> or the lower house at least
23:37:19 <ais523> the funny thing is, the Lords have a built in Conservative majority because they move so slowly, but (because they move slowly and the Conservatives have changed position rapidly recently) the Conservatives in the Lords are mostly opposed to the Prime Minister
23:37:35 <shachaf> It's kind of bizarre that filibusters are still a thing that nominally works, rather than being treated as bad faith.
23:37:41 <ais523> b_jonas: basically we get a list of candidates for each constituency; if you're standing for a party that's listed on the ballot for information
23:38:30 <b_jonas> ais523: and delegates from constituencies fill all places in the lower chamber?
23:38:43 <ais523> shachaf: the UK version works fairly well I think? a) it only works in the Lords, not the Commons, and the Lords can't block a bill indefinitely, only delay it; b) it lets a really determined minority delay a bill for a while but you have to keep talking / keep voting / etc. so if the minority is too small you won't have the stamina, and if they aren't committed enough they won't bother
23:39:05 <ais523> (the smaller the minority filibustering, the less effort it'll take from the majority to break the filibuster, as their anti-filibuster rota will be easy to set up)
23:39:12 <ais523> b_jonas: right
23:39:36 <b_jonas> hmm, I think the US has some such system too
23:39:46 <b_jonas> but they have states, so it makes more sense
23:40:42 <shachaf> In the US senate it seems that people are slowly changing the rules to get rid of filibusters in various contexts.
23:40:53 <ais523> the filibuster in this circumstance was pretty unique as the Lords need to get the EUWA #6 through before Parliament gets prorogued, which could happen on Monday (the prorogation order was vague as to the exact date, but it's some time next week)
23:41:25 <b_jonas> doesn't the prorogation get delayed while people are actively filibustering?
23:41:55 <shachaf> I suspect the US congress is more pathological than the UK system.
23:42:00 <b_jonas> if they can keep up for that long, that is, which isn't easy
23:42:13 <ais523> so the pro-Government minority would only have to last a few days, but a) they were too small and b) they may have stopped due to optics (also, possibly there was a deal brokered between the two sides, but IIRC people are denying it)
23:42:20 <ais523> b_jonas: no, the date's absolute
23:42:39 <b_jonas> hmm
23:42:45 <fizzie> And it's nominally done by the monarch anyway, right?
23:42:57 <ais523> fizzie: yes, but she has to follow the advice of the Prime Minister
23:43:31 <ais523> or, well, "has to"; it's unlikely that the monarchy would dare break that particular convention, but laws don't technically apply to them, so in theory the Queen could do pretty much any thing
23:44:29 <fizzie> It's kind of funny how Borris (our local nickname) says the prorogation has nothing to do with Brexit, and how there's plenty of time to talk about Brexit when it's over.
23:44:46 <ais523> "plenty of time" = about 2 weeks
23:44:54 <ais523> which isn't enough to implement most suggested solutions
23:45:00 <ais523> e.g. 2 weeks isn't enough time to hold an election
23:46:13 <ais523> (shachaf: on the subject of elections, the prime minister attempted to call one after losing the EUWA #6 vote, but didn't have the votes even to do that; the opposition want to get EUWA #6 through first before calling an election, due to potential issues like using the election to dissolve Parliament for the /rest/ of the time before October 31…)
23:46:52 <shachaf> Is calling general elections common?
23:47:26 <b_jonas> that's odd
23:48:09 <ais523> it used to be that the prime minister could call elections unilaterally, and would do so when they thought they had the best chance of their party being re-elected / gaining a larger majority
23:48:47 <b_jonas> electing a prime minister directly seems such an odd thing to do, exactly because it can get you into these strange situations where their government can't function because they don't have the support of the parliament
23:48:49 <ais523> but then the Liberal Democrat / Conservative coalition government happened, and the Liberal Democrats were concerned that the Conservatives would just call an election as soon as they thought they could get rid of the Lib Dems
23:49:30 <ais523> so as part of the "price" for the coalition, the Lib Dems passed a law that made it almost impossible to call an election unless a) everyone agreed on it or b) the Prime Minister lost their majority
23:50:14 <ais523> now, b) has actually happened, but the opposition are delaying the official no-confidence vote (that tests if a majority exists) until after EUWA #6 goes through
23:50:22 <b_jonas> ah
23:50:29 <b_jonas> ok, it makes more sense that way
23:50:53 <ais523> so everyone knows that the Prime Minister has lost their majority but it hasn't officially been tested, so they're still notionally in charge for the time being
23:51:09 <b_jonas> so that's also why they need the filibuster?
23:51:33 <ais523> the filibuster was an attempt to prevent EUWA #6 passing, but it's already failed
23:51:44 <ais523> so EUWA #6 is quite likely to pass some time tomorrow
23:51:56 <fizzie> Also odd: this one/two/three-line whip thing, which apparently is the number of times the instruction is underlined.
23:52:10 <ais523> yes
23:52:16 <ais523> also zero, but that's equivalent to not whipping at all
23:52:17 <fizzie> You've got a charmingly quaint parliamentary system.
23:52:54 <ais523> the actual numbers of lines aren't really defined
23:52:56 <fizzie> (Probably that's what happens when you've had one so long.)
23:53:23 <ais523> Conservative MPs ignored three-line whips under Theresa May quite frequently and nothing happened to them, probably because she'd lost control of the party (and ended up having to resign)
23:54:09 <ais523> meanwhile, in Boris Johnson's first vote, he threatened to expel anyone from the party who voted against it, and then actually did, but given the numbers he's probably /also/ lost control of (a different subset of) the party
23:55:46 <b_jonas> so have the leaders of those who were expelled from the party started three new parties, each of them claiming to be the one true successor to the conservative party, which has lost its, uh, approval of the people or whatever fancy phrase they use
23:56:01 <b_jonas> because that's how parties tend to die here
23:56:40 <ais523> well, there was a party of breakaway MPs (and technically still is), who have changed their name at least twice since and have lost many MPs
23:56:44 <ais523> so it's not doing too well
23:57:01 <b_jonas> it's how Orbán got his continued rule basically, because every other significant party fell apart that way
23:57:05 <ais523> the people expelled from the Conservatives recently are mostly still independents, but that's not surprising given how recent it was
23:57:33 <b_jonas> might take some more months I guess
23:57:54 <ais523> several MPs who have defected from Conservatives or Labour over Brexit have since joined the LIberal Democrats (traditional third party; the Scottish National Party are larger but don't get any real support outside Scotland)
23:58:14 <b_jonas> I see
23:58:22 <fizzie> Also calling back to the thesis discussion, in Finland actually the bit that keeps things free of errors and the quality bar high enough is the "preliminary examination", which is done offline, takes some weeks, and all but guarantees that everyone who gets to the public examination stage will pass it.
23:58:44 <b_jonas> fizzie: is there a mandatory fight with a snake?
23:58:58 <ais523> fizzie: right, the preliminary examination stage is basically the entire thing for us
23:59:36 <ais523> except that after it, the corrections period can be very long (the length depends on how many corrections there are and how large they are, but is normally 3 or 6 months if the thesis is well-received, more if it has major problems)
23:59:41 <fizzie> b_jonas: No, Finland isn't that known for snakes. We've got just that one poisonous one.
2019-09-06
00:00:00 <b_jonas> fizzie: do they fight some other animal then?
00:02:24 <fizzie> Right. For us, the preliminary examination result is a statement that either you can defend as-is (pretty rare), requires minor revisions (most common; something you can do in a few weeks and doesn't need a full recheck) or requires major revisions (expected to take months, needs to be resubmitted for a full re-examination).
00:02:49 <fizzie> Actually, pretty similar as how journal paper reviews go.
00:03:03 <b_jonas> this one is fun: https://www.youtube.com/watch?v=uiyz1IYEFtI marathon speedrun of a Game Boy Advance game, the problem being that the game requires motion controls, but on that console, recording the video output and motion controls are hard to do at the same time
00:05:10 <ais523> fizzie: here it's anywhere from "no corrections" (never happens in practice), "minor corrections" (3 months, a very common result, it's what my PhD had), "major corrections" (6 months, situations where the corrections may require new maths), "resubmit" (1 year, it means serious problems with the original but they'll give you another chance), equivalents of all those for a lesser degree ("this isn't PhD-worthy but it is worth a Masters' degree"), and
00:05:11 <ais523> outright rejection
00:07:04 <fizzie> How commonly do PhD candidates not already have a Masters' degree?
00:07:10 <b_jonas> is there one for greater degrees too, where the thesis is so impressed they decided that the candidate is chosen to become dictator for life on the spot?
00:07:28 <b_jonas> fizzie: I'd guess ones who come from the US might not have one
00:07:36 <b_jonas> their system is weird
00:08:02 <ais523> fizzie: well there's nothing preventing you getting /two/ Masters' degrees, although that might not be a preferred outcome
00:08:37 <b_jonas> but here too a master's degree is technically not a requirement for the thesis, you only need it in practice because that's the only way you can get a scholarship that lets you do research and study to be able to write a thesis
00:08:52 <shachaf> Transportation for life, and then to be fined forty pound.
00:09:20 <b_jonas> ais523: sure, but they can't just award a master's degree, right? they can only award the thesis part, while the candidate would need to satisfy all the other requirements too
00:09:38 <ais523> "Masters by research" is a recognised qualification, that can be done off just a single thesis
00:09:50 <shachaf> Hmm, should I go to graduate school?
00:09:56 <ais523> a PhD thesis would in theory qualify for it but normally you'd want the PhD instead
00:10:09 <ais523> shachaf: where are you? the US? probably not, you're highly likely to be overcharged
00:10:26 <b_jonas> shachaf: https://www.xkcd.com/498/
00:11:04 <b_jonas> shachaf: do you have a masters?
00:11:26 <ais523> xkcd was pretty different back then
00:11:37 <shachaf> ais523: I'm in the US but presumably I could go anywhere.
00:11:44 <shachaf> b_jonas: I don't.
00:11:52 <b_jonas> shachaf: would you like to get a job for which a PhD degree is a strong advantage, which are mostly jobs at a university or at state-sponsored research institutes?
00:12:15 <shachaf> I don't know.
00:12:39 <b_jonas> ais523: yes. I recommend reading SMBC, which is still similar to what xkcd used to be like in its classic era
00:12:43 <shachaf> Another fact is that I don't have a bachelor's degree.
00:12:56 <b_jonas> only more colorful
00:13:32 <b_jonas> shachaf: that part is easier to fix
00:13:38 -!- oerjan has quit (Quit: Nite).
00:13:47 <shachaf> Is it?
00:13:57 <b_jonas> yes, it's easier to get a bachelors degree than a masters degree
00:14:19 <ais523> b_jonas: I don't really like old xkcd; I don't normally like new xkcd either but sometimes it's very good
00:14:36 <b_jonas> ais523: which of the new ones do you like?
00:15:30 <ais523> the one before the current one was fairly good
00:15:38 <ais523> there's one that's slightly older that was better but I can't remember which one
00:15:59 <b_jonas> Game Show? dunno, I don't much like that one
00:16:16 <ais523> oh right, https://xkcd.com/2189/ is very good
00:16:30 <ais523> xkcd is mostly observational humour, so I mostly enjoy it when the observation is interesting / thought-provoking
00:16:48 <b_jonas> that's not my style either, but ok
00:17:00 <b_jonas> 2189 that is
00:17:08 <b_jonas> observational humor may be fine
00:17:15 <ais523> in that case, the set of xkcds we like is possibly disjoint
00:17:20 <ais523> not that that's necessarily a problem
00:17:40 <b_jonas> I don't claim that all the new ones are bad, I just prefer the classic ones in average
00:17:55 <b_jonas> I still do look at every new xkcd, I haven't stopped looking
00:18:07 <b_jonas> but prefer other comics now
00:18:18 <b_jonas> yeah, part of that is other comics having become better
00:19:02 <shachaf> Is Dennis Skinner everyone's favorite MP?
00:19:24 <ais523> I think there's quite some variety in favourite MPs
00:19:36 <ais523> many people's favourite MP is the one representing their own constituency, of course
00:19:48 <ais523> but there are quite a lot of interesting personalities in the House of Commons
00:19:55 <b_jonas> eww no way
00:20:05 <b_jonas> I still vote for the part of the city that has ruined the city park
00:20:23 <b_jonas> that's where I spent all my childhood, and now it pains me any time I go there
00:20:50 <b_jonas> so I can't feel patriotic to my election district
00:21:06 <shachaf> Presumably Lord Buckethead is everyone's favowrite Lord.
00:22:05 <b_jonas> alternately, it wasn't them who ruined it, because local governments don't have any power anymore, everything is done centrally, in which case there's no point being patriotic to any district government
00:23:07 <ais523> Lord Buckethead isn't actually a Lord (if he were, he wouldn't be able to run for the Commons)
00:23:17 <ais523> also, he isn't the same Lord Buckethead that became famous, there was an IP dispute
00:23:26 <ais523> (it's hard to tell that the person beneath the bucket has changed, though)
00:23:54 <b_jonas> but that's why only very few independents get into the parliament, people vote to support a party in the parliament rather than to support a person supposedly representing their district
00:24:22 <ais523> we normally get maybe 1 or 2 independents elected per election cycle in the UK
00:24:46 <ais523> it's difficult to win as an independent because you don't have a party's advertising / canvassing might behind you
00:25:02 <ais523> and because FPTP discourages voting for people who have little chance of winning
00:25:25 <ais523> but if an independent is considered a serious candidate in a constituency, they may well end up winning if people dislike their main competitors
00:27:15 <shachaf> Until recently I thought most Lords in the House of Lords were hereditary.
00:27:17 <b_jonas> wait what? there's a member of the parliament with a bucket on their head? but isn't that impossible because of https://stickman.qntm.org/comics.php?n=622 ?
00:27:40 <shachaf> But apparently that's only a small fraction of them.
00:27:53 <shachaf> The rest are appointed, but it's not clear to me exactly how the appointment works.
00:27:57 <b_jonas> exactly, just one or two independets at any time
00:27:57 <ais523> b_jonas: no, Lord Buckethead is a persistent /candidate/ to be an MP but has never won
00:28:03 <ais523> nor come remotely close to winning
00:28:14 <b_jonas> I think there's only one right now
00:28:19 <shachaf> Sometimes it's by the Prime Minister, but sometimes by a committee?
00:28:34 <shachaf> And appointments are for life. Should I think of it like US Supreme Court appointments?
00:28:55 <b_jonas> ais523: so they'd remove the bucket if they became an MP?
00:29:04 <ais523> think of it like life appointments to a really big advisory body that parliament calls on, that's what the Lords basically are at this point
00:29:13 <ais523> b_jonas: either that, or immediately resign
00:29:32 <b_jonas> ah yes, that can work too
00:29:50 <ais523> the normal life-cycle of a law has the Commons design it and the Lords work out the details (and/or say "are you sure?"); the Lords can't block a bill but can delay it
00:30:27 <b_jonas> I think the non-serious party here was once asked what they'd do if they gained majority in the parliament (they never had anything near the chance for that), and whoever they asked said that they'd resign and call for a new election
00:30:40 <shachaf> I guess the House of Lords is much weaker than e.g. the US Senate nowadays.
00:30:43 <ais523> so the Lords are a combination of hereditary peers which are families that have been Lording for generations (advantage: people can be educated specifically for the position; disadvantage: somewhat undemocratic), former MPs, and business/scientific leaders
00:30:47 <shachaf> Despite being called an "upper house".
00:30:54 <shachaf> I suppose that wasn't the case in the past.
00:31:23 <ais523> the Lords used to be equal to the Commons, but there was a constitutional crisis in the early 20th century which lead to the commons being given an override
00:32:55 <shachaf> Apparently bishops have priority over other humans in the House of Lords? What a scam.
00:33:09 <ais523> (for budgets, the override triggers automatically after 1 month if agreement hasn't been reached; for anything else, the Commons need to attempt to pass the same law twice a year apart and then intentionally trigger it)
00:33:41 <ais523> being able to delay bills by a year is fairly powerful and gives the Commons lots of tiime to reconsider, but means that the Lords have no final say on almost anything
00:33:57 <b_jonas> shachaf: I don't think "upper" means it should be stronger. it means the same as "Lords", that is, representing the upper classes of society
00:33:57 <shachaf> Hmm, MP terms are normally 5 years?
00:34:13 <ais523> (the exception: any attempt to increase the length of time between elections to more than 5 years needs to be approved by both the Commons and Lords, no override available)
00:34:15 <ais523> shachaf: right
00:35:10 <shachaf> b_jonas: I don't think "upper" means that it's stronger in any case.
00:35:25 <b_jonas> it does in cards
00:35:44 <b_jonas> because it's representing a single person, not a whole house
00:35:58 <b_jonas> well, as much as cards represent people
00:36:06 <b_jonas> they're abstract stuff decorated with people
00:36:09 <ais523> the funny thing is, one of the only times the override was actually used was to change the time limit on using the override from two years to one year
00:36:28 <b_jonas> lol
00:36:37 <ais523> or, not a time limit, it's the opposite of a limit
00:37:10 <b_jonas> reasonable, that's the sort of topic that they're definitely familiar with so qualified to make rules about
00:48:03 -!- xkapastel has quit (Quit: Connection closed for inactivity).
01:26:23 -!- ais523 has quit (Quit: quit).
03:03:02 <Lykaina> b_jonas: hi
03:05:43 <Lykaina> b_jonas: yeah, the spec was originally designed for my personal reference
03:06:21 <Lykaina> i'll have to clarify a lot of stuff before it is ready for the wiki
03:09:01 <Lykaina> ready for the wiki as in directly explaining it on the wiki page
03:10:42 <Lykaina> current thing is modifying the subroutine code to make it easier to reuse them
03:11:20 <Lykaina> that's { N , & , -- }
03:11:41 <Lykaina> those commands are affected
03:28:25 <esowiki> [[Super Stack]] N https://esolangs.org/w/index.php?oldid=65990 * Dtuser1337 * (+26) Redirected page to [[Super Stack!]]
04:12:02 -!- rodgort has quit (Quit: Leaving).
04:16:17 -!- rodgort has joined.
05:02:53 <esowiki> [[Echidna]] https://esolangs.org/w/index.php?diff=65991&oldid=65989 * Lykaina * (-3) updating with newest interpreter link.
05:10:23 <esowiki> [[Echidna]] https://esolangs.org/w/index.php?diff=65992&oldid=65991 * Lykaina * (+22) doing a little formatting.
06:27:44 <kmc> http://kickjava.com/src/com/sun/java/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonWindowNotFocusedState.java.htm
06:28:19 <shachaf> Is this autogenerated code?
06:40:11 <kmc> who knows, man
06:44:56 <shachaf> kmc: My friend is very irritated at everything about this post: https://softwareengineering.stackexchange.com/questions/394399/managing-and-organizing-the-massively-increased-number-of-classes-after-switchin
06:46:20 -!- Frater_EST has joined.
07:16:54 <esowiki> [[Special:Log/newusers]] create * Peti345 * New user account
07:21:01 <b_jonas> ah great, another company that buys into design patterns and best practices instead of just writing reasonable code
07:21:31 <b_jonas> though on the plus side, they are writing tests
07:22:20 -!- nfd9001 has joined.
07:37:48 -!- Frater_EST has left.
07:39:46 -!- b_jonas has quit (Quit: leaving).
08:15:33 -!- cpressey has joined.
08:18:52 -!- nfd has joined.
08:22:11 -!- nfd9001 has quit (Ping timeout: 268 seconds).
08:36:47 -!- wob_jonas has joined.
08:41:15 <cpressey> > (foldl (flip (.)) id [\x -> x+1, \x -> x*2, \x -> x*x]) 4
08:41:17 <lambdabot> 100
08:41:25 <cpressey> (appEndo $ getDual $ mconcat $ map (Dual . Endo) [\x -> x+1, \x -> x*2, \x -> x*x]) 4
08:41:35 <cpressey> > (appEndo $ getDual $ mconcat $ map (Dual . Endo) [\x -> x+1, \x -> x*2, \x -> x*x]) 4
08:41:37 <lambdabot> 100
08:42:32 * cpressey mumbles something about a monoid at an informal gathering of endofunctions
08:43:49 <shachaf> @quote appendo
08:43:50 <lambdabot> quicksilver says: 'appEndo' sounds like a harry potter spell
08:43:51 <shachaf> @quote appendo
08:43:52 <lambdabot> hpc says: appEndo sounds like a harry potter spell
08:43:59 <shachaf> hmm
08:44:03 <shachaf> suspicious
08:44:39 <shachaf> > foldr ($) 4 [\x -> x+1, \x -> x*2, \x -> x*x]
08:44:42 <lambdabot> 33
08:44:57 -!- Lord_of_Life_ has joined.
08:44:59 <cpressey> appendo sounds like it would be an introductory minikanren example
08:45:01 <shachaf> > foldl (&) 4 [\x -> x+1, \x -> x*2, \x -> x*x]
08:45:04 <lambdabot> 100
08:47:58 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
08:48:03 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
08:48:10 <wob_jonas> only because of the video game that has a "flippendo" spell, it doesn't sound like a book-canon spell name
08:49:31 <shachaf> That wasn't the quote I was looking for anyway.
09:13:03 <cpressey> @hoogle &
09:13:03 <lambdabot> Data.Function (&) :: a -> (a -> b) -> b
09:13:03 <lambdabot> Control.Lens.Lens (&) :: () => a -> (a -> b) -> b
09:13:03 <lambdabot> Control.Lens.Operators (&) :: () => a -> (a -> b) -> b
09:27:23 <wob_jonas> apparently python regexes *almost* the same syntax as perl regexen. there's one important difference, but that one is among the most frequent things I write in a regex:
09:27:35 <wob_jonas> perl's /\z/ corresponds to python's r"\Z"
09:27:50 <shachaf> oh no
09:27:54 <wob_jonas> luckily if I mess it up, r"\z" gives an unconditional error
09:28:06 <wob_jonas> and I don't think I ever want to write perl's \Z specifically
09:28:14 <wob_jonas> or at least never without thinking a lot
09:30:17 <wob_jonas> the other incompatibility is making named capture groups
09:30:45 <wob_jonas> it's possible that some of these differences come from ancient historical reasons of course, because python has old roots and evolved parallel to perl
09:40:06 -!- nfd9001 has joined.
09:42:23 -!- Bowserinator has quit (Quit: Blame iczero something happened).
09:42:42 -!- Bowserinator has joined.
09:42:52 -!- nfd has quit (Ping timeout: 276 seconds).
09:54:34 <wob_jonas> oh yeah, I almost forgot this one! in windows, you need to add an extra double quote at the start of the command for the libc system function to work
10:10:20 -!- nfd has joined.
10:10:27 <cpressey> Are there any examples of using one language's package system to distribute packages for some other language?
10:11:01 <shachaf> Ugh, the idea of "a language's package system" is so bad in the first place.
10:11:11 <cpressey> I know right?
10:11:44 <shachaf> Time to give up on all software.
10:12:32 -!- nfd9001 has quit (Ping timeout: 245 seconds).
10:28:22 -!- arseniiv has joined.
10:36:56 -!- nfd9001 has joined.
10:38:18 <wob_jonas> shachaf: good. so when do we start the rebelion to destroy all thinking machines?
10:38:47 -!- nfd has quit (Ping timeout: 245 seconds).
10:41:28 -!- nfd has joined.
10:43:23 -!- nfd9001 has quit (Ping timeout: 245 seconds).
10:46:44 -!- nfd9001 has joined.
10:49:38 -!- nfd has quit (Ping timeout: 245 seconds).
10:50:53 -!- nfd has joined.
10:53:22 -!- nfd9001 has quit (Ping timeout: 245 seconds).
11:00:53 -!- nfd has quit (Ping timeout: 245 seconds).
11:00:57 -!- nfd9001 has joined.
11:05:27 -!- nfd has joined.
11:08:04 -!- nfd9001 has quit (Ping timeout: 268 seconds).
11:20:22 -!- nfd9001 has joined.
11:20:28 -!- nfd has quit (Ping timeout: 245 seconds).
11:26:37 -!- wob_jonas has quit (Remote host closed the connection).
11:28:28 -!- xkapastel has joined.
11:37:32 -!- nfd has joined.
11:40:03 -!- nfd9001 has quit (Ping timeout: 245 seconds).
11:51:14 -!- nfd has quit (Ping timeout: 268 seconds).
12:44:33 -!- Frater_EST has joined.
12:59:55 -!- Lykaina has quit (Quit: leaving).
13:18:13 -!- Melvar has quit (Ping timeout: 246 seconds).
13:27:45 -!- jglewd2641 has joined.
13:28:16 -!- jglewd2641 has quit (Remote host closed the connection).
13:31:58 -!- Melvar has joined.
14:41:14 -!- Frater_EST has left.
15:41:22 <esowiki> [[Echidna]] https://esolangs.org/w/index.php?diff=65993&oldid=65992 * Lykaina * (+0) updating with newest interpreter link.
15:47:27 <esowiki> [[Talk:Binary to unary conversion]] https://esolangs.org/w/index.php?diff=65994&oldid=65982 * CarlosLuna * (+399) Adding an Unary to binary (arbitrary precision) conversion algorithm
15:50:46 <esowiki> [[Drawkcab]] https://esolangs.org/w/index.php?diff=65995&oldid=53052 * Gamer * (+82)
15:51:19 <esowiki> [[Drawkcab]] M https://esolangs.org/w/index.php?diff=65996&oldid=65995 * Gamer * (+0)
15:57:45 <esowiki> [[Drawkcab]] https://esolangs.org/w/index.php?diff=65997&oldid=65996 * Gamer * (+59)
15:59:07 <esowiki> [[Drawkcab]] https://esolangs.org/w/index.php?diff=65998&oldid=65997 * Gamer * (+20)
16:13:18 <cpressey> int-e: http://hackage.haskell.org/package/MonadPrompt-1.0.0.5/docs/Control-Monad-Prompt.html is making my brain hurt. Do you still have the solitaire game example? http://int-e.home.tlink.de/haskell/solitaire.tar.gz is broken.
16:14:06 <cpressey> http://paste.lisp.org/display/53766 is also broken
16:14:53 <esowiki> [[Drawkcab]] https://esolangs.org/w/index.php?diff=65999&oldid=65998 * Gamer * (+284) /* Examples */
16:15:08 <esowiki> [[Drawkcab]] https://esolangs.org/w/index.php?diff=66000&oldid=65999 * Gamer * (+6) /* drawkcaB 3 nohtyP */
16:15:27 <esowiki> [[Drawkcab]] https://esolangs.org/w/index.php?diff=66001&oldid=66000 * Gamer * (+8) /* drawkcaB ++C */
16:15:34 <int-e> cpressey: good question
16:16:10 <esowiki> [[Drawkcab]] M https://esolangs.org/w/index.php?diff=66002&oldid=66001 * Gamer * (+0) /* Concept */
16:17:20 <cpressey> No hurry, it will probably take me several weeks to wrap my head around this
16:18:40 <int-e> cpressey: https://int-e.eu/~bf3/haskell/solitaire.tar.gz in full bit-rotted glory... (February 2008)
16:19:08 <cpressey> int-e: awesome, thank you very much
16:20:57 -!- Camto[m] has quit (Remote host closed the connection).
16:21:11 -!- ivzem[m] has quit (Remote host closed the connection).
16:21:11 -!- xylochoron[m] has quit (Read error: Connection reset by peer).
16:21:21 -!- wmww has quit (Read error: Connection reset by peer).
16:21:22 -!- tswett[m] has quit (Read error: Connection reset by peer).
16:26:43 -!- cpressey has quit (Quit: A la prochaine.).
16:32:45 -!- Camto[m] has joined.
16:34:17 <int-e> @tell cpressey that was actually pretty painless to fix: https://int-e.eu/~bf3/haskell/solitaire-0.0.0.tar.gz
16:34:17 <lambdabot> Consider it noted.
16:54:05 -!- tswett[m] has joined.
16:54:05 -!- xylochoron[m] has joined.
16:54:05 -!- wmww has joined.
16:54:13 -!- ivzem[m] has joined.
16:57:47 -!- FreeFull has joined.
17:04:51 -!- b_jonas has joined.
17:26:44 <b_jonas> my hon. and learned friend fungot, what color of raisins do you prefer?
17:26:44 <fungot> b_jonas: pick me, pick me!
17:26:58 <b_jonas> fungot: I pick you
17:26:59 <fungot> b_jonas: i'm a teenage male interested in programming who recently found out about it is hurting?
17:27:07 <b_jonas> um
17:28:13 -!- xkapastel has quit (Quit: Connection closed for inactivity).
17:32:57 <int-e> ^style
17:32:57 <fungot> Available: agora alice c64 ct darwin discworld enron europarl ff7 fisher fungot homestuck ic irc* iwcs jargon lovecraft nethack oots pa qwantz sms speeches ss wp ukparl youtube
17:33:27 <int-e> thought so, but where did fungot pick up such language...
17:33:27 <fungot> int-e: i don't remember henna facepaint in wizard of earthsea.) define a macro in a standard latex command. well, the problem i'm having is at fnord
17:34:13 <int-e> b_jonas: tbf you started with a trick question
17:35:09 <shachaf> b_jonas: Oh, when you address fungot as "my hon. and learned friend", that means you and fungot are both MPs, and fungot is also a lawyer, but not a member of the Privy Council. Is that right?
17:35:10 <fungot> shachaf: catfive. better tack on the nationality and ethnicity in there as it is
17:55:44 -!- Sgeo has joined.
17:58:42 -!- Sgeo__ has quit (Ping timeout: 244 seconds).
18:32:31 -!- tromp_ has quit (Remote host closed the connection).
18:43:50 <b_jonas> `? mothology
18:43:51 <HackEso> Mothology is the study of moths, myths, mouths, and mirths.
18:44:15 <b_jonas> `? mythology
18:44:17 <HackEso> Mythology is the study of myths, moths and mirths.
18:44:18 <b_jonas> `? myth
18:44:20 <HackEso> A myth is a female moth.
18:44:39 <b_jonas> `? mother
18:44:40 <b_jonas> `? moth
18:44:40 <HackEso> A mother is a person who practices mothology.
18:44:41 <HackEso> Moths are the main ingredient of mothballs.
18:44:47 <b_jonas> `? method
18:44:49 <HackEso> A method is a tweaked out mothod.
18:45:14 <b_jonas> `? month
18:45:16 <HackEso> Month is a misspelled Moth.
18:45:22 <b_jonas> I didn't realize there were so many of these
18:46:38 <shachaf> `? mouth
18:46:39 <HackEso> mouth? ¯\(°​_o)/¯
18:46:48 <shachaf> A British moth?
18:47:00 <shachaf> `? mirth
18:47:01 <HackEso> Mirths are juvenile moths. They giggle a lot.
18:50:05 <fizzie> int-e: https://esolangs.org/logs/2007-07-03.html#lcl + #scheme <Riastradh> What about it is hurting?
18:51:09 <fizzie> Plus I think most likely some other sentence containing at least the fragment "-- out about it --"
19:13:51 -!- tromp has joined.
19:36:20 <arseniiv> `? math
19:36:21 <HackEso> math? ¯\(°​_o)/¯
19:37:10 <arseniiv> that’s reassuring
19:37:45 <arseniiv> `? mint
19:37:47 <HackEso> mint? ¯\(°​_o)/¯
19:38:21 -!- ais523 has joined.
19:39:34 <arseniiv> fungot, do you like lossy compression of music?
19:39:34 <fungot> arseniiv: unless you need faster code. and given ironically ( or mockingly... i'm unsure) but thanks :)
19:40:05 <arseniiv> fungot: and what about lossless one?
19:40:06 <fungot> arseniiv: forces statement to be fnord
19:40:10 <b_jonas> I do like lossy compression of music
19:41:57 <arseniiv> b_jonas: how much losses you can stand?
19:42:14 <b_jonas> arseniiv: five
19:44:50 <arseniiv> I’m suspicious some people who were or are encoding music in mp3 don’t know how to do it good or do have a bad codec (is it a thing at all?), as then resulting file has a reasonable bitrate over 128 kbps or even over ~200 kbps but I hear artifacts
19:45:04 <b_jonas> arseniiv: I do know how to do it
19:45:10 <b_jonas> I even have my notes about which switches to give
19:45:37 <b_jonas> it's a bit complicated because the software changed over the years, plus these days I can finally encode music to ogg instead of mp3
19:45:57 <b_jonas> but the five is real, it's an argument to a certain switch that tends to give the right amount of compression
19:45:58 <arseniiv> I think someone even takes a file about 64 kbps and then “upscales” it. Poor universe
19:46:48 <arseniiv> b_jonas: wait, what does five mean?
19:47:07 <b_jonas> the trick is to test how much you can compress until you notice problems if you specifically look for them, then encode to significantly better quality than that
19:48:29 <arseniiv> b_jonas: seems a good strategy, yes
19:48:33 <b_jonas> arseniiv: ffmpeg -i "$infile" "${metadata[@]}" -vn -c:a libvorbis -q 5.0
19:48:42 <b_jonas> the 5.0 is a quality parameter to that particular codec
19:49:01 <b_jonas> I need different parameters depending on the software and the compression method and the quality switch obviously
19:49:01 <arseniiv> ah, quality index, or how’s it called, I see
19:49:39 <arseniiv> LAME also has an indexed set of variable rate qualities
19:50:17 <b_jonas> arseniiv: yes, but I don't use LAME anymore
19:50:28 <b_jonas> I just encode video and audio with ffmpeg
19:55:40 <arseniiv> several times I encoded some music these days I took the quality associated with ~200 kbps, I think. Its index should be 1 or 2 perhaps. I read that even mp3 is sufficiently good on almost all sounds when at bitrates > 128 kbps, and formats like ogg you mentioned or some other new ones, fare even better, but my anecdotal evidence suggests that it’s not that simple (for mp3)
19:59:00 <b_jonas> yes, 128 kbps is usually enough
20:02:04 <arseniiv> also how do you think could sample rate mismatch between a file and the sound card, matter? I don’t see how it would but…
20:02:27 <arseniiv> s/how/
20:06:18 <kmc> resampling audio between two arbitrary sample rates is an interesting problem
20:06:51 <kmc> there is a tradeoff between the amount of computation needed and the quality of the result
20:07:25 <b_jonas> and probably between different types of distortions too
20:07:30 <kmc> the difficulty is related to the least common multiple of the rates
20:07:52 <kmc> obviously, the easiest case is when one rate is a multiple of the other
20:08:07 <kmc> in general you want to interpolate to the LCM and then decimate to the output rate
20:08:23 <kmc> and there are ways to do this with FIR filters that provably introduce minimum distortion
20:08:39 <b_jonas> um
20:08:50 <b_jonas> but what if the least common multiple is infinite, because the ratio is irrational?
20:08:52 <kmc> however there are cases where the LCM rate would be prohibitively high
20:09:05 <b_jonas> yeah, that
20:09:30 <kmc> if your sample rate is not a rational number then you are doing something freaky
20:09:36 <kmc> the LCM will always be finite, but it might be huge
20:09:37 <b_jonas> um
20:09:40 <b_jonas> why?
20:09:48 <b_jonas> the sample rates are not dimensionless
20:09:56 <kmc> i mean, why would you design a system where it's not
20:10:00 <kmc> the dimension doesn't really matter
20:10:10 <kmc> because there is a rational conversion factor between any two practical time units
20:10:15 <b_jonas> they're in hertzes or gertzes depending on whether you're writing it in english or russian letters
20:10:26 <kmc> if you measure time in pi-seconds or something then you deserve what's coming to you
20:10:43 <b_jonas> you don't design such a system, people design two separate systems, each of them is reasonable, it's just conversion between them that isn't
20:11:01 <kmc> can you give me an example please
20:11:01 <b_jonas> they come around from spinning vinyl disks or whatever
20:11:03 <kmc> where this has happened
20:11:13 <b_jonas> I don't know, I don't do audio stuff, it's not my thing
20:11:26 <kmc> are there any two time units in common use which do not have a rational conversion factor
20:11:28 <b_jonas> but eventually it doesn't matter of course
20:11:44 <b_jonas> because rational with prohibitively high LCM is basically the same problem
20:11:50 <kmc> yeah
20:12:06 <b_jonas> and you get between the two with some approximation in the rate
20:12:09 <kmc> non-integer rates in Hz are common, for example NTSC framerate is 29.97 Hz for Historical Reasons™
20:12:13 <kmc> and PAL is 25
20:12:20 <arseniiv> (b_jonas: there’s no cyrillic letter g :P also in an old transliteration h was converted to г, like Helmholtz and Huygens are (still and hopefully forever) Гельмгольц and Гюйгенс)
20:12:28 <kmc> but of course 29.97/25 is still rational
20:12:46 <kmc> anyway
20:13:00 <kmc> if the LCM is too big then you can do other things at the expense of introducing distortion
20:13:17 <kmc> I forget exactly how
20:13:58 <kmc> but you can interpolate to a smaller compromise value and then during decimation, interpolate that 'on the fly' using a small filter such as cubic interpolation, that only looks at a few sample points
20:14:19 <kmc> to do it properly might require storing many millions of data points in your DSP filter state
20:14:20 <b_jonas> apart from encoding music files to mp3 or ogg and chopping them timewise, all I did with audio is remove them from audio+video files when I re-encode the video
20:15:01 <kmc> I wrote a fun script once to batch-convert my master music library (a mix of mostly flac and high quality mp3) to ogg vorbis for my portable music player
20:15:09 <kmc> it would distribute the work across multiple machines
20:15:34 <kmc> then I rewrote it in C# because I wanted to get a taste of what C# is like
20:15:35 <kmc> it remains the only C# program I've written
20:16:25 <arseniiv> (and it makes some sense for southern dialects where г is frequently a fricative [ɣ], not a plosive [ɡ] like in the normed dialect, and we could also for example take Ukrainian where г means [ɦ] outright and there’s a separate letter for plosive, ґ, AFAIR it’s used in rare contexts, but the transliteration of Hertz would be probably the same and it would be read more like the original name)
20:17:21 <b_jonas> arseniiv: sure, it just becomes funny when you transliterate the russian names back to hungarian, and you get g instead of h and f instead of th
20:20:19 <arseniiv> kmc: did you come to any conclusions about C#?
20:23:35 <kmc> arseniiv: it seems like a fine language, like Java but less crippled, it's not terribly exciting but I wouldn't hate using it either
20:25:08 <arseniiv> yesterday I remembered that I don’t like C# left switch statement syntax almost as it was in C and C++ (and Java?..) I have seen a syntax like switch (e) case (…) b case (…) b … else b (where b are blocks), this looks more comfortable in a language where low-level control flow inside switch doesn’t exist
20:25:51 <arseniiv> b_jonas: ah, I agree
20:26:29 <arseniiv> I saw something like that somewhere and it looks strange
20:30:03 <b_jonas> anyway, I'm not actually an engineer, so I don't meet those unit of measure abbreviations
20:31:18 <b_jonas> though I guess Hz does appear on end-user electronics like mobile phone chargers
20:32:23 <b_jonas> but these days all those end-user electronics have magical solid state transformers that work with any of the voltage and frequency standards for mains electronics
20:32:49 <kmc> correct
20:32:56 <kmc> switch-mode power supplies
20:33:02 <kmc> some of them will even run on DC input
20:33:11 <kmc> though not to arbitrarily low voltage
20:33:18 <kmc> SMPS are very interesting
20:34:06 <kmc> simple and clever, but tricky to design well in practice
20:34:27 <b_jonas> "~ 110–240 V 50/60 Hz" they all say, so you can use them with passive converters if you travel to anywhere
20:34:34 <kmc> they basically do AC->DC->AC->DC
20:34:53 <kmc> which sounds inefficient but if you do it right it's very efficient
20:35:06 <b_jonas> isn't that because they transform to AC with much higher frequency?
20:35:30 <b_jonas> it's still magic, I don't know how it can work
20:35:34 <kmc> the middle AC frequency is on the order of 100-1000 kHz so they can use cheaper / lighter / smaller transformers
20:36:35 <kmc> b_jonas: the very simple overview is that they alternately charge up an energy storage device (usually an inductor) and then discharge it into another storage device (usually a capacitor), which feeds the load
20:36:46 <b_jonas> that makes sense, but then they have to create such a higher frequency AC too, and without too much energy loss
20:36:49 <kmc> that alternation is controlled by semiconductor switches
20:37:11 <kmc> (though actually, very old devices called "vibrators" worked on a similar principle, but mechanically!)
20:37:25 <kmc> (used to transform 12V DC in a car into hundreds of V for vacuum tube radios)
20:37:33 <kmc> and there's a feedback loop which controls the frequency and/or duty cycle of the switching
20:37:48 <kmc> to maintain a certain output voltage regardless of the load
20:38:18 <kmc> they can boost as well as reduce voltages
20:38:41 <kmc> in fact you can build ones that can take any input voltage in a wide range, lower or higher or the same as the output
20:38:46 <kmc> though it's more complicated
20:39:10 <b_jonas> and then they do multiple possible output voltages, and negotiate them through USB
20:39:12 <kmc> what I find really interesting are the similarities between a SMPS, a class-D amplifier, a delta-sigma DAC, and an active power factor correction circuit
20:39:15 <kmc> yep
20:39:56 <kmc> you can sort of think of a class-D (switching) amplifier as a SMPS whose output voltage varies over time, determined by the input signal
20:40:00 <b_jonas> yes, the car charger ones take 12 V DC
20:40:21 <kmc> USB-C-PD is neat. I have a single brick, not much bigger than a typical phone charging brick, that can charge both my phone and my laptop
20:40:24 <kmc> that's handy for travel
20:41:12 <kmc> I still use the larger dedicated laptop brick at home
20:41:26 <kmc> there are some strange esoteric things you can do with USB-C
20:41:34 <kmc> like plug two chargers into each other, or plug your laptop into itself
20:41:40 <b_jonas> I don't charge laptop, but I can charge any of my low power devices (camera, mobile phone, spare mobile phone, music player, bluetooth headphone adapter) with the same charger
20:41:50 <kmc> cool
20:42:14 <b_jonas> but they're all low power, unlike the laptop
20:42:25 <b_jonas> laptop chargers actually heat up, that's harder
20:42:42 <b_jonas> two chargers into each other? what does that do?
20:42:45 <kmc> this brick is capable of 60W (3A @ 20V)
20:42:49 <kmc> which is enough for the laptop to charge
20:42:50 <b_jonas> do you mean with only one charger plugged into mains?
20:43:05 <kmc> I think it requires 20V which is why most of my bricks won't charge it
20:43:11 <kmc> the factory default charger is only 65W anyway
20:43:19 <kmc> b_jonas: it produces mains out of the other one, obviously /s
20:43:31 <b_jonas> no, that would be touch unsafe
20:43:34 <kmc> I have a USB-C inline power meter too
20:43:35 <kmc> which is neat
20:44:16 <kmc> it tells the voltage, current, and direction of power
20:46:11 -!- Lord_of_Life has quit (Excess Flood).
20:46:30 -!- Lord_of_Life has joined.
20:47:26 -!- unlimiter has joined.
21:14:31 -!- Lord_of_Life has quit (Ping timeout: 244 seconds).
21:21:32 -!- Lykaina has joined.
21:21:40 <b_jonas> hello Lykaina
21:21:57 <Lykaina> updated the documentation pdf (again)
21:22:07 -!- Lord_of_Life has joined.
21:22:15 <Lykaina> hi b_jonas
21:22:45 <arseniiv> kmc: interesting stuff. Now I know I don’t kow anything about contemporary electronics :D
21:22:57 <arseniiv> s/kow/know
21:23:12 <kmc> :)
21:23:16 <kmc> it's complicated shit
21:23:41 <b_jonas> yeah
21:23:43 <arseniiv> I had that impression already, but not I’m aware I’m hopeless
21:23:58 <kmc> arseniiv: I knew very little until 2-3 years ago
21:23:59 <b_jonas> which explains why our company keeps hiring so many people who understand electronics enough to design and assemble it
21:24:40 <b_jonas> and train engineer student interns in it too
21:24:55 <kmc> one problem with SMPSes is that they (especially the cheap ones) tend to produce tons of radio frequency interference at frequencies which interfere with ham radio
21:25:09 <Lykaina> based on this new, easier to read pdf, what is your opinion of Echidna? http://sif.lesidhetree.com/sara/echidna/spec_notes.pdf
21:25:11 <kmc> making it harder and harder to operate HF from populated areas
21:25:56 <kmc> they also produce RF on the output itself so some hams still swear by the old, huge, expensive, inefficient linear power supplies
21:26:00 <b_jonas> kmc: but can't the power supplies shield that with some wires unless they're disassembled?
21:26:32 <arseniiv> kmc: oh, unfortunate
21:27:16 <kmc> a linear supply is much simpler. a transformer to drop ac voltage down to a bit above the target, a diode rectifier, and a linear regular which acts as a variable resistor in series with the load
21:27:22 <kmc> and some smoothing caps
21:27:34 <kmc> it's still a feedback system, but an analog continuous-time one
21:27:37 <kmc> no switching
21:28:00 <kmc> most ham gear comes with a 13.8V DC power input and you provide your own power supply
21:28:30 <b_jonas> and some of the cheaper ones are made so badly that they draw measurable current from the mains even when they're not loaded
21:28:35 <kmc> b_jonas: yes but that would cost an extra $0.0002
21:28:45 <kmc> there shielding
21:29:05 <kmc> I mean you need it for FCC certification but how many Chinese companies will actually care
21:29:14 <kmc> plus the shielding isn't necessarily good enough for hams
21:29:22 <kmc> who wants to pick up weak signals
21:29:41 <kmc> much more stringent requirements than "don't interfere with my other consumer electronics"
21:29:55 <b_jonas> yeah
21:30:25 <arseniiv> I mean you need it for FCC certification but how many Chinese companies will actually care> would they hopefully decades later?
21:30:46 <arseniiv> oops I forgot to copy all
21:30:55 <b_jonas> it's like astronomers, who have to move their big telescopes to small research towns that have more stringent regulation for darkening curtains on houses than people had during world war II
21:31:20 <b_jonas> I don't understand how they don't just trip and fall on the street at new moon there
21:31:29 -!- xkapastel has joined.
21:31:30 <kmc> yep
21:31:50 <kmc> I mean the human eye can do well in very low light if properly adjusti
21:31:55 <arseniiv> b_jonas: flashlights and wax candles
21:31:57 <kmc> adjusted
21:32:22 <b_jonas> kmc: yes, that's why it's fine at full moon
21:32:30 <b_jonas> even at half moon
21:32:46 <b_jonas> but sometimes there's new moon, and then it's new moon everywhere on Earth
21:33:09 <b_jonas> including in those places
21:33:14 <arseniiv> neat
21:33:42 <Lykaina> i guess i asked my question at the wrong time...
21:33:49 <b_jonas> Lykaina: no
21:33:55 <b_jonas> don't worry
21:34:02 <b_jonas> I will look at that pdf eventually
21:34:02 <arseniiv> (don’t mind me, I’m stalling in going to sleep)
21:34:32 <b_jonas> I already decided that it's not so weird to have 4 addressing modes for most instructions, because you have so few instructions that the total is still well under 256 different opcodes
21:35:50 <Lykaina> huh?
21:36:30 <b_jonas> Lykaina: I complained a few days ago that it seemed strange that almost every operand to your instructions can be immediate, or so it seems from the pdf
21:36:50 <b_jonas> and you have like a dozen two-operand instructions where that applies to both operands
21:37:14 <b_jonas> Lykaina: my previous question about indirect loads still stands though
21:37:28 <b_jonas> oh wait
21:37:36 <b_jonas> Lykaina: maybe you don't logread? is that the problem?
21:37:53 <Lykaina> what is logread?
21:38:33 <b_jonas> read channel logs for what people said while you're not joined to the channel
21:38:45 <b_jonas> has nothing to do with logarithms
21:40:02 <arseniiv> b_jonas: maybe @tell, then?
21:42:17 <arseniiv> btw I rely upon lambdabot usually, so if I should logread something, please remind me in that case too
21:43:15 <Lykaina> b_jonas: what is indirect load?
21:44:00 <b_jonas> Lykaina: load when the memory address of where you're loading from is not constant
21:44:23 <b_jonas> although now with this later version of the pdf, it's getting unclear
21:44:31 <b_jonas> does this thing allow self-modifying code?
21:44:44 <Lykaina> i don't think so
21:45:33 <b_jonas> then why does it say that subroutines are at "Range 0100-EFFF" of the "Memory"? is that in a code memory separate from the data memory that the arithmetic instructions operate on?
21:45:59 <b_jonas> maybe I should look at the interpreter. does it have readable code?
21:46:15 <Lykaina> typo. subroutines uses that memory space
21:46:47 <b_jonas> so that's your data stack?
21:47:02 <b_jonas> no wait
21:47:12 <b_jonas> you can't have a stack, you don't have the right sort of instructions for them
21:47:23 <b_jonas> it'd be hard to manipulate a stack without an indirect load
21:47:29 <b_jonas> so that's why it's such a large area?
21:47:30 <b_jonas> oh well
21:47:45 <Lykaina> read the interpreter
21:47:48 <b_jonas> or you can globally compile everything, find all the calls, and assign the local addresses that way
21:53:51 <Lykaina> if i understand what you mean by indirect load correctly, i may be able to implement it by adding a third argument input type (as in other than @xxxx and =xxxx types)
21:54:29 <b_jonas> oh, so.. the control instructions, as in N & -- O P Q _ - are all structured ones, there are no arbitrary gotos
21:54:32 <b_jonas> interesting
21:55:08 <b_jonas> Lykaina: as I read the spec right now, the L and M instructions are the only ones that can do an indirect load
21:55:21 <b_jonas> well, except I don't understand what the S instruction does at all
21:55:47 <Lykaina> reads the program
21:55:58 <Lykaina> *from the
21:57:46 <Lykaina> like if there's text in the program file
21:58:00 <Lykaina> it reads it to memory
21:58:33 <b_jonas> ok, that makes sense
22:00:57 <Lykaina> if i make, say, a $xxxx in addition to =xxxx and @xxxx, where, as @xxxx is mem[value], $xxxx would be mem[mem[value]], would that help?
22:03:02 <b_jonas> but which instructions would take which combinations of address modes? you'd have to tell that somewhere
22:03:37 <b_jonas> if you want to have indirect addresing modes sort of everywhere, then I don't understand why you have a specific instruction for an indirect store
22:04:13 <Lykaina> which is indirect store?
22:04:18 <b_jonas> H
22:04:23 <b_jonas> it also does ordinary store
22:06:33 -!- tromp has quit (Remote host closed the connection).
22:06:42 <Lykaina> then it's not dedicated
22:07:03 <b_jonas> it's dedicated because the other instructions, the arithmetic ones, can only store to a fixed address
22:07:08 <b_jonas> but H can store indirectly
22:07:17 <Lykaina> really?
22:07:18 <b_jonas> and the logic instructions can load indirect if I understand correctly
22:07:31 <b_jonas> but maybe I just misunderstand the spec
22:09:21 <b_jonas> hmm wait
22:09:38 -!- arseniiv has quit (Ping timeout: 245 seconds).
22:09:46 <Lykaina> i have an idea for rewriting memory addressing notation, would mean the samples would have to be rewritten too...
22:10:09 <b_jonas> from the implementation it doesn't look like the L and M instructions can read from indirect addresses
22:10:13 <b_jonas> what did I see in the spec then?
22:10:43 <b_jonas> ah
22:11:04 <b_jonas> I just didn't understand the descriptions of the L and M ops from the pdf because they're a bit unclear on what is their input and output
22:11:16 <b_jonas> the interpreter makes it clear that they don't do indirect loads
22:11:39 <b_jonas> but also that all the arithmetic instructions can do indirect stores
22:11:43 <b_jonas> so I was wrong about that too
22:11:49 <Lykaina> =xxxx is currently used to represent mem[xxxx] instead of xxxx in certain places
22:12:06 <Lykaina> i'm seeing possible confusion
22:12:47 <b_jonas> I dunno then
22:12:59 <b_jonas> the current combo with no indirect load but lots of indirect stores is ... strange
22:13:13 <b_jonas> I don't recall having seen such an instruction set
22:13:16 <Lykaina> like H =xxxx =yyyy stores yyyy to mem[xxxx]
22:13:34 <Lykaina> is that confusing?
22:13:53 <b_jonas> Lykaina: no, it's not confusing about the H and the arithmetic instructions
22:14:02 <b_jonas> but for your description of the logic instructions, it is confusing
22:14:11 <b_jonas> the pdf doesn't tell what they read and write
22:14:17 <b_jonas> unlike in the arithmetic instructions
22:14:50 <Lykaina> look at page 1 for examples of L and M
22:18:02 <Lykaina> does that help?
22:18:05 <b_jonas> no
22:18:27 <b_jonas> the implementation code does though
22:19:02 <Lykaina> how would you recommend i change it?
22:19:52 <Lykaina> the pdf, i mean
22:20:04 -!- ais523 has quit (Quit: quit).
22:20:19 <b_jonas> in the pdf, where you describe the T operation, you see how there's an equals sign in it? mem[val0] is on the lhs of that, val1 and val2 are on the rhs. from that you can tell that the first operand is output only, the second and third are input only
22:20:43 <b_jonas> it tells what that instruction does, what it stores to mem[val0]
22:21:10 <b_jonas> try something like that for the L and M instructions
22:22:23 <b_jonas> like "L bitwise_1bit: mem[val0] = (~val1 & val2 | val1 & val3)"
22:22:42 <b_jonas> only of course swap around the stuff in it until it actually describes what the operation does
22:24:34 <b_jonas> similarly like "M bitwise_2bit: mem[val0] = (val1 & val2 & -(0 != val & 8)) | val1 & ~val2 & -(0 != val & 4) | ~val1 & val2 & -(0 != val & 2) | ~val1 & ~val2 & -(0 != val &1)) but again swap around stuff until it matches your implementation
22:25:32 <Lykaina> if it will help, i'm gonna change the {=,@} stuff to {=,@,$} where =xxxx is always literal value, @xxxx is always direct address, and $xxxx is always indirect address
22:26:04 <b_jonas> if you don't want long formulas there, you can also write something like "M bitwise_2bit: mem[val0] = bitwise_2bit(val1, val2, val3)" and you explain elsewhere what the pure arithmetic part "bitwise_2bit" does, to at least maek it clear what is read from memory and what is written
22:26:47 <b_jonas> Lykaina: might help, since that matches more how popular assembly syntax for cpus work
22:27:10 <Lykaina> i like that approach. it's what i attempted to do originally
22:27:19 <b_jonas> but you should also have somewhere in the pdf that makes it clear which instructions work with what combinatinos of addressing modes
22:30:01 <Lykaina> thank you
22:30:03 <b_jonas> it needn't be in the same table as the one that summarizes the ops
22:30:08 <b_jonas> it could be a separate table
22:39:00 <b_jonas> Lykaina: oh, and I also asked
22:39:13 -!- tromp has joined.
22:40:02 <b_jonas> Lykaina: for the arithmetic instructions that do less-than compare, division, right shift, can you make it clear whether these are unsigned integer comparison, unsigned divsion, unsigned right shift? and is there a separate signed less-than comparison instruction?
22:43:35 -!- tromp has quit (Ping timeout: 250 seconds).
22:46:51 <b_jonas> wait... the interpreter stores each of the 65536 words of the memory, logically 2 bytes sized each, in 4 bytes each?
22:46:54 <b_jonas> why are you doing that?
22:47:08 <b_jonas> or is this something I misunderstood in the pdf too, and they're actually 4 byte long?
22:47:28 <b_jonas> it looks from the interpreter as if they were 4 bytes long
22:47:34 <b_jonas> no wait
22:47:49 <b_jonas> but wait
22:47:49 <b_jonas> ...
22:47:58 <b_jonas> hmm
22:48:25 <b_jonas> this is confusing
22:48:39 <b_jonas> I'd have to read the whole code to tell if you can store more than two bytes in a cell, thus breaking the abstraction
22:48:42 <b_jonas> and I'm not willing to do that now
22:54:04 <Lykaina> b_jonas: it's supposed to be 65536 cells, each 2 bytes in size.
22:54:17 <b_jonas> then why don't you represent them that way too?
22:54:24 <Lykaina> i don't?
22:54:33 <b_jonas> it doesn't look like from the source code
22:55:11 <Lykaina> they are "unsigned int". in C, is that not 2 bytes?
22:55:18 <b_jonas> no
22:56:29 <Lykaina> i always thought an int was 2 bytes, a long was 4 bytes...
22:56:56 <j4cbo> no
22:57:11 <j4cbo> if you want 2 bytes use uint16_t
22:57:48 <b_jonas> j4cbo: it's not that simple, you have to be careful with the arithmetic because it will promote to int and do a signed shift
22:57:51 <b_jonas> C is ugly
22:58:07 <b_jonas> you may need explicit casts or such things
22:58:09 <j4cbo> yeah arithmetic is tricky
22:58:18 <b_jonas> arithmetic in *C* is tricky
22:58:31 <b_jonas> this is a complication by C rules
22:58:38 <j4cbo> Lykaina: the C standard doesn’t place many constraints on how big exactly int, long, etc are
22:59:54 <j4cbo> often on modern computers short is 2, int is 4, long is 8 but that is NOT guaranteed
23:00:08 <b_jonas> j4cbo: if I subtract an unsigned int from a signed long, what type is the result?
23:00:41 <Lykaina> i'll change it to a short
23:00:51 <Lykaina> instead of an int
23:00:52 <j4cbo> Lykaina: no
23:01:13 <j4cbo> if you want 2 bytes, write int16_t or uint16_t
23:01:22 <Lykaina> b_jonas: what's your take?
23:01:42 <b_jonas> Lykaina: again, it's not that simple, if you do that, you'll also have to change some of the code for the arithmetic instrs too
23:01:49 <j4cbo> b_jonas: I know the right answer is “read the spec” :P
23:02:15 <b_jonas> I think the current version gets more of them right than if you just change all the types to a short
23:03:17 <b_jonas> j4cbo: I'm still a bit shocked about how (a) 0<1 has a different type in C++ than in C, yet the difference in type is _almost_ never detectable in code that you can write in both C and C++
23:04:15 <b_jonas> and it's a pity, because apart from that stupid change, the C++ rules are usually IMO better than the C rules
23:05:07 <b_jonas> and it's possible that that change is for the better too, I'm just not quite convinced that it's worth
23:06:47 <b_jonas> Lykaina: anyway, I think first you should decide how you want the less-than, division and right-shift operations behave, then be careful that the code for those and for the subtraction implements them correctly
23:07:46 <Lykaina> unsigned, integer division
23:08:02 <Lykaina> no floats
23:10:39 <\oren\> x-=-1
23:11:09 <b_jonas> \oren\: ah yes, secret operators
23:13:04 <Lykaina> does that even compile?
23:13:11 <Lykaina> x-=-1 ?
23:13:57 <Lykaina> i know it has to be "x -= -1"
23:14:20 <Lykaina> and what does that do?
23:14:30 <j4cbo> don’t forget the “goes to” operator: while (x --> 0) { ... }
23:15:01 <Lykaina> x=x - -1
23:16:09 <Lykaina> whoever invented lambda operations is a sadist
23:16:09 <\oren\> the -=- operator is the same as the += operator
23:17:12 <Lykaina> clearly
23:17:18 <\oren\> the +=- operator is the same as the -= operator
23:17:41 <Lykaina> why make them?
23:21:59 <b_jonas> \oren\: not quite, sadly
23:22:09 <b_jonas> not in C that is
23:22:12 <b_jonas> overflow rules
23:23:35 <b_jonas> += is better than -=-
23:29:24 <\oren\> oh, when the right operand is MAX_INT?
23:32:15 -!- tromp has joined.
23:34:07 <Lykaina> https://www.zentut.com/c-tutorial/c-integer/
23:36:50 -!- tromp has quit (Ping timeout: 252 seconds).
23:41:03 -!- unlimiter has quit (Quit: WeeChat 2.5).
23:48:17 -!- Saggytarius has joined.
23:54:11 -!- Saggytarius has quit (Ping timeout: 260 seconds).
2019-09-07
00:10:30 <esowiki> [[Echidna]] https://esolangs.org/w/index.php?diff=66003&oldid=65993 * Lykaina * (+0) updating with newest interpreter link.
00:12:21 <Lykaina> made changes to both interpreter and spec_notes file
00:12:54 <b_jonas> Lykaina: too late today, but warn me later to look at them
00:13:06 <b_jonas> s/warn/remind/
00:13:12 <Lykaina> k
00:15:14 -!- unlimiter has joined.
00:17:24 <Lykaina> i hope page 3 of the pdf is helpful
00:18:30 <Lykaina> it's also known as "Never ask me do to documentation for something that matters."
00:21:11 -!- xkapastel has quit (Quit: Connection closed for inactivity).
00:32:05 <Sgeo> The TUTOR language has 150 variables, named v1 through v150, which can be assigned names.
00:32:12 <Sgeo> I just... *blink*
00:32:43 <Lykaina> hi Sgeo
00:32:50 <shachaf> That seems like enough?
00:33:01 <shachaf> You only needs two anyway.
00:33:21 <Sgeo> Hi Lykaina
00:36:28 <shachaf> `` ls tmp
00:36:29 <HackEso> a.c \ a.out \ compiled_brachylog.pl \ input.brachylog \ jeval.whatis \ out \ OUT \ out.a \ out.a.hd \ out.a.xxd \ paste \ spline \ spout \ spout.raw \ tmp.txt
00:36:32 <shachaf> `` tmp/out.a
00:36:33 <HackEso> finally
00:36:39 <shachaf> tg
00:36:42 <shachaf> `` file tmp/out.a
00:36:43 <HackEso> tmp/out.a: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, not stripped
01:00:07 -!- tromp has joined.
01:02:16 -!- unlimiter has quit (Quit: WeeChat 2.5).
01:05:27 -!- tromp has quit (Ping timeout: 264 seconds).
01:29:30 -!- unlimiter has joined.
02:12:52 <fizzie> `url tmp/out.a.hd
02:12:53 <HackEso> https://hack.esolangs.org/tmp/out.a.hd
02:15:33 <fizzie> Someone over at ##c wanted `a || b` on pointer-typed operands to yield the first non-null value, instead of 0 or 1.
02:17:13 -!- unlimiter has quit (Quit: WeeChat 2.5).
02:17:31 <shachaf> Speaking of the amd64 System V ABI, I'm still kind of confused about %rdx.
02:18:54 <shachaf> You're supposed to register it with atexit, when you're using the ELF interpreter with dynamic linking.
02:19:21 <shachaf> But I seem to get 0 in that register even in that case?
02:20:49 <fizzie> I guess it might be that the system may or may not provide it? Though that's not what the spec says.
02:21:00 <shachaf> But how are you supposed to know?
02:21:14 <fizzie> Well, if it's null presumably you don't need to register it.
02:21:17 <shachaf> Maybe you just check for 0, but I don't like that. What if it's initialized to something else?
02:21:53 <fizzie> By "may or may not provide" I meant it'd always set it to 0 if it doesn't need you to register anything.
02:22:13 <shachaf> Well, it would be nice if any standard specified that.
02:22:16 <fizzie> But that's just something that could make sense, I don't have any proof for that.
02:22:22 <fizzie> What does BA_OS mean anyway?
02:22:40 <shachaf> Good question.
02:23:02 <shachaf> Base System
02:23:36 <fizzie> Yes, apparently they are sections of the System V Interface Definition.
02:23:39 <shachaf> See https://stackoverflow.com/questions/37419635/in-the-elf-spec-what-does-ba-os-and-ke-os-mean and the linked PDF.
02:23:43 <shachaf> Which presumably you already found.
02:26:43 <shachaf> Maybe I should just look at what crt.o does.
02:26:49 <shachaf> Unfortunately it's all such a mess.
02:28:15 <fizzie> That's what all software is. I'm always surprised it works as often as it does.
02:28:56 <fizzie> I've been writing Go recreationally lately.
02:29:07 <shachaf> `` echo >/tmp/test.s $'.text; .globl _start; _start: mov $60, %rax; mov $123, %rdi; syscall'; as -o /tmp/test.o /tmp/test.s && ld -dynamic-linker /lib64/ld-linx-x86-64.so.2 -o /tmp/test /tmp/test.o && /tmp/test; echo $?; file /tmp/test
02:29:08 <HackEso> 123 \ /tmp/test: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, not stripped
02:29:34 <shachaf> What's the flag to give to ld to make that dynamically linked?
02:30:33 <fizzie> I don't remember, ld is awkward to use directly. It's not -shared, because that's what creates shared objects.
02:30:48 <fizzie> -Bdynamic?
02:30:58 <shachaf> I tried that and it was still static.
02:31:12 <shachaf> I guess -lc works but that does rather a lot more than I want here.
02:31:46 <shachaf> Also this is pointless because I don't know how to output the value of %rdx in HackEso.
02:31:54 <shachaf> I'd use gdb locally.
02:32:38 <fizzie> I mean, you don't need all the bits just to see if it's zero or not.
02:32:45 <fizzie> You did just output the value 123 there.
02:32:45 <shachaf> That's true. That was my plan.
02:32:54 <shachaf> I think it'll be 0.
02:33:18 <fizzie> Maybe it needs to have a some NEEDED entries to not count as "statically linked" for file.
02:33:47 <shachaf> `` file /bin/ls
02:33:48 <HackEso> ​/bin/ls: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=3c233e12c466a83aa9b2094b07dbfaa5bd10eccd, stripped
02:34:01 <shachaf> If it was dynamically linked I think it'd say "shared object" instead of "executable".
02:34:46 <shachaf> It would at least name the interpreter.
02:36:59 <shachaf> Oh, right, execve can tell you ENOENT when the interpreter isn't found.
02:37:31 <shachaf> `` echo >/tmp/test.s $'.text; .globl _start; _start: mov $60, %rax; mov $123, %rdi; syscall'; as -o /tmp/test.o /tmp/test.s && ld -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o /tmp/test /tmp/test.o -lc && /tmp/test; echo $?; file /tmp/test
02:37:32 <HackEso> 123 \ /tmp/test: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, not stripped
02:38:39 <fizzie> Right. I guess ld might just not be willing to make a dynamically linked thing without any libraries.
02:39:39 <shachaf> Probably something unknowable to mortals involving linker scripts.
02:40:23 <shachaf> `` echo >/tmp/test.s $'.text; .globl _start; _start: mov $100, %rdi; test %rdx, %rdx; jz e; mov $105, %rdi; e: mov $60, %rax; syscall'; as -o /tmp/test.o /tmp/test.s && ld -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o /tmp/test /tmp/test.o -lc && /tmp/test; echo $?
02:40:25 <HackEso> 105
02:40:48 <shachaf> Uh oh. Is that saying that rdx is nonzero?
02:40:56 <fizzie> That's what it sounded like.
02:41:01 <shachaf> Wait, I'm starting to remember this. There was something complicated here.
02:41:24 <shachaf> `` echo >/tmp/test.s $'.text; .globl _start; _start: call %rdx; mov $60, %rax; mov $123, %rdi; syscall'; as -o /tmp/test.o /tmp/test.s && ld -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o /tmp/test /tmp/test.o -lc && /tmp/test; echo $?
02:41:25 <HackEso> ​/tmp/test.s: Assembler messages: \ /tmp/test.s:1: Warning: indirect call without `*' \ 123
02:41:35 <shachaf> Hmm.
02:41:43 <shachaf> So now I'm not sure what issue I ran into.
02:41:49 <shachaf> But there was definitely something.
02:43:26 -!- aloril_ has quit (Ping timeout: 258 seconds).
02:45:00 <fizzie> `` echo >/tmp/test.s $'.text; .globl _start; _start: push %rdx; mov $1, %edi; mov %rsp, %rsi; mov $8, %edx; mov $1, %eax; syscall; mov $60, %eax; syscall'; as -o /tmp/test.o /tmp/test.s && ld -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o /tmp/test /tmp/test.o -lc && /tmp/test | hd
02:45:02 <HackEso> 000000 a0 fb 00 40 00 00 00 00 >...@....< \ 000008
02:45:04 <shachaf> OK, I was testing this with musl libc where it doesn't work so well.
02:45:06 <fizzie> Looks nonzero to me.
02:45:45 <fizzie> 0x4000fba0 might be a plausible pointer as well, maybe?
02:45:48 <fizzie> `cat /proc/self/maps
02:45:48 <HackEso> 00100000-00102000 r-xp 00000000 00:00 0 \ 40000000-40023000 r-xp 00000000 00:0f 1336451 /lib/x86_64-linux-gnu/ld-2.24.so \ 40023000-40025000 rw-p 00000000 00:00 0 \ 40025000-401c1000 r--p 00000000 00:0d 1440239 /usr/lib/locale/locale-archive \ 401c1000-401e3000 rw-p 00000000 00:00 0 \ 40223000-40224000 r--p 00023000 00:0f 1336451 /lib/x86_64-linux-gnu/ld-2.24.so \ 40224000-
02:46:33 <shachaf> I mean, I called it in the program above, so it's certainly a plausible function pointer.
02:48:16 -!- tromp has joined.
02:48:57 <shachaf> OK, this is interesting. I remember now.
02:49:21 <shachaf> musl's ELF interpreter is passing _start's address in %rdx.
02:50:54 <shachaf> And now I see I had a comment saying this in my ELF generator program.
02:52:16 <fizzie> `` echo >/tmp/test.s $'.global _start; _start: mov $1, %eax'; as -o /tmp/test.o /tmp/test.s && ld --oformat=binary -o /tmp/test /tmp/test.o && wc -c /tmp/test
02:52:18 <HackEso> 5 /tmp/test
02:52:20 <fizzie> `` echo >/tmp/test.s $'.global _start; _start: mov $1, %rax'; as -o /tmp/test.o /tmp/test.s && ld --oformat=binary -o /tmp/test /tmp/test.o && wc -c /tmp/test
02:52:21 <HackEso> 7 /tmp/test
02:52:31 <fizzie> Just as an aside.
02:52:51 -!- tromp has quit (Ping timeout: 264 seconds).
02:54:12 <shachaf> You're commenting on my "mov $60, %rax" and so on?
02:54:50 <fizzie> Well, not really "commenting on", but related to.
02:54:51 <shachaf> It's true that I almost ran up against HackEso's time and memory limits with those extra bytes.
02:54:56 <shachaf> But it's true.
02:55:17 <shachaf> I was going to use cmp %rdx, $0 but I thought people would make fun of me.
02:55:26 <shachaf> So I used test %rdx, %rdx instead.
02:55:56 <shachaf> Sadly it was too late.
02:59:32 <fizzie> I have a thing that does a thing every few hours or so. I'd like to know if it starts failing to do the thing. I added Prometheus counters for total things and failed things, but I'm a little afraid the natural timescale of Prometheus is not well suited to that. (I'm sure it *can* work, but still.)
02:59:35 -!- aloril has joined.
03:02:11 <fizzie> (I don't want to make it do the thing more often, because it does the thing to someone else's thing, and anyway it doesn't need to because usually it's just the same thing.)
03:04:00 <shachaf> Hmm, what's the issue here?
03:05:58 <zzo38> I thought there should be made Magic: the Gathering card named "Leper Window", but am unsure what it should be.
03:06:20 <kmc> either a M:tG card or a band
03:06:39 <shachaf> hi kmc
03:06:58 <shachaf> are you in for scrapping all existing software
03:07:02 <fizzie> I guess it isn't really an issue, it just feels wrong to sample the thing every minute or every five minutes because it's almost never changing, and then there's a lot of samples. But from what I recall, Prometheus can't really do sparse sampling.
03:07:44 <kmc> shachaf: meh
03:08:12 <shachaf> except for sdr of course
03:09:48 <fizzie> fungot: How do you feel about getting scrapped?
03:09:49 <fungot> fizzie: know of any
03:10:18 <fizzie> fungot: Anyone who got scrapped? No, not really.
03:10:18 <fungot> fizzie: my favourite fractal is still cantor's dust :) i was just requesting a heap of muck. but some.
03:12:02 <shachaf> kmc: how do you feel about scrapping all non-kittens
03:12:22 <zzo38> You can make up a band called that too, maybe.
03:12:27 <shachaf> i was telling the miri folks about how i want to make a kitten maximizer
03:12:41 <shachaf> some of them seem nervous about the idea
03:14:46 <Lykaina> fixed the Echidna documentation
03:14:58 <Lykaina> for now
03:15:22 <Lykaina> clarified pg 3
03:21:16 <kmc> shachaf: how about an everything minimizer
03:25:44 <shachaf> no hth
03:26:51 <shachaf> only things beginning with the letter n
03:27:06 <shachaf> or was that a maximizer?
03:27:49 <shachaf> https://english.lem.pl/works/novels/the-cyberiad/146-how-the-world-was-saved
03:49:39 -!- Spexty has joined.
03:54:03 -!- Spexty has quit (Ping timeout: 260 seconds).
04:03:45 <Sgeo> The "arrow" command in TUTOR is weirdly named. It doesn't just drawn an arrow
04:29:28 <zzo38> What does the "arrow" command in TUTOR mean, then?
04:36:29 -!- adu has joined.
04:36:53 -!- tromp has joined.
04:41:05 -!- tromp has quit (Ping timeout: 250 seconds).
04:55:42 <Sgeo> It prompts the student for input, and enters a judging mode for commands like answer or wrong to pattern match against the input. I think
04:56:14 <Sgeo> "A judging block in TUTOR is a control structure that begins with an arrow command and ends with the next arrow, endarrow or unit command. The arrow command also prompts for input, with the special arrow character (resembling "▷") displayed as a prompt at the indicated screen coordinates. In effect, a judging block can be thought of as a backtracking control structure where the student may make multiple attempts to answer a question unti
04:56:14 <Sgeo> l a correct answer allows forward progress."
04:56:31 <Sgeo> https://en.wikipedia.org/wiki/TUTOR_(programming_language)
06:10:42 -!- tromp has joined.
06:12:22 -!- tromp_ has joined.
06:14:02 <esowiki> [[GolfJoke]] M https://esolangs.org/w/index.php?diff=66004&oldid=54460 * A * (+734)
06:15:55 -!- tromp has quit (Ping timeout: 276 seconds).
06:16:51 -!- tromp_ has quit (Ping timeout: 264 seconds).
06:19:08 <esowiki> [[GolfJoke]] M https://esolangs.org/w/index.php?diff=66005&oldid=66004 * A * (-735)
06:19:54 <esowiki> [[GolfJoke]] M https://esolangs.org/w/index.php?diff=66006&oldid=66005 * A * (+12)
06:31:34 <shachaf> fizzie: So here's the entry point call in musl: https://github.com/ifduyue/musl/blob/master/ldso/dynlink.c#L1742
06:31:59 <shachaf> Apparently it just uses an automatically-selecte register, so with one version I was getting the entry point in rdx and in another version I was getting it in rax (and rdx was 0).
06:32:21 <shachaf> So I feel like something is wrong here because it's obviously not passing something in in rdx.
06:32:41 <shachaf> (Also I mean entry point jump, not call, of course.)
06:39:17 -!- tromp has joined.
06:58:24 <shachaf> Should rodata be mapped -x?
06:58:36 <shachaf> I wonder how likely it is to contain ROP gadgets or that sort of thing.
07:02:48 <kmc> ro ro ro your data
07:02:59 <kmc> is there a good reason why it should be +x?
07:03:00 <kmc> besides fun
07:05:58 <Sgeo> -0.2 rounds to 0 in TUTOR's conditional statements that compare an expression and have different branches for negative, zero, and individual positive numbers
07:06:38 <shachaf> I don't think so?
07:06:53 <shachaf> You can load it in one segment rather than two.
07:07:13 <shachaf> The Go compiler generates three load segments, r, rx, rw
07:07:22 <shachaf> Whereas gcc/clang generate only rx and rw.
07:18:18 <esowiki> [[GolfSpace]] N https://esolangs.org/w/index.php?oldid=66007 * A * (+361) Created page with "[[GolfSpace]] is a joke esolang inspired by [[Golf Cheat]] and [[GolfJoke]]. It is essentially [[GolfJoke]], except the question number is encoded as backspaces and Deletes as..."
07:35:20 <shachaf> whoa whoa whoa
07:35:31 <shachaf> Apparently they expanded on "Assembled a contraption".
07:35:37 <shachaf> Maybe I knew about that? I don't remember.
07:36:45 -!- arseniiv has joined.
08:19:43 -!- adu has quit (Quit: adu).
08:23:47 <esowiki> [[Slindow]] N https://esolangs.org/w/index.php?oldid=66008 * A * (+174) Created page with "[[Slindow]] is an [[esoteric programming language]] that makes it easy to solve sliding-window challenges. [[Category:Languages]] [[Category:2019]] [[Category:Unimplemented]]"
08:26:21 <esowiki> [[Slindow]] M https://esolangs.org/w/index.php?diff=66009&oldid=66008 * A * (+386)
08:30:24 <esowiki> [[Slindow]] M https://esolangs.org/w/index.php?diff=66010&oldid=66009 * A * (+350)
08:31:10 <rain1> thoughts on wget2?
08:44:45 <shachaf> What's that?
08:48:23 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
08:50:15 -!- Lord_of_Life has joined.
08:58:36 <esowiki> [[$]] https://esolangs.org/w/index.php?diff=66011&oldid=58729 * Rdebath * (+67) Turing
09:11:40 <esowiki> [[Slindow]] M https://esolangs.org/w/index.php?diff=66012&oldid=66010 * A * (+656)
09:17:29 <esowiki> [[Slindow]] M https://esolangs.org/w/index.php?diff=66013&oldid=66012 * A * (+14) /* Built-ins */
09:35:17 <Lykaina> had a dream jessie and james finally captured pikachu, but james was sucked into the pokball as well
09:39:55 <Lykaina> jessie wasn't sure whether to keep pikachu or free her boyfriend james.
09:43:20 <Lykaina> as pikachu would likely escape
10:07:54 <b_jonas> shachaf: yes, but only in silver-bordered land. it's one of MaRo's worse ideas to give meaning to it.
10:21:01 <Lykaina> hi b_jonas
10:21:30 <Lykaina> working on an update to doc and code
10:21:52 <Lykaina> i'll let you know when finished
10:57:02 <esowiki> [[Echidna]] https://esolangs.org/w/index.php?diff=66014&oldid=66003 * Lykaina * (+0) updating with newest interpreter link.
10:57:32 <Lykaina> b_jonas: updated
12:36:10 -!- Spexty has joined.
12:55:27 -!- Frater_EST has joined.
12:55:32 -!- Frater_EST has left.
14:36:32 -!- xkapastel has joined.
14:40:15 <arseniiv> what is the history of lenses (Haskell ones)?
14:40:38 -!- Sgeo_ has joined.
14:42:49 -!- Sgeo has quit (Ping timeout: 246 seconds).
14:49:54 <Lykaina> updated documentation pdf for Echidna
14:57:37 <esowiki> [[Echidna]] https://esolangs.org/w/index.php?diff=66015&oldid=66014 * Lykaina * (-8) fixing first line
15:08:01 <Lykaina> hi Sgeo_
15:16:19 <Lykaina> might as well move Echidna from Dropbox to Git
15:18:11 -!- ArthurStrong has joined.
15:18:36 -!- Melvar has quit (Ping timeout: 258 seconds).
15:22:46 <Spexty> so what do people wanna talk about lol
15:23:39 <Lykaina> Echidna, mother of all monsters?
15:23:53 <Spexty> idk anything about echidna lol
15:24:12 <Spexty> should I check it out?
15:24:31 <Lykaina> Echidna is my esolang
15:24:42 <Spexty> well should I check it out lol
15:25:31 <Lykaina> sure. it's still a work in progress, though
15:25:51 <Spexty> ok
15:27:51 <Lykaina> and i'm working on moving it to a bitbucket repo
15:28:30 <Lykaina> to make it easier for me
15:28:48 <Lykaina> currently hosted on my webserver
15:32:11 <Spexty> yeah
15:34:13 <Spexty> seems like a neat language
15:34:28 -!- Melvar has joined.
15:41:21 -!- ArthurStrong has quit (Remote host closed the connection).
16:15:34 <Lykaina> Sgeo_: you active?
16:19:58 <Spexty> we might as well be the only "kind of active" people here lol
16:22:59 <arseniiv> Spexty: fungot is always active, it’s usually just not noticeable
16:23:00 <fungot> arseniiv: and i don't think it's true that it turns 110 into 111 and vice versa?
16:23:15 <Lykaina> i need help from someone i already know i can trust. I knew Sgeo_ in rl, nobody else here qualifies for that as far as I know.
16:25:52 <Lykaina> as for Echidna...did i do this right? https://bitbucket.org/lykaina/echidna/
16:26:27 -!- sebbu has quit (Ping timeout: 258 seconds).
16:29:56 <Lykaina> can someone tell me if i did the repo properly?
16:34:21 <Lykaina> great...
16:34:38 <Spexty> idk anything about bitbucket sry
16:34:49 <Lykaina> does it look good
16:35:09 <Spexty> what do you mean
16:35:13 <Lykaina> is it missing anything on visual inspection
16:35:24 <Spexty> don't think so
16:35:56 <Lykaina> bitbucket is a competitor to github
16:36:07 <Lykaina> that's pretty much it
16:38:08 <Lykaina> i don't like using microsoft products when i don't have to
16:42:41 <Lykaina> and bitbucket is owned by atlassian, so i have the free version of jira as well
16:42:49 <zzo38> I think if you need a version control, there is Fossil
16:43:33 <Lykaina> i've been using bitbucket for years
16:43:34 <int-e> Atlassian is odd.
16:43:45 <Lykaina> how so?
16:44:33 <int-e> I've gone through the procedure of deleting my account once. Which is when I learned that I had *two* accounts, one bitbucket account and one general Atlassian account in the background that I was unaware of before...
16:46:05 <int-e> And IIRC the process meant that I had a third account in their issue tracker.
16:46:21 <int-e> This abundance of service specific accounts is what I found odd.
16:46:30 <Lykaina> oh
16:46:39 <Lykaina> yeah, that's weird
16:46:50 <int-e> (all linked via the atlassian account, of course)
16:47:56 <int-e> The best part was the final email that said that my account was not deleted... and that I please not reply to the email because that would re-create an issue tracking account.
16:48:28 <Lykaina> does the repo i linked to look okay?
16:48:56 <Lykaina> and does Fossil have issue tracking?
16:49:07 <zzo38> Yes, Fossil has issue tracking
16:49:14 <Lykaina> link?
16:50:54 <Lykaina> it's a git host, right?
16:51:21 <zzo38> No, it is a different system from git (and less confusing, in my opinion and some other people's opinion too)
16:51:37 <int-e> Lykaina: well it wants me to log in with Atlassian, so nothing to be seen there
16:51:52 <Lykaina> i pulled it off
16:52:07 <Lykaina> i'll check out github in a minute
16:53:10 <int-e> Lykaina: that may be a repo setting though
16:53:28 * int-e shrugs
17:02:58 <arseniiv> Lykaina: BTW I’m always confused about my git repos so I can’t help, sorry
17:08:19 <Lykaina> https://github.com/lykaina/echidna
17:11:28 -!- sebbu has joined.
17:21:18 <Lykaina> int-e: like this one?
17:23:54 <int-e> looks like a normal github repo to me
17:24:18 -!- grumble has quit (Quit: Martini. Gin, not vodka. Obviously. Stirred for 10 seconds while glancing at an unopened bottle of vermouth.).
17:24:20 <Lykaina> is that good?
17:26:11 <int-e> I was trying to be neutral. (I'm torn about github. I use it a lot, so I'm familiar with it. I dislike the fact that it was acquired by Microsoft, but not enough to actually switch to a different provider.)
17:27:01 <Lykaina> is it good for hosting an esolang?
17:27:30 <int-e> There are quite a few esolang related github repos.
17:28:14 <int-e> It's servicable.
17:28:38 <int-e> (To use a less controversial categorization than good vs. bad.)
17:29:08 <Spexty> yeah, if an esolang isn't on the esolangs wiki, it's probably on github
17:29:16 <Spexty> somewhere
17:29:17 <Spexty> lol
17:29:22 <zzo38> If they do not require you to change all of your accounts to Microsoft accounts, then I do not know why that would be the reason to avoid it. (I do not use GitHub for my own projects, although that has nothing to do with Microsoft, and is because I prefer Fossil and I think git is confusing)
17:29:26 -!- grumble has joined.
17:33:33 <esowiki> [[Echidna]] https://esolangs.org/w/index.php?diff=66016&oldid=66015 * Lykaina * (-59) linking to my github instead of my webhost.
17:51:03 <shachaf> b_jonas: I tried to figure out what you meant, since even in un-sets the lands aren't silver-bordered.
17:51:12 <shachaf> But then I reparsed it.
17:51:26 <zzo38> The basic lands anyways aren't silver border
17:56:30 <shachaf> Oh, that's true. Maybe there are unbasic lands.
17:57:07 <zzo38> Do you make up some more Magic: the Gathering cards today?
17:57:29 -!- polomukuyu has joined.
17:57:53 <shachaf> No.
17:58:04 <zzo38> OK
17:58:04 <shachaf> I tried to make up a different game but didn't get very far yet.
17:59:30 <zzo38> What different game is that?
18:00:09 <Lykaina> oh-gi-yu?
18:00:57 <Lykaina> (said it backwards as not to swear)\
18:00:57 <Spexty> yu-gi-oh lol
18:01:06 <Spexty> you don't wanna swear? damn
18:02:05 <Lykaina> everyone hates yu-gi-oh at my lgs
18:02:23 <b_jonas> shachaf: I was talking about assembling contraptions, not about basic lands
18:02:28 <b_jonas> oh
18:02:32 <shachaf> I know.
18:02:34 <b_jonas> "silver-bordered land" right
18:02:44 <b_jonas> yes, M:tG is full of ambiguous words
18:03:41 <b_jonas> but yes, there are non-basic silver-bordered lands, including that one that makes one and a half mana of any color, which got way overpowered since mana burn got eliminated
18:04:01 <b_jonas> I think it's called City of Ass
18:05:06 <zzo38> I think Contraptions do not have the same border as other cards
18:05:44 <b_jonas> yes, they're stupid borderless cards
18:06:18 <shachaf> Germany has 16 states. The German name is "Land".
18:06:42 <shachaf> If you're playing a limited game with 40-card decks, 16 is a natural number of lands to put in it (though 17 is probably better in practice).
18:09:02 <Lykaina> hi b_jonas
18:14:01 <zzo38> Mathematical Study {2U} Enchantment ;; {1}, {T}: Chose a number and then reveal the top card of target player's library. If it is a nonland card with converted mana cost equal to the chosen number, add one mana of any color to your mana pool and then you may cast that card. This ability can be used only during your own main phase. ;; Echo {1}
18:23:55 <Lykaina> b_jonas: https://github.com/lykaina/echidna
18:24:18 <Lykaina> i think you said to remind you
18:30:15 <zzo38> Noon Mark {1} Artifact ;; {T}, Sacrifice ~: Add one mana of any color. Can't be used during combat phase. ;; {2}, {T}, Sacrifice ~: Draw a card
18:30:26 <zzo38> What is your comment of these made up cards?
18:34:45 -!- polomukuyu has quit (Remote host closed the connection).
18:47:20 <b_jonas> `card-by-name Mind Stone
18:47:21 <HackEso> Mind Stone \ 2 \ Artifact \ {T}: Add {C}. \ {1}, {T}, Sacrifice Mind Stone: Draw a card. \ WL-C, 10E-U, C14-U, C15-U, IMA-C, DD2-U, DDP-U
18:47:35 <b_jonas> hmm
18:49:38 <b_jonas> zzo38: Noon Mark => I can't judge that one, it needs an experienced M:tG developer to tell if it's overpowered, it's the so4rt that can be either broken or useless as far as I know
18:51:05 <b_jonas> Mathematical Study => at least make it "Activate this ability only any time you could cast a sorcery." unless you have a good reason to want to allow it activated in the controller's main phase but with non-empty stack
18:52:02 <b_jonas> but after that, I don't think I like the main function of allowing to cast a card from another player's library. it's something that probably has to exist but be so rare that I never meet them
18:52:26 <b_jonas> and I don't know if it's even right to have it as blue rather than red
18:52:31 <int-e> it'll be confusing if it's a creature
18:52:49 <int-e> or other permanent
18:53:16 <b_jonas> int-e: I don't think so. then you'll just control a creature owned by the opponent, which is normal as far as blue goes
18:53:43 <b_jonas> but normal in red too, and I don't know which color this one has to be
18:53:57 <b_jonas> I think it's more confusing while it's on the stack
18:54:31 <b_jonas> because owning a different player's spell on stack can happen, but it's very rare
18:57:14 -!- imode has joined.
18:58:19 <b_jonas> although I'm not sure why black doesn't get any creature stealing
18:58:26 <b_jonas> or do they get some?
18:58:55 <Lykaina> b_jonas: may i pm you?
18:58:58 <b_jonas> `card-by-name Enslave
18:58:59 <HackEso> Enslave \ 4BB \ Enchantment -- Aura \ Enchant creature \ You control enchanted creature. \ At the beginning of your upkeep, enchanted creature deals 1 damage to its owner. \ PLC-U, NPH-U, DDD-U \ \ Enslaved Dwarf \ R \ Creature -- Dwarf \ 1/1 \ {R}, Sacrifice Enslaved Dwarf: Target black creature gets +1/+0 and gains first strike until end of turn. \ TOR-C \ \ Enslaved Horror \ 3B \ Creature -- Horror \ 4/4 \ When Enslaved Horror enters the battlefield,
18:59:11 <b_jonas> Lykaina: you can pm, but it won't make me look at the interpreter faster
18:59:20 <Lykaina> oh
18:59:24 <b_jonas> `card-by-name Mark of the Oni
18:59:25 <HackEso> Mark of the Oni \ 2B \ Enchantment -- Aura \ Enchant creature \ You control enchanted creature. \ At the beginning of the end step, if you control no Demons, sacrifice Mark of the Oni. \ BOK-U
18:59:30 <Lykaina> you weren't responding
18:59:33 <b_jonas> sorry
18:59:45 <b_jonas> I will look at the interpreter, I'm curious now
19:00:11 <b_jonas> so black does get a few
19:03:24 <b_jonas> in the current OotS story arc, if Durkon was broken while petrified, how difficult would it have been to fix it? could they have found a cleric that can fix him with a Make Whole spell?
19:03:47 <b_jonas> I can't tell if the Make Whole spell works for that, and if not, how else you repair a broken statue before reanimating
19:06:49 -!- MDude has quit (Ping timeout: 276 seconds).
19:16:09 -!- Melvar has quit (Ping timeout: 244 seconds).
19:16:52 -!- xkapastel has quit (Quit: Connection closed for inactivity).
19:29:46 -!- Melvar has joined.
19:36:19 -!- xkapastel has joined.
19:43:53 <b_jonas> Lykaina: how does the subroutine memory work? the documentation doesn't really explain it.
19:44:13 <b_jonas> Lykaina: apparently the if/while blocks have labels. what happens when you don't nest them properly? is that allowed?
19:52:31 <b_jonas> Lykaina: it probably doesn't matter while you only have one source file, but why do you define the global variables in the .h header file?
19:58:49 <zzo38> Land Competence {-} Conspiracy ;; At the beginning of your upkeep, you may change the text of target permanent you own by replacing all instances of one land type word with another until end of turn.
20:06:39 <b_jonas> Lykaina: also I find it strange how you keep seeking the program source code at every instruction
20:10:12 -!- LBPHacker has changed nick to LBPHacker_.
20:19:54 -!- imode has quit (Ping timeout: 268 seconds).
20:24:37 <b_jonas> Lykaina: also, I think srand((unsigned ing)(clock()%65536)); is sort of a bad idea, but that only matters if you use the random state later
20:27:30 <b_jonas> Lykaina: whoa, the findand function is even worse. it will search for the function all around the program, and seek five times for every byte of the program until the start of the subroutine
20:27:39 <b_jonas> that really seems excessive
20:33:03 -!- LBPHacker_ has changed nick to LBPHacker.
20:33:27 <b_jonas> why don't you just read the whole program at the start, find all the subroutine labels, store them and their offsets in the program, sort them, and look up the label in the sorted table on subroutine calls?
20:33:52 <b_jonas> and then read instructions from the copy of the program that is loaded in memory, rather than fseek before every instruction
20:37:58 <zzo38> Yes, I should think that would be better
20:44:14 <b_jonas> oh yeah, good idea. Lykaina: ask zzo38, he writes C programs in a style that's alien to me but may be closer to the style that you wrote here
20:44:23 <b_jonas> zzo38: look at the interpreteR?
20:44:46 <b_jonas> it's in the git repository at https://github.com/lykaina/echidna
20:45:45 <zzo38> OK, I will look
20:47:38 -!- Lord_of_Life_ has joined.
20:47:38 -!- Lord_of_Life_ has quit (Max SendQ exceeded).
20:48:42 -!- Lord_of_Life_ has joined.
20:48:43 -!- Lord_of_Life_ has quit (Max SendQ exceeded).
20:49:13 <zzo38> Probably it would be better to instead read the file into memory and convert into a binary code while reading it, so that it can skip comments and so on. Many other things are also rather inefficient
20:49:19 -!- Lord_of_Life_ has joined.
20:49:20 -!- Lord_of_Life_ has quit (Max SendQ exceeded).
20:49:53 <b_jonas> zzo38: perhaps, but the S instruction makes that a bit hard
20:50:02 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
20:50:16 -!- Lord_of_Life has joined.
20:50:17 -!- Lord_of_Life has quit (Max SendQ exceeded).
20:51:17 -!- imode has joined.
20:51:33 <zzo38> Reading it into memory without conversion would be another way.
20:55:23 -!- Lord_of_Life has joined.
20:55:24 -!- Lord_of_Life has quit (Max SendQ exceeded).
20:55:59 -!- Lord_of_Life has joined.
20:55:59 -!- Lord_of_Life has quit (Max SendQ exceeded).
20:57:29 -!- Lord_of_Life has joined.
20:57:29 -!- Lord_of_Life has quit (Max SendQ exceeded).
20:59:32 -!- Lord_of_Life has joined.
20:59:32 -!- Lord_of_Life has quit (Max SendQ exceeded).
21:00:07 -!- Lord_of_Life has joined.
21:00:08 -!- Lord_of_Life has quit (Max SendQ exceeded).
21:00:40 -!- Lord_of_Life has joined.
21:00:40 -!- Lord_of_Life has quit (Max SendQ exceeded).
21:01:09 -!- Lord_of_Life has joined.
21:01:09 -!- Lord_of_Life has quit (Max SendQ exceeded).
21:07:56 -!- Sgeo__ has joined.
21:10:58 -!- Sgeo_ has quit (Ping timeout: 246 seconds).
21:25:13 <kmc> shachaf: do you know (without testing) what -1 ** infinity is in IEEE floating point?
21:26:54 <b_jonas> kmc: my guess is that it's a NaN, inherited from log(-1)
21:27:05 <b_jonas> oh wait, you asked shachaf
21:27:05 <b_jonas> sorry
21:27:27 <b_jonas> wait...
21:27:32 <b_jonas> that's -(1 ** infinity) right?
21:27:35 <b_jonas> then it's -1
21:27:49 <Spexty> i'm guessing they mean (-1) ** infinity
21:27:51 <Spexty> but idk
21:29:57 <Spexty> ok i tested both on node.js but i'm not gonna spoil anything lol
21:30:38 <int-e> kmc: Is there a ** to begin with? I'd think exp(log(-1)*infinity), which becomes NaN?
21:30:54 <Spexty> hmm i tested them on python and i got different results lol
21:31:03 <int-e> The C standard may have some odd ideas about this too
21:31:16 <int-e> (they want things like pow(-1,3) = -1)
21:32:15 <Spexty> wtf the python result is weird lol
21:32:56 <b_jonas> ``` set -e; gcc -Wall -O -fno-math-errno -std=c11 -o tmp/a.out -x c - <<<$'#include<stdio.h>\n#include<math.h>\n''int main(void) { double r = -pow(1.0, INFINITY); printf("r = %g,\n", r); return 0; }'; tmp/a.out
21:32:58 <HackEso> r = -1,
21:33:37 <b_jonas> see, -(1 ** infinity) is -1
21:33:44 <Spexty> interesting, js says NaN on that one lol
21:33:47 <int-e> b_jonas: uhm we want the - inside the pow
21:34:04 <int-e> > (-1) ** (1/0)
21:34:04 <Spexty> js says NaN on 1**infinity for some reason
21:34:05 <lambdabot> 1.0
21:34:06 <b_jonas> int-e: no we don't. if we had wanted it, kmc would have said that.
21:34:11 <b_jonas> int-e: it was a trick question.
21:34:28 <int-e> b_jonas: I'd hope it wasn't
21:34:35 <int-e> > (-1) ** (-1/0)
21:34:37 <lambdabot> 1.0
21:35:48 <b_jonas> ``` set -e; gcc -Wall -O -fno-math-errno -std=c11 -o tmp/a.out -lm -x c - <<<$'#include<stdio.h>\n#include<math.h>\n''int main(void) { double r = -pow(1.0, INFINITY); printf("-1**INFINITY = %e,\n", r); return 0; }'; tmp/a.out
21:35:50 <HackEso> ​-1**INFINITY = -1.000000e+00,
21:36:09 <int-e> So, apparently, pow(1,x) is specified as 1.
21:36:35 <int-e> In C, which will infect a ton of programming languages.
21:37:28 <Lykaina> hi
21:37:37 <Lykaina> fell asleep sorry
21:38:54 <b_jonas> Lykaina: np, I waited a day to reply too after all, so you're not late
21:39:22 <Spexty> > -(1 ** (1/0))
21:39:25 <lambdabot> -1.0
21:39:42 <b_jonas> ``` set -e; gcc -Wall -O -fno-math-errno -std=c11 -o tmp/a.out -lm -x c - <<<$'#include<stdio.h>\n#include<math.h>\n''int main(void) { double r0 = atan2(-1.0, 1.0/INFINITY), r1 = atan2(-1.0, -1.0/INFINITY); printf("atan2(-1.0,0.0) = %e, r = %e\n", r0, r1); return 0; }'; tmp/a.out
21:39:43 <HackEso> atan2(-1.0,0.0) = -1.570796e+00, r = -1.570796e+00
21:39:51 <b_jonas> ``` set -e; gcc -Wall -O -fno-math-errno -std=c11 -o tmp/a.out -lm -x c - <<<$'#include<stdio.h>\n#include<math.h>\n''int main(void) { double r0 = atan2(-1.0, 1.0/INFINITY), r1 = atan2(-1.0, -1.0/INFINITY); printf("atan2(-1.0,0.0) = %e, atan2(-1.0,-0.0) = %e\n", r0, r1); return 0; }'; tmp/a.out
21:39:52 <HackEso> atan2(-1.0,0.0) = -1.570796e+00, atan2(-1.0,-0.0) = -1.570796e+00
21:40:08 <Spexty> lol
21:41:12 <b_jonas> wait, that's not where the branch cut is
21:41:49 <shachaf> kmc: I don't.
21:42:00 <b_jonas> ``` set -e; gcc -Wall -O -fno-math-errno -std=c11 -o tmp/a.out -lm -x c - <<<$'#include<stdio.h>\n#include<math.h>\n''int main(void) { double r0 = atan2(1.0/INFINITY, -1.0), r1 = atan2(-1.0/INFINITY, -1.0); printf("atan2(0.0, -1.0) = %e, atan2(-0.0, -1.0) = %e\n", r0, r1); return 0; }'; tmp/a.out
21:42:05 <HackEso> atan2(0.0, -1.0) = 3.141593e+00, atan2(-0.0, -1.0) = -3.141593e+00
21:42:05 <b_jonas> that's where the branch cut is
21:49:08 <Lykaina> one of the main problems with my interpreter is that it only works when everything is formatted perfectly.
21:49:57 <Lykaina> arranged, not formatted
21:50:15 <b_jonas> Lykaina: do you mean like the labels for the loops and conditionals?
21:50:21 <Lykaina> yes
21:55:02 <Lykaina> another problem is that i am limited by my programmimg skill
21:57:05 <Lykaina> the reason for main.h is that i reused a lot of code from an earlier attempt at this, one which foolishly used 4 .c files
21:57:25 <Lykaina> and 4 .h files
21:57:54 <b_jonas> Lykaina: it's not a problem to use multiple c files, I only said that you shouldn't define the global variables in the header, because if you include the header multiple times, you'll get multiple copies of those variables that way
21:58:01 <b_jonas> that or an error
21:58:14 <Lykaina> oops
21:58:24 <b_jonas> only declare the global variables in the header file if you want to use it in multiple c files, and define each of them in a single c files
21:58:46 <b_jonas> declare global variables by using the `extern` keyword, and without an initializer
21:59:26 <b_jonas> define the global variable without the `extern` keyword or any other storage class modifier keyword
22:01:01 <Lykaina> shouls i just move everything into main.c?
22:01:12 -!- imode has quit (Ping timeout: 265 seconds).
22:02:01 <b_jonas> you can if you want in a small program like this, but you should probably know how multiple compilation units work in C in case you want to write more C programs in the future
22:02:22 <b_jonas> note that the `extern` keyword works differently on variable declarations and on functions declarations
22:02:30 <b_jonas> (on function declarations, it basically does nothing)
22:02:54 <b_jonas> it's a bit confusing, but it's way too late to change that part of C
22:07:02 <arseniiv> that IEEE talk above reminds me about how many languages know that x mod 0 is x
22:08:36 <arseniiv> I forgot which ones again, even
22:11:26 -!- adu has joined.
22:12:57 <Lykaina> back
22:13:19 <Lykaina> check the repo again
22:14:21 -!- imode has joined.
22:16:26 <b_jonas> Lykaina: now you have just one source file, no header, but no other changes. so no annoyance with the global variables now.
22:16:53 -!- GeekDude has quit (Quit: WeeChat 2.4).
22:20:22 -!- Melvar has quit (Ping timeout: 252 seconds).
22:22:09 <Lykaina> i agree that findiw and findand are pretty badly done
22:25:27 <Lykaina> crap
22:27:56 <Lykaina> the S op, the one that allows the "Hello World" program i wrote to work...it may need to go. probably replace it with an external data file lookup
22:28:58 <Lykaina> for readiw and readand to work, the program file can't contain extra data
22:29:28 <b_jonas> Lykaina: maybe change it so that instead of being able to read from anywhere in the source file, it can only read from sections that are specially marked for that, and have a label, and for reading you specify the label and an offset into the data block after that label?
22:30:40 <b_jonas> either that, or just allow to initialize parts of the memory with data in the program source code, and then just use ordinary memory reads
22:31:00 <b_jonas> I'm still asking how the subroutine memory thing works by the way
22:31:43 <Lykaina> what part do you want to know about? i lost the question
22:32:07 <b_jonas> if I understand correctly, the top 4 kilobytes of the memory are for global variables, and mapped straigth to addresses
22:32:17 <b_jonas> but for the memory before that, there's some special magic address translation or something
22:32:20 <b_jonas> how does that work?
22:33:05 <Lykaina> checking
22:34:04 -!- Melvar has joined.
22:34:29 <b_jonas> is it like a data stack, with the memory reference automatically offset by the stack pointer or something?
22:37:12 -!- GeekDude has joined.
22:37:31 -!- unlimiter has joined.
22:38:13 <b_jonas> well, I don't understand that address translation and why you're doing it that way
22:38:20 <Lykaina> look at the ops '&','-','N'
22:38:43 <Lykaina> and how they interact
22:38:46 <b_jonas> it looks as if it allows you to look at only the current stack frame, not stack frames below it
22:39:15 <b_jonas> are you supposed to pass arguments to function calls through globals then?
22:39:16 <Lykaina> what stack?
22:39:17 <b_jonas> it's weird
22:39:33 <b_jonas> well, there's also no stack, but basically
22:39:46 <Lykaina> it's my first working attempt
22:39:47 <b_jonas> it looks like you can only use one fixed part of that memory within a subroutine
22:40:08 <b_jonas> at least directly
22:40:14 <b_jonas> luckily indirect addressing lets you bypass it
22:40:22 <b_jonas> but I still don't understand why you do this address translation at all
22:41:04 <Lykaina> did you look at doc/examples/rand_0-99.txt
22:41:06 <Lykaina> ?
22:41:19 <b_jonas> no
22:41:46 <Lykaina> there's an example of subroutine usage there
22:44:26 <Lykaina> it's an elaborate use of jumps
22:44:37 <Lykaina> and labels
22:45:09 <b_jonas> Lykaina: it looks like the RAND subroutine tries to make two formatted random digits, storing them to @F001 and @F000 or something
22:45:39 <Lykaina> yes, from the same number
22:47:49 <Lykaina> if i wanted to use the &RAND sub in another location, i'd use a different mask number
22:48:30 <Lykaina> each sub invocation has to have a unique mask number, from 01 to ef
22:49:11 <Lykaina> main uses 00
22:50:44 <Lykaina> so you can only make a sub call 239 times max
22:51:03 <Lykaina> is this making sense?
22:51:23 <b_jonas> not to me
22:51:44 <b_jonas> I understand that the subroutine call instruction sets a fixed base address,
22:52:41 <b_jonas> and then the memory reads in the subroutine, except for indirect ones, will read only from the stack frame at that address or from the global memory area, and the
22:52:57 <b_jonas> stack frames can't overlap because they're all 256 long and start at offsets that are multiples of 256-word pages
22:53:12 -!- imode has quit (Remote host closed the connection).
22:53:15 <b_jonas> but I don't get why this is useful
22:53:20 <Lykaina> oh
22:53:37 -!- imode has joined.
22:53:38 <b_jonas> I do also understand that the memory in those stack frames is preserved
22:53:48 <b_jonas> and that you can call subroutines at the same stack frame
22:53:54 <b_jonas> but what's the point of the whole thing?
22:54:31 <Lykaina> honestly, it seemed like a good idea at the time, but it's probably not
22:55:57 <b_jonas> ok
22:56:07 -!- imode2 has joined.
22:56:47 <Lykaina> i need to add the equivalent of a K op during a sub call, at the least
22:58:06 <Lykaina> (clearing the memory)
22:58:43 -!- imode has quit (Ping timeout: 265 seconds).
22:59:32 <Lykaina> and somehow have the ranges automatically assigned based on position on a stack
23:00:28 <Lykaina> instead of having the code define the ranges
23:01:25 <Lykaina> does that sound better?
23:02:23 <b_jonas> I don't know. would you be able to choose the size of the stack frame, like in the subroutine defintion, and access the stack frames below from the subroutine?
23:03:01 <Lykaina> what does "stack frame" mean?
23:03:29 <b_jonas> the stack frame is the part of the memory that a subroutine uses for its own purposes
23:03:37 <b_jonas> that's where it puts its local variables
23:04:41 <Lykaina> always should be 512 bytes (256 addresses)
23:04:56 <b_jonas> it may also contain a few other things that help for subroutine linkage, such as the size of the stack frame or a pointer to the previous stack frame to allow to reset the stack pointer when the subroutine exits, and a return address which points into the code for where the subroutine was called from, but you may store those separately in an interpreter like this
23:05:32 <b_jonas> Lykaina: hmm. but even if it's always 256 words, you should probably allow accessing the stack frames below, to make it easier to pass function call parameters
23:05:39 <Lykaina> and the other frames can only be accessed indirectly
23:06:12 <b_jonas> so that a subroutine doesn't have to copy them from global memory area or access them with an indirect access (the latter would be hard unless you at least add a way to get the stack pointer)
23:06:43 <Lykaina> i don't have call parameters at the moment
23:07:15 <b_jonas> yes, I do understand
23:07:38 <b_jonas> but you should consider to change them if you want to change how that memory accessworks
23:08:59 <Lykaina> i'll try something tonight and push it if it works
23:13:22 -!- imode2 has quit (Ping timeout: 240 seconds).
23:15:35 <Lykaina> should i move the srand to set the seed whenever a random number is requested?
23:15:52 <b_jonas> I don't think that would help much
23:21:19 <Lykaina> unsigned char submask[SUBMASKSIZE]; // i think that's a proto-stack
23:37:59 -!- unlimiter has quit (Quit: WeeChat 2.5).
23:39:43 -!- arseniiv has quit (Ping timeout: 246 seconds).
23:41:13 -!- tromp_ has joined.
23:44:39 -!- tromp has quit (Ping timeout: 250 seconds).
2019-09-08
00:02:43 <Lykaina> b_jonas: how about 239 subs, named 01,02...EE,EF ?
00:03:35 <Lykaina> therefore, easier to make a stack with
00:17:15 <int-e> `` printf %s 11101001011110101100010111111100 | crc32 /dev/stdin
00:17:17 <HackEso> badc0c0a
00:20:27 <Lykaina> lol
00:20:51 -!- imode2 has joined.
00:27:55 <int-e> (It was a fun little exercise: start with a desired CRC32 value, then compute that string of 0s and 1s)
00:28:44 <int-e> And don't use brute force; that's feasible, but boring. :)
00:29:50 <Lykaina> this is why crc32 is not a cryptographic hash
00:30:53 <int-e> Nor CRC64, nor CRC128 if that exists.
00:31:42 -!- imode2 has quit (Quit: Leaving).
00:37:44 <Lykaina> so, not yet in repo, but the subroutines are literally named 01 through EF now
00:41:38 <Lykaina> now it's in the repo
00:50:28 <b_jonas> int-e: there's an IOCCC entry that modifies a file so that it contains its crc checksum formatted to text, I think
00:50:42 <b_jonas> but yes, it's linear
00:52:34 <b_jonas> Lykaina: I don't see why that would be better that just using absolute addresses inside those subroutines. the point of a stack would be that (a) it would let you use less memory than you need for all subs, (b) pass arguments so you can call the same subroutine from multiple call sites easily, (c) allow recursion. you might not care about all of that, in which case you just put the local variables of
00:52:40 <b_jonas> each of the subroutines to separate memory areas
00:53:42 <b_jonas> but even then my main complaint is that since your interpreter restricts memory access to the other parts of the memory, it's hard to pass arguments or return values to other subroutines, you have to use the global variables for it, in which case why do you not just put everything in global variables and get rid of the address translation instead?
00:54:15 <b_jonas> Lykaina: however, if you want to limit the names of the subroutines to make storing the table of their code addresses simpler, that I could understand, but it is sort of restrictive
00:54:31 <b_jonas> would just force the bookkeeping on the programmer
00:55:22 <b_jonas> anyway, I don't know what you want to do with the interpreter, and you'll have to decide that
00:55:29 <Lykaina> i'll get rid of the address translation and make everything global
00:55:40 <b_jonas> int-e: right, it's a linear checksum, so brute force is way overkill
00:59:59 <b_jonas> linear reminds me, https://www.perlmonks.com/?node_id=940327
01:04:05 <b_jonas> that one is also a problem that's linear over the GF(2) field, you may try to solve it
01:04:24 <Lykaina> b_jonas: better?
01:04:37 <Lykaina> brb gotta eat
01:06:39 <b_jonas> cpressey: ^ puzzle thingy, you might be interested as well
01:07:30 <b_jonas> Lykaina: what is better?
01:09:11 <shachaf> fizzie: So according to the musl people, there's pretty much no cross-libc ABI.
01:09:36 <shachaf> If you compile your program with musl's crt.o it'll work with musl's ld.so/libc, and the same for glibc.
01:09:43 <shachaf> This seems like a bizarro situation to me.
01:10:08 <shachaf> Surely there *is* a de facto ABI, which is whatever programs compiled with gcc and its crt.o do.
01:10:27 -!- Sgeo__ has quit (Read error: Connection reset by peer).
01:10:38 <shachaf> But there are a lot of compatiblity issues across even versions of glibc, so who knows what that means.
01:10:51 -!- Sgeo__ has joined.
01:11:09 <shachaf> In practice I need to emulate what glibc's crt.o does, I guess. Which is calling __libc_start_main with rdx as an argument.
01:11:40 <shachaf> Note that Go *doesn't* call libc_start_main, so maybe Go programs only work by accident, since libc doesn't get to do its initialization in the usual way.
01:15:38 <fizzie> That's odd.
01:16:08 <fizzie> I know there's definitely a nonzero amount of things that go wrong if you write a program that just starts at _start but still links with (g)libc and calls into it.
01:16:15 <fizzie> I don't remember specific examples, but there were some.
01:16:52 -!- xkapastel has quit (Quit: Connection closed for inactivity).
01:17:14 <shachaf> "like exposing the list of TLS-providing modules, synchronizing changes to it, providing dl_iterate_phdr (access to unwind information for all libraries present), providing dlopen/dlsym/etc,"
01:20:10 <Lykaina> b_jonas: git commit -a -m "Removed a broken local addressing scheme."
01:22:49 -!- adu has quit (Quit: adu).
01:27:32 <fizzie> Go was in the top 10 (just barely, on spot 10) in the IEEE Spectrum's 2019 programming language popularity contest update.
01:29:17 -!- tromp has joined.
01:31:35 -!- tromp_ has quit (Ping timeout: 248 seconds).
01:33:23 <int-e> fizzie: I was happier about go when I didn't know that it resorted to reflection for elementary things like sorting.
01:35:00 <shachaf> int-e: You can also use code generation.
01:35:34 <int-e> Yay. C++ templates but without official language support.
01:35:48 <int-e> `grwp negativ
01:35:49 <HackEso> absolute value:The absolute value of a number, also known as its cosign, is its distance from zero regardless of direction. It shouldn't be negative, but Sgeo is trying to break maths.
01:35:54 <shachaf> I think there is some official language support?
01:36:46 <Lykaina> sounds like Sgeo
01:36:47 <int-e> Is there now? I thought not... I thought it was some kind of 3rd party preprocessor. Maybe I'm wrong.
01:37:39 <shachaf> There's something called "go generate".
01:37:46 <shachaf> Maybe that's official tool support, not language support.
01:38:31 <int-e> 'Generate runs commands described by directives within existing files.'
01:39:42 <shachaf> I'd use Go except I don't want garbage collection.
01:40:41 <Lykaina> is go an esolang?
01:40:58 <int-e> Heh.
01:41:20 <Lykaina> did you write it?
01:41:24 <int-e> Lykaina: surprisingly we often end up discussing mainstream languages here as well.
01:41:33 <Lykaina> oh
01:41:41 <int-e> It's Google's language called "Go".
01:43:33 <zzo38> Did you learn programming in 6502 or in Glulx at all? Or some other one?
01:44:05 <Lykaina> IIRC, Sgeo and I used to play Go between classes at uni.
01:44:37 <shachaf> Do you think assemblers should generate instructions like "mov $60, %eax" when you type "mov $60, %rax"?
01:44:56 <shachaf> The bytes generated are already ambiguous and the assembler has to pick an encoding.
01:45:47 <shachaf> Or is there an observable difference between moving a 32-bit immediate into eax and rax?
01:46:23 <zzo38> I don't know a lot about modern x86 assembly
01:46:38 <zzo38> So, I don't know what the encoding is.
01:46:56 <int-e> shachaf: I'd be worried about operand size mismatches and resulting pipeline stalls, but I don't know whether that worry is justified.
01:47:26 <shachaf> Hmm, what do you mean?
01:48:27 <zzo38> At least in 6502, the standard syntax does not have a difference for zero page or absolute, I think, and that affects the operand size and the speed too. But NESASM/MagicKit requires < to indicate zero page addressing, which I think is better than the standard syntax.
01:48:47 <int-e> shachaf: If you load eax and then use rax, does that confuse the processor? Or doesn't it because it always deals with the whole 64 bit register anyway?
01:49:46 <int-e> shachaf: I recall that loading ax and then using eax caused pipeline stalls in earlier processors. Of course there the story was different; loading ax would preserve the top half of eax.
01:49:48 <shachaf> I see. You're thinking maybe something just looks at the instruction operand size and not the effect of the instruction.
01:50:25 <shachaf> I think loading 32-bit immediates into 64-bit registers is such a common idiom that I'd be surprised. But maybe there are effects in other cases.
01:50:36 <zzo38> I think modern x86 is too confusing, and that MMIX is better.
01:50:41 <shachaf> Also, loading ax *still* preserves the top 3/4 of rax, I found out in here the other day.
01:50:57 <shachaf> zzo38: I'd happily use a MMIX processor if you sent me one in the mail.
01:51:42 <int-e> shachaf: Yeah it's probably fine... the fact that loading a 32 bit register clears the upper half cures the reason for those stalls (namely, that outputs of two instructions would potentially have to be merged).
01:51:53 <zzo38> (Old x86 also is less messy than modern x86, I think.)
01:52:08 <shachaf> `` llvm-mc
01:52:10 <HackEso> ​/hackenv/bin/`: line 5: llvm-mc: command not found
01:53:41 <shachaf> Does HackEso have a convenient way to type instructions and see what they assemble to, or type machine code and see what it disassembles to?
01:53:53 <Lykaina> gtg
01:54:24 <Lykaina> before i accidently say something someone doesn't want me to
01:54:30 -!- Lykaina has quit (Quit: leaving).
01:54:49 <int-e> shachaf: Anyway. I don't know. For $60 I'd hope for a mov imm8, r/m64 operation, I think, and then realize that that doesn't exist, then spend the rest of the day wondering why that is.
01:56:12 <shachaf> Oh boy. You're using Intel names with AT&T order.
01:56:47 <int-e> More productively, what do existing compilers/assemblers (llvm, gcc, as) do the processor software optimization manuals have anything to say on that?
01:57:52 <int-e> oh, nice contraction. s/do the/do, and what do/
01:58:21 <int-e> shachaf: I have no excuse, but the fact that an immediate was involved saves me :P
02:00:46 <shachaf> `` echo 'int foo() { return 60; }' | gcc -O2 -c -x c -o /tmp/test.o - && objdump -d /tmp/test.o | grep -P '^ *\d+:'
02:00:49 <HackEso> ​ 0:b8 3c 00 00 00 mov $0x3c,%eax \ 5:c3 retq
02:02:30 <shachaf> I'm looking at the Intel optimization guide.
02:02:36 <shachaf> "12.2.2 Use Extra Registers to Reduce Register Pressure"
02:02:38 <shachaf> Thintel.
02:02:52 <int-e> DEEP
02:03:40 <Hooloovo0> didn't sparc attempt to solve register pressure by doing the opposite?
02:04:07 <Hooloovo0> I mean, I guess register windows give you extra registers, but they're windowed
02:04:27 <shachaf> "Note that in Intel 64 architecture, an update to the lower 32 bits of a 64 bit integer register is architecturally defined to zero extend the upper 32 bits. While this action may be logically viewed as a 32 bit update, it is really a 64 bit update (and therefore does not cause a partial stall)."
02:09:43 <shachaf> int-e: Hmm, x86 has "ADD r/m64, imm8"
02:09:49 <shachaf> Which I probably knew but forgot about.
02:09:59 <shachaf> That makes your complaint more justified.
02:10:04 <shachaf> By complaint I mean wonder.
02:10:56 <int-e> shachaf: Yes, it has that for all arithmetic operations, but not for loads.
02:11:34 <int-e> And it has an push imm8 as well.
02:11:44 <int-e> s/an/a/
02:12:36 <fizzie> Yes, that's an odd.
02:12:56 <fizzie> Often you can get by with the arithmetic ones, as long as you have a known starting point.
02:13:02 <shachaf> `` echo 'mov $60, %eax' | as -o /tmp/test.o - && objdump -d /tmp/test.o | grep -P '^ *\d+:'
02:13:03 <HackEso> ​ 0:b8 3c 00 00 00 mov $0x3c,%eax
02:13:06 <shachaf> `` echo 'xor %eax, %eax; or $60, %eax' | as -o /tmp/test.o - && objdump -d /tmp/test.o | grep -P '^ *\d+:'
02:13:07 <HackEso> ​ 0:31 c0 xor %eax,%eax \ 2:83 c8 3c or $0x3c,%eax
02:13:11 <shachaf> Oh well.
02:13:40 <int-e> shachaf: so ironically, xor rax,rax; add rax,60 is 5 bytes, one byte shorter than the mov eax,60 you'd envision. ... right, just like that
02:14:17 <int-e> (for a 64bit target)
02:15:06 <fizzie> You mean the one with the rex prefix? Because it's the same size otherwise.
02:15:22 <fizzie> (As seen just above.)
02:15:28 <shachaf> `` echo 'xor %rax, %rax; or $60, %eax' | as -o /tmp/test.o - && objdump -d /tmp/test.o | grep -P '^ *\d+:' | sed 's/^[^\t]*\t//; s/ *\t/: /g'
02:15:29 <HackEso> 48 31 c0: xor %rax,%rax \ 83 c8 3c: or $0x3c,%eax
02:15:37 <int-e> mmm.
02:16:02 <int-e> you're right, I made a wrong assumption about how 64 bit mode would work.
02:17:14 <shachaf> `mkx bin/as-encoding//echo "$1" | as -o /tmp/out.o - && objdump -d /tmp/out.o | grep -P '^ *\d+:' | sed 's/^[^\t]*\t//; s/ *\t/: /g'
02:17:16 <HackEso> bin/as-encoding
02:17:23 <shachaf> `as-encoding mov %rax, %rbx
02:17:24 <HackEso> 48 89 c3: mov %rax,%rbx
02:17:38 <shachaf> Oh, \d is wrong, isn't it.
02:17:59 <shachaf> `mkx bin/as-encoding//echo "$1" | as -o /tmp/out.o - && objdump -d /tmp/out.o | grep -P '^ *[0-9a-f]+:' | sed 's/^[^\t]*\t//; s/ *\t/: /g'
02:18:05 <HackEso> bin/as-encoding
02:18:56 <shachaf> `as-encoding mov (%rbp), %rdi
02:18:57 <HackEso> 48 8b 7d 00: mov 0x0(%rbp),%rdi
02:19:25 <fizzie> `asm mov eax, 60
02:19:26 <HackEso> 0: b8 3c 00 00 00 mov eax,0x3c
02:19:28 <fizzie> There was that one already.
02:19:36 <fizzie> It's an intel variant, though.
02:19:37 <shachaf> `as-encoding mov (%r13), %rdi
02:19:38 <HackEso> 49 8b 7d 00: mov 0x0(%r13),%rdi
02:19:45 <shachaf> Oh, that one's probably better.
02:19:51 <shachaf> I did ask!
02:19:52 <shachaf> `cat bin/asm
02:19:52 <int-e> `asm mov rax, 60
02:19:52 <HackEso> ​#!/bin/sh \ echo "$1" > /tmp/asm.s; for o in ',' '-msyntax=intel -mnaked-reg,-M intel'; do if as ${o%,*} /tmp/asm.s -o /tmp/asm.o 2>>/tmp/asm.err; then objdump ${o#*,} -d --insn-width=20 /tmp/asm.o | sed -e "1,/0000000000000000/d" | perl -pe 'if (/^\s*(\w+:)\s*((?:\w\w )+)\s*(\S.*)$/) { ($a,$b,$c) = ($1,$2,$3); $_ = "$a $b ".($c =~ s/\s+/ /rg)."\n"; }'; exit; fi; done; cat /tmp/asm.err
02:19:53 <HackEso> 0: 48 c7 c0 3c 00 00 00 mov rax,0x3c
02:20:17 <shachaf> `asm mov rdi, [r13]; mov rdi, [r15]
02:20:20 <HackEso> 0: 49 8b 7d 00 mov rdi,QWORD PTR [r13+0x0] \ 4: 49 8b 3f mov rdi,QWORD PTR [r15]
02:20:50 <int-e> `asm mov rax, 6061626364656667h
02:20:51 <HackEso> ​/tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: too many memory references for `mov' \ /tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: junk `h' after expression
02:21:00 <int-e> `asm mov rax, 0x6061626364656667
02:21:01 <HackEso> 0: 48 b8 67 66 65 64 63 62 61 60 movabs rax,0x6061626364656667
02:21:37 <int-e> is `asm` based on `nasm`?
02:21:47 <fizzie> No, it's still as.
02:22:13 <shachaf> `asm mov $60, %rax
02:22:14 <HackEso> 0: 48 c7 c0 3c 00 00 00 mov $0x3c,%rax
02:22:15 <fizzie> Actually, looks like it guesses.
02:22:23 <shachaf> Oh boy, it tries both syntaxes.
02:22:33 <shachaf> An assembler with a conditional? as if!
02:22:49 <fizzie> It tries as + objdump without options, and if that fails it tries "-msyntax=intel -mnaked-reg" for as and "-M intel" for objdump.
02:22:54 <fizzie> That's kind of clever.
02:23:41 <shachaf> `asm movb $60, 60
02:23:42 <HackEso> 0: c6 04 25 3c 00 00 00 3c movb $0x3c,0x3c
02:24:03 <int-e> now wth is that c7 c0 instruction.
02:24:46 <fizzie> C7 /0 MOV r/m32, imm32
02:24:52 <shachaf> MOV r/m64, imm32?
02:24:54 <int-e> `asm movd $60, (%rsi)
02:24:55 <HackEso> ​/tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: operand size mismatch for `movd' \ /tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: operand size mismatch for `movd'
02:25:13 <int-e> `asm movq $60, (%rsi)
02:25:14 <HackEso> 0: 48 c7 06 3c 00 00 00 movq $0x3c,(%rsi)
02:25:21 <int-e> ah.
02:25:32 <shachaf> `cwlprits bin/asm
02:25:34 <HackEso> No output.
02:25:37 <shachaf> uh
02:25:40 <shachaf> `culprits bin/asm
02:25:42 <HackEso> fizzïe fizzïe fizzïe fizzïe fizzïe fizzïe fizzïe fizzïe fizzïe fizzïe shachäf shachäf ais52̈3 shachäf shachäf ais52̈3 ais52̈3 ais52̈3 ais52̈3 ais52̈3 ais52̈3 ais52̈3 ais52̈3 ais52̈3 Gregör Gregör
02:25:56 <shachaf> Can you add a feature where it prints the encoding in octal?
02:26:37 <fizzie> I guess that'd be handy for the ModR/M byte.
02:26:51 <fizzie> Not going to start doing that right now though.
02:27:16 <shachaf> It's handy for a bunch of other things too.
02:27:47 <shachaf> Anything that names a register, for instance.
02:27:48 <int-e> `asm movq $0x6061626364656667, (%rsi)
02:27:49 <HackEso> 0: 48 89 34 25 00 00 00 00 mov QWORD PTR ds:0x0,rsi
02:28:15 <int-e> `asm movq $6061626364656667, (%rsi)
02:28:17 <HackEso> 0: 48 89 34 25 00 00 00 00 mov QWORD PTR ds:0x0,rsi
02:28:42 <int-e> that's confusing.
02:28:52 <shachaf> It's confusing because it's treating it as Intel syntax.
02:29:20 <fizzie> And treating the $ as part of a symbol?
02:29:24 <shachaf> Since it fails as AT&T syntax because the only instruction with a 64-bit immediate is mov r64, imm64
02:29:24 <int-e> `asm movq [rsi], 0x6061626364656667
02:29:25 <HackEso> ​/tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: invalid char '[' beginning operand 1 `[rsi]' \ /tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: operand size mismatch for `movq'
02:29:29 <shachaf> Right.
02:29:42 <shachaf> That's unfortunate.
02:29:52 <shachaf> `as-encoding movq $6061626364656667, (%rsi)
02:29:53 <HackEso> ​{standard input}: Assembler messages: \ {standard input}:1: Error: operand size mismatch for `movq'
02:30:08 <int-e> fair enough
02:30:24 <fizzie> I guess that's kind of an issue with all these "just try all the ways" things, there's a similar thing with the C one that tries with and without a main wrapper.
02:30:27 <fizzie> `asm mov eax, 60; mov rax, 60
02:30:29 <HackEso> 0: b8 3c 00 00 00 mov eax,0x3c \ 5: 48 c7 c0 3c 00 00 00 mov rax,0x3c
02:30:31 <fizzie> Actually, why *is* that second one REX.W + C7 /0, and not REX.W + B8+ rd?
02:30:49 <fizzie> Oh, because that's the imm64.
02:30:56 <fizzie> Right.
02:30:58 <int-e> yeah it's shorter this way
02:31:16 <fizzie> What a nice and orthogonal instruction set.
02:31:34 <shachaf> I've forgotten what /0 means.
02:31:38 <int-e> Yes, it's a thing of pure beauty.
02:31:40 <shachaf> Is it the reg part of the modr/m byte?
02:32:01 <fizzie> Yes.
02:32:06 <int-e> yes, /0 puts something in the mod r/m byte
02:32:19 <shachaf> I've also forgotten what rd means.
02:32:58 <int-e> destination register?
02:33:03 <int-e> I dunno.
02:33:06 <fizzie> It's "+rd", means adding a register code for a doubleword register to the byte on the left.
02:33:25 <fizzie> The pages just seem to format it with the + closer to the byte it gets added to.
02:33:34 <int-e> But B8...BF are all mov rd, imm32 instructions
02:34:09 <shachaf> Why do they say "REX.W +"?
02:34:18 <int-e> `asm inc rax
02:34:19 <HackEso> 0: 48 ff c0 inc rax
02:34:22 <fizzie> Yes, and "B0+ rb" makes B0 .. B7 ones that are r8, imm8 ones.
02:34:39 <shachaf> This is all way simpler in base 8, hth.
02:34:41 <fizzie> Well, not strictly imm8. But the "d" is for size, not for "destination".
02:35:06 <fizzie> They say "REX.W +" because it was the 64-bit variant, which needs the REX prefix with the W bit set.
02:35:09 <int-e> fizzie: yeah I got that a moment too late
02:35:20 <shachaf> But the + just means concatenation there?
02:35:29 <fizzie> Yes.
02:35:35 <shachaf> Or does it mean you add (or) the other REX bits or something
02:35:36 <shachaf> ?
02:35:37 <shachaf> OK.
02:35:39 <fizzie> The + that means "add to the value" is typeset slightly differently.
02:35:44 <shachaf> Oh.
02:35:48 <shachaf> I was looking at https://www.felixcloutier.com/x86/mov
02:36:19 <fizzie> Well, by "typeset" I really meant the whitespacing, which they've accurately reproduced.
02:36:26 <fizzie> The symbol itself looks the same.
02:37:03 <fizzie> But the spacing looks like "REX.W + B8+ rd" so you can arguably tell what kind of + it is.
02:37:37 <int-e> the space before the "rd" is a bit odd
02:38:12 <shachaf> But e.g. https://www.felixcloutier.com/x86/jmp just says "REX.W FF"
02:38:13 <fizzie> It's odd especially because the interpretation guide says: "+rb, +rw, +rd, +ro".
02:38:30 <shachaf> (And so does the Intel manual, which I've now opened.)
02:38:42 <fizzie> shachaf: My version of the Intel manual says "REX.W + FF /5".
02:38:47 <fizzie> For JMP m16:64, anyway.
02:39:32 <shachaf> Really? Which version?
02:39:35 <int-e> m16:64, hmm.
02:39:39 <shachaf> https://software.intel.com/sites/default/files/managed/39/c5/325462-sdm-vol-1-2abcd-3abcd.pdf PDF page 1072 says REX.W FF
02:39:56 <fizzie> I'm not sure where the version number is in this thing.
02:40:35 <shachaf> I know what the REX.W means but I was confusil about the +.
02:41:09 <fizzie> It says "Order Number: 325462-041US" and "December 2011" on the first page.
02:41:24 <fizzie> So they have broken it somewhere between 2011 and 2019.
02:42:13 <fizzie> Although arguably the "+"-free version is more logical, because that's how concatenation works most of the time there.
02:42:35 <int-e> Hmm the version that I downloaded in June says REX.W FF /5
02:42:36 <shachaf> But this manual still has +s for mov.
02:43:35 <fizzie> I suspect I downloaded the 2011 version in 2011, and have not updated it since then.
02:43:44 <b_jonas> the intel manuals often use illogical notation elsewhere too, in the pseudocode that describes instruction semantics
02:43:55 <int-e> but for the mov it has, REX.W + B8+ rd io
02:43:57 <b_jonas> it's a confusing manual
02:46:06 <b_jonas> or maybe a confusil manual
02:46:11 <b_jonas> or a confus manual
02:46:13 <b_jonas> dunno
02:48:10 <fizzie> There was some specific overlong encoding which objdump represents using a pseudoregister eiz/riz to represent zero.
02:48:18 <fizzie> `asm .byte 0x88, 0x04, 0xa0
02:48:19 <HackEso> 0: 88 04 a0 mov %al,(%rax,%riz,4)
02:48:42 <fizzie> The ones with a SIB byte that specify the row that doesn't do any scaling.
02:49:08 <fizzie> `asm .byte 0x88, 0x04, 0xe0
02:49:09 <HackEso> 0: 88 04 e0 mov %al,(%rax,%riz,8)
02:49:40 <fizzie> Gives it a way to disambiguate, but I'm not sure how useful that is because I'm pretty sure there still some ambiguous cases where different bytes give the same text.
02:49:44 * int-e blinks
02:49:57 <int-e> There's a %riz?
02:50:04 <fizzie> Not really.
02:50:26 <int-e> Oh, you explained it there.
02:50:29 <fizzie> But there's a SIB byte encoding for each of the scaling levels (1, 2, 4, 8) that doesn't actually add a scaled register.
02:50:43 <fizzie> `asm .byte 0x88, 0x04, 0x20
02:50:44 <HackEso> 0: 88 04 20 mov %al,(%rax,%riz,1)
02:51:05 <fizzie> `asm .byte 0x88, 0x00
02:51:06 <HackEso> 0: 88 00 mov %al,(%rax)
02:51:10 -!- ArthurStrong has joined.
02:51:51 <int-e> fizzie: do they have that in 32 bit mode too?
02:52:01 <fizzie> Yes, it's just called %eiz.
02:52:13 <int-e> fun.
02:52:49 <fizzie> ndisasm shows both 88 04 20 and 88 00 as just `mov [rax], al`.
02:54:21 <shachaf> It's very convenient that x86 has a 3-operand add.
02:55:00 <fizzie> On the other hand:
02:55:01 <fizzie> `asm .byte 0x88, 0xc2, 0x8a, 0xd0
02:55:04 <HackEso> 0: 88 c2 mov %al,%dl \ 2: 8a d0 mov %al,%dl
02:55:22 <fizzie> There's no disambiguating that thing.
02:55:52 <fizzie> But maybe there was some more specific way of showing it with eiz/riz than simply making it look different.
02:55:57 <fizzie> s/way/reason/
02:56:37 <int-e> fizzie: well, those encodings of mov dl, al have the same size
02:57:18 <int-e> And as I understood it, the %riz actually makes a difference (since it adds a SIB).
02:57:27 <Hooloovo0> is there a service that lets you run short programs on lots of different x86 architectures/families?
02:57:39 <Hooloovo0> would be interesting to see if either encoding is uniformly faster
02:57:56 <int-e> Oh, nitpick: "SIB = scaled index byte", so "SIB byte" is redundant.
02:58:01 <fizzie> `asm .byte 0xb0, 0xff, 0xc6, 0xc0, 0xff
02:58:05 <HackEso> 0: b0 ff mov $0xff,%al \ 2: c6 c0 ff mov $0xff,%al
02:58:05 <fizzie> int-e: Those aren't the same size.
02:58:23 <shachaf> `asm .byte 0110, 0146, 0213, 0364
02:58:24 <HackEso> 0: 48 rex.W \ 1: 66 8b f4 mov %sp,%si
02:58:32 <int-e> fizzie: hmm, good point.
02:58:53 <int-e> does as even accept the riz stuff...
02:59:00 <int-e> `asm mov %al,(%rax,%riz,1)
02:59:02 <HackEso> ​/tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: bad register name `%riz' \ /tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: missing ')' \ /tmp/asm.s:1: Error: bad expression \ /tmp/asm.s:1: Error: junk `riz' after expression
02:59:10 <fizzie> I think it's not accepted on the input side.
02:59:30 <fizzie> It may just be an objdump peculiarity.
02:59:38 <shachaf> Should my assembler have different names for different register sizes?
02:59:50 <fizzie> That's another thing, why aren't these dump things ever round-trippable?
03:00:17 <fizzie> Your assembler/disassembler pair should have the property that (assemble . disassemble) is identity.
03:00:42 <shachaf> I wasn't going to have a disassmller, which lets me sidestep this requirement.
03:01:02 <shachaf> Do you think the assembler should always use an unambiguous name for unusual encodings?
03:01:13 <fizzie> I think it should add a footnote.
03:01:27 <fizzie> Or possibly a hover-tip.
03:01:38 <fizzie> Oh, I was still in the disassembler mindset, sorry.
03:01:57 <fizzie> I guess that could apply to an assembler as well, if it reads in a footnote.
03:02:14 <int-e> . o O ( mov <r>dl, <m>al )
03:02:47 <shachaf> `asm .byte 0213, 0303; .byte 0211, 0330
03:02:48 <HackEso> 0: 8b c3 mov %ebx,%eax \ 2: 89 d8 mov %ebx,%eax
03:03:08 <shachaf> fizzie: Well, really I meant disassembler.
03:03:22 <int-e> It's a tricky question what a /sane/ syntax for this would look like.
03:03:26 <shachaf> Disassembling the above two the same way doesn't seem that bad to me.
03:04:13 <fizzie> int-e: `mov 𝔞𝔩, 𝕕𝕝` vs. `mov 𝕒𝕝, 𝔡𝔩`.
03:04:16 <shachaf> It's a very niche case where you want to distinguish them. And different versions of an assembler could switch between encodings, so you'd be breaking some backwards compatibility by writing one of them out as nonstandard.
03:04:22 -!- FreeFull has quit.
03:04:24 <int-e> fizzie: I see boxes :)
03:04:38 <shachaf> Maybe that's not so bad, and it wouldn't actually break compatibility meaningfully to have a default.
03:04:44 <fizzie> Maybe it'll work at http://esolangs.org/logs/2019-09-08.html#lif
03:05:17 <shachaf> `asm .byte 0211, 0303; .byte 0213, 0330
03:05:18 <HackEso> 0: 89 c3 mov %eax,%ebx \ 2: 8b d8 mov %eax,%ebx
03:05:29 <shachaf> `asm mov %eax, %ebx
03:05:29 <HackEso> 0: 89 c3 mov %eax,%ebx
03:05:33 <shachaf> `asm mov ebx, eax
03:05:34 <HackEso> 0: 89 c3 mov ebx,eax
03:05:42 <int-e> fizzie: yeah it works in logs (I had made my way to tunes)
03:05:47 <shachaf> I guess I should use the 0x89 encoding.
03:06:19 <int-e> maybe just put appendices on the mnemonic... mov.mr and mov.rm
03:06:24 <fizzie> shachaf: I wonder if they settled on that just because 0x89 < 0x8b.
03:06:27 -!- Sgeo_ has joined.
03:06:54 <shachaf> Wait, those are the same assembler so it's not surprising that both syntaxes used the same encoding.
03:07:04 <shachaf> For some reason I was thinking it was nasm because it was mentioned earlier.
03:07:35 <fizzie> nasm does use 89 as well though.
03:08:01 <shachaf> godbolt.org has a checkbox to show the instruction encoding rather than just assembly.
03:08:07 <shachaf> But it doesn't work when you set the language to assembly!
03:08:18 <int-e> I seem to recall that some people use variant instruction encodings for watermarking software.
03:08:26 <fizzie> int-e: That suffix thing rings a bell, I think there was a university course that did that for an x86 variant.
03:08:37 <shachaf> I opened an issue: https://github.com/mattgodbolt/compiler-explorer/issues/1567
03:08:39 <fizzie> That it used as the target, it was a course on compilers.
03:08:55 <shachaf> I tried to fix it locally but then it needed a new version of node.js to build so I gave up on it.
03:09:26 <fizzie> Oh, is Godbolt just their surname?
03:09:44 <shachaf> Yes.
03:09:45 <fizzie> I thought it was reference to a thunder deity or something.
03:09:49 <int-e> In any case, as much as I'd like a round-trippable disassembler/assembler, I also want a noiseless disassembler that just conveys the semantics.
03:10:00 <shachaf> Though their Twitter nick is now "Matt Compiler-Explorer".
03:10:07 <fizzie> Heh.
03:10:10 <int-e> So round-trippability should be an option, probably not even enabled by default.
03:10:36 -!- Sgeo__ has quit (Ping timeout: 268 seconds).
03:11:15 <fizzie> Must be odd to have your name forever associated with a thing that way.
03:11:24 <fizzie> Although I guess it's more or less the same for mathematicians.
03:12:12 <int-e> it's already weird when you're just cited in a paper. "As <picture your surname here> showed, ..."
03:12:25 <ArthurStrong> Am I right I can simulate Haskell-like lazy evaluation in Scheme if I add "lazy" on every function's argument?
03:12:39 <Hooloovo0> would be weirder to have your IRC nick cited in that way
03:12:48 <int-e> Hooloovo0: yes.
03:13:19 <Hooloovo0> also I wouldn't at all be surprised if someone cited this channel in a paper
03:13:49 <fizzie> Unfortunately "esoteric" is kind of unsearchable.
03:14:44 <Hooloovo0> #esoteric will remain esoteric, I guess
03:15:12 <fizzie> http://sro.sussex.ac.uk/id/eprint/46869/ "cites" (well, refers in the text) to the wiki, though.
03:16:19 <shachaf> I wonder, do compilers nowadays use the ah-style registers?
03:16:53 <ArthurStrong> shachaf: yes, to generate FPU code
03:16:55 <Hooloovo0> how do you mean? I'd expect them to just be subregisters of the big ones, right?
03:17:10 <ArthurStrong> shachaf: which are rare today... substituted by SIMD code
03:18:17 <shachaf> They are subregisters, but you only get them for four registers.
03:18:38 <shachaf> And I wonder whether there's actually much use for them.
03:18:59 <ArthurStrong> shachaf: in SIMD? yes, they are used. when you pack smaller values into a register...
03:19:05 -!- tromp_ has joined.
03:19:20 <shachaf> What does SIMD have to do with it? I'm confusil.
03:20:27 <ArthurStrong> shachaf: you can say SIMD registers have subregisters...
03:20:34 <ArthurStrong> shachaf: or you talk about x86 GPR?
03:20:36 <shachaf> Hmm, apparently it is used.
03:20:44 <shachaf> I'm talking about ah/ch/dh/bh
03:21:07 <shachaf> I guess things like "or $0x80,%ah" are justified.
03:21:18 <ArthurStrong> shachaf: so I say, AH is used in the code working with 80-bit FPU STx registers
03:21:42 <fizzie> https://godbolt.org/z/adJb7o used ah.
03:21:45 -!- tromp has quit (Ping timeout: 250 seconds).
03:22:39 <Hooloovo0> couldn't find anything in google scholar, but there were a couple that linked to the wiki
03:22:50 <fizzie> Not quite sure why it made it `xor ah, ah; or ah, 18` instead of `mov ah, 18` but maybe there's a reason.
03:23:01 <fizzie> Or maybe it just couldn't quite grasp the intent of the code.
03:23:05 <ArthurStrong> shachaf: https://github.com/DennisYurichev/RE-for-beginners/blob/master/patterns/12_FPU/3_comparison/x86/MSVC/MSVC_EN.asm
03:23:08 <Hooloovo0> also one which talked about writing IRC bots in weird languages
03:23:19 <ArthurStrong> shachaf: test eax, ... would work here, but test AH, <byte> is shorter ins
03:23:47 <shachaf> Yes.
03:23:50 <ArthurStrong> fizzie: just a reason for shorter code
03:24:05 <fizzie> ArthurStrong: `xor ah, ah; or ah, 18` is not shorter than `mov ah, 18`.
03:24:11 <shachaf> Hmm, I guess "sub rsp, 8" is just to keep the stack aligned?
03:24:12 <ArthurStrong> fizzie: OK, maybe I wrong...
03:24:40 <shachaf> `asm xor ah, ah; or ah, 18; mov ah, 18
03:24:41 <HackEso> 0: 30 e4 xor ah,ah \ 2: 80 cc 12 or ah,0x12 \ 5: b4 12 mov ah,0x12
03:25:00 <shachaf> whoa, that's bizarro
03:25:42 <fizzie> I assume it might have something to do with the fact that the natural translation of `x &= ~0xff00u` is `xor ah, ah` while the one for `x |= 0x1200` is `or ah, 0x12`.
03:25:57 <fizzie> But I couldn't think of a more obvious way to say "replace the second byte".
03:26:08 <fizzie> Attempting to go via the pointer route just made it actually play around with memory.
03:26:11 <fizzie> Maybe the union trick.
03:26:14 <ArthurStrong> fizzie: compiler isn't good enough to optimize this out?
03:26:33 -!- Sgeo has joined.
03:27:09 <fizzie> Yes, for https://godbolt.org/z/jUPnPk it creates the expected code.
03:27:10 <shachaf> clang has an entirely different encoding which doesn't use ah.
03:27:51 <fizzie> (The stack adjustments changed because I had -Os for the second but -O2 for the first.)
03:28:11 <fizzie> The size-optimized `push rax` and `pop rdx` are kind of funny though.
03:28:34 <shachaf> push rzi
03:29:34 -!- Sgeo_ has quit (Ping timeout: 244 seconds).
03:30:40 <shachaf> I bet most of these optimizations don't matter that much.
03:31:37 <shachaf> I'd like to have a thing try different subsets of optimizations on a program to measure their impact and see which ones matter.
03:43:42 -!- ArthurStrong has quit (Quit: leaving).
03:54:22 <zzo38> Do you think this implementation of robot find kitten is good enough now? https://arin.ga/5wx9UE
04:03:58 -!- Lykaina has joined.
04:05:36 <Lykaina> hi
04:08:02 <Lykaina> b_jonas, et al: rewrote S to load 8 bytes directly into ram
04:13:14 <Lykaina> also, first time i used what i believe to be an indirect load in a sample
04:19:09 -!- Lykaina has quit (Quit: leaving).
05:40:52 -!- clog has quit (Ping timeout: 245 seconds).
06:25:04 -!- emma has joined.
06:43:16 <shachaf> `? tanebventions: math
06:43:17 <HackEso> Mathematical tanebventions include D-modules, Chu spaces, the torus, Stephen Wolfram, Klein bottles, string diagrams, linear logic, the reals, Lambek's lemma, Curry's paradox, Stone spaces, algebraic geometry, locales, and histograms.
06:43:21 <shachaf> `? locale
06:43:23 <HackEso> Locales are just frames, which are just complete Heyting algebras. Taneb accidentally invented them by asking about lattices. The only locale available in #esoteric is en_NZ.UTF-8.
06:43:35 <shachaf> Taneb: What did you ask about lattices?
06:43:58 <shachaf> Also, do you know the answer to this question: Why do topologists like bases more than subbases?
07:17:21 -!- Spexty has quit (Remote host closed the connection).
07:35:52 <esowiki> [[Intramodular Transaction]] https://esolangs.org/w/index.php?diff=66017&oldid=65958 * Hakerh400 * (+36) Updated computational class.
07:36:37 <esowiki> [[Intramodular Transaction]] M https://esolangs.org/w/index.php?diff=66018&oldid=66017 * Hakerh400 * (+12)
07:37:02 -!- clog has joined.
08:19:50 -!- Frater_EST has joined.
08:20:17 -!- Frater_EST has left.
08:48:52 -!- Sgeo_ has joined.
08:50:51 -!- Lykaina has joined.
08:52:07 -!- Sgeo has quit (Ping timeout: 245 seconds).
09:42:31 <b_jonas> fizzie: SIB encoding with no index register => there is a redundant encoding, sure, and it's useful for RIP-based addresses, but doesn't the x86 manual say that the scale must be 1 when there's no index register?
09:45:20 <b_jonas> shachaf: unambiguous name for unusual encodings => I don't think so, except for those unusual encodings that have some advantage why you want to use them, because normally you don't gain anything by using a longer encoding than the shortest one
09:45:44 <b_jonas> there are a few cases like nops of a specific length and two-byte ret where you may gain something
09:46:26 <shachaf> Should assemblers encode "mov $60, %rax" the same way as "mov $60, %eax"?
09:46:55 <esowiki> [[Seed]] https://esolangs.org/w/index.php?diff=66019&oldid=63558 * Palaiologos * (+4284)
09:48:01 <b_jonas> though of course, that only works if the assembler knows about the latest version of x86, because there are instructions like the prefixed jumps that were overlong encodings on earlier cpus but have a meaning why you want to use them on later ones
09:50:38 <b_jonas> shachaf: do compilers use the ah-style registers => I hope so, because xchg %al, %ah or similar is the recommended way to byteswap a 16-bit word, and that comes up sometimes eg. when loading a PPM
09:51:09 <shachaf> Hmm.
09:51:23 <shachaf> You could probably use SIMD instructions to do it better.
09:55:17 <b_jonas> Lykaina: hmm, that could work. it's strange that it (the S instruction) only loads single bytes into the words, but I guess you want to use this for hello world messages and such
09:56:31 <b_jonas> shachaf: for more than one word, sure. you can even use general register instructions to do it faster on four words at a time. not for just one word though.
09:57:06 <b_jonas> but you already gave better examples, for arithmetic with a constant in the second byte
10:01:14 -!- xkapastel has joined.
10:03:02 <shachaf> Ugh, why does this instruction set have so many special cases?
10:04:19 <b_jonas> shachaf: because of historical reasons, plus there are optimizations that make it run on the hardware better at the time the instruction encoding is defined, even if it looks uglier
10:04:40 <b_jonas> sadly some of those optimizations become pessimizations a decade later
10:05:19 <shachaf> Should I use ARM instead?
10:05:28 <b_jonas> no
10:05:36 <b_jonas> use x86_64 because it has fast cpu implementations
10:05:53 <shachaf> I want to support at least both of those eventually.
10:06:01 <b_jonas> you can of course ignore some of the more esoteric features when generating code, such as the x87 instructions
10:06:09 <b_jonas> and the MMX instructions
10:09:03 <shachaf> `asm .byte 0x48, 0x8b, 0x5d, 0x00
10:09:04 <HackEso> 0: 48 8b 5d 00 mov 0x0(%rbp),%rbx
10:09:06 <shachaf> `asm .byte 0x48, 0x8b, 0x9d, 0x00, 0x00, 0x00, 0x00
10:09:07 <HackEso> 0: 48 8b 9d 00 00 00 00 mov 0x0(%rbp),%rbx
10:09:15 <shachaf> hm
10:09:52 <shachaf> `asm mov (%rax,%rsp,1), %rbx
10:09:53 <HackEso> ​/tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: `(%rax,%rsp,1)' is not a valid base/index expression \ /tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: missing ')' \ /tmp/asm.s:1: Error: junk `)' after expression
10:09:56 <shachaf> `asm mov (%rax,%rbp,1), %rbx
10:09:57 <HackEso> 0: 48 8b 1c 28 mov (%rax,%rbp,1),%rbx
10:10:15 <shachaf> I guess that's not so bad.
10:11:14 <b_jonas> try backwards, (%rsp,%rax,1)
10:11:54 <shachaf> Well, that works with 1 but not with 2.
10:23:06 <b_jonas> that is deliberate. the cpu is optimized for the case when %rsp points to the stack, in which case you don't want to multiply it with 2. this isn't required, you can use %rsp as a regular register, but you need more instructions to encode with it then, and a sigaltstack call to make sure whatever it points to won't get clobbered from a signal
10:26:18 <shachaf> Yes.
10:30:53 <b_jonas> %r12 is a ca... unintended victim, you also can't use it as a scaled index
10:31:58 <b_jonas> ``` grep -E '\<c.*s.*l.*ty\>' share/dict/12dicts/Lemmatized/2+2+3frq.txt
10:31:59 <HackEso> casualty \ causality \ constitutionality
10:32:02 <b_jonas> yeah, one of those
10:34:48 -!- Lord_of_Life has joined.
11:17:52 <b_jonas> `? enrichment center
11:17:52 <b_jonas> `? enrichment
11:17:53 <HackEso> enrichment center? ¯\(°​_o)/¯
11:17:54 <HackEso> enrichment ? ¯\(°​_o)/¯
11:17:59 <b_jonas> hmm
11:41:18 -!- arseniiv has joined.
11:52:40 <esowiki> [[Nop]] M https://esolangs.org/w/index.php?diff=66020&oldid=64701 * A * (+18)
12:16:12 * Lykaina yawns
12:26:51 -!- GeekDude has quit (Ping timeout: 265 seconds).
12:28:51 -!- GeekDude has joined.
12:29:22 <Lykaina> so
12:29:26 -!- FreeFull has joined.
12:30:50 <Lykaina> dreamed a got a legit call from microsoft about an account i hadn't used since high school
12:33:43 <b_jonas> eh no. if it's a call you got and they claim to be from microsoft, then it's a scam, and you shouldn't give them your personal details. even if they call you in your dreams. if this happens often, you'd better learn Occlumency to make sure you don't give away anything sensitive through a dream bridge.
12:34:09 <Lykaina> lol
12:34:55 <Lykaina> (wasn't a real rl account)
12:35:40 <Lykaina> so the dream sifters got garbage
12:35:45 <b_jonas> the call centers are in india, so they sometimes call you while you're asleep because of timezone differences
12:39:02 <b_jonas> when you get such a call, just hang up. it's not rude.
12:40:58 -!- xkapastel has quit (Quit: Connection closed for inactivity).
12:42:01 <b_jonas> we don't have those scams here yet, I only know about them from the internets, but we get our fair share of other creative scams
12:42:50 <Lykaina> i can't believe i used to play Go, don't even remember the rules, but i remember doing so with [a friend] in college in the coffee lounge at one of the tables.
12:43:51 <b_jonas> that's normal. you sometimes have to try things like that before you realize they're not for you.
12:44:55 <Lykaina> i only remember because i was trying to remember everything i could about [said friend].
12:45:09 <b_jonas> heck, I tried chess and bridge while I was younger, and even bouldering once. none of them are my ideas of a good time, and I know that now.
12:47:00 <Lykaina> you know who i'm talking about, right? It's someone here i don't feel like pinging atm.
12:49:37 <Lykaina> they were like my best friend in college. they know who they are.
12:51:00 <b_jonas> but then the go board game got between the two of you
12:51:22 <Lykaina> huh?
12:52:55 <Lykaina> i dropped out and moved away.
12:54:31 <Lykaina> they graduated and got a job. the only "job" i've ever held was volunteering stuffing envelopes at a political office.
12:56:32 <Lykaina> (i can't work now. technically disabled.)
12:59:50 <Lykaina> seems my pandora station loves "imagine dragons"
13:59:59 <Lykaina> b_jonas: have you seen the current "hello world" program, using the new S op?
14:08:32 <Lykaina> http://sif.lesidhetree.com/sara/echidna/echidna_v0_01a6.pdf if this makes it any easier
14:11:29 <esowiki> [[*]] M https://esolangs.org/w/index.php?diff=66021&oldid=65073 * Gamer * (+0) /* Javascript */
14:14:29 <esowiki> [[*]] https://esolangs.org/w/index.php?diff=66022&oldid=66021 * Gamer * (+263) /* Interpreters */
14:15:48 <esowiki> [[*]] https://esolangs.org/w/index.php?diff=66023&oldid=66022 * Gamer * (+28) /* Examples */
14:28:41 -!- xkapastel has joined.
14:28:42 <esowiki> [[+-]] https://esolangs.org/w/index.php?diff=66024&oldid=65875 * Gamer * (+234) /* Interpreters */
14:29:00 <esowiki> [[+-]] https://esolangs.org/w/index.php?diff=66025&oldid=66024 * Gamer * (+5) /* Python 3 */
14:29:49 <esowiki> [[+-]] https://esolangs.org/w/index.php?diff=66026&oldid=66025 * Gamer * (+245) /* Interpreters */
14:30:33 <esowiki> [[+-]] https://esolangs.org/w/index.php?diff=66027&oldid=66026 * Gamer * (+42) /* Python 3 */
14:36:21 <esowiki> [[+-]] https://esolangs.org/w/index.php?diff=66028&oldid=66027 * Gamer * (+2) /* Python 3 */
14:36:31 <esowiki> [[+-]] https://esolangs.org/w/index.php?diff=66029&oldid=66028 * Gamer * (+2) /* Python 3 */
14:37:19 <esowiki> [[+-]] https://esolangs.org/w/index.php?diff=66030&oldid=66029 * Gamer * (+342) /* Interpreters */
14:38:28 <esowiki> [[+-]] https://esolangs.org/w/index.php?diff=66031&oldid=66030 * Gamer * (+121) /* Interpreters */
14:38:57 <esowiki> [[+-]] https://esolangs.org/w/index.php?diff=66032&oldid=66031 * Gamer * (+2) /* Python 3 */
14:39:11 <esowiki> [[+-]] https://esolangs.org/w/index.php?diff=66033&oldid=66032 * Gamer * (-2) /* Python 3 */
14:45:17 -!- MrBismuth has joined.
14:48:09 -!- MrBusiness3 has quit (Ping timeout: 250 seconds).
14:51:35 -!- Phantom_Hoover has joined.
15:04:15 -!- Spexty has joined.
15:06:39 <Lykaina> hi Spexty
15:33:37 <Spexty> hi
15:35:47 <Lykaina> currently working on v0.01a7. G is currently null, K is what G used to be [STOP].
15:36:19 <Spexty> hmm why did you change that
15:36:21 <Spexty> do you need null?
15:36:30 <Spexty> or do you just want it
15:36:30 <Spexty> lol
15:36:33 <Lykaina> i need a placeholder
15:36:34 <int-e> hmm telegraphing changes
15:36:48 <Spexty> placeholder?
15:36:49 <Spexty> for what
15:36:52 <Spexty> idk if I follow
15:36:55 <Lykaina> unsure
15:37:04 <Spexty> why do you need a placeholder
15:37:22 <Lykaina> because i have an opening now
15:37:31 <Spexty> oh at G lol
15:37:57 <Lykaina> the K op didn't even work
15:38:03 <Lykaina> before
15:38:07 <Spexty> what was K
15:38:21 <Lykaina> http://sif.lesidhetree.com/sara/echidna/echidna_v0_01a6.pdf if this makes it any easier
15:38:30 <Spexty> probably does lol
15:40:11 <Lykaina> think i used the wrong git tag options for 0.01a6
15:41:39 <Spexty> does J output a number
15:41:54 <Lykaina> a char
15:41:57 <Spexty> oh
15:42:22 <Spexty> i mean maybe you could just make G output as number
15:42:27 <Spexty> unless you already have that and I just didn't see it
15:45:01 <Lykaina> so G would output the value as a formatted number?
15:45:28 <Lykaina> instead of as a char?
15:45:55 <Spexty> yeah
15:46:07 <Lykaina> i'll try it
15:46:07 <Spexty> like if the value is 100, J would output 'd' but G would output 100
15:50:23 <Lykaina> good idea
15:51:25 <Spexty> thx
15:51:46 <Spexty> it'd make printing numbers a lot easier
15:56:07 -!- Spexty has quit (Ping timeout: 260 seconds).
16:01:46 <Lykaina> done
16:01:53 <Lykaina> pushed
16:03:40 <Lykaina> https://github.com/lykaina/echidna
16:04:14 <Lykaina> i'll make the compiled documentation in a moment
16:31:57 <Lykaina> http://sif.lesidhetree.com/sara/echidna/echidna_v0_01a7.pdf
16:32:10 <kmc> good morning all
16:32:17 <b_jonas> hi kmc
16:32:40 <Lykaina> hi kmc
16:34:17 <kmc> what's new?
16:37:39 <Lykaina> was working on Echidna
16:38:49 <b_jonas> Lykaina: yeah, you have a flat memory space and indirect addressing, so you can easily write programs that use non-small arrays
16:39:06 <b_jonas> such as a maze generator or minesweeper or suchlike
16:39:24 <b_jonas> (although you could fit those into the 4 kiloword global address space of earlier versions too, to be frank)
16:40:21 <Lykaina> that was a stupid addressing system. now i leave it up to the programmer to determine one
16:41:36 <arseniiv> I think I have a case of the autumn sadness, already. Hopefully it’ll go away and won’t return ever
16:41:47 <Lykaina> anything standing out?
16:42:06 <Lykaina> as bad, i mean, compared to the rest?
16:42:21 <b_jonas> Lykaina: are you also planning to reorganize the interpreter so it doesn't seek once for every instruction executed, and once per program byte at every jump?
16:42:36 <b_jonas> nah, once per program byte at every subroutine call only
16:42:52 <b_jonas> no wait, it was five times per program byte at every subroutine call iirc
16:42:56 <b_jonas> anyway,
16:42:59 <Lykaina> 3 now
16:43:10 <b_jonas> are you planning to rearrange the code so it doesn't seek as much?
16:43:27 <Lykaina> i think i know what to do
16:44:17 <Lykaina> if it works, it might become v0.02
16:44:45 <Lykaina> it's v0.01a7 now
16:45:02 <arseniiv> there’s some vague magic in versions going up
16:47:13 <arseniiv> I want to do something but I don’t want to do any particular things coming to mind
16:48:59 <arseniiv> it probably means I underslept but I don’t feel other symptoms of that
16:50:10 <b_jonas> read a book
16:54:23 <arseniiv> b_jonas: I read a few chapters of a web serial already but you’right maybe I’ll find solace in watching a series about Clifford algebras, I’m stuck at the introductory part which I basically know (but there would be an overal plan of the lectures ahead at the end of this episode)
16:54:40 <arseniiv> s/you’right/you’re right
16:54:57 <arseniiv> see I’m even sloppy at that extent
16:56:12 <arseniiv> I’m lazy to put earphones on :(((
17:00:45 <int-e> who needs neighbours anyway
17:03:05 <arseniiv> I have no speakers currently :)
17:03:49 <arseniiv> so either I put them on or I don’t listen to anything. And I’m still not done
17:05:18 <Taneb> arseniiv: long shot, but are you in Cambridge?
17:05:24 <arseniiv> I have inferred all these things about planning with immediate rewards all the way to the goal of a plan but I just can’t
17:05:36 <arseniiv> Taneb: uh, no
17:05:39 <Taneb> OK
17:06:12 <Taneb> My plan of using you as an excuse to socialise has been foiled
17:06:18 <arseniiv> if I’d be there maybe I’d have a way better outlook on life :)
17:06:22 <arseniiv> oh
17:06:29 <Lykaina> b_jonas: look now
17:06:37 <Lykaina> i think i got it
17:10:08 <arseniiv> okay I’ll try not to whine here, this is a good place and I’m not that depressed if I admit it to myself. And yesterday it wasn’t that bad so tomorrow shouldn’t be either. Though my planning issues wouldn’t go anywhere
17:14:05 <Lykaina> can someome look at nextiw() and findand() in https://github.com/lykaina/echidna/blob/master/src/echidna.c and let me know if they make sense?
17:20:15 <Lykaina> i know it works, i just want to make sure it does it in a more effecient way
17:30:43 <Lykaina> am i getting a silent treatment?
17:38:41 <arseniiv> Lykaina: please don’t think so
17:39:12 <arseniiv> I bet b_jonas or someone is just busy right now
17:42:08 -!- MDude has joined.
17:42:34 <Lykaina> oh, okay. i'm a little impatient.
17:42:56 <Lykaina> it's a personality flaw
18:06:02 <zzo38> I was writing a survey software, and perhaps there should be some function to specify that a question does not apply according to some condition, such as the answer to a previous question.
18:19:05 <arseniiv> zzo38: you could start with a simple boolean tag system: some answer options are tagged and some questions are marked with prerequisite tags, maybe negations of tags and complex boolean formulas with tags
18:19:05 <arseniiv> for example Question 1 has Answer 1 tagged with A and Answer 2 tagged with A, B; Question 2 has Answer 1 tagged with B; there are no other tagged answers, and Question 3 has prerequisites A, B. Then it’s only viable when (Q1 A1, Q2 A1) or (Q1 A2) were picked
18:19:05 <arseniiv> or Question 4 has prerequisite !B, then it’s not viable when (Q1 A2) or (Q2 A1) were picked
18:20:23 <zzo38> Yes, that could be one way to do it
18:21:00 <arseniiv> (of course the survey creator would name their tags in more sensible manner in the survey’s code)
18:21:15 <arseniiv> zzo38: good luck!
18:27:22 -!- imode has joined.
19:09:12 -!- MDude has quit (Ping timeout: 245 seconds).
19:20:48 <b_jonas> Lykaina: that's certainly better than what you had, because findand reads the file in one pass without seeking, and nextiw reads the instructions that you are skipping in one pass.
19:22:21 <b_jonas> Lykaina: however, I think they don't keep the promise that whitespace is ignored, and in fact it looks as if nextiw tried to distinguish the __ from the _ statement by assuming that the __ doesn't have what looks like label right after it (it has whitespace) but the _ has the label immediately after
19:22:34 <b_jonas> so maybe you should skip whitespace when you're reading the file
19:24:14 <b_jonas> Lykaina: hoever, (1) the main loop that's reading instructions in sequence is still seeking before every instruction, and I think you could improve on that because it's supposed to be reading instructions in sequence usually (when there's no jump or subroutine call executed),
19:25:02 <b_jonas> Lykaina: and I still don't like how nextand works, because it has to read the whole file for every subroutine call. ideally it would be nicer if you read the file just once, preferably store all to memory, but at least just store the addresses and names of all subroutines to memory
19:25:12 <b_jonas> also I nominate zzo38 to look at the code
19:26:04 <b_jonas> zzo38: you want to be able to disable questions depending on answers to previous questions? that could work
19:26:56 <b_jonas> zzo38: don't forget to add calendar time subtraction primitive then, to skip questions for users who claim to be under a certain age
19:27:16 <b_jonas> you don't want people to try to write those themselves
19:41:44 <zzo38> Why won't Bugzilla let me put in my own value for the "csv_colsepchar" setting? I get a error message: The value "" is not in the list of legal values for the csv_colsepchar setting.
19:42:10 <zzo38> (The paste isn't working here; the value I put in is a tab, and this IRC client won't paste it.)
19:43:41 <b_jonas> is this for exporting?
19:43:43 -!- Sgeo__ has joined.
19:47:08 -!- Sgeo_ has quit (Ping timeout: 268 seconds).
19:54:47 <b_jonas> AAAAAAAAAAAAAAAAAAAAAA
19:55:20 <b_jonas> I bought the wrong non-refundable thing
19:55:22 <b_jonas> darn
19:55:36 <b_jonas> I noticed it too late
19:55:48 <b_jonas> so much wasted money
20:02:04 <b_jonas> let me see... maybe they can refund it if I request it early enough, there's something like that in the rules
20:02:32 * Lykaina wakes
20:03:04 <b_jonas> oh whew, I think it can be changed (for a fee)
20:03:18 <b_jonas> (a fee that doesn't cost nearly as much as throwing away the whole thing)
20:04:14 <b_jonas> they allow changes within 12 hours, luckily
20:08:25 -!- xkapastel has quit (Quit: Connection closed for inactivity).
20:09:21 <Lykaina> brb gotta eat lunch 4 hours late
20:12:12 -!- Melvar has quit (*.net *.split).
20:12:36 -!- Melvar has joined.
20:22:00 -!- imode has quit (Ping timeout: 258 seconds).
20:25:59 -!- Phantom_Hoover has quit (Ping timeout: 268 seconds).
20:32:20 <Lykaina> had a snack
20:37:42 <Lykaina> sounds like some{one,thing} fell next door
20:39:40 -!- Phantom_Hoover has joined.
20:47:13 <Lykaina> b_jonas: i agree with your suggestions, i just am unsure how to implement them.
20:47:47 <Lykaina> i'm not the best programmer
20:48:39 -!- Lord_of_Life_ has joined.
20:51:17 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
20:51:17 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
20:53:35 <Lykaina> b_jonas: should i load the program into the top 16k of memory, reserving it for that?
20:54:21 <Lykaina> or top 32k?
20:54:37 -!- unlimiter has joined.
20:54:59 <Lykaina> i *think* i can do that
21:01:18 -!- MDude has joined.
21:02:52 <Lykaina> also, my idea could allow for self-modifying code
21:25:50 <b_jonas> Lykaina: no, load the program into an area separate from the data memory
21:31:02 <Lykaina> oh...
21:36:14 -!- unlimiter has quit (Quit: WeeChat 2.5).
21:38:53 <zzo38> Now I fixed my JSON in PostScript so that there is a option to convert \u escapes into UTF-8 (you can also tell it to just use the low 8-bits of each codepoint instead).
21:41:08 <b_jonas> zzo38: can the JSON writer write such escapes from utf-8 strings?
21:43:06 <zzo38> b_jonas: No; I have not implemented the ability to decode UTF-8. Any byte that is not a control character or " or \ will be written unescaped. (Maybe a later version could fix that)
21:43:50 <b_jonas> oh. does that round-trip back to postscript with your JSON reader?
21:44:33 <b_jonas> it may be better to decode though, to avoid writing invalid utf, since the JSON reader on the opposite end may reject it
21:44:46 <zzo38> It will still work with the reader; if it contains any bytes with the high bit set they will just be read in unchanged (regardless of the UTF-8 setting).
21:44:55 <b_jonas> evevn if you don't escape valid utf-8 that isn't special in JSO
22:01:06 <b_jonas> ooh! fun weather prediction for tuesday
22:06:32 <b_jonas> also nice weather now
22:06:52 -!- Phantom_Hoover has quit (Ping timeout: 246 seconds).
22:14:34 -!- Phantom_Hoover has joined.
22:33:03 <Lykaina> i loaded it to memory and now it doesn't work right...
22:53:04 -!- Phantom_Hoover has quit (Quit: Leaving).
22:53:59 <esowiki> [[Keg]] https://esolangs.org/w/index.php?diff=66034&oldid=65471 * JonoCode9374 * (-234)
22:59:30 <esowiki> [[Keg]] https://esolangs.org/w/index.php?diff=66035&oldid=66034 * JonoCode9374 * (+167) /* User Defined Functions */
22:59:40 <Lykaina> grrr...
23:00:18 <b_jonas> ?
23:01:28 -!- arseniiv has quit (Ping timeout: 246 seconds).
23:03:57 <Lykaina> i made a version where i load the file into memory beforehand
23:04:10 <Lykaina> it doesn't work
23:04:33 <Lykaina> (yet)
23:04:43 <Lykaina> i don't know what's wrong
23:08:01 <Lykaina> http://sif.lesidhetree.com/sara/echidna/code/
23:20:50 <Lykaina> not putting broken code on the repo
23:35:48 -!- sftp_ has joined.
23:37:41 -!- sftp has quit (Ping timeout: 250 seconds).
23:37:41 -!- sftp_ has changed nick to sftp.
2019-09-09
00:11:01 -!- FreeFull has quit.
00:12:00 <Lykaina> i may have to change how N - Q work. i think the problem is in those and related code.
00:12:23 <Lykaina> (subs and if/while loops)
00:32:14 -!- tromp_ has quit (Remote host closed the connection).
01:04:11 -!- tromp has joined.
01:04:44 -!- emma has left.
01:08:41 -!- tromp has quit (Ping timeout: 250 seconds).
01:16:43 <esowiki> [[Encapsulation]] N https://esolangs.org/w/index.php?oldid=66036 * Hakerh400 * (+6045) New language
01:17:00 <esowiki> [[User:Hakerh400]] https://esolangs.org/w/index.php?diff=66037&oldid=65956 * Hakerh400 * (+20) /* Programming languages we created */
01:17:48 <esowiki> [[Language list]] https://esolangs.org/w/index.php?diff=66038&oldid=65978 * Hakerh400 * (+20) Add new language
01:20:36 <esowiki> [[Encapsulation]] M https://esolangs.org/w/index.php?diff=66039&oldid=66036 * Hakerh400 * (+62) /* Details */
01:38:33 <Lykaina> b_jonas: got it!
01:38:51 <Lykaina> except i had to change the lang a little
01:39:12 <Lykaina> and while loops aren't working perfect
01:51:24 <Lykaina> on the repo as version 0.02
01:52:57 -!- tromp has joined.
01:57:25 -!- tromp has quit (Ping timeout: 252 seconds).
02:19:28 <Lykaina> How clear is http://sif.lesidhetree.com/sara/echidna/echidna_v0_02.pdf ?
02:24:05 -!- tromp has joined.
02:27:18 <Lykaina> might have to split if/while into if and loop
02:27:49 <Lykaina> have 3 ifs, 1 loop
02:28:14 <Lykaina> the problems with while are annoying me
02:28:35 -!- tromp has quit (Ping timeout: 252 seconds).
02:29:39 <Lykaina> i had to put a note in the doc saying that while loops don't work properly
02:29:47 <Lykaina> that's how bad
02:33:33 <Lykaina> it reads: "while" loops do not work right (bug), use an extra "if" at end.
02:39:00 <Lykaina> does anyone care?
02:40:39 <Cale> `pbflist
02:40:40 <HackEso> pbflist: shachaf Sgeo quintopia ion b_jonas Cale
02:41:36 <Lykaina> huh?
02:41:47 <Cale> https://pbfcomics.com/comics/cranky-baby/
02:42:14 <Lykaina> remember when 192KiB was a lot?
02:44:22 <Lykaina> (of RAM)
02:48:05 <Cale> Vaguely, but I only really got started computing on a machine with 2MB of RAM.
03:00:01 -!- Taneb has quit (Quit: I seem to have stopped.).
03:01:43 -!- Taneb has joined.
03:01:55 <Lykaina> wb Taneb
03:45:01 -!- adu has joined.
04:47:51 -!- tromp has joined.
04:52:17 -!- tromp has quit (Ping timeout: 250 seconds).
05:29:32 <kmc> new pbf?
05:30:06 <kmc> huh, is pbf updating regularly again?
05:31:04 <kmc> <3 <3 <3 https://pbfcomics.com/comics/command-respect/ <3 <3 <3
05:31:30 <Sgeo__> It's been updating irregularly for a while
05:32:49 <Sgeo__> Unless it's regular and I haven't noticed. I'm not sure the exact dates it's updated
05:33:36 <kmc> okay
05:41:02 <shachaf> kmc: pigeon appreciation day
05:42:41 <kmc> which day is that
05:42:46 <shachaf> every day
05:42:50 <pikhq_> Nah, it's officially updating very irregularly.
05:42:54 <kmc> june 13?
05:42:56 <kmc> ok
05:43:41 <shachaf> also june 13
05:43:49 <shachaf> did you see the picture i sent you with all the pigeons
05:44:12 <shachaf> there were so many and they were all flying toward the food-or-something on the road
05:44:15 <shachaf> it was tg
05:44:40 <kmc> i'm not sure
05:45:29 <shachaf> you sent me a heart so you probably saw it
05:45:32 <shachaf>
05:46:15 <kmc> k
05:46:23 <kmc> heavy black heart
05:47:06 <shachaf> `quote very heavy
05:47:07 <HackEso> 1333) <shachaf> `unidecode ⧸🙼 <HackEso> ​[U+29F8 BIG SOLIDUS] [U+1F67C VERY HEAVY SOLIDUS] <shachaf> it is with a very heavy solidus that i write to inform you that unicode has too many code points
05:47:27 <shachaf> maybe that should just say heavy black heart
05:47:39 <shachaf> whoa
05:47:46 <shachaf> that solidus didn't show up in mosh
05:47:49 <shachaf> but it's really heavy
05:51:28 <kmc> the heavier the solidus the greater the sense of dread
06:03:23 <kmc> shachaf: did you know that js console.log supports styling the log text?
06:03:25 <kmc> console.log('%cscow', 'font-size: 80px; color: red');
06:06:18 <shachaf> I think I heard about that.
06:06:29 <shachaf> I think I decided that the less I have to deal with JavaScript the better?
06:08:30 <zzo38> At least in HTML it does. Node.js also has a console.log function but it works a bit differently. However, it is portable if you only pass a single argument, which is a string. Then it will work with both Node.js and HTML.
06:14:17 <kmc> zzo38: true
06:17:04 <shachaf> what language should i program in
06:21:15 <zzo38> Depend what program you are going to write, I think.
06:22:33 -!- tromp has joined.
06:23:32 -!- tromp has quit (Read error: Connection reset by peer).
06:23:52 -!- tromp has joined.
06:28:23 -!- tromp has quit (Ping timeout: 252 seconds).
06:33:25 <zzo38> You can learn many different programming languages
06:33:35 <b_jonas> kmc: pbf never stopped updating
06:50:57 -!- tromp has joined.
07:19:26 -!- sebbu2 has joined.
07:23:21 -!- sebbu has quit (Ping timeout: 268 seconds).
07:23:28 -!- b_jonas has quit (Remote host closed the connection).
08:01:18 -!- tromp has quit (Remote host closed the connection).
08:04:28 -!- tromp has joined.
08:08:54 -!- adu has quit (Quit: adu).
08:23:39 -!- wob_jonas has joined.
08:27:03 -!- tromp_ has joined.
08:27:04 -!- tromp has quit (Read error: Connection reset by peer).
08:39:48 -!- cpressey has joined.
08:41:55 -!- Sgeo has joined.
08:43:04 <cpressey> Good morning. I guess the Prompt monad's not so strange after all. Of course, I say this after only reading & thinking about it, not really playing with it.
08:44:20 <shachaf> Uh oh.
08:44:28 <shachaf> I want to know about Prompt monads but I also want to go to sleep.
08:44:31 -!- Sgeo__ has quit (Ping timeout: 258 seconds).
08:44:35 <shachaf> I think I'll try sleep.
08:45:10 <cpressey> Good night shachaf !
08:45:18 -!- tromp_ has quit (Remote host closed the connection).
08:51:32 -!- Lord_of_Life has quit (Ping timeout: 268 seconds).
08:52:12 -!- Lord_of_Life has joined.
08:58:24 -!- tromp has joined.
09:00:50 -!- arseniiv has joined.
09:35:12 -!- craigo has joined.
09:44:15 <rain1> what do you thin about the prompt monad
09:55:28 <esowiki> [[Von Neumann's 29-state cellular automaton]] https://esolangs.org/w/index.php?diff=66040&oldid=57226 * B jonas * (+158) Neumann's article
09:59:00 <cpressey> rain1: Well, on the practical side of things, it looks like a good way to do "dependency injection" with monads.
09:59:14 <rain1> The term dependency injection scares me
09:59:29 <wob_jonas> fear of needles?
10:19:58 <Lykaina> hi
10:28:18 <rain1> hi Lykaina
10:33:52 -!- Sgeo_ has joined.
10:37:07 -!- Sgeo has quit (Ping timeout: 245 seconds).
11:10:55 -!- Sgeo__ has joined.
11:14:36 -!- Sgeo_ has quit (Ping timeout: 268 seconds).
11:30:22 -!- Sgeo_ has joined.
11:33:34 -!- Sgeo__ has quit (Ping timeout: 258 seconds).
11:38:02 -!- craigo has quit (Ping timeout: 268 seconds).
11:48:37 <esowiki> [[Special:Log/newusers]] create * Spleeshmicannon * New user account
11:57:17 <esowiki> [[Esolang:Introduce yourself]] M https://esolangs.org/w/index.php?diff=66041&oldid=65976 * Spleeshmicannon * (+276) Added myself to the list
12:20:58 -!- sebbu2 has changed nick to sebbu.
12:27:49 * Lykaina forces herself awake.
13:01:21 <esowiki> [[Echidna]] https://esolangs.org/w/index.php?diff=66042&oldid=66016 * B jonas * (+67)
13:23:30 <Lykaina> wob_jonas: thanks :)
13:24:28 <Lykaina> working on splitting source files to make it easier to track changes
13:25:08 <Lykaina> haven't pushed it yet
13:27:19 <wob_jonas> Lykaina: good. have you published the version of the interpreter that reads the program into memory yet?
13:28:38 <Lykaina> yes, i pushed it
13:30:06 <Lykaina> gave it a max of 64KiB (not including whitespace)
13:35:51 <wob_jonas> `olist 1179
13:35:53 <HackEso> olist 1179: shachaf oerjan Sgeo FireFly boily nortti b_jonas
13:59:09 <Lykaina> wob_jonas: split version pushed
14:04:13 <Lykaina> brb
14:19:49 <Lykaina> back
14:23:12 <Lykaina> hi wob_jonas
14:36:14 <esowiki> [[User:Dtuser1337/Sandbox]] https://esolangs.org/w/index.php?diff=66043&oldid=65945 * Dtuser1337 * (+1) /* Beginning of the Sandbox line */
14:39:02 -!- xkapastel has joined.
14:52:57 -!- Sgeo__ has joined.
14:54:38 <Lykaina> hi Sgeo__
14:55:52 -!- Sgeo_ has quit (Ping timeout: 245 seconds).
14:59:35 <Lykaina> wob_jonas: "short"ened the mem[] in the interpreter.
14:59:50 <Lykaina> to save memory
15:02:13 <Lykaina> it's supposed to be 2-byte, why not force it?
15:05:17 <wob_jonas> Lykania: good
15:05:23 -!- wob_jonas has quit (Remote host closed the connection).
15:07:24 <Lykaina> gtg wake up
15:07:57 -!- Lykaina has quit (Quit: leaving).
15:10:52 <esowiki> [[Espro]] M https://esolangs.org/w/index.php?diff=66044&oldid=44540 * Timwi * (+4) gramatiko?
15:19:52 -!- Sgeo_ has joined.
15:22:34 -!- Sgeo has joined.
15:22:57 -!- Sgeo__ has quit (Ping timeout: 245 seconds).
15:25:35 -!- Sgeo_ has quit (Ping timeout: 268 seconds).
15:25:46 <esowiki> [[Espro]] M https://esolangs.org/w/index.php?diff=66045&oldid=66044 * Timwi * (+8) /* Examples / Ekzemploj */
15:42:25 <esowiki> [[Espro]] M https://esolangs.org/w/index.php?diff=66046&oldid=66045 * Timwi * (+7) /* Expressions / Esprimoj */
15:43:51 <zzo38> What is a prompt monad? What is its definition? (If I knew before, and I don't know if I have, I have forgotten now anyways)
15:49:02 <cpressey> zzo38: https://hackage.haskell.org/package/MonadPrompt-1.0.0.5/docs/Control-Monad-Prompt.html
15:49:19 <cpressey> It's sort of a "configurable monad"
15:50:23 <int-e> The modern explanation would cast it as a flavour of the free monad.
15:52:23 -!- Sgeo_ has joined.
15:55:35 -!- Sgeo has quit (Ping timeout: 244 seconds).
15:57:10 <cpressey> int-e: It seems like a useful flavour, whereas "free monad" seems general enough to be (a) hard for me to fully appreciate and (b) not obviously a useful thing for me to employ in my code
15:58:40 <cpressey> I don't remember noq exactly how I came across Prompt, anyway.
15:58:45 <cpressey> *now
16:00:50 -!- Sgeo__ has joined.
16:02:56 <int-e> cpressey: yeah the connection to free monads uses a fairly odd functor: http://paste.debian.net/1099707/
16:03:22 -!- Sgeo_ has quit (Ping timeout: 245 seconds).
16:03:22 <int-e> cpressey: Also, the explanation is ahistorical; the prompt monad predates the free monad fad by a year or so.
16:06:44 <int-e> cpressey: And personally I like the Prompt flabor a lot better than the free monad, because it expresses a familiar programming model: Define an interface for a DSL in terms of commands (with result types), and then handle each command in a handler (or several handlers).
16:08:15 <int-e> This was all Ryan's work though. My contribution was the codensity transformation (that's an ahistorical explanation again).
16:08:52 <zzo38> Do you like my CodensityAsk monad? (I think the name isn't very good, but I couldn't think of a better name)
16:27:42 <cpressey> zzo38: I haven't seen it. Also, the Wikipedia entry on "codensity monad" is scary.
16:28:52 <zzo38> newtype Codensity f a = Codensity (forall r. (a -> f r) -> f r);
16:30:02 <zzo38> Sorry, that is not it. CodensityAsk is: forall r. f r -> (a -> r) -> r
16:30:12 <zzo38> So, it is a bit similar
16:33:20 <zzo38> newtype CodensityAsk w x = CodensityAsk { runCodensityAsk :: forall z. w z -> (x -> z) -> z }; also Monad (CodensityAsk w) and Comonad w => MonadPlus (CodensityAsk w)
16:38:58 <cpressey> zzo38: I might let you know, in a few days.
16:40:32 <cpressey> I think I found Prompt via the operational package. I want to play with that a bit first.
16:43:02 <cpressey> int-e: btw, thanks for updating the solitaire game! You certainly didn't need to, but, I can confirm I'm able to build and run it now :)
16:45:39 -!- FreeFull has joined.
16:56:23 -!- cpressey has quit (Quit: A la prochaine.).
16:56:40 -!- Hooloovo0 has quit (Quit: Temporarily refracted into a free-standing prism.).
16:58:04 -!- Hooloovo0 has joined.
16:59:57 -!- b_jonas has joined.
17:14:07 <b_jonas> see? another match. http://www.smbc-comics.com/comic/pocket https://xkcd.com/2130/
17:15:14 <b_jonas> they're totally copying each other often
17:21:37 -!- xkapastel has quit (Quit: Connection closed for inactivity).
17:39:21 <b_jonas> ``` for x in 30 35 40; do ftoc $x; done
17:39:22 <HackEso> 30.00°F = -1.11°C \ 35.00°F = 1.67°C \ 40.00°F = 4.44°C
18:03:32 <arseniiv> ftoc 0
18:03:38 <arseniiv> `ftoc 0
18:03:39 <HackEso> 0.00°F = -17.78°C
18:04:04 <arseniiv> I still can’t wrap my head over that scale
18:05:13 <shachaf> it makes no sense hth
18:05:52 <shachaf> zzo38: I like your CodensityAsk monad.
18:09:16 <b_jonas> me neither, which is why I use this calculator
18:14:16 -!- craigo has joined.
19:22:00 -!- diverger has quit (Ping timeout: 258 seconds).
19:23:42 -!- diverger has joined.
19:42:14 -!- Melvar has quit (Quit: WeeChat 2.4).
19:48:26 -!- Melvar has joined.
20:21:21 -!- ArthurStrong has joined.
20:29:07 <b_jonas> Lykania: again, do not define global variables in a header file that you #include into multiple source files. especially not non-constant globals.
20:37:12 -!- imode has joined.
20:43:03 -!- orbitaldecay has joined.
20:48:00 -!- Phantom_Hoover has joined.
20:49:40 -!- Lord_of_Life_ has joined.
20:52:02 <esowiki> [[Aepoch]] N https://esolangs.org/w/index.php?oldid=66047 * Areallycoolusername * (+1026) Created page with "'''Aepoch'''is a [[Bully Automation]] made by [[User: Areallycoolusername|Areallycoolusername]]. It has some properties added to resemble the properties of a fractal. == Spec..."
20:52:13 -!- Lord_of_Life has quit (Ping timeout: 246 seconds).
20:52:35 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
20:53:53 <esowiki> [[Aepoch]] https://esolangs.org/w/index.php?diff=66048&oldid=66047 * Areallycoolusername * (+1)
20:54:11 <esowiki> [[Aepoch]] https://esolangs.org/w/index.php?diff=66049&oldid=66048 * Areallycoolusername * (-1)
20:57:37 <esowiki> [[Aepoch]] https://esolangs.org/w/index.php?diff=66050&oldid=66049 * Areallycoolusername * (+50)
20:58:48 <esowiki> [[Aepoch]] https://esolangs.org/w/index.php?diff=66051&oldid=66050 * Areallycoolusername * (+0)
20:59:34 <esowiki> [[User:Areallycoolusername]] https://esolangs.org/w/index.php?diff=66052&oldid=65378 * Areallycoolusername * (+13)
21:00:56 <esowiki> [[Language list]] https://esolangs.org/w/index.php?diff=66053&oldid=66038 * Areallycoolusername * (+13) /* A */
21:03:02 -!- ArthurStrong has quit (Quit: leaving).
21:21:04 -!- dingwat has quit (Quit: Connection closed for inactivity).
21:31:22 -!- Sgeo_ has joined.
21:34:34 -!- Sgeo__ has quit (Ping timeout: 246 seconds).
21:38:59 -!- tromp has quit (Remote host closed the connection).
21:40:43 -!- tromp has joined.
21:45:04 -!- imode has quit (Ping timeout: 246 seconds).
22:32:57 -!- FreeFull has quit.
22:37:25 -!- tromp has quit (Remote host closed the connection).
22:38:02 <esowiki> [[Special:Log/newusers]] create * Lrsomas * New user account
23:01:48 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
23:02:42 -!- Phantom_Hoover has joined.
23:08:41 -!- tromp has joined.
23:10:38 -!- b_jonas has quit (Quit: Lost terminal).
23:13:05 -!- tromp has quit (Ping timeout: 246 seconds).
23:14:45 -!- orbitaldecay has quit (Remote host closed the connection).
23:21:38 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
23:22:58 -!- arseniiv has quit (Ping timeout: 245 seconds).
23:23:54 -!- xkapastel has joined.
23:33:47 -!- imode has joined.
2019-09-10
00:26:58 -!- Sgeo_ has quit (Read error: Connection reset by peer).
00:27:21 -!- Sgeo_ has joined.
00:55:33 -!- Lykaina has joined.
00:59:00 <Lykaina> b_jonas: i don't know any other way
01:04:17 -!- ARCUN has joined.
01:05:49 <ARCUN> By definition, a bully automaton is just an extension of a cellular automata
01:06:12 <ARCUN> So would ALPACA still be viable to implement a bully automaton?
01:07:09 <Lykaina> 20:29:07 <b_jonas> Lykania: again, do not define global variables in a header file that you #include into multiple source files. especially not non-constant globals.
01:08:16 <Lykaina> any idea where else i should declare global variables?
01:08:32 <Lykaina> and define
01:09:14 <Lykaina> and what's the difference (in C) between declaring and defining?
01:10:56 <fizzie> A /definition/ of an identifier is a declaration for that identifier that: for an object, causes storage to be reserved for that object; --
01:11:29 <fizzie> Typically you'll have a declaration that's not a definition (such as `extern int x;`) in a .h file, and a corresponding definition (`int x = 123;`) in exactly one .c file.
01:11:54 <Lykaina> why shouldn't they go in headers?
01:12:22 <Lykaina> oh
01:12:29 <fizzie> Because if you have it in a header file, chances are that header file is going to be included in more than one translation unit, and then you end up with more than one definition for the same object, which is generally illegal.
01:12:33 <fizzie> (With some subtlety.)
01:12:49 <Lykaina> b_jonas wasn't beclear enough
01:13:00 <fizzie> http://ix.io/1Mys (from the C99 rationale) explains it better than I could.
01:13:58 <fizzie> ...well, "better" is subjective. But definitely in more detail.
01:14:35 <fizzie> In particular, it goes into the detail of what the standard model is, and what happens in practice on many implementations.
01:15:43 <ARCUN> C looks so simple from the outside, yet it's actually quite complex
01:16:46 -!- pikhq has joined.
01:17:09 <ARCUN> Its subjective, but C++ just looks more natural to learn for me
01:17:36 <ARCUN> Which is weird, since my first language was C#
01:17:38 <fizzie> I guess it has at least the benefit of nobody accidentally thinking it's simple.
01:18:30 -!- pikhq_ has quit (Ping timeout: 258 seconds).
01:21:38 -!- ARCUN has quit (Remote host closed the connection).
01:22:56 -!- ARCUN has joined.
01:23:17 <Lykaina> fizzie: can you look at the echidna repo and find the problem b_jonas is complaining about?
01:23:42 <Lykaina> i mean, it's location
01:23:43 <ARCUN> So, again, is ALPACA viable for the implementation of bully automaton?
01:25:01 <fizzie> Lykaina: I assume they might've been talking about globals.h, and/or argnums.h.
01:28:30 <fizzie> A declaration of the form of `unsigned long progindex;` is what's called a /tentative definition/, which (if a translation unit has no actual definition) is treated as if there was a definition like `unsigned long progindex = 0;` in the translation unit. So if globals.h is included in, say, cmds.c and main.c, both will have a definition for it, which is not strictly conforming C.
01:29:33 <fizzie> Assuming they end up in the same program, anyway.
01:31:24 <fizzie> ("If an identifier declared with external linkage is used in an expression (other than [unrelated exception]), somewhere in the entire program there shall be exactly one external definition for the identifier; otherwise, there shall be no more than one.")
01:34:03 <fizzie> Many implementations are in practice more relaxed than that and allow multiple definitions esp. as long as they don't have an initializer, but that's just a common extension and not guaranteed by the standard.
01:36:51 <fizzie> A strictly conforming program could, for example, have a globals.h with `extern unsigned long progindex;`, and then either in a dedicated globals.c, or in some other one .c file where it makes sense, include an `unsigned long progindex;` to provide the "exactly one" definition required for it.
01:37:34 <fizzie> (A lot of people would prefer to avoid global state entirely, but that's more of a design question than a correctness question.)
01:38:09 <Lykaina> look now
01:38:30 <Lykaina> i just pushed what i think is a fix
01:39:17 <fizzie> I don't have any complaints about that one, at least on a quick glance.
01:39:31 <Lykaina> so it's better?
01:39:45 <fizzie> Yes, assuming I've interpreted b_jonas's criticism right.
01:39:52 <fizzie> Except that it's exceedingly strange to put header guards *outside* the header files.
01:40:38 <Lykaina> oops
01:40:44 <Lykaina> i'll fix that
01:41:28 <fizzie> Also, it's safe to include standard headers like <stdio.h> multiple times. It doesn't hurt to guard against that, but you don't need to unless you want to.
01:41:58 <fizzie> ("Standard headers may be included in any order; each may be included more than once in a given scope, with no effect different from being included only once, except [a niche thing].")
01:44:37 <Lykaina> pushed
01:47:00 <fizzie> Well, I mean... normally you'd have #ifndef H_DEFINES #define H_DEFINES as the first two lines of defines.h itself, and an #endif as the last line. That way all the different places where it's included won't need to (a) remember to wrap the #include in a #infdef-#define-#endif sequence, and (b) coordinate what the name used for the header guard is.
01:48:15 <Lykaina> oh
01:49:21 <fizzie> Of course from the compiler's perspective there's no difference whether those are inside the .h file or around the #include statement, it just treats the whole thing as a sequence of lines. It's just a convenience thing.
01:49:27 <Lykaina> do i need to have the license in every file or just in the LICENSE file?
01:50:49 <kmc> #pragma once
01:50:49 <kmc> !
01:51:11 <fizzie> I'm not qualified to give legal advice, and I've seen both done.
01:51:11 <Lykaina> what's that?
01:51:19 <fizzie> It's another nonstandard extension.
01:52:12 <Lykaina> kmc: what are you asking me to change?
01:52:55 <kmc> no
01:52:58 <kmc> i was just saying
01:53:06 <kmc> that you can use #pragma once instead of include guards
01:53:16 <kmc> if all the compilers you want to use support it
01:53:22 -!- MDude has quit (Ping timeout: 245 seconds).
01:53:22 <kmc> it's faster and less error-prone
01:53:37 <fizzie> I wouldn't. But it's true, you definitely can.
01:53:48 <kmc> faster because, as soon as a header has been seen to have #pragma once, the compiler will not even bother reading it again
01:54:06 <kmc> although I think these days compilers also detect include guards and treat them similarly
01:58:43 -!- ARCUN has quit (Ping timeout: 260 seconds).
01:58:46 <j4cbo> aiui what kmc said
01:59:14 <j4cbo> the main advantage of #pragma once is not having to pick an include guard format
01:59:45 <kmc> I have actually had issues with include guard name collisions once or twice
02:03:01 <fizzie> Regarding the performance question, https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58770
02:05:12 <fizzie> As for the correctness question, I understand a number of implementations have had issues determining what exactly is the same file, given symlinks and all that.
02:07:23 <fizzie> Although you can very reasonably say that you've got bigger problems if, in a single build operation, the same header file is reached via two unrelated paths.
02:08:14 <kmc> it probably happens
02:10:00 <Lykaina> pushed
02:10:15 <Lykaina> fizzie's advice
02:14:02 -!- imode has quit (Ping timeout: 246 seconds).
02:16:52 <fizzie> Should probably have a look at what this language is all about in the first place. Does it have anything to do with the spiky mammals or is that just a name?
02:17:02 <Lykaina> name
02:19:22 <fizzie> Aw. They're pretty cute.
02:19:33 <Lykaina> fizzie: http://sif.lesidhetree.com/sara/echidna/echidna_v0_02a2.pdf
02:22:07 <esowiki> [[NotBrainFuck]] N https://esolangs.org/w/index.php?oldid=66054 * Spleeshmicannon * (+1325) Created page with "'''NotBrainFuck''' (or not brainfuck) is an extension of brainfuck by Jack Benson ([[User:Spleeshmicannon|Spleeshmicannon]]). It adds 8 new symbols to make it easier for begin..."
02:26:44 -!- xkapastel has quit (Quit: Connection closed for inactivity).
02:34:30 <Lykaina> fizzie: Echidna was originally designed to be run on an Arduino, but memory requirements eventually made this unfeasable, with the Arduino version being shelved.
02:35:26 <Lykaina> I then modified the PC version to use far more memory.
02:36:57 <Lykaina> eventually, i figured out how to load the file into ram and run the program from there
02:37:50 <Lykaina> there are 20 Ops, from G - Z
02:39:24 <Lykaina> the interpreter has problems with the if/while loops on while mode that i am unsure how to debug
02:42:31 <Lykaina> at the moment, i feel it's lacking in ops, and i think i can be willing to have ops 0-9 and A-F if needed (i wanted to not use those)
02:44:15 <Lykaina> any questions?
02:48:03 <fizzie> Not at this point, because I have to sleep instead. But I like the L operation, it kind of reminds me of INTERCAL's "select" operator.
02:48:42 <Lykaina> Finally! Someone who likes L!
02:57:08 <Lykaina> kmc: even though it doesn't have "pragma", how do you feel about Echidna?
02:57:41 <Lykaina> (not sure if you are still active)
02:58:52 <kmc> i don't know anything about echidna
02:59:21 <Hooloovo0> wait what does arg1<=1 do in L?
02:59:25 <Lykaina> read whan i told fuzzie
02:59:44 <Hooloovo0> http://sif.lesidhetree.com/sara/echidna/echidna_v0_02a2.pdf took me a while to find it
02:59:56 <Hooloovo0> might want to put that on the esolang wiki or the github
03:00:31 <Hooloovo0> (was just in scrollback but /me never reads that far
03:01:39 <Hooloovo0> oh <<=
03:40:13 -!- imode has joined.
04:06:56 -!- tromp has joined.
04:11:18 -!- tromp has quit (Ping timeout: 246 seconds).
04:14:20 -!- ais523 has joined.
04:15:03 <ais523> <Lykaina> do i need to have the license in every file or just in the LICENSE file? ← I don't know whether or not it's legally necessary to put the license in every file, but a) it doesn't hurt and b) there are a lot of good practical reasons to do it that way
04:15:27 <ais523> if you're using a license written professionally, it'll normally have an appendix giving approved wording to place in every file (which is shorter than the license itself)
04:37:17 -!- ais523 has quit (Quit: quit).
05:15:09 -!- MDude has joined.
05:54:54 -!- tromp has joined.
05:59:38 -!- tromp has quit (Ping timeout: 276 seconds).
06:31:56 -!- tromp has joined.
07:43:15 -!- Frater_EST has joined.
08:00:47 -!- cpressey has joined.
08:08:50 -!- imode has quit (Ping timeout: 240 seconds).
08:15:31 -!- Phantom_Hoover has joined.
08:40:52 -!- grumble has quit (Ping timeout: 622 seconds).
08:42:05 -!- wob_jonas has joined.
08:43:16 <wob_jonas> Lykiana: https://esolangs.org/logs/2019-09-07.html#lrh
08:43:31 <wob_jonas> about global variables
08:44:08 <shachaf> `5 w
08:44:14 <HackEso> 1/1:mother//A mother is a person who practices mothology. \ dc//dc is short for "dump core". (try it out yourself: dc -e '[') \ wat//ኢትዮጵያ ውስጥ የሚሰራ የምግብ አይነት ሲሆን፣ የሚሰራውም ከጤፍ ነው። \ atwp//According to Wikipedia, ATWP means "Air Transport White Paper". \ mussel//Mussels are boily's natural enemies. Fortunately he runs faster than them.
08:44:34 <wob_jonas> Lykaina: ^
08:44:47 <myname> i agree on wat
08:45:15 <wob_jonas> iirc globals.h was included to two C source files
08:48:09 <shachaf> I should figure out a way to make global variables work across .so reloads.
08:52:08 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
08:53:21 <wob_jonas> ais523: whether there's a separate long license and you only include a short text and reference to it, or whether there's a short license that you include in full, also seems to be a matter of taste between licenses.
08:54:52 -!- Lord_of_Life has joined.
08:54:58 -!- tromp has quit (Remote host closed the connection).
08:55:51 <wob_jonas> The X11 license, most BSD-like licenses, and the boost license are short enough, and at least the FAQ https://www.boost.org/users/license.html considers this an advantage. I personally don't like the boost license though because it doesn't mention a time limit or geograhpical area (eg. "worldwide perpetual").
08:58:17 <wob_jonas> Whereas the apache license, which is pretty similar to the boost license, is too long to embed into every source file, so for that, they use just a short version with reference in source files.
08:59:07 <wob_jonas> In effect, the short licenses don't tend to work, because many project derive parts from code with various other licenses, so they have to include a separate notice anyway to tell which part comes with what license.
08:59:38 <myname> the wtfpl works
09:00:37 <wob_jonas> This is especially typical for big amalgam projects like ffmpeg and mplayer, each of which embed like a hundred codecs and a large part of each other (it's a miracle that they haven't yet blown up exponentially by recursively embedding each other).
09:02:58 <wob_jonas> Similarly the creative commons licenses are also too long to embed.
09:06:02 <cpressey> The MIT license requires that you include it, so all the projects that have only a one-line statement to the effect of "License: MIT" aren't actually under the MIT license.
09:06:20 <cpressey> And y'know what? This matters almost not at all
09:08:49 <wob_jonas> cpressey: sure, even the short disclaimers are always at least a few lines long, except for the ones that are equivalent to the WTFPL, such as the sqlite non-license.
09:10:09 <cpressey> I like the irony though.
09:10:11 <wob_jonas> The short form reference to the apache license is 15 lines long
09:12:49 <shachaf> cpresseyllo
09:12:58 <shachaf> What's the Prompt thing you were talking about the other day?
09:13:50 <wob_jonas> But that's still shorter than the 24 long line boost license
09:14:15 <cpressey> shachaf: https://hackage.haskell.org/package/MonadPrompt-1.0.0.5/docs/Control-Monad-Prompt.html
09:14:31 <cpressey> cpressey: It's not related to delimited continuations
09:14:43 * cpressey frowns
09:15:05 <cpressey> shachaf: It's not related to delimited continuations
09:15:47 <cpressey> Perhaps I should say, it's not *obviously* related to delimited continuations
09:18:00 <shachaf> Oh, that thing.
09:19:34 <shachaf> It's "just" the free monad, right?
09:19:42 <shachaf> Or the free monad of Coyoneda of f.
09:20:35 <cpressey> shachaf: <int-e> cpressey: yeah the connection to free monads uses a fairly odd functor: http://paste.debian.net/1099707/
09:21:58 <cpressey> (maybe you can make more sense of that than I can)
09:25:21 <shachaf> Yes, that functor is sometimes called Coyoneda.
09:25:30 <shachaf> It's the free functor on a type constructor, if that means something to you.
09:25:44 <cpressey> Not really, sorry
09:26:33 <shachaf> OK. It's not that useful a statement anyway.
09:27:05 <shachaf> If my computer wasn't presently so slow I could type a better explanation. One moment.
09:27:08 <wob_jonas> scary
09:27:28 * Lykaina wakes
09:27:31 <Lykaina> brb
09:28:39 <shachaf> Hmm, I'll just try anyway.
09:29:32 -!- tromp has joined.
09:29:50 <wob_jonas> Lykania: I haven't yet looked at how you're now reading the source code into memory and how you use it, or changing the data memory to 16-bit, so I can't comment on that yet
09:30:42 <Lykaina> i am doing the global variable thing now
09:30:51 <shachaf> cpressey: I don't remember how much Haskell you know.
09:31:24 <shachaf> The type is this: data Coyoneda f a = forall x. Coyoneda (f x) (x -> a)
09:31:43 <Lykaina> and using the kind of header guards that go on top and bottom of every header file
09:36:07 <shachaf> It's about fmap fusion, or something.
09:36:27 <shachaf> It turns (fmap f . fmap g . fmap h) into fmap (f . g . h)
09:36:58 <Lykaina> back
09:39:07 <Lykaina> i meant that, at the moment, Echidna uses the global variable suggestion and the kind of header guards that gow on top an bottom of each header file.
09:49:22 <Lykaina> README.md pushed
09:57:30 <esowiki> [[Echidna]] https://esolangs.org/w/index.php?diff=66055&oldid=66042 * Lykaina * (+434) Updating the info to match the Github README.
10:10:04 <Lykaina> README.md pushed again
10:10:47 <cpressey> shachaf: I don't really know Haskell, in the sense that I've never built up good intuitions about anything in its type system.
10:12:12 <cpressey> I still don't really know what a monad is.
10:12:28 <wob_jonas> `? monad
10:12:30 <HackEso> Monads are just monoids in the category of endofunctors.
10:12:30 <wob_jonas> `? burrito
10:12:31 <HackEso> Burritos are like Monads, according to Joe. See https://byorgey.wordpress.com/2009/01/12/abstraction-intuition-and-the-monad-tutorial-fallacy/
10:12:43 <Taneb> `quote burrito
10:12:44 <HackEso> 875) <ais523> btw, I finally discovered what a burrito was, recently <ais523> they're kind of nice to eat <ais523> but don't really resemble monads \ 908) <elliott> well what is time <elliott> imo: an illusion [...] <Taneb> elliott, I think it's more like a burrito <Taneb> If you have too much of time you get ill <Taneb> But damn it felt good <Taneb> You only get out what you put in, unless your time was made by someone else, which isn't as fun <ais
10:12:47 <wob_jonas> yeah, wisdom doesn't know either
10:14:26 <cpressey> I read an article explaining how they're monoids in the category of endofunctors, and *while reading* that article, I could see it. But it doesn't stick.
10:15:21 <wob_jonas> cpressey: that said, apparently to program haskell, you don't have to know what monads are in full generality. you just have to understand the dozen common monads and the dozen common monad transformers and how they combine.
10:17:20 <cpressey> You don't *have* to use monads at all when writing in Haskell, except to do I/O, which you can save til the end and treat as a magical invokation.
10:17:55 <Taneb> You don't even really need to know that IO is a monad
10:18:43 <Taneb> cpressey: have you tried reading You Could Have Invented Monads?
10:19:40 <cpressey> Taneb: Once, a long time ago. It doesn't stick.
10:19:44 <myname> i read cakes, custard and category theory
10:19:48 <wob_jonas> cpressey: "save til the end" in what sense? you may want to use interactive IO
10:19:58 <Taneb> myname: recent editions changed the name to How To Bake Pi
10:20:13 <Taneb> In case you're recommending people go out and buy a copy
10:20:14 <esowiki> [[NotBrainFuck]] M https://esolangs.org/w/index.php?diff=66056&oldid=66054 * A * (-110) Here you go
10:20:28 <myname> okay
10:20:34 <wob_jonas> and of course some programs are easier to write if you do use the ST monad, to be able to prove that a function is pure even if it uses certain impure internals
10:20:43 <wob_jonas> (as in mutable arrays)
10:20:48 <Taneb> (I have a copy of Cakes, Custard and Category Theory but I haven't read it yet)
10:20:58 <cpressey> wob_jonas: You don't *have* to use interactive IO to write, say, a compiler
10:21:11 <myname> it's not that deep a read
10:21:36 <wob_jonas> cpressey: sure you do, at least if it's a compiler for a language where files can include other files and you don't know which files in advance
10:21:40 <Taneb> Yes but I keep wanting to follow along with the exercises and that means going to the shop and buying ingredients
10:22:06 <wob_jonas> that includes not only preprocessor includes, but indirect linker dependencies
10:23:09 <cpressey> wob_jonas: So your argument is that you have to understand a dozen common monad transformers in order to program in Haskell because the compilers you write in Haskell are necessarily ones with #include statements
10:23:32 <wob_jonas> cpressey: and if you have a compiler where you aren't sure that it can't be very slow (or infinitely slow) for some input files, then it may be better to write error/warning messages early, before you finish compiling everything
10:24:06 <wob_jonas> cpressey: no, that's not my argument. my argument is that you don't always write compilers, so it's worth to understand at least how to use IO interactively;
10:24:34 -!- grumble has joined.
10:24:40 <wob_jonas> and that I want to use mutable arrays for efficiently, for which it's worth to understand ST to be able to use them inside pure functions in a way that the compiler can prove safe.
10:25:13 <wob_jonas> you probably aren't required to use the other monads or monad transformers directly.
10:25:14 <cpressey> wob_jonas: Right, well as I said, I *don't* understand them. It doesn't stick. Should I stop programming in Haskell?
10:25:24 <wob_jonas> obviously you'll use lists, but not specifically their monad instance.
10:25:54 <wob_jonas> cpressey: no, because if you stop then you'll probably never understand them, unless you program something very similar to haskell instead
10:26:21 <cpressey> wob_jonas: It's been 10 years. I don't have any reason to assume I'll ever understand them.
10:26:45 <Taneb> Do you need to understand them to use them?
10:27:21 <wob_jonas> cpressey: how about the special case of IO where you glue a >>= onto every IO primitive (except the ones that terminate the program), but don't use >>= with a composed value on the left?
10:27:42 <cpressey> More like 12 years: I wrote this in 2007: https://github.com/catseye/Hev/blob/master/src/Hev.hs
10:27:58 <cpressey> Oh, apparently I started it in 2005, so: 14 years.
10:28:45 <cpressey> Doesn't use a single monad, except in the driver code that reads cmdline arguments and the input file and outputs the result.
10:30:14 <wob_jonas> cpressey: have you written code in non-haskell languages that does interactive IO in an event-driven continuation-passings style where you write explicit continuations to run when an event fires, instead of language support for threads with blocking IO?
10:31:21 <wob_jonas> because as far as I understand, if you do that style consistently so that you do it for every IO operation, even for ones that don't block or the ones that only count as IO in haskell (i.e. accessing mutable state), you get IO monad with >>= only on the right of primitives
10:31:44 <wob_jonas> at least that's how I understand IO, but it could be wrong, or it could be just one of the many food metaphors for IO
10:32:04 <shachaf> cpressey: I think Haskell people typically say "monoid in the category of endofunctors" as a joke to try to make things complicated?
10:32:25 <shachaf> It's not very complicated but also not very helpful.
10:32:27 <wob_jonas> maybe someone who understands haskell a bit more can tell me whether that's a reasonable way to think of it
10:32:39 <shachaf> Anyway this is irrelevant for Coyoneda, which is a pretty simple type.
10:32:44 <wob_jonas> shachaf: yes, I think that's intended as a joke
10:32:48 <wob_jonas> lol
10:33:00 <wob_jonas> "pretty simple type"
10:33:08 <shachaf> wob_jonas: Yes, that's pretty reasonable.
10:33:29 <shachaf> I once wrote this: https://stackoverflow.com/a/13538351
10:35:59 <wob_jonas> shachaf: oh wow, that mentions that IO mechanism that I've only seen in that one crazy esolang
10:36:22 <Taneb> wob_jonas: is that crazy esolang called Haskell?
10:37:09 <wob_jonas> https://esolangs.org/wiki/Lazy_K
10:37:22 <wob_jonas> Taneb: no, Haskell has a different IO mechanism
10:37:43 <wob_jonas> which that writeup also mentions
10:37:52 <wob_jonas> (what a surprise)
10:39:15 <wob_jonas> shachaf: ok, but that doesn't seem to explain how you can write IO as an abstraction of ContIO. is there an explanation for that somewhere?
10:39:39 <Taneb> wob_jonas: Lazy K has the same IO mechanism as Real Fast Nora's Hair Salon 3: Shear Disaster Download
10:40:31 <wob_jonas> Taneb: ok, then it's two crazy esolangs
10:40:34 -!- arseniiv has joined.
10:40:40 <wob_jonas> fair enough
10:40:46 <Taneb> And it's fairly similar to Binary Lambda Calculus
10:40:58 <Taneb> (which uses strings of bits, I believe, rather than characters or codepoints)
10:41:55 <wob_jonas> ok, I think if I saw that esolang, it didn't stick in my head
10:42:16 <wob_jonas> or in my hair or whatever
10:42:41 <Taneb> Yeah, it has a hard to remember name
10:43:31 <Taneb> And it's not particularly original
10:47:12 <cpressey> wob_jonas: explicit continuations on event handlers sounds like Javascript with Promises.
10:47:55 <esowiki> [[Vafix]] N https://esolangs.org/w/index.php?oldid=66057 * A * (+205) New unimplemented thought experiment
10:52:24 <Taneb> In a programming lanugage strictly following the actor model, how is input (e.g. command line input, key presses) handled?
10:52:59 <Taneb> Some sort of special actor?
10:53:01 <wob_jonas> I don't know what the actor model is
10:53:21 <wob_jonas> but sure, if it's foo-oriented then keypresses are probably a kind of foo
10:53:25 <Taneb> https://en.wikipedia.org/wiki/Actor_model
10:53:50 <shachaf> wob_jonas: What do you mean?
10:54:37 <wob_jonas> Taneb: is that like holywood actors who must look as beautiful as a fashion model all the time?
10:55:00 <Taneb> wob_jonas: I think it's more like models who gain popularity and want more money sometimes start acting too
10:55:01 <cpressey> Taneb: I can put it this way: if I were designing an actor language, I'd make the source of keystrokes an actor
10:55:29 <cpressey> That said, in Erlang, iirc,it's not like that, you just call io:readln() like everyone else
11:04:06 <cpressey> I can see having to look at all I/O like you're writing Promises in Javascript (I guess) but it escapes me why anyone would want to model *non*-I/O things like that.
11:05:52 <cpressey> Not too long ago, I saw a unification algorithm written in Haskell, built with a state monad.
11:05:55 <cpressey> whyyyyyyyyyyyy
11:06:06 <wob_jonas> cpressey: that's actually two steps. firstly they model not just interactive blocking IO, but every IO, even the ones that can't block, as the same sort of IO action;
11:06:15 <wob_jonas> then they model access to mutable state the same way
11:06:44 <wob_jonas> and inter-thread synchronization as well
11:07:35 <wob_jonas> but I think the reason is always that they want the language to be pure functional
11:08:01 <wob_jonas> with every function being deterministic and side-effectless
11:08:35 <cpressey> A language that's pure functional, where every library has an interface that mocks an effectful language. Again I ask: whyyyyyyy
11:09:14 <wob_jonas> it would just be a different language without. if you don't like it, use ocaml or rust or something.
11:09:28 <wob_jonas> and that applies to me, I don't use haskell for anything anymore
11:09:40 <wob_jonas> (well, except some lambdabot one-liners or something)
11:10:20 <cpressey> I do like it, though, because it's essentially the only popular language that actually is purely functional.
11:10:57 <wob_jonas> but if you do want a purely functional language, then you need to have those abstractions over everything that isn't purely functional
11:10:59 <shachaf> If users of the only popular language that's purely functional write their algorithms in terms of state mutation, maybe that means those algorithms are best expressed as state mutation.
11:11:44 <wob_jonas> shachaf: at least if you care about real-world efficiency
11:12:21 <wob_jonas> or interaction with anything outside the program
11:15:28 -!- Phantom_Hoover has quit (Ping timeout: 245 seconds).
11:29:30 <cpressey> Well, I don't, so, until a better language comes along, I'll just learn to live with the alienation, I suppose.
11:34:28 <wob_jonas> you could just use a language that isn't pure functional, but use the pure functional subset for much of your code
11:35:20 <cpressey> I do that sometimes with Scheme.
11:35:50 <wob_jonas> do you do it with ocaml?
11:36:11 <cpressey> I don't write OCaml.
11:39:58 <cpressey> Well, at least I understand continuations. I think.
11:40:05 * cpressey goes for a walk
11:40:15 <wob_jonas> whoa, more schema incompatibility
11:40:25 <wob_jonas> only forwards, not backwards
11:40:34 <wob_jonas> or wait
11:40:44 <wob_jonas> which one is backwards compatibility and which one is forward compatibility?
11:40:52 <wob_jonas> I think it's only backwards, not forwards
11:43:08 -!- Frater_EST has quit (Ping timeout: 246 seconds).
11:50:29 <wob_jonas> hmm no
12:13:05 <esowiki> [[Vafix]] M https://esolangs.org/w/index.php?diff=66058&oldid=66057 * A * (+659)
12:16:24 <cpressey> On a positive note, a nonstandard formulation of function composition that I came up with for an experimental concatenative language I'm working on, does appear to be associative and have an identity. So I'll be able to keep working on that.
12:17:31 <wob_jonas> cpressey: that sounds scary
12:19:07 <wob_jonas> but then, I guess, any monoid operation can be thought of as function composition of the bound products with elements of the monoid
12:19:28 <wob_jonas> also known as "every group is a permutation group"
12:20:21 <esowiki> [[Vafix]] M https://esolangs.org/w/index.php?diff=66059&oldid=66058 * A * (+1103)
12:28:28 <esowiki> [[Vafix]] M https://esolangs.org/w/index.php?diff=66060&oldid=66059 * A * (+1031) /* Execution scheme */ More of the execution
12:28:46 -!- Frater_EST has joined.
12:34:15 <esowiki> [[Vafix]] M https://esolangs.org/w/index.php?diff=66061&oldid=66060 * A * (+585) Complete odd process
12:36:55 -!- grumble has changed nick to \emph{grumble}.
12:37:57 -!- FraterEST has joined.
12:38:23 -!- Frater_EST has quit (Ping timeout: 268 seconds).
12:40:25 <esowiki> [[Vafix]] M https://esolangs.org/w/index.php?diff=66062&oldid=66061 * A * (+564)
12:57:10 <cpressey> I found the unification algorithm I mentioned above, if anyone is interested: https://github.com/parsonsmatt/unification/blob/master/Unification.pdf
13:16:50 -!- atslash has joined.
13:16:54 <esowiki> [[Vafix]] M https://esolangs.org/w/index.php?diff=66063&oldid=66062 * A * (+370) /* Vafix in comparision with a normal infix */
13:32:01 <Lykaina> gtg wake
13:33:20 -!- Lykaina has quit (Quit: leaving).
13:52:54 -!- sprocklem has quit (Ping timeout: 258 seconds).
14:07:08 -!- wob_jonas has quit (Ping timeout: 276 seconds).
14:16:19 -!- Lykaina has joined.
14:26:11 <esowiki> [[Encapsulation]] https://esolangs.org/w/index.php?diff=66064&oldid=66039 * A * (+100) /* Computational class */
14:26:23 -!- rain2 has joined.
14:28:13 -!- rain1 has quit (Ping timeout: 244 seconds).
14:35:27 -!- sebbu has quit (Ping timeout: 244 seconds).
14:36:25 -!- sebbu has joined.
14:51:42 <Lykaina> hi
14:52:18 <Lykaina> just seet up email filters for the annoying github alerts i actually want
14:56:14 <esowiki> [[Vafix]] M https://esolangs.org/w/index.php?diff=66065&oldid=66063 * A * (+32) /* Vafix in comparision with a normal infix */
14:58:29 <esowiki> [[Vafix]] M https://esolangs.org/w/index.php?diff=66066&oldid=66065 * A * (+358) /* Parentheses and rules */
14:58:41 <esowiki> [[Pxem]] https://esolangs.org/w/index.php?diff=66067&oldid=65944 * YamTokTpaFa * (+96) /* Examples */
15:00:09 <esowiki> [[Vafix]] M https://esolangs.org/w/index.php?diff=66068&oldid=66066 * A * (+165)
15:06:56 -!- Lord_of_Life has quit (Ping timeout: 276 seconds).
15:12:07 -!- Lord_of_Life has joined.
15:12:37 -!- cpressey has quit (Quit: A la prochaine.).
15:21:13 <esowiki> [[Talk:Pxem]] https://esolangs.org/w/index.php?diff=66069&oldid=61433 * YamTokTpaFa * (+535) /* About unclear conditional looping instructions. */ new section
15:29:03 -!- FraterEST has left.
15:46:07 -!- tromp has quit (Remote host closed the connection).
15:46:42 -!- tromp has joined.
15:48:19 -!- craigo has quit (Ping timeout: 268 seconds).
15:53:30 -!- andrewg12 has joined.
15:53:37 <andrewg12> h
16:00:09 <Lykaina> hi andrewg12
16:00:58 <andrewg12> sup
16:02:50 <Lykaina> so used to using linux with it's multiple desktops that when i use windows it gets harder
16:03:26 <Lykaina> keep doing ctrl-alt-left
16:03:47 <Lykaina> which is something different in windows
16:04:12 <andrewg12> i dunno
16:04:15 <andrewg12> i prefer windows
16:04:37 <Lykaina> i prefer linux
16:06:05 <andrewg12> o
16:11:49 <int-e> sigh: https://devtalk.nvidia.com/default/topic/1052743/linux/what-is-nv_queue-and-why-is-it-the-top-process-on-my-system-/ (solution: don't look at top)
16:36:43 -!- FreeFull has joined.
16:48:00 <int-e> Another bad idea: watching open network connections while firefox is open with nothing but a blank page. Wtf are you doing, Firefox?
16:50:27 <int-e> This may be too much to expect, but why can't we make a browser that, when starting up on a blank page, makes zero network connections?
16:51:05 <int-e> zzo38: don't answer that. It's a rhetorical question.
16:53:32 <esowiki> [[Arch]] https://esolangs.org/w/index.php?diff=66070&oldid=64661 * Areallycoolusername * (+0) /* Pop */
16:53:43 <esowiki> [[Arch]] https://esolangs.org/w/index.php?diff=66071&oldid=66070 * Areallycoolusername * (+0) /* Point */
16:53:57 <esowiki> [[Arch]] https://esolangs.org/w/index.php?diff=66072&oldid=66071 * Areallycoolusername * (+0) /* Cells & Split */
16:54:52 <esowiki> [[Arch]] https://esolangs.org/w/index.php?diff=66073&oldid=66072 * Areallycoolusername * (-1) /* Properties */
16:58:50 <esowiki> [[///]] https://esolangs.org/w/index.php?diff=66074&oldid=65775 * CarlosLuna * (+1469) Adding the "Unary to binary conversion" example.
17:06:07 -!- Phantom_Hoover has joined.
17:21:17 <fizzie> int-e: I had a somewhat similar feeling as the nv_queue for kidle_inject.
17:29:37 <andrewg12> hello
17:29:45 <APic> Hi
17:30:55 <andrewg12> what about the language or
17:32:28 <APic> The Languages.
17:37:08 <int-e> meh: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=842292
17:37:42 <int-e> anyway... the most suspicious looking connection was the captive portal detection
17:39:50 <int-e> From here I get detectportal.firefox.com = CNAME detectportal.prod.mozaws.net = CNAME detectportal.firefox.com-v2.edgesuite.net = CNAME a1089.dscd.akamai.net = 46.125.232.9 or 46.125.232.24; these resolve back to 046125232009.public.t-mobile.at and 046125232024.public.t-mobile.at respectively.
17:40:44 <int-e> Which is not the kind of host name I wanted to see my browser connect to unasked.
17:41:18 -!- imode has joined.
17:52:02 -!- imode has quit (Ping timeout: 240 seconds).
17:54:25 <int-e> And wtf is push.services.mozilla.com good for, aside from giving Mozilla information on how long people keep their browsers open?
17:55:03 <andrewg12> nothing
17:55:07 <int-e> (It can be disabled. But this is the kind of thing I want to be opt-in, not opt-out. At which point it's clear that software developers shouldn't bother with it in the first place.)
18:00:26 -!- Sgeo__ has joined.
18:03:59 -!- Sgeo_ has quit (Ping timeout: 268 seconds).
18:16:52 <int-e> ow, libnss is big... I guess I don't want to rebuild that myself just to see what's inside those https connections :/
18:16:59 -!- imode has joined.
18:38:30 <esowiki> [[Special:Log/newusers]] create * Visual-mov * New user account
18:44:22 -!- andrewg12 has quit (Remote host closed the connection).
18:46:17 <fizzie> int-e: Is that the thing the Web Push API on Firefox uses?
18:47:37 <int-e> fizzie: Shouldn't that be up to the particular website?
18:48:12 <fizzie> I don't know, that's why I asked.
18:48:13 <int-e> fizzie: I'd think this is a particular push service just for firefox itself, for bs like studies.
18:48:28 <fizzie> I see.
18:48:43 <int-e> But it's a guess; I have not done any research on it.
18:48:43 <fizzie> Presumably also for pushing updates to their tracking blacklists and that sort of stuff.
18:49:04 <fizzie> https://wiki.mozilla.org/CloudServices is "delightedly whimsical".
18:49:41 <int-e> "Tracking Protection" ... I almost laughed.
18:50:22 <shachaf> int-e: What do you think of this Coyoneda type?
18:50:34 <shachaf> Other than "a fairly odd functor".
18:51:08 <int-e> shachaf: nothing
18:51:36 <shachaf> That makes sense.
18:52:01 <shachaf> I think it's a neat trick that comes up in multiple contexts, not just this Prompt monad.
18:52:43 <int-e> I tend to think of that stuff very concretely, in terms of continuations.
18:53:51 <shachaf> (Obviously it's not a useful trick because it's just Haskell nonsense.)
18:54:16 <shachaf> (Or maybe it is useful? I'm skeptical.)
18:54:49 <int-e> I also wrote "Codensity transformation" the other day but when I did it, I did a CPS transformation with several continuations.
18:57:38 <shachaf> Well, the Codensity transformation is the same as the CPS transformation.
18:57:51 <int-e> I wasn't even conscious of the fact that (a -> r, b -> r) is isomorphic to Either a b -> r (ignoring bottoms)
18:58:07 <int-e> shachaf: Yeah but the latter term makes sense!
18:59:03 <int-e> It's meaningful, it can be decomposed into subconcepts. "Codensity" is just nonsense.
19:01:28 <int-e> Unfortunately the nonsense has taken over the Haskell community. :P
19:08:05 -!- Lykaina has quit (Quit: leaving).
19:10:11 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
19:22:28 -!- b_jonas has joined.
19:24:48 <b_jonas> Lykania: I recommend https://virtuawin.sourceforge.io/ , a software that lets you use virtual desktops in windows and set up your favourite keyboard shortcuts
19:27:34 <b_jonas> int-e: re browser and connections, https://twitter.com/jonathansampson/status/1166005813548396549 , also try the debian version, it does 20% less connections because debian patched it so that the favicons for the search websites in the search bar menu are installed with the browser rather than downloaded
19:30:19 -!- Phantom_Hoover has joined.
19:33:25 <int-e> fizzie: you were right, this is connected to the service worker push api.
19:33:59 <int-e> b_jonas: I'm using the debian version already.
19:35:12 <int-e> Oh well. Service workers are another thing that has no right of existing in the first place.
19:36:07 <int-e> I guess you could set up your own personal push service and use that to alleviate the tracking concerns.
19:38:59 -!- ArthurStrong has joined.
19:39:49 <b_jonas> int-e: ok, then imagine that backwards. be glad you're not using the vanilla version, because that does 20% more connections.
19:44:17 <b_jonas> the tweet I linked to measures the windows version
19:50:47 <int-e> b_jonas: reading your thread. "[...] is a feature that allows Mozilla to change the default value of a preference for a targeted set of users [...]" is so ominous.
19:52:42 <b_jonas> int-e: it's not my thread
19:54:22 <int-e> ah. okay, then the thread you linked to (the Firefox subthread in particular.)
19:57:02 <int-e> b_jonas: the funny thing about the quote is that its' from Mozilla themselves
19:57:18 <int-e> Or maybe it's worrying rather than funny. Let's call it interesting.
19:57:51 <b_jonas> int-e: that means sometimes they say things about what their browser is doing. what a weird concept for software
20:00:04 <int-e> Ah. "Normandy manages recipes of changes to make to Firefox, including temporary studies, user surveys and controlled rollout of new features."
20:00:20 <int-e> Clearly another thing to disable.
20:00:37 <int-e> I miss Iceweasel.
20:00:56 <int-e> (But maintaining the thing must've been a lot of work.)
20:00:58 <esowiki> [[Echidna]] https://esolangs.org/w/index.php?diff=66075&oldid=66055 * Lykaina * (-90) Updating documentation.
20:01:01 <b_jonas> int-e: debian's firefox is iceweasel. it's the same thing, they just decided it's safe to use the firefox brand name
20:01:11 <b_jonas> and they do disable some firefox features
20:01:23 <int-e> Not enough, apparently.
20:01:35 <b_jonas> yes, admittedly they do have a hard time keeping up with all the stuff that mozilla adds to firefox
20:01:50 <b_jonas> it's not a sw that anyone enjoys to package
20:02:09 <b_jonas> even making it compile is basically impossible
20:04:42 -!- Lykaina has joined.
20:05:27 <int-e> Also, how many IDs does Firefox have for a single profile...
20:05:35 <Lykaina> patched the If/While bug!
20:05:47 <b_jonas> Lykaina: nice
20:06:01 <b_jonas> Lykania: I recommend https://virtuawin.sourceforge.io/ , a software that lets you use virtual desktops in windows and set up your favourite keyboard shortcuts
20:06:18 <Lykaina> thanks
20:08:15 <int-e> Normandy has one. The push service has one. The activity stream of the default new tab page as one. Telemetry has its own id as well, it seems (and why is that even set when Debian disabled the telemetry feature?!).
20:08:22 <int-e> I don't like what I see.
20:08:33 <Lykaina> i rewarded myself by upping the version to 0.03a0
20:13:06 <Lykaina> brb
20:20:54 <int-e> b_jonas: the thing is, the *right* way to disable all these things is to rip out the code in question, which is a maintenance nightmare, and will upset users who have different ideas about usefulness.
20:21:19 <int-e> (For example I'd rip out the Gollum feature ("pocket"), but I imagine some people find it useful.)
20:22:23 <int-e> (This association is a bit unfair because the pocket in question was really Frodo's.)
20:22:26 <b_jonas> int-e: like I said, the original codebase is already almost impossible to build. it may be harder to build than glibc, which is impressive. if they manage to successfully rip out the right pieces, it may become slightly less hard to build, so it may be less of a maintenance nightmare than you think.
20:23:04 <b_jonas> int-e: isn't the pocket at the mozilla servers (frodo) and you the user of pocket are on your computer (gollum)?
20:23:12 <b_jonas> but you want the thing in frodo's pocket?
20:23:18 <b_jonas> well not you int-e, but the people who ise it
20:23:56 <Lykaina> back
20:25:00 <b_jonas> int-e: hmm, how about Han Solo then? https://scifi.stackexchange.com/q/145117/
20:25:17 <int-e> wrong franchise, never cared much about it
20:32:02 -!- imode has quit (Ping timeout: 240 seconds).
20:36:00 <b_jonas> yeah, Gollum is better
20:37:44 <Lykaina> i need to know: what is my language missing?
20:39:42 <Lykaina> it's something opvious, i'm just blanking out on it
20:40:34 <b_jonas> Lykaina: nothing, I think it has all the operations you need. although I haven't checked the modified implementation yet.
20:42:27 <b_jonas> really, it has arithmetic, flow control, interactive IO, and now array access too, that's enough for anything reasonable
20:42:48 <b_jonas> the array access part is important, you can't really do without
20:43:19 <b_jonas> if the interpreter works correctly, then it's a fine general purpose language
20:43:43 <b_jonas> a low-level one that you want to compile to and use a generous library of useful functions, but still
20:46:22 <Lykaina> how do i implement functions?
20:46:45 <b_jonas> Lykaina: do you mean in the interpreter with the existing semantics?
20:47:13 <Lykaina> i mean in the language
20:47:22 <b_jonas> doesn't it already have functions?
20:47:33 <Lykaina> oh, right
20:47:40 <Lykaina> i mean external
20:47:53 <Lykaina> libraries
20:49:10 <b_jonas> do you mean like calling other functions written in echidna? just concatenate the source codes, plus modify the addresses they use in the data space so they don't clash with each other
20:50:27 <Lykaina> thinking the difference between c and standard library
20:50:43 <Lykaina> extensibility
20:51:29 <b_jonas> sure, but echidna already has built-ins for input and output. you can just build functions over that.
20:52:12 <Lykaina> what about time?
20:53:14 -!- Lord_of_Life has quit (Ping timeout: 240 seconds).
20:53:59 -!- Lord_of_Life has joined.
20:58:18 <Lykaina> how neeeded is the current 'G'?
20:59:53 <Lykaina> it's currently printf("%u",mem[addr])
21:00:25 -!- crash_n_burn has joined.
21:13:03 <b_jonas> I think that's convenient for debugging
21:13:21 <Lykaina> good point
21:13:29 <b_jonas> though to make it even more convenient, you could make it output a space first if the previous output operation was also this numeral thing
21:13:42 <b_jonas> that's magic, but probably acceptible magic
21:13:46 <b_jonas> as long as it's documented
21:14:42 -!- FreeFull has quit (Ping timeout: 246 seconds).
21:15:19 <Lykaina> would ':' be good for time?
21:16:12 <Lykaina> cause it's in the middle of every digital clock
21:16:42 -!- FreeFull has joined.
21:17:47 <Lykaina> and i'm thinking about changing M to be more like L
21:17:53 <b_jonas> Lykaina: dunno, if you want a lot of fancy io stuff like that, you could add some dispatch builtin where one argument decides what operation to do, or builtin functions that have the same interface as echidna functions so you call them with N or something, but are not implemented in echidna?
21:20:32 <Lykaina> that could work
21:22:20 <Lykaina> an m that operated like l would require a lot of arguments
21:23:20 <Lykaina> 30
21:23:34 <Lykaina> it can be done
21:23:55 <Lykaina> better than that weird logic code
21:24:39 <Lykaina> well, 6 5-char arguments
21:30:43 -!- imode has joined.
21:38:09 -!- FreeFull has quit.
21:49:37 -!- b_jonas has quit (Remote host closed the connection).
21:52:39 -!- crash_n_burn has quit (Quit: Lost terminal).
22:22:07 -!- craigo has joined.
22:22:08 -!- MDude has quit (Ping timeout: 245 seconds).
22:22:39 <Lykaina> implemented the new M
22:25:33 <Lykaina> c = a AND b : M @c @a @b =0000 =0000 =0000 =FFFF
22:30:16 <imode> so I have a language named SPL, which for control flow has the following primitives: [?;]. `[` is `while(1){`, `?` is `if(pop(&stack)==0){break;}`, `;` is `break;`, and `]` is `}`. this means you can write pretty clean control structures like `if`, `while` loops, etc.
22:31:24 <imode> I've been wondering what kind of reduction you can make to eliminate `?` and `;`.
22:33:14 <imode> https://hastebin.com/eqogofoqef some sample programs. if there was a clean way to integrate the conditional check into the `[` instruction, that'd be neat.
22:33:31 <imode> the latter one is an iterative factorial algorithm.
22:35:36 <imode> it's a stack based language, and all operations reference the top of the stack. similar to Mouse and stuff.
22:36:48 <imode> an `if` statement can be built using the following form: `<condition> [? <body> ;]`. you can build if/else if/else chains via passing boolean flags around on the stack.
22:37:35 <imode> `.` is `drop`, `:` is `pick`, `\` is `roll`, `~` is negate, `=` is equality... etc.
22:37:36 <HackEso> ​/srv/hackeso-code/multibot_cmds/lib/limits: line 5: exec: .`: not found
22:38:18 <imode> a `while` statement can be built as a similar form. trying to condense this into just `[` and `]` while preserving the same "structure" is what I'm struggling with.
22:42:11 -!- imode has quit (Remote host closed the connection).
22:42:56 -!- imode has joined.
22:43:48 <imode> the ability to break arbitrarily is also incredibly useful.
22:49:07 -!- xkapastel has joined.
23:02:49 -!- Phantom_Hoover has quit (Ping timeout: 244 seconds).
23:08:42 <esowiki> [[///]] M https://esolangs.org/w/index.php?diff=66076&oldid=66074 * A * (+32) /* Examples */ Not in this wiki
23:08:58 <arseniiv> imode: why should you eliminate both `?` and `;`?
23:10:16 <imode> bringing it more in line with something like brainfuck.
23:10:34 <imode> just to see if it's possible, mainly.
23:10:52 <arseniiv> anyway [;?] are a find too, at least for me!
23:12:03 <imode> yeah? I dunno. there's always this niggling doubt in the back of my mind in the form of "you can make the instruction set smaller".
23:12:26 <arseniiv> hm, could one set `]` to be the current `?]` ?
23:13:10 <imode> interesting.
23:13:38 <imode> you could eliminate `;` by doing `,?`
23:13:44 <imode> `[? ... ,?]`
23:13:45 <HackEso> ​/srv/hackeso-code/multibot_cmds/lib/limits: line 5: exec: [?: not found
23:14:09 <arseniiv> ah, break seems inexpressible
23:14:22 <imode> the `,` instruction pushes a zero to the stack. all other numerals like 1, 2, 3 ... A, B, C ... F shifts hexadecimal digits into the top of the stack.
23:14:31 <imode> here, lemme bring up the interpreter.
23:14:51 <imode> https://repl.it/repls/UnknownGenerousLifecycle
23:15:05 <arseniiv> ; as <zero>? is pretty obvious, I agree :D
23:15:16 <imode> hehehe.
23:16:00 <imode> see instinctively, I wanna make `[` into `while(pop(&stack)){`
23:16:36 <imode> but that's weird. your conditional check now has to be duplicated _prior_ to the loop, and _after_ the loop body.
23:17:36 <arseniiv> hmm
23:17:42 <imode> if statement is now `<condition> [ <body> ,]`
23:18:10 <imode> but `while` is now `<condition> [ <body> <condition> ]`
23:19:21 <imode> hm.
23:20:58 <arseniiv> is there a sense to make this a post-condition loop do … while(cond)?
23:21:42 <arseniiv> hm now `if` would be a pain instead
23:21:44 <imode> could you still express a precondition loop with a postcondition loop?
23:21:46 <imode> yeah..
23:22:38 <arseniiv> why while is so universal hm. I never thought about that, ever
23:27:57 <imode> I used to tutor CS concepts, and I used to blow my students' minds when I tell them that they can form every single control flow construct from `while`s.
23:28:25 -!- atslash has quit (Quit: This computer has gone to sleep).
23:31:33 <imode> 'while' is universal in the same way that 'jmp' and 'jnz'/'jz' instructions are universal.
23:42:18 <imode> interesting, `[?;]` can be used to construct something like `begin <first> <condition> while <second> repeat
23:42:24 <imode> https://en.wikipedia.org/wiki/Control_flow#Loop_with_test_in_the_middle
23:44:05 <imode> [ <first> <condition> ? <second> ] would be the equivalent code.
23:44:05 <j-bot> imode: |spelling error
23:44:06 <j-bot> imode: | <first> <condition> ? <second> ] would be the equivalent code.
23:44:06 <j-bot> imode: | ^
23:44:13 <imode> whoops, sorry. forget what triggers bots.
23:55:17 <arseniiv> <imode> https://en.wikipedia.org/wiki/Control_flow#Loop_with_test_in_the_middle => very interesting, thanks!
23:55:33 <imode> https://repl.it/repls/AjarFirmSystemresource an example of just using `while` and `break`.
23:55:38 <imode> np!
23:55:54 <arseniiv> a while ago I did thought about named loops and breaks/continues but for some reason not of that loop type
23:56:08 <arseniiv> that entire page will be useful to me, I think
23:56:34 <arseniiv> [ ]
23:56:35 <j-bot> arseniiv: ]
23:56:41 <arseniiv> haha it works
23:56:45 <imode> hah.
23:56:51 <arseniiv> [ [ ] ]
23:56:51 <j-bot> arseniiv: [ ] ]
23:57:31 <Lykaina> [+-]
23:57:44 * arseniiv pretends he knows what he’s doing
23:57:59 <arseniiv> Lykaina: I think there should be at least one space after [
23:58:02 * Lykaina has no clue either
23:58:10 <arseniiv> [ ] [ ]
23:58:11 <j-bot> arseniiv: ] [ ]
23:58:19 <imode> huh, looking at brainfuck algorithms.
23:58:19 <arseniiv> okay I’ll go sleep
23:58:24 <imode> it looks like I'm right.
23:58:52 <imode> 'while (<condition>) { <body> }' results in you requiring to evalute the condition _again_ at the end of the loop if you just use [ and ].
23:59:12 <imode> independent rediscovery!
23:59:19 <arseniiv> ah
23:59:57 <imode> to send you off, here's a recursive factorial function: ,2{:,0=[:?..,1,;][?:,1-,2!*;]},10,2!
2019-09-11
00:00:53 -!- MDude has joined.
00:00:55 <Lykaina> write in c, write in c, write in c, write in c, if you want it to make no sense, write in c
00:01:32 <Lykaina> i think that's how the song goes
00:01:38 <imode> lol.
00:03:16 <arseniiv> exitwhen from that article reminds me of algebraic effects: effect definition, a handler and its application to an effectful expression all bundled together. Or exceptions, but they already mention them and that’s not exotic enough
00:05:04 <arseniiv> though this exitwhen is weaker than exceptions (and moreso effects) and on the other hand is beautifully local, that’s a plus I think
00:07:37 <imode> https://hastebin.com/dicapuzube.makefile
00:08:47 <imode> exitwhen looks frickin' awesome.
00:13:08 <arseniiv> <imode> https://hastebin.com/dicapuzube.makefile => you made it readable! :o
00:13:30 <arseniiv> okay bye all :
00:13:34 <imode> night.
00:13:59 <imode> the cool part is it's just trivial substitutions.
00:17:44 -!- arseniiv has quit (Ping timeout: 246 seconds).
01:17:19 -!- Lykaina has quit (Quit: leaving).
01:34:07 -!- Lykaina has joined.
01:41:16 -!- adu has joined.
01:44:12 -!- imode has quit (Remote host closed the connection).
01:44:37 -!- imode has joined.
02:00:11 -!- rodgort has quit (Quit: Leaving).
02:03:05 -!- imode has quit (Ping timeout: 246 seconds).
02:04:24 -!- rodgort has joined.
02:07:13 -!- Phantom_Hoover has joined.
02:16:02 -!- rodgort has quit (Ping timeout: 246 seconds).
02:23:28 -!- rodgort has joined.
02:39:30 -!- tromp has quit (Remote host closed the connection).
02:42:08 -!- MDude has quit (Ping timeout: 245 seconds).
02:45:59 -!- fungot has quit (Ping timeout: 252 seconds).
02:49:04 <Lykaina> made an echidna program to output the ecact formula when, if piped into bc, gives the unix time
02:51:26 -!- fungot has joined.
02:51:38 <Lykaina> i'd output it using echidna, but it's 32-bit and echidna is 16-bit
02:54:03 -!- ArthurStrong has quit (Remote host closed the connection).
03:00:07 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
03:01:11 <Lykaina> how do i do base conversion math on two 16-bit numbers as though they were one 32-bit number?
03:10:08 -!- sprocklem has joined.
03:17:34 -!- tromp has joined.
03:22:44 -!- tromp has quit (Ping timeout: 276 seconds).
03:23:32 <adu> Lykaina: a*2^16 + b
03:26:52 -!- xkapastel has quit (Quit: Connection closed for inactivity).
03:33:30 -!- imode has joined.
03:52:34 -!- imode has quit (Read error: Connection reset by peer).
03:52:40 -!- imode2 has joined.
03:55:10 -!- imode2 has quit (Remote host closed the connection).
03:55:29 -!- imode2 has joined.
04:30:06 <imode2> https://hastebin.com/begaliyeju.py a half-functional SPL-to-C compiler. pretty trivial.
04:44:13 -!- adu has quit (Quit: adu).
04:44:36 -!- adu has joined.
04:45:03 -!- adu has quit (Client Quit).
04:45:35 -!- adu has joined.
04:45:49 -!- adu has quit (Client Quit).
04:46:19 -!- adu has joined.
04:46:36 -!- adu has quit (Client Quit).
04:47:06 -!- adu has joined.
04:47:23 -!- adu has quit (Client Quit).
04:47:55 -!- adu has joined.
04:48:10 -!- adu has quit (Client Quit).
04:56:49 -!- imode2 has quit (Quit: Leaving).
04:57:06 -!- imode2 has joined.
04:57:16 -!- imode2 has quit (Remote host closed the connection).
04:57:38 -!- imode has joined.
05:08:20 -!- hppavilion[1] has joined.
05:26:30 <imode> brainfuck would be far more palettable if `[]` were substituted for `[?;]`. I imagine a command set of `[<>!?;]` would be turing-complete, with `!` acting as a bit-flip operator.
05:28:34 <imode> if equipped with a circular tape, the program [!?>] would write 1's to every memory cell.
05:29:01 <imode> make that [!?>]!, need to swap the last bit back.
05:31:05 <imode> with the use of a sentinel cell, you can reduce the instruction set to `[<>!?]`
05:32:20 <hppavilion[1]> imode: To be clear, what are `?` and `;`?
05:33:26 <imode> sorry. `[` and `]` are `while(1){` and `}`, while `?` and `;` are `if(cells[current]==0){break;}` and `break;` respectively.
05:33:39 <imode> was going off of an earlier discussion.
05:33:42 <hppavilion[1]> Ah
05:34:06 <imode> been working on a language called SPL that uses those commands + a stack.
05:34:45 <imode> https://hastebin.com/begaliyeju.py wrote a half-arsed C compiler for a subset of it.
05:35:51 <imode> brainfuck's [ and ] require you to duplicate code in order to write a trivial while loop.
05:41:20 -!- Sgeo has joined.
05:42:50 -!- Sgeo__ has quit (Ping timeout: 240 seconds).
06:08:59 -!- tromp has joined.
06:19:07 -!- tromp has quit (Remote host closed the connection).
06:21:29 -!- hppavilion[1] has quit (Ping timeout: 276 seconds).
06:27:25 -!- hppavilion[1] has joined.
06:33:34 <imode> wonder what a generic while loop would look like in FRACTRAN.
06:42:53 <imode> has anybody made a brainfuck interpreter in FRACTRAN? that would be impressive. I imagine the construction would involve building a tape using a single register.
06:59:11 -!- tromp has joined.
07:00:15 -!- tromp_ has joined.
07:01:31 -!- tromp__ has joined.
07:03:22 -!- tromp__ has quit (Read error: Connection reset by peer).
07:03:23 -!- tromp has quit (Ping timeout: 246 seconds).
07:03:44 -!- tromp has joined.
07:05:02 -!- tromp_ has quit (Ping timeout: 276 seconds).
07:35:38 -!- imode has quit (Ping timeout: 240 seconds).
07:58:00 -!- atslash has joined.
07:59:41 <rain2> there are some very advacned fractran coders
08:11:18 -!- sftp has quit (Ping timeout: 245 seconds).
08:42:44 <Taneb> Hard part would be program input and IO
08:52:50 -!- Lord_of_Life has quit (Ping timeout: 240 seconds).
08:55:46 -!- Lord_of_Life has joined.
09:07:07 -!- atslash has quit (Ping timeout: 258 seconds).
09:07:45 -!- atslash has joined.
09:21:32 -!- atslash has quit (Ping timeout: 276 seconds).
09:21:40 <esowiki> [[Vafix]] M https://esolangs.org/w/index.php?diff=66077&oldid=66068 * A * (+649) /* Multiplication (idea; probably will be combined with Vafix in order to make reading source files harder) */
09:22:03 -!- atslash has joined.
09:26:58 -!- xkapastel has joined.
09:33:55 <esowiki> [[Vafix]] M https://esolangs.org/w/index.php?diff=66078&oldid=66077 * A * (+1543) /* Matrix transposals */
09:33:55 -!- cpressey has joined.
09:34:36 <esowiki> [[Vafix]] M https://esolangs.org/w/index.php?diff=66079&oldid=66078 * A * (+73) /* The Dyadic part */
09:36:16 <esowiki> [[Vafix]] M https://esolangs.org/w/index.php?diff=66080&oldid=66079 * A * (+82)
09:38:08 <Lykaina> adu: that's only if the system can store 32-bit numbers
09:39:39 <Lykaina> echidna uses 16-bit math
09:46:08 <Lykaina> i can concatenate thrm into a 32-bit, but that won't help with base conversion
09:58:23 -!- hppavilion[1] has quit (Ping timeout: 245 seconds).
09:59:45 -!- hppavilion[1] has joined.
10:03:27 <esowiki> [[User:CarlosLuna]] N https://esolangs.org/w/index.php?oldid=66081 * CarlosLuna * (+80) Initial one-liner bio.
10:04:55 <esowiki> [[User:CarlosLuna]] M https://esolangs.org/w/index.php?diff=66082&oldid=66081 * CarlosLuna * (-4)
10:06:01 <esowiki> [[User:CarlosLuna]] M https://esolangs.org/w/index.php?diff=66083&oldid=66082 * CarlosLuna * (+9)
10:08:32 <esowiki> [[User:CarlosLuna]] M https://esolangs.org/w/index.php?diff=66084&oldid=66083 * CarlosLuna * (+45)
10:08:34 -!- Frater_EST has joined.
11:12:57 -!- sftp has joined.
11:16:51 <esowiki> [[Factory]] https://esolangs.org/w/index.php?diff=66085&oldid=50795 * Unlimiter * (+0) /* Storage spaces 1-3 */
11:21:07 <esowiki> [[Factory]] https://esolangs.org/w/index.php?diff=66086&oldid=66085 * Unlimiter * (-6) /* And */
11:29:09 <esowiki> [[Factory]] https://esolangs.org/w/index.php?diff=66087&oldid=66086 * Unlimiter * (-4) /* eloop */
11:35:47 -!- arseniiv has joined.
11:55:04 <fizzie> Lykaina: I don't know if there are any handy shortcuts for base conversion specifically, but you can always "just" implement 32-bit operations in terms of 16-bit ones based on the mentioned decomposition.
11:55:21 <fizzie> For example for 32x32->32 bit multiplication, x * y = (xh*2^16 + xl) * (yh*2^16 + yl) = (xh*yh)*2^32 + (xh*yl + yh*xl)*2^16 + xl*yl, and the *2^32 part doesn't matter, so you "only" need to compute 16x16->16-bit multiplications xh*yl and yh*xl, and one 16x16->32-bit multiplication xl*yl, and sum up the right parts of the results.
11:58:22 <fizzie> Division is much more disagreeable. Though with a constant divisor you could turn it into an (even wider) multiplication.
12:04:32 <fizzie> I know there's similar routines like this in, for example, SDCC; their 32-bit multiplication is at https://sourceforge.net/p/sdcc/code/HEAD/tree/trunk/sdcc/device/lib/_mullong.c (a pure C version, or actually two of them, at the bottom).
12:40:14 -!- Lord_of_Life has quit (Read error: Connection reset by peer).
12:44:04 -!- Lord_of_Life has joined.
12:47:50 -!- MDude has joined.
13:07:13 -!- Frater_EST has quit (Ping timeout: 246 seconds).
13:10:45 -!- Frater_EST has joined.
13:11:12 -!- Frater_EST has quit (Remote host closed the connection).
13:20:56 <esowiki> [[Vafix]] M https://esolangs.org/w/index.php?diff=66088&oldid=66080 * A * (+22) /* Implementations */
13:22:08 <esowiki> [[Vafix]] https://esolangs.org/w/index.php?diff=66089&oldid=66088 * A * (-358) /* Multiplication (idea; probably will be combined with Vafix in order to make reading source files harder) */ Making this simple as well as hard to understand
13:28:08 <esowiki> [[Vafix]] M https://esolangs.org/w/index.php?diff=66090&oldid=66089 * A * (+275)
13:29:08 <esowiki> [[Vafix]] M https://esolangs.org/w/index.php?diff=66091&oldid=66090 * A * (+9) Fix some typos
13:33:15 <esowiki> [[Vafix]] M https://esolangs.org/w/index.php?diff=66092&oldid=66091 * A * (+130) /* Computational class */
13:33:57 <esowiki> [[Vafix]] M https://esolangs.org/w/index.php?diff=66093&oldid=66092 * A * (-2265) /* Matrix transposals */ Nope, the core of Vafix is just 2 operators.
13:34:35 <esowiki> [[Vafix]] https://esolangs.org/w/index.php?diff=66094&oldid=66093 * A * (+25) /* Implementations */
13:34:46 <esowiki> [[Vafix]] M https://esolangs.org/w/index.php?diff=66095&oldid=66094 * A * (+9) /* Implementations */
13:46:45 <cpressey> Not wholly esoteric, but I mentioned it on here weeks ago, finally got around to packaging it up: https://github.com/catseye/Cardboard-Prolog
13:51:04 <Lykaina> cpressey: omg you're catseye?
13:51:49 <Lykaina> that is like so...
13:51:59 <Lykaina> i'm just messing with you
14:04:34 <cpressey> Curses! My entirely-non-secret identity has been revealed!
14:04:42 <esowiki> [[Vafix]] M https://esolangs.org/w/index.php?diff=66096&oldid=66095 * A * (+19) /* Calculates 7+(-5) */
14:11:34 <rain2> https://twitter.com/x86instructions/status/1171468931241934853
14:16:44 -!- xkapastel has quit (Quit: Connection closed for inactivity).
14:20:11 <Lykaina> crap, i have to sacrifice another command
14:21:56 <Lykaina> https://github.com/lykaina/echidna
14:23:09 <Lykaina> i need a second op like 'S'
14:23:45 <Lykaina> S = special/secondary
14:30:58 <Lykaina> probably move R to G and make the current G part of the new R as RD
14:31:12 <Lykaina> i mean, RG
14:44:42 -!- MDude has quit (Ping timeout: 244 seconds).
15:23:47 <arseniiv> I just heard about words like speako, writo, scanno, clicko, thinko. Just rofling now
15:24:26 <arseniiv> a neat model but funny nonetheless
15:26:54 <int-e> cpressey: maybe you've just been called old ;-)
15:29:07 <arseniiv> I heard about cpressey but not once about catseye (before I saw some github links cpressey himself posted weeks ago), what did I do wrong
15:31:49 <int-e> arseniiv: you've never encountered the now-dead link to Cat's Eye Technologies on http://www.muppetlabs.com/~breadbox/intercal/ :)
15:32:10 <int-e> (I believe that's where I first found it.)
15:32:25 <int-e> `grwp box
15:32:28 <HackEso> boxmodel:boxmodel is how we figure out how big Taneb's cage is going to be. \ hackego:HackEgo, also known as HackBot, is a bot that runs arbitrary commands on Unix. See `help for info on using it. You should totally try to hax0r it! Make sure you imagine it's running as root with no sandboxing. HackEgo is the slowest bot in all Mexico! \ match:Can a match box? No, but a tin can. \ paste:"Paste" is a short story by Henry James. Its contents have been cut in
15:37:31 <arseniiv> this Cardboard Prolog challenges me to write something in another language but I’m lazy. I even hadn’t finished that metavariable proof checker yet, I’m not happy with a hacky β-reduction rule which would allow me to finish that thing and I don’t want to think how could I manage without that, and anyway no one wants that engine at all so what’s the use
15:47:15 <arseniiv> int-e: ah. Yes maybe if I was more old and more appreciated INTERCAL…
15:48:48 <arseniiv> `? cut elimination
15:48:49 <HackEso> The cut-elimination theorem states that any Prolog program written using the cut operator ! can be rewritten without using that operator.
15:48:59 <arseniiv> whoa I didn’t expect
15:49:12 <arseniiv> and really funny
15:49:23 <arseniiv> `? branch-cut elimination
15:49:24 <HackEso> branch-cut elimination? ¯\(°​_o)/¯
15:49:29 <arseniiv> `? branch cut
15:49:31 <HackEso> branch cut? ¯\(°​_o)/¯
15:49:33 <arseniiv> `? cut
15:49:34 <HackEso> cut? ¯\(°​_o)/¯
15:49:39 <arseniiv> `? cat
15:49:40 <HackEso> Cats are cool, but should be illegal.
15:49:52 <arseniiv> ah I already knew that, it seems
15:49:58 <arseniiv> fungot: is that true?
15:49:59 <fungot> arseniiv: im coding enqueue to insert it into the kernel core, because well they are procedures no it's not.
15:50:28 <arseniiv> fungot are you in a self-contradictory mood today, huh?
15:50:29 <fungot> arseniiv: that sentence, either. :) difference is, dr. watson just sends an error report off to microsoft and objects, what would one gain from an idl separate from scheme code
15:51:42 <arseniiv> I certainly didn’t know IDL could be made into scheme code
15:51:56 <arseniiv> `? IDL
15:51:57 <HackEso> IDL? ¯\(°​_o)/¯
15:52:01 <arseniiv> thank gods
15:52:54 <int-e> arseniiv: INTERCAL was the first or second esolang I've encountered (I don't know whether Brainfuck came first or second). So it made a lasting impression.
15:54:01 <int-e> But there were also far fewer esolangs around to pick from.
15:54:21 <int-e> And no esolangs.org :)
15:54:37 <Taneb> Fun fact: the first programming language I learnt was Piet
15:55:02 <Taneb> Which probably goes some way to explaining how I try and learn how a program works
15:55:05 <int-e> Ook.
15:55:12 <Taneb> That was second
15:55:14 <arseniiv> int-e: there was a time when I thought about conlangs and esolangs almost entirely on a basis of (Russian) Wikipedia pages on them, which were few (and still are; I don’t understand what criteria are there to include precisely that selection but it seems unchanged over the years)
15:55:33 <Taneb> (the first esolang I made, which I think might still exist as a word document on my parents' computer, is an extension to Ook)
15:56:25 <int-e> It's funny that DMM basically inhabits two extremes in the originality spectrum for esolangs :)
15:57:03 -!- hakatashi has quit (Remote host closed the connection).
15:57:05 <arseniiv> happily that wikipedia selection seemed to include FALSE, it gave me several ideas and that’s why each my concatenative language will have [...] lambda brackets
15:57:31 <arseniiv> I also saw them in some forth variation but don’t know which first
15:58:22 -!- cpressey has quit (Quit: Old like a FOX).
15:58:47 <arseniiv> (DMM?)
15:58:53 <int-e> arseniiv: Oh technically I guess I learned about BlooP and FlooP before the other two, but I didn't consider them as esoteric languages.
15:58:53 -!- hakatashi has joined.
15:59:09 <arseniiv> ah, GEB
15:59:15 <int-e> arseniiv: The author of IWC. ;)
15:59:19 <Taneb> arseniiv: David Morgan-Mar, webcartoonist and esolang creator
15:59:48 <arseniiv> I want to write a book like GEB, and also unlike it, so it should be more practical, but nonetheless eclectic and varied and crazy but I don’t have a chapter plan still
16:00:22 <int-e> that sounds like a good place to start ;)
16:00:22 <arseniiv> Taneb: thanks! Didn’t heard about him before
16:00:46 <arseniiv> and what’s IWC?
16:00:48 <arseniiv> :D
16:00:59 <int-e> arseniiv: Tsk, you fell for it :)
16:01:05 <int-e> http://www.irregularwebcomic.net/
16:01:10 <arseniiv> ah
16:01:39 <arseniiv> why wouldn’t I fall for an unknown abbreviation, though
16:01:55 <arseniiv> I only know AAAAA
16:02:03 <int-e> arseniiv: I don't know, but it was all according to plan.
16:02:43 <int-e> alliteration and abbreviation addicts anonymous
16:02:54 <arseniiv> hm a chapter about steganograophy could be steganographed
16:03:20 <arseniiv> no no no it was a-something association against abusing abbreviations
16:03:21 <Taneb> What about stenography
16:03:41 <arseniiv> if I would write that book it may include a chapter on steganography
16:04:07 <arseniiv> then it’s only logical to steganographize something in there
16:04:15 <int-e> . o O ( People can't memorize computer industry acronyms. )
16:05:18 <int-e> ("PCMCIA", if you remember that. Of course it really stands for "PC Memory Card Industry Association".)
16:06:35 <arseniiv> alliterations help illiterate to alternate leaping hopefully and laterally
16:07:23 <arseniiv> didn’t know about PCMCIA, clever
16:10:23 <Lykaina> gtg
16:10:26 -!- Lykaina has quit (Quit: leaving).
16:11:51 <arseniiv> ah it seems I’m familiar with many of DMM’s esolangs
16:16:53 <arseniiv> “Celestial Bureaucracy operates in the spiritual realm, unlike materialistic Western data structures.” => :D
16:18:56 <esowiki> [[Talk:Vafix]] N https://esolangs.org/w/index.php?oldid=66097 * Areallycoolusername * (+230) Created page with "The interpreter is good, but can you add file support so the extension you have provided for Vafix is useful? ~~~~"
16:19:52 <esowiki> [[Talk:Vafix]] https://esolangs.org/w/index.php?diff=66098&oldid=66097 * Areallycoolusername * (+97)
16:27:32 <arseniiv> hm I hoped there would be examples of Haifu code
16:27:54 <Taneb> iirc Haifu doesn't have a way of doing loops :(
16:38:53 <esowiki> [[Talk:Vafix]] https://esolangs.org/w/index.php?diff=66099&oldid=66098 * Areallycoolusername * (+500)
16:39:04 <esowiki> [[Talk:Vafix]] https://esolangs.org/w/index.php?diff=66100&oldid=66099 * Areallycoolusername * (+1)
16:42:08 -!- craigo has quit (Ping timeout: 245 seconds).
16:53:01 <esowiki> [[User:Dtuser1337/Sandbox]] https://esolangs.org/w/index.php?diff=66101&oldid=66043 * Dtuser1337 * (-1998) Blanking because it now in maintenance.
17:14:27 -!- imode has joined.
17:30:29 -!- \emph{grumble} has quit (Quit: \end{document}).
17:34:16 -!- FreeFull has joined.
17:37:14 -!- grumble has joined.
17:54:24 -!- tromp has quit (Remote host closed the connection).
18:09:32 -!- tromp has joined.
18:13:38 -!- tromp has quit (Ping timeout: 246 seconds).
18:19:59 -!- tromp has joined.
18:22:35 -!- tromp has quit (Remote host closed the connection).
18:23:11 -!- tromp has joined.
18:27:17 -!- tromp has quit (Ping timeout: 246 seconds).
18:35:21 -!- xkapastel has joined.
18:36:38 -!- rodgort has quit (Ping timeout: 276 seconds).
18:42:42 -!- rodgort has joined.
18:56:48 -!- Lykaina has joined.
19:10:27 -!- MDude has joined.
19:13:53 -!- Sgeo has quit (Read error: Connection reset by peer).
19:14:21 -!- Sgeo has joined.
19:15:16 -!- tromp has joined.
19:16:41 -!- tromp_ has joined.
19:19:26 -!- tromp has quit (Ping timeout: 246 seconds).
19:20:50 -!- tromp_ has quit (Ping timeout: 246 seconds).
19:25:59 -!- tromp has joined.
19:26:21 -!- Phantom_Hoover has joined.
19:43:01 -!- b_jonas has joined.
20:03:18 <b_jonas> `? !
20:03:19 <HackEso> ​! is a syntax used in Haskell and Prolog for solving evaluation order problems.
20:05:05 <b_jonas> arseniiv: there's even a wiki page: https://esolangs.org/wiki/David_Morgan-Mar
20:06:07 <b_jonas> https://esolangs.org/wiki/DMM redirecys there
20:08:54 <b_jonas> four of his esolangs are famous: HQ9++ (version of HQ9+ that also has an object-oriented abstraction but very different from Intercal classes), Chef (thematic language where programs look like cooking recipes), Piet (programs are paletted images), and Ook! (brainfuck dialect for apes)
20:13:18 <Hooloovo0> huh, didn't realize that he was the same person behind the webcomics
20:14:43 -!- Cale has quit (Ping timeout: 276 seconds).
20:20:30 <arseniiv> b_jonas: yeah, I went to that precise article today :D
20:26:52 -!- Cale has joined.
20:27:20 -!- Phantom_Hoover has quit (Ping timeout: 246 seconds).
20:27:31 -!- Phantom_Hoover has joined.
20:32:10 <b_jonas> `ehlist http://eheroes.smackjeeves.com/comics/2855868/terribly-meaninful-information/
20:32:12 <HackEso> ehlist http://eheroes.smackjeeves.com/comics/2855868/terribly-meaninful-information/: b_jonas
20:33:31 <esowiki> [[Fungot]] https://esolangs.org/w/index.php?diff=66102&oldid=38954 * B jonas * (+21)
20:34:31 <Lykaina> http://sif.lesidhetree.com/sara/echidna/Echidna%20v0_03a6.pdf
20:34:47 <b_jonas> hmm, we should probably have at least short articles about HackEso and lambdabot
20:34:53 <Lykaina> now, i will actually try an program in this
20:39:21 <Lykaina> b_jonas: what do you think echidna, as it is now, would be good for?
20:40:13 <b_jonas> Lykaina: I was busy today and tomorrow, so I didn't look at it
20:40:42 <Lykaina> linked the up-to-date compiled documentation
20:41:07 <Lykaina> in chat
20:41:46 <Lykaina> wait, you were busy tomorrow?
20:41:58 <b_jonas> not yet
20:42:00 <b_jonas> but I will be
20:43:23 -!- hppavilion[1] has quit (Ping timeout: 276 seconds).
20:44:46 <Lykaina> can you look at the pdf, or are you too busy?
20:44:54 <b_jonas> it's too late in the evening
20:44:59 <b_jonas> I can't think anymore
20:45:08 <b_jonas> normally I could but I'm tired
20:45:17 <b_jonas> so no
20:45:41 <b_jonas> I'll have to get up tomorrow
20:47:34 <Lykaina> anyone else wanna look at the pdf and see where the strengthes are?
20:52:03 -!- Lord_of_Life_ has joined.
20:54:39 -!- Lord_of_Life has quit (Ping timeout: 246 seconds).
20:54:39 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
21:11:25 <Lykaina> i have to go lie down. brb. (i'm on a screen session)
21:16:05 <imode> is there any mathematical foundation to dataflow programming?
21:18:33 <Lykaina> back
21:18:54 <Lykaina> what's that?
21:20:05 <imode> stuff like flow-based programming.
21:20:13 <imode> https://en.wikipedia.org/wiki/Dataflow_programming
21:29:55 <Lykaina> is mine dataflow programming?
21:30:08 <Lykaina> or are you referring to another?
21:30:36 <imode> was just wondering in general, not directed towards you or your language.
21:31:55 <Lykaina> phew
21:59:06 <Lykaina> i made a clock
21:59:46 <Lykaina> though, to be fair, i used 4 "special ops" to do it
22:00:56 <Lykaina> like that i call the extended op set "special ops"?
22:02:47 -!- hppavilion[1] has joined.
22:08:09 -!- FreeFull has quit.
22:10:46 -!- b_jonas has quit (Remote host closed the connection).
22:31:19 <imode> I wonder if I can replace my stack with a queue.
22:43:44 <Lykaina> what's the difference?
22:44:11 -!- Phantom_Hoover has quit (Ping timeout: 246 seconds).
22:47:38 <imode> several things are different. RPN no longer works as you'd think.
22:56:38 <imode> 1 2 3 4 + - * -> (1+2)*(3-4) for example.
22:57:17 -!- MrBismuth has quit (Ping timeout: 250 seconds).
22:57:17 -!- MrBusiness3 has joined.
22:57:18 <imode> control flow would be interesting.
22:58:32 <imode> evaluating conditions would be uh... hard?
23:00:04 <imode> you'd have to make copius use of rolling the queue to seek to parameters.
23:05:31 <esowiki> [[Talk:Vafix]] M https://esolangs.org/w/index.php?diff=66103&oldid=66100 * A * (+10) Split into bullet points
23:06:50 <Lykaina> who's A?
23:07:04 <esowiki> [[Vafix]] M https://esolangs.org/w/index.php?diff=66104&oldid=66096 * A * (+2) /* Execution scheme */
23:07:36 <esowiki> [[Talk:Vafix]] M https://esolangs.org/w/index.php?diff=66105&oldid=66103 * A * (+166)
23:10:07 * imode shrugs.
23:13:19 <esowiki> [[Talk:Vafix]] M https://esolangs.org/w/index.php?diff=66106&oldid=66105 * A * (+196)
23:18:43 <Lykaina> ugh...have to be able to do 32-bit arithmetic in echidna, or add to it until i can
23:20:02 <imode> why?
23:20:25 <Lykaina> it uses unsigned 16-bit integers
23:20:38 <Lykaina> no carry
23:20:45 <Lykaina> no borrow
23:21:53 <imode> why do you need 32 bit arithmetic.
23:22:04 <Lykaina> i don't
23:22:15 <imode> you can still detect carry and borrows.
23:22:20 <imode> by virtue of wraparound.
23:22:51 <imode> given two numbers, a and b, if a + b < a || a + b < b, a carry occurred.
23:23:06 <esowiki> [[Talk:Vafix]] M https://esolangs.org/w/index.php?diff=66107&oldid=66106 * A * (+12)
23:23:30 <esowiki> [[Talk:Vafix]] M https://esolangs.org/w/index.php?diff=66108&oldid=66107 * A * (-14)
23:23:42 <Lykaina> imode: can you add parentheses?/
23:24:06 <imode> you can discard the latter part of that 'or' condition, so it's just `if(a + b < a){/*carry occurred*/}`
23:24:52 <Lykaina> how do you add a to ( b < a )?
23:25:05 <imode> huh? precedence, dude.
23:25:12 <imode> (a + b) < a
23:25:24 <Lykaina> i must be reallyy out of it
23:25:34 <imode> the sum of two numbers will always be greater than or equal to either number.
23:25:41 <esowiki> [[Talk:Vafix]] M https://esolangs.org/w/index.php?diff=66109&oldid=66108 * A * (+189)
23:25:46 <imode> provided those numbers are positive integers.
23:26:10 <imode> what's really going on behind the scenes is ((a + b) % INT_MAX) < a
23:29:26 <Lykaina> t @r =a =b p @r =a I0 t @s @s =1 -I0
23:30:16 <Lykaina> sorry, that's pseudo-echidna
23:32:04 <Lykaina> T @0003 =0000 =0001 P @0003 @0000 I0 T @0004 @0004 =0001 -I0
23:32:13 <Lykaina> that's echidna
23:35:05 <Lykaina> in other words: r=a+b; if(r<a) s=s+1;
23:35:27 <Lykaina> imode: you like?
23:38:18 <imode> looks neat.
23:38:34 <Lykaina> http://sif.lesidhetree.com/sara/echidna/Echidna%20v0_03a6.pdf
23:39:10 <Lykaina> "compiled documentation"
23:42:39 <Lykaina> still working on R and S, the Special Ops.\
23:47:30 <Lykaina> at the moment: R-ops all have 1 mem out and 2 value ins, where S-Ops have 2 mem outs and 1 value in
23:48:17 <Lykaina> i need to add another value to be supported by S
23:50:50 <Lykaina> brb
23:58:03 <arseniiv> @tell b_jonas <b_jonas> hmm, we should probably have at least short articles about HackEso and lambdabot => seems reasonable!
23:58:04 <lambdabot> Consider it noted.
2019-09-12
00:01:13 <Lykaina> back
00:02:17 <Lykaina> gonna set out out in in on both r and s
00:02:40 <imode> reasoning about arithmetic using queues is uh... confusing.
00:03:27 <Lykaina> 3 out 2 in
00:04:17 <imode> https://hastebin.com/utigeyadaq.md
00:04:58 <Lykaina> i mean 2 out 3 in
00:05:20 <Lykaina> as max for the R- and S-ops
00:05:40 <Lykaina> gotta code this soon
00:07:24 <imode> it's really hard to sequence queue operations in your head, compared to a stack.
00:08:00 <imode> even then I had to resort to a roll operation that rotates the queue.
00:08:23 <imode> lemme see if I can write a factorial function.
00:09:07 <arseniiv> <imode> is there any mathematical foundation to dataflow programming? => hm AFAIR there is a single framework in Haskell to express all of them (I don’t remember is it closer to comonads or ArrowFix, what it was called) so maybe there is something in category theory to base all of it too. Though I have read only a few introductory things and don’t remember them by now
00:11:30 <arseniiv> or not, I seem to confuse that with stream processing or what it’s called, when each tick all the values are recomputed using a fixed set of rules, using only the previous available values or something like this, ultimately like a usual digital circuit
00:12:48 <esowiki> [[But Is It Art?]] https://esolangs.org/w/index.php?diff=66110&oldid=58846 * Qpliu * (+0) /* External resources */
00:13:03 <arseniiv> the last thing is of course more or less simple so the question is probably not about that
00:20:47 -!- arseniiv has quit (Ping timeout: 246 seconds).
00:21:30 <esowiki> [[Talk:Intramodular Transaction]] N https://esolangs.org/w/index.php?oldid=66111 * Qpliu * (+383) Created page with "An alternative reverse bits: main input = reverse input trailer input; trailer input = ? input trailer ..input input; reverse input output = ? input ? .input reverse ..inpu..."
01:22:39 -!- tromp has quit (Read error: Connection reset by peer).
01:35:50 <imode> I haven't even thought of how I'd translate that quadratic formula to an actual _function_... jesus.
02:00:10 -!- Phantom_Hoover has joined.
02:01:43 -!- xkapastel has quit (Quit: Connection closed for inactivity).
02:08:23 -!- Phantom_Hoover has quit (Ping timeout: 276 seconds).
02:22:17 <imode> seems like a register machine requires indirect addressing to be conveniently turing complete, else you're going to be spending your time encoding your TM tape into one of the registers.
02:33:36 <imode> I'm so indecisive with what I want to devote my time doing. I've tried stack machines and queue machines with some fancy logic on top.
02:33:53 <imode> can't seem to find just the right model.
02:39:36 <Lykaina> http://sif.lesidhetree.com/sara/echidna/Echidna%20v0_03a7.pdf
02:41:52 -!- craigo has joined.
02:42:17 <Hooloovo0> why is it called echidna?
02:44:15 <kmc> hi Hooloovo0
02:44:21 <Hooloovo0> hi
02:45:13 <kmc> what's new?
02:45:55 <Hooloovo0> working on my VCF midwest demo
02:46:08 <Hooloovo0> and also thinking about a paper for my ethics class
02:47:06 <Hooloovo0> demo is TI calculators + a vax, and
02:47:23 <kmc> what's VCF?
02:47:30 <Hooloovo0> vintage computer festival
02:47:32 <kmc> oh
02:47:34 <kmc> when is that?
02:47:38 <kmc> is that the thing @ the computer history museum?
02:47:54 <Hooloovo0> VCF west is at the CHM, yeah
02:48:04 <Hooloovo0> there's a couple other ones scattered around the country
02:48:23 <Hooloovo0> they have pretty boring names if you ask me
02:48:26 <kmc> oh, VCF west was last month
02:48:44 <kmc> CHM is a cool place
02:48:45 <Hooloovo0> vcfmw.org is the one I'm going to, this weekend
02:48:45 <kmc> I want to go back
02:49:02 <Hooloovo0> I was kind of disappointed
02:49:16 <Hooloovo0> they definitely have a bunch of cool stuff... but only a couple things are turned on
02:49:34 <kmc> my wife works 5 min away from there
02:49:35 <Hooloovo0> if you go, definitely make sure you get to see the IBM demo
02:49:38 <kmc> yeah, that's true
02:50:37 <Hooloovo0> hmm, if you show up with your own punch cards, I wonder if they'd let you run them through the 1401...
02:51:02 <Hooloovo0> what are you up to?
02:51:56 <kmc> lazy day
02:52:01 <kmc> did some grocery shopping, that's about it
02:53:03 <Lykaina> 22:42:17 < Hooloovo0> why is it called echidna?
02:53:14 <Lykaina> Answer: i forgot
02:53:28 <Lykaina> there was a good reason, though
03:06:41 -!- tromp has joined.
03:08:00 -!- tromp_ has joined.
03:10:54 -!- tromp has quit (Ping timeout: 246 seconds).
03:12:44 -!- tromp_ has quit (Ping timeout: 276 seconds).
03:23:37 <Lykaina> http://sif.lesidhetree.com/sara/echidna/Echidna%20v0_03a7-fix.pdf
03:35:46 <Lykaina> well, Echidna not, it is hard to program in.
03:36:44 -!- tromp has joined.
03:41:20 -!- tromp has quit (Ping timeout: 276 seconds).
03:41:22 <shachaf> Linux stack growth behavior was changed apparently: https://github.com/torvalds/linux/commit/1d8ca3be86ebc6a38dad8236f45c7a9c61681e78
03:41:57 <shachaf> It used to check %rsp against the fault address on page faults, and grow the stack if %rsp was lower.
03:43:47 <Lykaina> now i remember
03:44:56 <Lykaina> i picked echidna because the first echidna, which was very different, needed to start with the letter 'e'
03:45:15 <Lykaina> and be an animal, as that was my convention
03:46:12 <Lykaina> this echidna was a lot closer to the first ecidna than to calamari or hydra
03:46:50 <Lykaina> (those are unusuable)
03:47:28 <Lykaina> next one i make will probably be calamari
03:47:39 <Lykaina> as in, using that name
03:47:42 -!- hppavilion[2] has joined.
03:48:50 <Lykaina> *my* hydra might not have been esoteric
03:49:10 <Lykaina> no relation to the hydra on the wiki
03:50:28 -!- hppavilion[1] has quit (Ping timeout: 265 seconds).
03:52:37 <Lykaina> i don't think the original Echidna was esoteric, but it was a pain in the ass. It shares some code with the current Echidna, which I believe to be esoteric.
03:58:45 -!- hppavilion[1] has joined.
04:01:38 -!- hppavilion[2] has quit (Ping timeout: 240 seconds).
04:31:11 -!- tromp has joined.
04:35:36 -!- tromp has quit (Ping timeout: 246 seconds).
04:43:00 <imode> https://hastebin.com/elifuxehir.md spent the evening working out what the quadratic formula might look like in a queue-based Forth.
04:45:05 <imode> 38 instructions vs. the 31 for Forth on rosetta code.
04:45:19 <imode> difficult. but interesting
05:03:57 <Lykaina> hi
05:08:27 <imode> hi.
05:20:23 -!- imode has quit (Ping timeout: 246 seconds).
05:22:28 <esowiki> [[User:CarlosLuna]] M https://esolangs.org/w/index.php?diff=66112&oldid=66084 * CarlosLuna * (+14)
05:27:35 <Lykaina> night
05:29:16 -!- Lykaina has quit (Quit: leaving).
06:19:09 -!- tromp has joined.
06:23:50 -!- tromp has quit (Ping timeout: 276 seconds).
06:24:56 -!- imode has joined.
06:26:19 -!- tromp has joined.
06:30:59 -!- tromp has quit (Ping timeout: 276 seconds).
06:59:02 -!- tromp has joined.
07:20:36 <imode> ...hmm.
07:20:53 <imode> my factorial algorithm got shorter once I swapped to a queue.
07:28:59 <imode> designing an 'if' statement with a queue is a little tougher. the body of the if statement may do work that gets in the way of signalling the next block.
07:29:51 <imode> a good primitive might be "roll to the last element of the queue".
07:53:12 -!- Frater_EST has joined.
08:14:59 -!- imode has quit (Ping timeout: 276 seconds).
08:23:59 <esowiki> [[Talk:AAAAAAAAAAAAAA!!!!]] https://esolangs.org/w/index.php?diff=66113&oldid=65790 * YamTokTpaFa * (+374) /* Command changing commands and operations */ new section
08:32:26 -!- Phantom_Hoover has joined.
08:41:26 -!- tromp has quit (Remote host closed the connection).
08:42:36 -!- hppavilion[1] has quit (Remote host closed the connection).
08:44:06 -!- hppavilion[1] has joined.
08:55:17 -!- Lord_of_Life has quit (Ping timeout: 276 seconds).
08:56:25 -!- Lord_of_Life has joined.
09:09:22 <esowiki> [[Alisj]] https://esolangs.org/w/index.php?diff=66114&oldid=43587 * YamTokTpaFa * (+24)
09:16:30 -!- tromp has joined.
09:17:25 <esowiki> [[Parent the Sizing]] https://esolangs.org/w/index.php?diff=66115&oldid=55580 * YamTokTpaFa * (+9) +WIP
09:17:41 -!- cpressey has joined.
09:22:43 -!- Frater_EST has left.
09:23:04 <cpressey> Good morning. I just realized that both the Prompt monad and the Operational monad *require* you to define the insert with a GADT. I also suspect this is how they can guarantee the resulting monad adheres to the monad laws.
09:23:40 <Taneb> cpressey: I think it's more that GADTs are the only way to get any use out of them
09:24:43 <esowiki> [[Chromos]] https://esolangs.org/w/index.php?diff=66116&oldid=60901 * YamTokTpaFa * (+51)
09:25:14 <Taneb> ProgramT Identity m a isn't particularly unreasonable, although not very useful
09:25:39 <esowiki> [[TwoFiftyFive]] https://esolangs.org/w/index.php?diff=66117&oldid=65725 * YamTokTpaFa * (+24)
09:26:16 <cpressey> I think I don't know enough about this to ask a sensible follow-up question
09:26:37 <Taneb> That's OK, I don't know enough to answer one
09:26:56 <esowiki> [[SLOBOL (2015 language)]] https://esolangs.org/w/index.php?diff=66118&oldid=63937 * YamTokTpaFa * (+34)
09:27:34 <esowiki> [[WILSON]] https://esolangs.org/w/index.php?diff=66119&oldid=46781 * YamTokTpaFa * (+23)
09:27:39 <shachaf> cpressey: What's the distinction between Prompt and Operational? I thought people used those words to mean the same thing.
09:28:30 <shachaf> Whichever one we were talking about the other way, it should be a monad regardless of the type constructor you give it.
09:31:49 <cpressey> shachaf: What kinds of type constructors are you allowed to give it? Is List a type constructor? Can you give it List?
09:32:34 <shachaf> I don't know what "it" is.
09:33:17 <cpressey> The "it" in my question was the final "it" in your sentence that started with "Whichever".
09:33:34 <shachaf> Oh, that's a good point.
09:33:36 <shachaf> I think the answer is yes, and it'll give you a particular kind of n-ary trees.
09:33:59 <shachaf> This one: data Tree a = Leaf a | Branch [Tree a]
09:34:22 <shachaf> (With a pretty complicated encoding.)
09:36:20 <cpressey> OK, to back up: yes, I think the distinction between Prompt and Operational is not very important, they're just two different APIs/libraries/implementations of the same basic idea.
09:36:29 <shachaf> What are the definitions?
09:37:51 <cpressey> Taking Operational b/c it seems slightly simpler to understand, the definition is: type Program instr = ProgramT instr Identity
09:37:58 <cpressey> "The primitive instructions are given by the type constructor instr :: * -> *."
09:38:03 <cpressey> I don't think that includes List.
09:38:32 <cpressey> I'm not sure it includes anything that isn't a GADT?
09:38:58 <cpressey> I guess ProgramT's defintion is more fundamental
09:39:17 <cpressey> but similar: data ProgramT instr m a ... with "The primitive instructions are given by the type constructor instr :: * -> *."
09:39:20 <shachaf> * is the kind of types, so it certainly includes List.
09:39:31 <shachaf> Uh, so * -> * certainly includes List.
09:39:47 <cpressey> ?!?
09:39:48 <shachaf> Since List takes types (like Int : *) to types (like List Int : *)
09:40:29 <cpressey> I'll try putting List there but based on my futzing around with it yesterday I 100% expect ghc to complain.
09:41:00 <shachaf> Is it https://hackage.haskell.org/package/operational-0.2.3.5/docs/Control-Monad-Operational.html ?
09:45:21 <shachaf> I'm surprised that it says "Bind :: ProgramT instr m b -> (b -> ProgramT instr m a) -> ProgramT instr m a".
09:45:55 <shachaf> I haven't thought about how to make this a monad transformer, but in the non-transformer case I'd expect "Bind :: instr b -> (b -> Program instr a) -> Program instr a"?
09:46:15 <shachaf> Recursing on both sides seems to make it non-canonical?
09:48:10 <cpressey> It is that module, yes
09:48:15 <shachaf> Oh, you're probably supposed to use ProgramViewT.
09:49:30 <shachaf> Anyway, this certainly "works" for instr=List, it's just a very roundabout way to express that type.
09:51:38 <cpressey> :t []
09:51:39 <lambdabot> [a]
09:52:35 <cpressey> import Control.Monad.Operational ; type MyListProgram s a = Program ([s]) a
09:53:00 <cpressey> ghc complains: The first argument of ‘Program’ should have kind ‘* -> *’, but ‘[s]’ has kind ‘*’
09:53:07 <shachaf> I think you mean Program [] a
09:53:16 <shachaf> What is s?
09:53:42 <cpressey> That works, for reasons I do not at all understand.
09:53:57 <shachaf> Because Haskell syntax is confusing?
09:54:05 <shachaf> Try Maybe instead of []
09:54:23 <shachaf> Hmm, Maybe isn't a very good example except syntactically.
09:54:44 <cpressey> Maybe also works. Well, at least this establishes that it doesn't *have* to be a GADT, which was half of my question.
09:54:59 <cpressey> Whether the result of doing this is useful for no, that's another matter.
09:55:21 <shachaf> Hmm. I think it's useful.
09:55:23 <cpressey> Is there something like :t that shows the kind of a type constructor?
09:55:29 <shachaf> Yes, :k
09:55:41 <cpressey> That was my first guess but I was being cautious.
09:55:45 <cpressey> :k []
09:55:46 <lambdabot> * -> *
09:55:50 <cpressey> Okay then.
09:55:51 <shachaf> Well, no, I don't think any of this is actually that useful.
09:56:24 <shachaf> All this is pretty paged out of my memory, but I can try to clarify things if it's helpful.
09:56:34 <cpressey> Maybe not useful, but very fitting to #esoteric somehow.
09:56:36 <shachaf> How do you feel about this type: data Free a = Pure a | Free (f (Free f a))
09:57:45 <shachaf> I think there's an important underlying point about what monads are, or something, such that it makes the same amount of sense for any type constructor you pass to Program.
09:59:44 <cpressey> I have no feelings about that type except perhaps bewilderment.
10:00:15 <shachaf> OK.
10:00:37 <shachaf> Let's think about ways to invent I/O in Haskell, assuming you don't know any of this nonsense.
10:01:07 <shachaf> Here's one simple way to do it: main :: String
10:01:16 <shachaf> This is really just O, not I/O.
10:01:45 <shachaf> Simple enough?
10:02:14 <cpressey> Wait, where did I/O come from?
10:02:26 <shachaf> I think it's a useful concrete example.
10:02:49 <shachaf> If you prefer another one we can probably make it work too?
10:02:50 <cpressey> OK. Go on.
10:03:24 <shachaf> OK. The problem with this approach is that you can't do input.
10:03:47 -!- arseniiv has joined.
10:03:51 <shachaf> You could define main :: String -> String, but then the problem is that (modulo laziness) you do all the input upfront, and then all the output, which is pretty limited.
10:04:12 <shachaf> So what you want is a way to interleave input and output.
10:04:45 <shachaf> Makes sense?
10:05:25 <shachaf> Note that the idea of all of these things is that you have some external runtime system/interpreter that can take a Haskell value like main and interpret it together with the outside world.
10:06:25 <cpressey> On second thought maybe I/O isn't the best example.
10:07:29 <shachaf> Hm, why not?
10:07:52 <shachaf> (Actually the question is only whether it's good enough.)
10:08:55 <cpressey> It's not intuitive to me that interleaving input and output is desriable. In Javascript, as one example, it is not possible to interleave input and output. Events cause computations which enqueue more events.
10:09:30 <cpressey> You end up writing promises and state machines.
10:10:28 <cpressey> Also, it gives the impression that the only reason Haskell has monads is so that it can do I/O despite the handicap of being a lazy, referentially transparent language, and that is of course unfair to say.
10:11:23 <shachaf> OK. If you have another example I can probably use that one instead.
10:11:57 <shachaf> I think IO is kind of a special monad in Haskell in that it's maybe best understood as a free monad since we don't particularly have semantics for it.
10:12:02 <shachaf> (Among other ways it's special.)
10:12:24 <cpressey> OK, parsing. That's an actual use case. I want to produce an AST and consume some of the string (i.e. produce the remainder of the string) but I don't want to constantly write destructuring pattern matches.
10:12:39 <cpressey> If you know what I mean.
10:12:50 <cpressey> "Writer monad" I am guessing.
10:13:20 <cpressey> Or State, I suppose, you could treat the string as the state.
10:13:34 <shachaf> Parsing sounds pretty complicated.
10:13:54 <cpressey> What were you hoping to explain to me again?
10:14:19 <shachaf> I wanted to give some motivation for free monads such that nothing is too mystifying at any point.
10:14:53 <shachaf> Program is a kind of free monad and free monads are especially relevant when you apply Program to functors.
10:16:40 <shachaf> I think interleaved I/O makes sense in JavaScript. You need interleaved I/O to write programs like main() { print("what's your name?"); let name = get_line(); print("hi, " + name); }
10:17:05 <shachaf> It's true that it's often done with callbacks but that's true in Haskell too.
10:17:49 <cpressey> In Javascript you *have* to do it with callbacks (or promises, which are glorified callbacks).
10:17:51 <shachaf> I'm also at most 3/4 coherent at this hour, probably less.
10:18:21 <shachaf> In Haskell you also have to do it with callbacks (even more than in JavaScript, where some systems have synchronous APIs).
10:19:18 <cpressey> If 'do' notation is just callbacks in disguise.
10:19:27 <shachaf> Yep, it is.
10:19:48 <shachaf> How about I finish the I/O example which is very simple, and then I'll think of another example.
10:20:19 <shachaf> If you have a program operating on input bits and producing output bits, you can define a type like this:
10:21:08 <shachaf> data P = Done | Out Bit P | In (Bit -> P)
10:22:41 <cpressey> OK
10:24:22 <shachaf> As an extra bonus we'll have our programs produce a value, as in
10:24:37 <shachaf> data P a = Done a | Out Bit (P a) | In (Bit -> P a)
10:25:44 <shachaf> And of course we could add more constructors to have more behaviors.
10:25:54 <shachaf> P is used to define interactions, but it's really just a kind of tree. Right?
10:26:11 <shachaf> As in, you could write "data P a = Out Bit (P a) | In (P a) (P a)"
10:27:29 <cpressey> "In (P a) (P a)"?
10:27:52 <shachaf> Does the previous version make sense?
10:28:20 <shachaf> (Bit -> x) has the same information as (x, x) specifying a value for the 0 and 1 cases.
10:29:12 <cpressey> The previous version of P is a complicated kind of tree, okay.
10:30:24 <shachaf> Right. It has one kind of leaf -- that's Done -- and a slightly unusual shape of branches, which is one of two things -- either an output "branch" (which has a bit and one child) or an input branch (which has two children).
10:30:40 <shachaf> This tree is probably infinite but it describes our entire program.
10:31:30 <cpressey> OK.
10:31:53 -!- Phantom_Hoover has quit (Ping timeout: 246 seconds).
10:31:56 <shachaf> The branch shape, in particular, is this: data F a = OutF Bit a | InF (Bit -> a)
10:32:48 <shachaf> If you abstract the branch shape, you can get the type I mentioned above: data Tree f a = Leaf a | Branch (f (Tree f a))
10:33:54 <cpressey> OK.
10:34:45 <shachaf> I feel like I'm not being that helpful here.
10:37:00 <shachaf> The general point is that this kind of tree describes an interaction with something, and you can have some external program interpret the tree in some way.
10:37:40 <shachaf> OK, another example is making probabilistic choices.
10:38:38 <shachaf> You can have a probability tree where each branch is labeled with a probability and you pick the left side with that probability.
10:39:14 <shachaf> data Tree a = Done a | FlipCoin Probability (Tree a) (Tree a)
10:39:37 <shachaf> An "interpreter" for this tree might sample a particular path through it, or evaluate all the possibilities exhaustively.
10:41:44 <cpressey> OK.
10:42:27 <cpressey> I guess I can try to distill my question.
10:42:34 <cpressey> You keep talking about "interpreters".
10:43:46 <cpressey> For each of these trees you define, you need an "interpreter" to walk it and make sense of it.
10:46:00 <cpressey> But, in the first example at least, part of the tree also has a function in it.
10:46:31 <cpressey> You can't "interpret" a function, you can only run it.
10:47:28 <cpressey> OK, that's not a question I guess.
10:47:50 <cpressey> I guess my question is: why is it intuitive to anyone to mix these two modes?
10:47:58 <shachaf> Hmm, this is about "interpreting" the "effects".
10:48:37 <shachaf> A Haskell program already knows how to do computation, but it doesn't know how to do probability, and it doesn't have a source of randomness and so on.
10:49:13 <shachaf> So we add the notion of random choice (which might be a function (Real -> a), or flipping a coin, or whatever), but we don't say how specifically it's implemented.
10:49:20 <esowiki> [[Talk:Epsilo]] N https://esolangs.org/w/index.php?oldid=66120 * YamTokTpaFa * (+153) /* Where is the source and detailed descriptions!? */ new section
10:50:00 <shachaf> Then we end up with this tree data structure which has all the computation built in, but yields to you whenever it needs to take one of these effect actions like flipping a coin.
10:50:19 <shachaf> Your interpreter just adds these extra abilities.
10:52:15 <cpressey> Defining a data structure to represent an external service, and then embedding function types in the data structure to represent the computation you're going to do with the data you get from the external service, gets you a data structure like this.
10:52:48 <shachaf> Yep.
10:52:53 <cpressey> And people like this.
10:53:56 <shachaf> Do you like this?
10:53:56 <cpressey> People go out of their way to write unification algorithms like this.
10:54:37 <cpressey> It doesn't really matter if I like it or not.
10:55:30 <cpressey> I shouldn't say "out of their way"; it probably becomes a learned habit after a while.
10:55:51 <cpressey> Writing it the other way, would be going out of their way.
10:56:25 <cpressey> shachaf: Thanks for the explanation.
10:57:35 <shachaf> `? this
10:57:36 <HackEso> This is something people on the channel like to talk about. We're often unsure what this is, though. Nobody likes this.
10:59:18 <shachaf> I'm going to sleep.
11:17:16 -!- hppavilion[1] has quit (Quit: Leaving).
11:19:06 -!- hppavilion[1] has joined.
11:20:09 -!- hppavilion[1] has quit (Client Quit).
11:20:56 -!- hppavilion[1] has joined.
11:27:10 <cpressey> Ehm, OK. In Javascript the "interpreter" is the thing that waits to dequeue an event, finds the handler(s) for the event, runs the handlers (which may add more events to the queue), and repeats.
11:28:36 <cpressey> You could probably define a type that describes this if you had to.
11:34:32 <cpressey> I mean, in some idealized model of Javascript running in a browser, where the handlers are pure functions, etc.
11:40:10 <cpressey> The word "trampoline" also comes to mind.
11:43:42 -!- Lykaina has joined.
11:53:06 -!- hppavilion[1] has quit (Ping timeout: 246 seconds).
12:30:04 <Lykaina> http://sif.lesidhetree.com/sara/echidna/Echidna%20v0_03a8.pdf
12:53:41 -!- xkapastel has joined.
13:16:40 <Lykaina> http://sif.lesidhetree.com/sara/echidna/Echidna%20v0_03a8-fix.pdf
13:17:06 <Lykaina> clock example was outputting hours:minutes:minutes
13:17:39 <Lykaina> oops
13:46:27 <Lykaina> oh no...not another bug in documentation
14:00:30 <cpressey> arseniiv: If it means anything, I also have a half-written proof-checker with some issues with beta-reduction and metavariables, sitting in my experiments repo, which I'd like to continue on, but I don't really know where it's going
14:00:51 <Lykaina> http://sif.lesidhetree.com/sara/echidna/Echidna%20v0_03a8-fix2.pdf
14:03:48 <arseniiv> cpressey: thanks, I’ll look at it some time!
14:04:53 <Lykaina> i'll print out the compiled docs and go through them later.
14:05:14 <Lykaina> those were just the key ones i noticed
14:21:45 <cpressey> arseniiv: Oh, I haven't released the code publicly, it's still half-formed. You mentioned you had something similar I think.
14:26:27 <arseniiv> acpressey: yeah. My code is in a Python notebook :D
14:26:45 <arseniiv> hm why there was “a”
15:17:14 -!- sprocklem has quit (Ping timeout: 240 seconds).
15:31:01 <Lykaina> screw it. i'm going from 0.03a8 to 0.10a0
15:31:58 <Lykaina> after all the documentation fixes, it deserved a new version
15:55:48 -!- b_jonas has joined.
16:06:15 -!- tromp_ has joined.
16:09:53 -!- tromp has quit (Ping timeout: 245 seconds).
16:31:22 -!- cpressey has quit (Quit: You'll pry my programmable semicolons from my cold, dead hands).
16:40:05 -!- atslash has quit (Quit: This computer has gone to sleep).
16:51:49 -!- FreeFull has joined.
16:57:02 -!- Phantom_Hoover has joined.
16:57:52 -!- MrBismuth has joined.
16:59:49 -!- imode has joined.
17:00:50 -!- MrBusiness3 has quit (Ping timeout: 276 seconds).
17:08:20 <imode> finally made an `if` statement. had to add a `last` operator, which rolls to the last element of the queue.
17:12:38 <imode> https://hastebin.com/iwafudayes.rb
17:22:34 -!- sprocklem has joined.
17:34:48 <int-e> what a miserable communication failure
17:34:54 <int-e> uhm.
17:35:19 <int-e> I guess that makes a good self-referential statement.
17:37:26 <b_jonas> int-e: did you call a shop on phone, they said they had a product or service, but when you went there in person to buy it, they claim they never had it, denied the phone conversation, and tried to upsell?
17:38:10 <int-e> b_jonas: no.
17:39:49 <int-e> b_jonas: You might enjoy https://notalwaysright.com/all/ ;-) (maybe only some subcategories; your store may belong to "not always legal")
17:40:00 <int-e> *story
17:40:25 <b_jonas> int-e: eww no, that site is addictive and low-quality in the long run. I no longer read it.
17:40:49 <b_jonas> I wasted enough time on iy
17:40:54 <int-e> :P
17:41:21 <int-e> It's better than thedailywtf :P
17:57:06 -!- craigo has quit (Ping timeout: 246 seconds).
17:57:41 <Lykaina> hhi
17:59:13 <arseniiv> imode: looks comlicated
17:59:37 <arseniiv> complicated*
18:16:08 -!- sprocklem has quit (Ping timeout: 245 seconds).
18:36:11 <imode> arseniiv: yeah, took me a while. though you get good at queue juggling the more you do.
18:36:41 <imode> I wonder if you used a dequeue instead.
18:37:56 <arseniiv> imode: deque?
18:38:09 <imode> sorry, deque. :P
18:39:12 <arseniiv> I wonder whether there is some natural occurence of deque, like of stack and queue in DFS and BFS
18:39:47 <arseniiv> imode: np, I secretly hoped there is a new data structure lurking nearby
18:39:58 <imode> haha.
18:42:04 <imode> I think you could make a rather usable language if you used a deque, but toggle between where enqueuing and dequeueing take place with operations.
18:42:23 <imode> so you could use it like a stack and a regular queue.
18:42:40 <imode> this means RPN works, but deep stack access is possible.
18:43:31 <arseniiv> also here’s a bad joke I made just few minutes ago and was translating properly: “What do you prefer writing, Sp or tr?” — “I prefer to wipe my shoes”
18:44:22 <arseniiv> hm well it’s even worse in English where trace ≠ track
18:46:01 <b_jonas> arseniiv: you mean a full deque, as oppoed to a queue where you can push on either end but pop only from the start?
18:46:31 <int-e> Wtf is Sp, if not span (which has nothing to do with trace...)?
18:46:33 <arseniiv> b_jonas: either one suffices maybe
18:46:35 <int-e> Oh
18:46:39 <arseniiv> arseniiv: Spur IIRC
18:46:41 <int-e> It's the german "Spur".
18:47:16 <int-e> I should've recognized that immediately. But no... I forgot all the german linear algebra terms it seems.
18:49:46 <arseniiv> I wouldn’t even have an idea of Sp vs. tr if not for encountering Sp yesterday by pure chance
18:51:58 <arseniiv> also what do you all think is more natural for a “half-deque”, pushing from bith sides but popping from only one, or popping from both and pushing from one?
18:52:49 <arseniiv> I don’t know how often these are needed in general
18:52:54 <b_jonas> arseniiv: pushing on both sides and popping from one, because (1) you can implement it with a singly linked list, and
18:53:34 <b_jonas> (2) you can use it to implement a priority queue with only two possible weights, if you don't care which element with the lowest weight is popped
18:54:04 <int-e> arseniiv: I still don't get the joke. It must be really bad ;-)
18:55:06 <b_jonas> wait, aren't those the same, as in Spur vs trace?
18:55:33 <arseniiv> int-e: like, the second person doesn’t leave tracks so they have no need to call trace either way
18:56:17 <b_jonas> or maybe it's trail or track...
18:56:17 <arseniiv> I wonder in what languages trace and foot track are homonymous
18:56:27 <arseniiv> or trail!
18:56:30 <arseniiv> yes
18:56:45 <arseniiv> didn’t remember that one
18:57:02 <int-e> Hrm. "Spur" is a curious word.
18:58:03 <arseniiv> though I think of a trail as something long and linguistically uncountable and a track as something countable. Though there are tracks like paths or roads, these ones would be different
18:58:19 <int-e> But 'trace' covers a similar spectrum of meanings.
18:58:35 <arseniiv> b_jonas: also thank you about deque
18:59:04 <arseniiv> int-e: I didn’t really thought on it before now
19:00:06 <arseniiv> my fluency is not too high yet maybe, so these things don’t occur as idle thoughts, only when consciously playing
19:02:05 <int-e> viscous thoughts
19:02:17 <arseniiv> though I already start to make typos of the “to” instead of “too” kind. I hoped that wouldn’t come
19:02:21 <b_jonas> int-e: nah, I think that's a more normal word than the crazy English triplet trace, track, trail, all three of which can be noun or verb, and any two persons I ask explain the difference among them differently
19:03:40 <int-e> hmm tracking animals by tracing trails
19:04:41 <b_jonas> road vehicles that go to places where there are no roads or even paths can be tracked, which means that there's a continuous strip on two of their wheels and that strip is what gives them traction
19:05:38 <Lykaina> http://sif.lesidhetree.com/sara/echidna/Echidna%20v0_10a0.pdf
19:06:43 <arseniiv> there’s even a DAW called Tracktion. Though they’ve renamed it a while ago
19:12:53 -!- sprocklem has joined.
19:17:16 <esowiki> [[Wutlang]] M https://esolangs.org/w/index.php?diff=66121&oldid=50063 * Dtuser1337 * (-1) /* Commands */
19:17:20 -!- Sgeo has quit (Ping timeout: 276 seconds).
19:38:56 -!- sprocklem has quit (Ping timeout: 246 seconds).
20:39:41 -!- arseniiv has quit (Read error: Connection reset by peer).
20:40:00 -!- arseniiv has joined.
20:45:54 -!- b_jonas has quit (Quit: leaving).
20:53:35 -!- Lord_of_Life_ has joined.
20:56:35 -!- Lord_of_Life has quit (Ping timeout: 265 seconds).
20:56:41 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
20:59:29 <imode> writing a factorial function with a queue is uh... irritating.
20:59:45 <imode> at least I think.
21:03:17 -!- xkapastel has quit (Quit: Connection closed for inactivity).
21:04:18 <int-e> imode: Shouldn't be hard as long as you know the size of the queue at each step?
21:04:47 <int-e> I'd expect things to be fairly sane in queue-land until you want to do recursion.
21:05:17 <int-e> (And no, the factorial function isn't recursive unless you want it to be.)
21:05:44 <imode> I know, I wrote an iterative version, now I'm trying to write a recursive version.
21:06:17 <int-e> I see.
21:06:39 <int-e> Yeah, good luck, have fun!
21:06:46 <imode> haha, thanks.
21:06:52 <imode> I got _one_ iteration down.
21:07:35 <int-e> (I guess I'd do the irritating thing where there's a marker in the queue that indicates the end of a simulated stack.)
21:08:00 <imode> yeah, that's the sane part.
21:08:13 <imode> the insane thing is queue juggling via rolling and a 'last' operator, that seeks to the last element in the queue.
21:08:48 <imode> https://hastebin.com/jegujageqe.rb the iterative version.
21:09:29 <imode> the first segment is the shortcode, the middle segment is the "readable" version, the final segment is the line noise version of the first segment.
21:13:06 <imode> 'roll' just dequeues and enqueues an item.
21:13:35 <int-e> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> <script type="text/javascript" src="highlight.min.js"></script> <script type="text/javascript" src="application.min.js"></script>
21:13:41 * int-e sighs.
21:14:19 <int-e> (hatebin)
21:14:59 <imode> I take it I should use hatebin then. :P
21:15:18 <imode> hastebin was down for a non-insignificant amount of time when I last used it.
21:18:30 <int-e> imode: Ugh, does that exist (of course it does, meh.)
21:18:47 <imode> it does. :D
21:18:53 <imode> you'd like it. stripped down.
21:18:58 <int-e> <script async src="https://www.googletagmanager.com/gtag/js?id=UA-116452247-1"></script>
21:19:04 <int-e> I don't see anything to like.
21:19:17 <imode> well, I didn't know what you were complaining about. I assumed jquery and highlight.
21:19:29 <int-e> I'm using the Debian pastebin for a reason :)
21:19:37 <int-e> imode: Javascript.
21:19:41 * imode shrugs.
21:20:21 <int-e> Mandatory... fetching the content with XHR. There's no *good* reason for doing that in a pastebin.
21:20:24 -!- ghost2501 has joined.
21:20:26 <imode> until someone does away with the idea of a web browser with arbitrarily executable code being delivered to you, javascript is here to stay. I say that through gritted teeth.
21:22:06 <int-e> It's a losing fight. But it's also a great filter.
21:22:35 <int-e> 90% of the time when a site demands JS I decide I wasn't *that* interested in the content in the first place.
21:24:18 -!- ghost2501 has left ("Leaving").
21:29:54 -!- atslash has joined.
21:34:15 <int-e> imode: Anyway, pastebins are one niche where I see *some* prospect of getting people to use non-JS variants. So I keep bringing it up.
21:39:02 <imode> I see.
21:47:52 -!- Sgeo has joined.
21:52:28 -!- Sgeo_ has joined.
21:54:03 -!- Sgeo has quit (Ping timeout: 245 seconds).
23:05:46 -!- sprocklem has joined.
23:08:25 -!- FreeFull has quit.
23:10:20 -!- sftp has quit (Excess Flood).
23:10:48 -!- sftp has joined.
23:25:38 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
23:35:29 <imode> forget factorial, generating a queue of descending integers is hard. :\
23:35:55 <shachaf> What do you need a queue of descending integers for?
23:36:56 <imode> breaking the problem into two tasks to unblock myself. generate the numbers, then you can interleave the multiplications, etc. into them.
23:37:18 <imode> 5 4 3 2 1 * * * * ...
23:37:21 <shachaf> Multiplying a queue of descending integers? What could that be for?
23:37:46 <imode> I'm working on a queue-based language.
23:37:56 <imode> seeing if I can do some basic things in it.
23:38:02 <imode> like, for instance, a recursive factorial function.
23:38:06 <shachaf> Oh!
23:38:09 <shachaf> I forgot factorial.
23:38:19 <imode> it's just a product of a range.
23:38:24 <imode> 5 * 4 * 3 * 2 * 1
23:38:28 <shachaf> Yes, but you said to forget it.
23:38:29 <imode> == 5!
23:38:41 <imode> ...
23:41:57 <esowiki> [[Encapsulation]] https://esolangs.org/w/index.php?diff=66122&oldid=66064 * Hakerh400 * (+6) Update computational class
23:45:33 <arseniiv> shachaf: lol
23:47:53 <esowiki> [[Intramodular Transaction]] https://esolangs.org/w/index.php?diff=66123&oldid=66018 * Hakerh400 * (+244) Update computational class
23:51:43 -!- atslash has quit (Quit: Leaving).
2019-09-13
00:23:42 <shachaf> `asm .byte 0xff, 0x35, 0xba, 0x0a, 0x20, 0x00
00:23:43 <HackEso> 0: ff 35 ba 0a 20 00 pushq 0x200aba(%rip) # 0x200ac0
00:23:50 <shachaf> Hmm, that's not right.
00:24:30 <shachaf> `asm .byte 0xff, 0x25, 0xba, 0x0a, 0x20, 0x00
00:24:31 <HackEso> 0: ff 25 ba 0a 20 00 jmpq *0x200aba(%rip) # 0x200ac0
00:24:33 <shachaf> That's the one I meant.
00:31:28 <shachaf> Oh, I misunderstood what was going on in the debugger somehow. That's actually reasonable.
00:51:31 -!- hppavilion[1] has joined.
00:52:38 <imode> y'know, I could cheat and just do `last` between every single operation and treat the queue as a stack...
01:20:10 <Lykaina> http://sif.lesidhetree.com/sara/echidna/Echidna%20v0_10a1.pdf
01:26:50 <imode> it seems like "seek to next last item" is a pretty powerful operation for queues. I wonder if it can be simulated using traditional queue ops and markers.
01:36:14 <arseniiv> imode: when I considered a typed concatenative language I thought it would be useful to make something like “list environment”, as in usual code `f g h`, f should be composable with g with h, and if one wants to make other constraints instead of composability, one would need to treat space between words differently,
01:36:14 <arseniiv> so there would be special brackets to tell that inside spaces have other meaning, and AFAIR I thought that to be expressible as a typeclass (I considered a haskellish type system)
01:36:14 <arseniiv> class ListLike a e where { init :: e; add :: a -> e -> e }
01:36:14 <arseniiv> though this seems too restrictive and I don’t remember if I came up with something smarter that time; anyway the environment defined by an instance of that then desugars like `[1 2 3]` → `add 3 (add 2 (add 1 init))`
01:36:14 <arseniiv> so maybe you could make an environment where each space means `last` :D
01:36:14 <arseniiv> but it’s a heavy machinery of course, one needs to implement an elegant way to describe what brackets these defined environments use, etc., syntactic matters
01:36:50 <imode> that's interesting... you'd need to have
01:37:01 <imode> spaces evenly balanced, then. or one space between each token.
01:37:34 * arseniiv ’s going to sleep
01:37:41 <imode> sweet dreams, thanks for the advice.
01:37:44 <arseniiv> imode: ah, I meant logical spaces
01:38:19 <arseniiv> like, what there is between parsed tokens (nothing, but let’s pretend)
01:38:35 <arseniiv> thank you too!
01:38:38 <imode> ah, gotcha.
01:38:52 <imode> yeah that ain't a bad idea.. hm.
01:38:55 <arseniiv> I’m late now, I should sleep 2x fast :D
01:39:02 <imode> lol.
01:40:38 <kmc> when i had general anaesthesia recently it felt like i was sleeping 8x as fast
01:40:55 <kmc> like I had a whole night's worth of really deep good sleep in an hour of wallclock time
01:41:08 <kmc> unlike the previous time it didn't feel like an instantaneous time jump
01:41:14 <kmc> i may have even dreamed
01:42:06 <kmc> that is a thing that happens, apparently
01:42:13 <imode> wild.
01:42:29 <kmc> yep
01:42:34 <kmc> not as wild as the galantamine dreams though
01:42:35 <kmc> oh man
01:43:38 -!- arseniiv has quit (Ping timeout: 246 seconds).
01:43:49 <kmc> if you want a truly esoteric dream experience, wake up after 4 hours, take 8mg galantamine, then go back to sleep
01:44:08 <kmc> the first time i did it, my dreams were intense and deeply-nested
01:44:19 <kmc> i gave up trying to write anything down because every time I tried I realized I was still dreaming
01:44:47 <kmc> when I finally woke up for real I exclaimed out loud "Wow! That was something."
01:45:09 <kmc> next time I think I'll take it with a small amount of LSD
02:17:52 <esowiki> [[Kov]] N https://esolangs.org/w/index.php?oldid=66124 * A * (+239) Created page with "[[Kov]] ([K]olmon[o]gro[v]) is a simple language inspired by [https://codegolf.stackexchange.com/questions/tagged/kolmogorov-complexity Kolmonogrov-complexity challenges]. C..."
02:18:49 <esowiki> [[Kov]] M https://esolangs.org/w/index.php?diff=66125&oldid=66124 * A * (+394)
02:20:57 <esowiki> [[Kov]] M https://esolangs.org/w/index.php?diff=66126&oldid=66125 * A * (+156)
02:21:40 <esowiki> [[Kov]] M https://esolangs.org/w/index.php?diff=66127&oldid=66126 * A * (+173)
02:30:04 <esowiki> [[Kov]] M https://esolangs.org/w/index.php?diff=66128&oldid=66127 * A * (+634)
02:31:18 <kmc> how do i get a randomly selected quote from HackEso?
02:31:23 <kmc> matching some regex
02:31:25 <kmc> or list of all quotes
02:34:07 <kmc> ok, i did what i wanted with `` grep kmc quotes | paste
02:34:17 <kmc> now i can bask in the wisdom and wit of many-years-ago me
02:37:24 <esowiki> [[Kov]] M https://esolangs.org/w/index.php?diff=66129&oldid=66128 * A * (+61)
02:37:41 <shachaf> "quote kmc | paste" would be the canonical answer probably.
02:37:50 <shachaf> I hear kmc has good quotes.
02:41:08 * kmc canonicalizes shachaf
02:41:10 <kmc> I have a few good ones
02:41:25 <kmc> cocks, truly cocks
02:42:02 <kmc> <kmc> BBC: Exercise 'can be as good as pills' <kmc> oh, they mean for your health
02:42:21 <shachaf> `doag
02:42:22 <HackEso> 11927:2019-09-08 <shachäf> mkx bin/as-encoding//echo "$1" | as -o /tmp/out.o - && objdump -d /tmp/out.o | grep -P \'^ *[0-9a-f]+:\' | sed \'s/^[^\\t]*\\t//; s/ *\\t/: /g\' \ 11926:2019-09-08 <shachäf> mkx bin/as-encoding//echo "$1" | as -o /tmp/out.o - && objdump -d /tmp/out.o | grep -P \'^ *\\d+:\' | sed \'s/^[^\\t]*\\t//; s/ *\\t/: /g\' \ 11925:2019-09-01 <oerjän> learn The password of the month is ninjaed. \ 11924:2019-08-29 <b_jonäs> `` perl -p
02:42:27 <shachaf> hmm
02:44:04 <kmc> what's a doag
02:44:52 <shachaf> `` ls -lt tmp/paste
02:44:54 <HackEso> total 564 \ -rw-r--r-- 1 1000 1000 11630 Sep 13 02:32 paste.2937 \ -rw-r--r-- 1 1000 1000 1210 Aug 3 03:34 paste.31274 \ -rw-r--r-- 1 1000 1000 115029 Jul 21 10:19 paste.3516 \ -rw-r--r-- 1 1000 1000 702 Jul 19 23:16 paste.11087 \ -rw-r--r-- 1 1000 1000 0 Jul 16 12:40 paste.18219 \ -rw-r--r-- 1 1000 1000 1031 Apr 21 17:05 paste.6806 \ -rw-r--r-- 1 1000 1000 2146 Apr 14 00:08 paste.4591 \ -rw-r--r-- 1 1000 1000 1715 Apr 13 23:53 paste.2226
02:44:58 <shachaf> `url tmp/paste/paste.2937
02:44:59 <HackEso> https://hack.esolangs.org/tmp/paste/paste.2937
02:45:51 <shachaf> you're the mannow doag
02:47:00 <Lykaina> http://sif.lesidhetree.com/sara/echidna/Echidna%20v0_10a1a.pdf
02:47:13 <Lykaina> (messed up an example)
02:53:39 <int-e> `cat bin/hog
02:53:40 <HackEso> hlnp --template "{desc}\n" -- "$@"
02:53:54 <int-e> `cat bin/dog
02:53:54 <HackEso> cat: bin/dog: No such file or directory
02:54:22 <int-e> shachaf: not very much orthogonality there
02:57:37 <int-e> Ah, "np" is for "no ping".
02:58:50 <int-e> "a" is, presumably, for "all revisions" (including deleted ones). "d" is for "include date".
02:59:28 <int-e> shachaf: and wtf was your reasoning behind "dogue"
03:00:09 <int-e> err hogue.
03:04:45 <Lykaina> http://sif.lesidhetree.com/sara/echidna/Echidna%20v0_10a1ac.pdf (Calibri test version)
03:05:26 <Lykaina> what's a good font for documentation?
03:26:16 <shachaf> int-e: dog presumably should exist but since no one ever uses hog it's kind of irrelevant.
03:26:25 <shachaf> Let me see if I can trace the etymology.
03:26:33 <shachaf> The original was hog = hg log
03:26:38 <shachaf> `cat bin/hog
03:26:39 <HackEso> hlnp --template "{desc}\n" -- "$@"
03:26:43 <shachaf> `cat bin/hoag
03:26:44 <HackEso> hlnp --removed --template "{desc}\n" -- "$@"
03:27:13 <shachaf> If I'm not mistaken, "hoag" is named after The Unpleasant Profession of Jonathan Hoag.
03:27:35 <shachaf> I don't think anyone cares about the version that doesn't show removed entries, though.
03:27:47 <shachaf> doag is the version of hoag that shows dates. That's very useful so no one ever uses the h commands.
03:28:01 <shachaf> `cat bin/hogue
03:28:03 <HackEso> cat: bin/hogue: No such file or directory
03:28:09 <shachaf> `cat bin/dogue
03:28:10 <HackEso> cat: bin/dogue: No such file or directory
03:29:00 <shachaf> `doag bin/hogue
03:29:01 <HackEso> 8420:2016-06-09 <shachäf> ` mv bin/ho{gue,ag} \ 8329:2016-06-04 <shachäf> mkx bin/hogue//hg log --removed --template "{desc}\\n" "$@" \ 8328:2016-06-04 <shachäf> mkx bin/hogue//hg log --remvoed --template "{desc}
03:29:03 <shachaf> `doag bin/hoag
03:29:05 <HackEso> 9214:2016-10-10 <oerjän> ` sed -i \'s/hg log/hlnp/\' bin/hoag \ 8453:2016-06-12 <shachäf> sled bin/hoag//s/"\\$@"/-- "$@"/ \ 8420:2016-06-09 <shachäf> ` mv bin/ho{gue,ag}
03:29:14 <shachaf> I didn't remember that at all.
03:32:00 <shachaf> int-e: I think hog->hogue isn't much less plausible than hog->hoag
03:32:05 <shachaf> Presumably they're pronounced the same.
03:33:24 <shachaf> kmc: higan
03:33:43 <shachaf> I saw a good cat today
03:34:42 -!- craigo has joined.
03:34:48 <kmc> i see that
03:41:34 <shachaf> `randquote kmc
03:41:35 <HackEso> 834) <kmc> i was going to say that the complexity of a demo grows exponentially with size, but it's not so much "exponential" as "faster than any computable function"
03:42:07 <shachaf> `randquote kmc
03:42:09 <HackEso> 977) <elliott> prediction: kmc never comes back * kmc has joined #esoteric
03:42:16 <shachaf> `randquote kmc
03:42:17 <HackEso> 1058) <kmc> are you a hardcore PC gamer Sgeo_ <Sgeo_> Want to be
03:42:31 <shachaf> wow, forgot about that one
03:42:37 <shachaf> `randquote kmc
03:42:38 <HackEso> 1004) <kmc> LIST OF ACRONYMS: List Integrating Some Terminology Of Fine Authentic Credibility Relating to Our New Year Media System
03:42:44 <shachaf> `randquote kmc
03:42:44 <HackEso> 1054) <Bike> oh my, this is a photo of an elliott fisting [...] <Bike> i meant elephant <Bike> but you know what, ok. <kmc> Bike: ... <kmc> Bike: can you send me that picture when i'm not at work ok <kmc> plz and thx
03:47:25 <shachaf> I think I'm probably wrongue about "hoag".
05:19:52 <kmc> `randquote shachaf
05:19:53 <HackEso> 1169) <shachaf> pippi långstrump's name is translated as "gilgi" or "bilbi" usually <ion> Does she have a ring of power?
05:19:57 <kmc> `randquote shachaf
05:19:58 <HackEso> 737) <shachaf> U+2205 [∅] NO LETTER O ALLOWED
05:20:01 <kmc> `randquote shachaf
05:20:05 <HackEso> 915) <kmc> shachaf: LC_ALL=de_DE.utf-8 errno -l <kmc> Veraltete NFS-Dateizugriffsnummer <kmc> Eingabe-/Ausgabefehler <kmc> "Unterbrechung während des Betriebssystemaufrufs" i think that was in the Ring Cycle
05:20:10 <kmc> `randquote shachaf
05:20:12 <HackEso> 716) <shachaf> elliott: Apparently Rowan Williams is Primate of All England. <shachaf> CHECKMATE CREATIONISTS
05:20:14 <kmc> `randquote shachaf
05:20:16 <HackEso> 1011) <shachaf> i would visit elliott but i'm vegetarian
05:20:23 <kmc> i like how one of the shachaf-quotes was actually a kmc-quote
05:20:26 <kmc> i'm everywhere baby
05:24:52 <shachaf> is that like "everywhere continuous"
05:29:39 <kmc> lol
05:29:45 <kmc> /o/
05:46:16 -!- Sgeo has joined.
05:49:00 -!- Sgeo_ has quit (Ping timeout: 246 seconds).
05:52:23 -!- Sgeo_ has joined.
05:53:43 <shachaf> `quote LC_
05:53:44 <HackEso> 915) <kmc> shachaf: LC_ALL=de_DE.utf-8 errno -l <kmc> Veraltete NFS-Dateizugriffsnummer <kmc> Eingabe-/Ausgabefehler <kmc> "Unterbrechung während des Betriebssystemaufrufs" i think that was in the Ring Cycle
05:55:17 -!- Sgeo has quit (Ping timeout: 246 seconds).
06:01:58 -!- Sgeo_ has quit (Ping timeout: 245 seconds).
06:05:08 -!- Sgeo has joined.
06:16:44 <int-e> Oh german.
06:18:28 <int-e> . o O ( Which is correct, "Eingabe" or "Eingebung"? )
06:35:43 <esowiki> [[Inc]] N https://esolangs.org/w/index.php?oldid=66130 * A * (+411) Created page with "[[Inc]] is a joke language that can only add the top of the stack. == Instructions == There is initially a 0 in the stack. * <code>.</code> This increments the top of the stac..."
06:37:04 <esowiki> [[Inc]] M https://esolangs.org/w/index.php?diff=66131&oldid=66130 * A * (-39)
06:37:57 <esowiki> [[Inc]] M https://esolangs.org/w/index.php?diff=66132&oldid=66131 * A * (-17)
06:38:14 <esowiki> [[Inc]] M https://esolangs.org/w/index.php?diff=66133&oldid=66132 * A * (-2) Golfed this into a one-liner!
06:52:03 -!- craigo has quit (Read error: Connection reset by peer).
06:55:49 <esowiki> [[GolfJoke]] M https://esolangs.org/w/index.php?diff=66134&oldid=66006 * A * (+25)
06:59:12 <esowiki> [[Truth-machine]] M https://esolangs.org/w/index.php?diff=66135&oldid=65908 * Dtuser1337 * (-1) Removing unnessecary newline in above Argh!
07:04:29 -!- tromp has joined.
07:04:37 -!- imode has quit (Ping timeout: 265 seconds).
07:07:47 -!- tromp_ has quit (Ping timeout: 276 seconds).
07:10:56 <esowiki> [[Intramodular Transaction]] M https://esolangs.org/w/index.php?diff=66136&oldid=66123 * Hakerh400 * (-1)
07:33:10 -!- cpressey has joined.
07:52:07 -!- sftp has quit (Excess Flood).
07:52:29 -!- sftp has joined.
08:00:09 -!- Phantom_Hoover has joined.
08:01:00 -!- Phantom_Hoover has quit (Client Quit).
08:23:27 <esowiki> [[Baba Is You]] M https://esolangs.org/w/index.php?diff=66137&oldid=60915 * A * (+235)
08:44:31 -!- atslash has joined.
08:45:08 <esowiki> [[Baba Is You]] M https://esolangs.org/w/index.php?diff=66138&oldid=66137 * A * (+3006) /* Descriptions */ Upload my notes in Chinese
08:54:53 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
08:57:41 <esowiki> [[Baba Is You]] M https://esolangs.org/w/index.php?diff=66139&oldid=66138 * A * (+189)
08:59:10 -!- Lord_of_Life has joined.
09:03:48 <esowiki> [[Baba Is You]] M https://esolangs.org/w/index.php?diff=66140&oldid=66139 * A * (+191) /* Push */
09:05:16 <myname> are games considered an esolang?
09:06:05 <myname> int-e: "Eingebung" is more like an unexpected idea
09:06:29 <myname> getting understanding of something
09:06:50 <esowiki> [[Baba Is You]] M https://esolangs.org/w/index.php?diff=66141&oldid=66140 * A * (+56) /* Float */
09:06:53 <int-e> myname: It was a trick question. (German is my first language.)
09:07:04 <myname> okay!
09:08:01 <esowiki> [[Baba Is You]] M https://esolangs.org/w/index.php?diff=66142&oldid=66141 * A * (+105) /* Words */
09:09:01 <int-e> myname: I should have written "which spelling is correct" to make the intent clearer. (Answer: both).
09:09:04 -!- wob_jonas has joined.
09:10:00 <esowiki> [[Baba Is You]] M https://esolangs.org/w/index.php?diff=66143&oldid=66142 * A * (+242)
09:12:15 <cpressey> myname: Some games definitely come close to being esolangs, and vice versa
09:12:58 <cpressey> iirc the classic example is that Transport Tycoon is Turing-complete
09:12:58 <wob_jonas> cpressey: such as OpenTTD, Minecraft, Factorio?
09:14:08 <cpressey> OpenTTD = opensource clone of Transport Tycoon Deluxe, so, yes
09:14:30 <wob_jonas> ``` for x in quote \' \" q; whatis $x; done # kmc
09:14:31 <HackEso> bash: -c: line 0: syntax error near unexpected token `whatis' \ bash: -c: line 0: `for x in quote \' \" q; whatis $x; done # kmc'
09:14:37 <wob_jonas> ``` for x in quote \' \" q; do whatis $x; done # kmc
09:14:39 <HackEso> quote(1hackeso) - search quote database or print random quote \ quote(8lambdabot) - no description \ '(1hackeso) - search quote database or print random quote \ "(1hackeso) - show two random quotes \ q(1hackeso) - search quote database or print random quote
09:15:48 <wob_jonas> kmc: you can also just read the quotes from the file "quotes" in hackenv, or use the allquotes command to print them all with line numbering
09:15:56 <wob_jonas> it's just a text file, one quote per line
09:16:01 <myname> cpressey: TC-ness of games are interesting, but I would not consider those an esolang in the sense of the wiki
09:16:20 <wob_jonas> reading the files directly without using the commands seems to annoy some people here
09:16:24 <myname> I'd make a page for a list of TC games or something like that
09:16:55 <wob_jonas> `whatis quotes
09:16:56 <HackEso> quotes(1hackeso) - search quote database or print random quote
09:17:41 <wob_jonas> ah I see, you already found the file
09:17:52 <wob_jonas> `whatis doag
09:17:53 <HackEso> doag(1hackeso) - query hackenv version control log, with dates
09:18:31 <int-e> `whatis hurl
09:18:32 <HackEso> hurl(1hackeso) - no description
09:18:48 <int-e> `` type hwrl
09:18:49 <HackEso> hwrl is /hackenv/bin/hwrl
09:19:19 <wob_jonas> "<shachaf> I don't think anyone cares about the version that doesn't show removed entries, though." => I am interested. I generally use hg log -T "{rev}:{date|shortdate}:{desc}\n" rather than any of your fancy wrappers.
09:19:26 <int-e> `whatis url
09:19:27 <HackEso> url(7) - uniform resource identifier (URI), including a URL or URN \ url(1hackeso) - no description \ url(8lambdabot) - no description
09:20:31 <int-e> `whatis whatis
09:20:32 <HackEso> whatis(1) - display one-line manual page descriptions
09:20:46 <wob_jonas> int-e: the whatis descriptions for hackeso all come from me, so for any command that I didn't know about, they just say "no description". but they're in a plain text file that you can edit if you want (just be careful because the web `edit form tends to mess up non-ascii files when you save them).
09:21:25 <wob_jonas> the whatis descriptions for unix commands and functions don't come from me, they're from the headers of manpages
09:22:14 <wob_jonas> also the wisdom database has longer help for some hackeso commands, but that's only occasional, doesn't even try to be exhaustive
09:22:18 <wob_jonas> whatis does try to be exhaustive
09:23:32 <Taneb> `whatis relcome
09:23:33 <HackEso> ReLcOmE(1hackeso) - no description \ relcome(1hackeso) - welcome new user to irc channel, colorfully
09:30:20 <int-e> `help fetch
09:30:22 <HackEso> ​`fetch [<output-file>] <URL> downloads files, and is the only web access currently available in HackEgo. It is a special builtin that cannot be called from other commands. See also `edit.
09:31:19 <int-e> `fetch share/whatis http://int-e.eu/~bf3/tmp/whatis
09:31:22 <HackEso> 2019-09-13 09:31:22 URL:http://int-e.eu/~bf3/tmp/whatis [752504/752504] -> "share/whatis" [1]
09:31:56 <int-e> `whatis relcome
09:31:57 <HackEso> ReLcOmE(1hackeso) - CoLoRfUlLy wElCoMe nEw uSeR To iRc cHaNnEl \ relcome(1hackeso) - welcome new user to irc channel, colorfully
09:32:31 <fizzie> `sled share/whatis//s/^url(1hackeso) - .*/url(1hackeso) - print URL to view contents of a hackenv file/
09:32:33 <HackEso> share/whatis//aio.h(0p) - asynchronous input and output \ arpa_inet.h(0p) - definitions for internet operations \ assert.h(0p) - verify program assertion \ complex.h(0p) - complex arithmetic \ cpio.h(0p) - cpio archive values \ ctype.h(0p) - character types \ dirent.h(0p) - format of directory entries \ dlfcn.h(0p) - dynamic linking \ errno.h(0p) - system error numbers \ fcntl.h(0p) - file control options \ fenv.h(0p) - point environment \ float.h(0p) - fl
09:32:57 <fizzie> `sled share/whatis//s/^hurl(1hackeso) - .*/hurl(1hackeso) - print URL to view version log of a hackenv file/
09:32:59 <HackEso> share/whatis//aio.h(0p) - asynchronous input and output \ arpa_inet.h(0p) - definitions for internet operations \ assert.h(0p) - verify program assertion \ complex.h(0p) - complex arithmetic \ cpio.h(0p) - cpio archive values \ ctype.h(0p) - character types \ dirent.h(0p) - format of directory entries \ dlfcn.h(0p) - dynamic linking \ errno.h(0p) - system error numbers \ fcntl.h(0p) - file control options \ fenv.h(0p) - point environment \ float.h(0p) - fl
09:33:04 <int-e> fizzie: I did those!
09:33:38 <fizzie> throw new ConcurrentModificationException("sorry");
09:34:02 <int-e> fizzie: I'm more annoyed at the duplicated work if anything else :)
09:34:38 <int-e> `whatis hwrl
09:34:39 <HackEso> hwrl(1hackeso) - link to wisdom entry history in hackenv version control
09:34:45 <int-e> of course now this is inconsistent
09:35:09 <fizzie> I took my lead from
09:35:11 <fizzie> `whatis paste
09:35:12 <HackEso> paste(1) - merge lines of files \ paste(1p) - merge corresponding or subsequent lines of files \ paste(1hackeso) - print URL to read a file in hackenv through web \ paste(8lambdabot) - no description
09:35:33 <int-e> `whatis howt
09:35:34 <HackEso> howt(1hackeso) - query hackenv version control log for wisdoms, oldest first
09:35:42 <int-e> I was inspired by one of these instead
09:36:26 <int-e> `sled share/whatis//s/^hwrl(1hackeso) - .*/hwrl(1hackeso) - print URL to view version log of a wisdom entry/
09:36:29 <HackEso> share/whatis//aio.h(0p) - asynchronous input and output \ arpa_inet.h(0p) - definitions for internet operations \ assert.h(0p) - verify program assertion \ complex.h(0p) - complex arithmetic \ cpio.h(0p) - cpio archive values \ ctype.h(0p) - character types \ dirent.h(0p) - format of directory entries \ dlfcn.h(0p) - dynamic linking \ errno.h(0p) - system error numbers \ fcntl.h(0p) - file control options \ fenv.h(0p) - point environment \ float.h(0p) - fl
09:36:46 <fizzie> The 'paste' one could be clarified, since it doesn't really hint that `... | paste` is also a thing.
09:40:47 <int-e> I guess the downside of `fetch is that it doesn't really say what is being changed.
09:41:15 <fizzie> Well, the sled output isn't that useful for large files either.
09:41:19 <wob_jonas> fizzie: do you happen to know if the `edit web interface is supposed to be broken for files that contain non-ascii files?
09:41:30 <wob_jonas> because I used it recently, and it messed up the contents of a file
09:41:38 <wob_jonas> I fixed it in private message, but still
09:42:59 <wob_jonas> fizzie: I didn't know that was a thing. how does that work?
09:43:12 <fizzie> wob_jonas: It's not supposed to be broken, but I'm not super-surprised it is, it's Python3 + Flask + strings. There's probably some way to make it use bytes instead.
09:43:28 <wob_jonas> ``` seq 170 7 480 | paste
09:43:29 <HackEso> https://hack.esolangs.org/tmp/paste/paste.6371
09:43:37 <wob_jonas> wow indeed
09:43:41 <wob_jonas> cool, I didn't know
09:43:41 <fizzie> It just makes a new file in tmp/.
09:45:05 <shachaf> For some reaosn I thought `edit was written in Go.
09:45:19 <shachaf> Ah, I guess I wrote the first version of it in Go.
09:45:40 <fizzie> I think if I was writing it today, I might have written it in Go.
09:46:50 <fizzie> It's not a super-complicated web app, https://bitbucket.org/fizzie/hackedit/src/master/hackedit.py
09:47:46 <shachaf> Go is kind of scow but Python is too.
09:47:57 <shachaf> For a small program like this the main thing is library availability.
09:48:19 <shachaf> I guess I should make my own language and give it a bunch of good libraries.
09:51:49 <fizzie> The Flask documentation doesn't seem to talk too much about whether form parameters are decoded strings or raw bytes. Although it does look like it's calling f.write on them on a file opened with just 'w', so I guess it's in text mode and that's a string.
09:53:12 <shachaf> `` python3 -c 'print("a" "b")'
09:53:13 <HackEso> ab
09:53:22 <shachaf> Speaking of Python, someone told me about that the other day and I was, like, whoa, dude.
09:53:30 <fizzie> How C.
09:54:12 <shachaf> Anyway I'd be fine writing a thing like that in C if there was a convenient C library for HTTP servers.
09:54:20 <fizzie> I think I saw that mentioned somewhere, in some style guide about how to write long strings.
09:54:53 <fizzie> esolangs.org/logs/ uses civetweb.
09:54:54 <Hooloovo0> wait, there are C HTTP servers
09:54:58 <fizzie> The C++ bindings, but still.
09:55:21 <Hooloovo0> I'd be wary of them, it's really easy to write bugs in
09:55:29 <fizzie> Not sure if the label "convenient" is super-applicable either.
09:55:42 <Hooloovo0> true
09:56:02 <shachaf> I don't think there's a particular reason they shouldn't be convenient?
09:56:10 <Hooloovo0> hmm, wonder if I could run an http server on my vax
09:56:18 <fizzie> Not "they" in general, civetweb in particular.
09:56:47 <shachaf> Ah, sure.
09:56:55 <fizzie> It may be more convenient in C than in C++, the C++ interface feels a little bit like an afterthought.
09:59:30 <fizzie> Sep 13 10:10:00 techne.zem.fi esobot[20492]: [135B blob data]
09:59:35 <fizzie> At some point I should fix that. I think it's from the debugging output of the wiki change notification, which includes the color codes, which makes systemd journal think it's binary data not fit for human eyes.
10:02:33 <fizzie> Here's something I learned recently: if you make your thing print out syslog priority annotations at the start of your lines (as in, "<4>warning, warning"), the standard systemd stdout/stderr-to-journal pipe will use them as priority levels.
10:09:29 <fizzie> `mkx bin/beat//s=$(date +%s); echo @$(((s+3600) % 86400 * 10 / 864))
10:09:31 <HackEso> bin/beat
10:09:32 <fizzie> `beat
10:09:33 <HackEso> ​@464
10:09:46 <fizzie> We didin't have a Swatch Internet Time clock yet, I don't think.
10:10:37 <wob_jonas> fizzie: no! that's not general enough. modify glibc to add a new format for that into strftime, rebuild the whole thing, then we can just use /bin/date for this
10:13:22 <fizzie> Fair enough, but I'll save that for a rainy day.
10:13:36 <fizzie> Although I think it's always three digits, so let's fix that at least.
10:13:40 <fizzie> `mkx bin/beat//s=$(date +%s); printf '@%03d' $(((s+3600) % 86400 * 10 / 864))
10:13:42 <HackEso> bin/beat
10:18:36 <wob_jonas> fizzie: shouldn't you add a -u switch to date, for future compatibility when the next generation of HackE?o will use new zealand timezone again?
10:20:53 <wob_jonas> fizzie: also, I think that truncates to integer seconds prematurely, though that'll be harder to fix
10:21:02 -!- hppavilion[1] has quit (Remote host closed the connection).
10:21:32 -!- hppavilion[1] has joined.
10:28:41 -!- arseniiv has joined.
10:38:45 <wob_jonas> oh wait
10:38:55 <wob_jonas> the +%s format is epoch time, so the -u wouldn't change anything
10:38:56 <wob_jonas> sorry
10:43:26 <wob_jonas> ``` echo '#!/usr/bin/python3; import math,time; b = math.floor(100*((time.time()+3600) % 86400) / 86.4); print("%03d.%02d"%(b//100,b%100))' | tr \; \\n > bin/beat; chmod -v a+x bin/beat
10:43:28 <HackEso> mode of 'bin/beat' retained as 0755 (rwxr-xr-x)
10:43:51 <wob_jonas> ``` datei; for x in {0..5}; do beat; done; datei
10:43:52 <HackEso> ​ File "/hackenv/bin/beat", line 2 \ import math,time \ ^ \ IndentationError: unexpected indent \ File "/hackenv/bin/beat", line 2 \ import math,time \ ^ \ IndentationError: unexpected indent \ File "/hackenv/bin/beat", line 2 \ import math,time \ ^ \ IndentationError: unexpected indent \ File "/hackenv/bin/beat", line 2 \ import math,time \ ^ \ IndentationError: unexpected indent \ File "/hackenv/bin/beat", line
10:43:59 <wob_jonas> gtfo
10:44:13 <wob_jonas> ``` echo '#!/usr/bin/python3;import math,time;b = math.floor(100*((time.time()+3600) % 86400) / 86.4);print("%03d.%02d"%(b//100,b%100))' | tr \; \\n > bin/beat; chmod -v a+x bin/beat
10:44:15 <HackEso> mode of 'bin/beat' retained as 0755 (rwxr-xr-x)
10:44:19 <wob_jonas> ``` datei; for x in {0..5}; do beat; done; datei
10:44:21 <HackEso> 2019-09-13 10:44:20.077065689 +0000 UTC September 13 Friday 2019-W37-5 \ 489.12 \ 489.12 \ 489.12 \ 489.12 \ 489.12 \ 489.12 \ 2019-09-13 10:44:20.793925337 +0000 UTC September 13 Friday 2019-W37-5
10:44:38 <wob_jonas> ``` datei; for x in {0..5}; do sleep 1; beat; done; datei
10:44:45 <HackEso> 2019-09-13 10:44:38.662409684 +0000 UTC September 13 Friday 2019-W37-5 \ 489.34 \ 489.36 \ 489.37 \ 489.38 \ 489.40 \ 489.41 \ 2019-09-13 10:44:45.582049236 +0000 UTC September 13 Friday 2019-W37-5
10:45:19 <wob_jonas> fizzie: ^ will that work? now it doesn't truncate to seconds before the computation
10:46:31 <wob_jonas> or should it display no decimal digits?
10:56:49 -!- Frater_EST has joined.
10:57:21 <int-e> I seem to be missing another bit of pop culture here
10:58:51 <wob_jonas> int-e: it's not really pop culture, it's a stupid marketing gimmick
11:01:02 -!- ahrkl has joined.
11:08:02 -!- hppavilion[1] has quit (Ping timeout: 240 seconds).
11:13:11 <arseniiv> hmm I opened Metamath λ page and saw beta-reduction formalized as, roughly, A: β ⟹ (λx:α A)(x:α) = A, without any explicit substitution. Maybe my thing could avoid them either? I didn’t realize at all that the engine should be able to work with such “reflexive” definitions
11:13:43 -!- ahrkl has left ("Leaving").
11:14:05 <arseniiv> (and I don’t get how, yet. It should unify the right way but how)
11:14:08 <fizzie> wob_jonas: The .xx part is not part of the official beat notation. :/
11:14:25 <fizzie> wob_jonas: I was thinking it should be an option, but couldn't think of a flag for it.
11:14:30 <fizzie> (-v?)
11:15:32 <wob_jonas> ``` echo '#!/usr/bin/python3;import math,time;b = math.floor(((time.time()+3600) % 86400) / 86.4);print("%03d"%(b,))' | tr \; \\n > bin/beat; chmod -v a+x bin/beat
11:15:34 <HackEso> mode of 'bin/beat' retained as 0755 (rwxr-xr-x)
11:15:36 <wob_jonas> `beat
11:15:36 <wob_jonas> `beat
11:15:37 <HackEso> 510
11:15:37 <wob_jonas> `beat
11:15:37 <HackEso> 510
11:15:38 <HackEso> 510
11:15:53 <wob_jonas> `? beat
11:15:54 <HackEso> beat? ¯\(°​_o)/¯
11:16:35 -!- Frater_EST has left.
11:17:06 <arseniiv> or maybe that one alone isn’t sufficient, I would need to see what proofs are using
12:13:45 <wob_jonas> `fetch bin/beat https://hack.esolangs.org/get/bin/beat
12:13:47 <HackEso> 2019-09-13 12:13:46 URL:https://hack.esolangs.org/get/bin/beat [616/616] -> "bin/beat" [1]
12:13:53 <wob_jonas> ``` beat; beat -p
12:13:53 <HackEso> bash: /hackenv/bin/beat: python3: bad interpreter: No such file or directory \ bash: /hackenv/bin/beat: python3: bad interpreter: No such file or directory
12:14:28 <wob_jonas> ``` beat; beat -p
12:14:29 <HackEso> ​[] \ 551 \ [('-p', '')] \ 551.72
12:14:48 <wob_jonas> ``` beat; beat -p
12:14:49 <HackEso> 551 \ 551.95
12:14:50 <wob_jonas> better
12:14:57 <wob_jonas> fizzie: ^ -p command-line option now
12:24:08 <Lykaina> http://sif.lesidhetree.com/sara/echidna/Echidna%20v0_10a1ac2.pdf does this look appealing to the human eye?
12:28:51 <Lykaina> http://sif.lesidhetree.com/sara/echidna/Echidna%20v0_10a1a.pdf compared to this?
12:50:25 <fizzie> wob_jonas: Nice, although what's the -p short for?
12:50:38 <fizzie> (Penny?)
12:50:40 <wob_jonas> fizzie: precision
12:50:44 <fizzie> Ah, I see.
12:51:12 <wob_jonas> I guess penny works too
12:51:19 <wob_jonas> only
12:51:42 <wob_jonas> ``` beat -P4 # it clearly means precision (in the sense that printf uses precision specifiers) here
12:51:43 <HackEso> 577.5790
12:51:54 <wob_jonas> ``` beat -P2; beat -P1; beat -P3; beat -P0
12:51:55 <HackEso> 577.71 \ 577.7 \ 577.722 \ 577
12:54:20 -!- xkapastel has joined.
12:59:58 <Lykaina> made another version of the documentation in Comic Sans as a joke for my dad. i know better than to put it on the web.
13:47:33 <esowiki> [[Brank]] N https://esolangs.org/w/index.php?oldid=66144 * A * (+384) Created page with "[https://softwareengineering.stackexchange.com/questions/132385/what-makes-a-language-turing-complete?rq=1 In an answer for this question:] In general, for an imperative langu..."
13:53:42 <esowiki> [[Talk:Baba Is You]] M https://esolangs.org/w/index.php?diff=66145&oldid=60916 * A * (+328)
14:12:26 <esowiki> [[Baba Is You]] M https://esolangs.org/w/index.php?diff=66146&oldid=66143 * A * (+170) /* Shut */
14:14:14 <esowiki> [[Baba Is You]] M https://esolangs.org/w/index.php?diff=66147&oldid=66146 * A * (+108) /* External Resources */
14:29:20 -!- Sgeo_ has joined.
14:32:14 -!- Sgeo has quit (Ping timeout: 246 seconds).
14:37:01 -!- Sgeo_ has quit (Ping timeout: 265 seconds).
14:37:55 <esowiki> [[EnilKode]] https://esolangs.org/w/index.php?diff=66148&oldid=60887 * EnilKoder * (+461) Mutable
14:40:58 <cpressey> > let both p1 p2 x = (p1 x) && (p2 x) in let inRange = both (\x -> x > 3) (\x -> x < 8) in inRange 5
14:41:01 <lambdabot> True
14:41:41 <cpressey> > let inRange = (\x -> x > 3) && (\x -> x < 8) in inRange 5
14:41:44 <lambdabot> error:
14:41:44 <lambdabot> • Couldn't match expected type ‘Bool’
14:41:44 <lambdabot> with actual type ‘Integer -> Bool’
14:42:42 <cpressey> I think you could detect that and coerce that upwards in a general fashion. I'm not saying you should. But I think you could.
14:47:05 -!- Soni has left ("http://quassel-irc.org - Chat comfortably. Anywhere.").
14:47:17 <wob_jonas> > let { inRange = (&&) <$> (x > 3) <*> (\x < 8); } in inRange 5
14:47:19 <lambdabot> <hint>:1:42: error: parse error on input ‘<’
14:47:25 <Lykaina> http://sif.lesidhetree.com/sara/echidna/Echidna%20v0_10a1ac3p.pdf (hopefully this is saner to read)
14:47:26 <wob_jonas> > let { inRange = (&&) <$> (x > 3) <*> (x < 8); } in inRange 5
14:47:29 <lambdabot> error:
14:47:29 <lambdabot> • Couldn't match expected type ‘f Bool’ with actual type ‘Bool’
14:47:29 <lambdabot> • In the second argument of ‘(<$>)’, namely ‘(x > 3)’
14:47:40 <wob_jonas> > let { inRange = (&&) <$> (> 3) <*> (< 8); } in inRange 5
14:47:43 <lambdabot> True
14:47:54 <wob_jonas> > let { inRange = (&&) <$> (> 3) <*> (< 8); } in fmap inRange [0..10]
14:47:56 <lambdabot> [False,False,False,False,True,True,True,True,False,False,False]
14:47:59 <wob_jonas> cpressey: something like that
14:48:31 <cpressey> wob_jonas: Something like that except the implementation figures it out for you.
14:48:38 <wob_jonas> but of course it's much easier to write inRange x = 3 < x && x < 8
14:49:33 <wob_jonas> cpressey: try that esolang of which I heared of only recently and I don't recall the name
14:49:57 <wob_jonas> that really crazy one
14:50:14 <Lykaina> you mean echidna?
14:50:42 <wob_jonas> no, I mean Husk
14:50:49 <wob_jonas> but good try
14:54:46 <Lykaina> wob_jonas: i gave you yesterday and the day before to not look at echidna.
14:55:35 <cpressey> wob_jonas: I see, yes. https://github.com/barbuz/Husk/blob/master/Builtins.hs#L90 would handle my example I think?
14:56:08 <wob_jonas> cpressey: no clue, I don't know how that language works. I looked at the doc'ation and decided it was too crazy for me to try to understand
14:56:33 <cpressey> Well I'm totally guessing anyway.
14:56:35 <wob_jonas> I looked at it because I mentioned some ideas of what an esolang could do, and Husk does do that, but it also does more
14:59:51 -!- cpressey has quit (Quit: A la prochaine.).
15:08:38 -!- Sgeo has joined.
15:11:31 <Lykaina> Sgeo: hi
15:19:55 -!- sebbu2 has joined.
15:24:01 -!- sebbu has quit (Ping timeout: 268 seconds).
15:29:17 -!- MDude has quit (Ping timeout: 258 seconds).
15:33:24 -!- MDude has joined.
16:03:39 -!- wob_jonas has quit (Remote host closed the connection).
16:05:43 -!- Sgeo_ has joined.
16:08:26 -!- Sgeo has quit (Ping timeout: 240 seconds).
16:40:57 -!- imode has joined.
16:44:36 <Lykaina> http://sif.lesidhetree.com/sara/echidna/Echidna%20v0_10a2_p.pdf
17:11:05 <imode> my `last` operation seems like something a traditional queue automaton wouldn't be able to do without some significant setup, because you have to know the length of the queue ahead of time.
17:15:18 <Lykaina> http://sif.lesidhetree.com/sara/echidna/Echidna%20v0_10a2_p.pdf
17:15:25 <Lykaina> oops
17:15:30 <Lykaina> dead link now
17:15:59 * Lykaina needs to get paste to behave
17:22:59 <Lykaina> http://sif.lesidhetree.com/sara/echidna/Echidna%20v0_10a2_p2.pdf should work...
17:24:12 -!- b_jonas has joined.
17:25:25 <b_jonas> Lykaina: the links you gave earlier, "http://sif.lesidhetree.com/sara/echidna/Echidna%20v0_10a1ac2.pdf" and "http://sif.lesidhetree.com/sara/echidna/Echidna%20v0_10a1a.pdf", are broken. do you have an URL for the current rendered documentation?
17:25:36 <b_jonas> oh wait
17:25:41 <Lykaina> you just missed it
17:25:45 <Lykaina> http://sif.lesidhetree.com/sara/echidna/Echidna%20v0_10a2_p2.pdf should work...
17:26:17 <Lykaina> let me know if i mistyped the fixed document
17:26:19 <b_jonas> that one works
17:27:40 <Lykaina> it's an emergency fix for an emergency fix
17:28:22 <b_jonas> Eso question. Are there words that specifically mean a 12-bit or 24-bit integer, you know, the kind like (byte, char, short, int, long, halfword, word, doubleword, wyde, tetra) but specific enough that they can't apply to 8 or 16 or 32 or 64 bit values?
17:28:53 <b_jonas> I can call them "halfword" and "word" if there aren't, but I'd prefer some specific terminology
17:30:00 <Lykaina> are you asking me for clarification?
17:35:34 <b_jonas> Lykaina: no
17:35:48 <b_jonas> or not yet, at least
17:36:41 -!- sebbu2 has changed nick to sebbu.
17:37:01 <b_jonas> [ (,+/@:_3{.)^:39] 0 0 1
17:37:01 <j-bot> b_jonas: |domain error
17:37:01 <j-bot> b_jonas: | (, +/@:_3{.)^:39]0 0 1
17:37:12 <b_jonas> [ (,+/@:(_3&{.))^:39] 0 0 1
17:37:13 <j-bot> b_jonas: 0 0 1 1 2 4 7 13 24 44 81 149 274 504 927 1705 3136 5768 10609 19513 35890 66012 121415 223317 410744 755476 1389537 2555757 4700770 8646064 15902591 29249425 53798080 98950096 181997601 334745777 615693474 1132436852 2082876103 3831006429 7046319384 12960201916
17:38:21 <Lykaina> b_jonas: like the new formatting?
17:40:48 -!- FreeFull has joined.
17:41:23 <imode> b_jonas, https://en.wikipedia.org/wiki/24-bit apparently has 24-bit as 'sword'.
17:41:57 <Lykaina> i managed to get copies of calibri, cambria, and consolas onto my linux laptop
17:42:01 <imode> I think you just call 'em words.
17:42:09 <imode> with the appropriate bit prefix.
17:42:25 <b_jonas> imode: hmm, interesting. although "thword" might work better.
17:42:36 <imode> thword lmao.
17:42:51 <b_jonas> but the problem is, "halfsword" or "halfthword" sound too much like "halfword" unless you pronounce them very carefully
17:43:06 <int-e> > fix(([0,0,1]++).ap(zipWith(flip(-)))(drop 3).scanl(+)0)
17:43:09 <lambdabot> [0,0,1,1,2,4,7,13,24,44,81,149,274,504,927,1705,3136,5768,10609,19513,35890,...
17:43:43 <b_jonas> maybe "thyte" for the 12-bit one then
17:43:54 <b_jonas> nah, not good enoguh
17:44:05 <int-e> > fix(([0,0,1]++).join(zipWith(-).drop 3).scanl(+)0)
17:44:06 <lambdabot> [0,0,1,1,2,4,7,13,24,44,81,149,274,504,927,1705,3136,5768,10609,19513,35890,...
17:44:20 <b_jonas> @oeis A73
17:44:21 <lambdabot> https://oeis.org/A000073 Tribonacci numbers: a(n) = a(n-1) + a(n-2) + a(n-3)...
17:44:21 <lambdabot> [0,0,1,1,2,4,7,13,24,44,81,149,274,504,927,1705,3136,5768,10609,19513,35890,...
17:45:20 <int-e> I just like (ab)using scanl
18:01:46 <imode> I'm wrong, you can absolutely implement 'last' using only an end-of-queue marker.
18:10:28 <Lykaina> int-e: what language is that?
18:11:25 <int-e> Lykaina: Haskell
18:12:00 <int-e> Lykaina: though in a deliberately concise and incomprehensible style (if you can even call it that).
18:12:42 <Lykaina> is haskell oo?
18:14:08 <int-e> no
18:14:45 <int-e> Haskell is a pure, lazy, functional programming language.
18:15:18 <Lykaina> oh
18:16:12 <int-e> > let twice f x = f (f x) in twice succ 3 -- 'succ' adds 1 to a number; 'twice' takes a function and applies it two times to a given value... the ability to pass functions to other functions is what makes the language functional
18:16:12 <Lykaina> seems i never learned any functional languages
18:16:14 <lambdabot> 5
18:16:35 <kmc> except pretty much every language allows you to pass functions to other functions
18:16:55 <Lykaina> basic?
18:16:55 <kmc> 'functional language' like 'object-oriented language' is a fuzzy category
18:17:09 <kmc> more useful for starting arguments than anything else
18:17:15 <int-e> kmc: function pointers aren't the same. we're getting there, though.
18:17:21 <kmc> is javascript functional? is rust object oriented? whatever.
18:17:27 <shachaf> i thought not having side effects is what makes a language functional
18:17:34 <shachaf> fight me twh
18:17:36 <Lykaina> what is c?
18:17:37 <int-e> kmc: even java has lambdas nowadays.
18:17:45 <int-e> (IIRC)
18:17:49 <kmc> see, i told you it was good for starting arguments :)
18:18:07 <shachaf> also fights are foughts exclusively with hugs
18:18:16 * kmc hugs shachaf
18:18:30 <Lykaina> is C procedural or imperitive? i forgot
18:18:32 <shachaf> people sure love aruging about what definitions are
18:18:44 <shachaf> (not even what they should be, which is a sort of reasonable argument maybe)
18:18:59 <int-e> . o O ( definitions are arbitrary )
18:19:49 <int-e> . o O ( arguing, v.: putting the "defy" into "definition". )
18:19:58 <fizzie> `? c
18:19:59 <HackEso> C is the language of��V�>WIד�.��Segmentation fault
18:20:25 <int-e> Lykaina: it's both I think
18:22:40 <fizzie> It's imperious.
18:22:45 <fizzie> And perilous.
18:22:50 <b_jonas> Lykaina: both. imperative because it's mostly based on mutable variables and assignment rather than immutable values; procedural because it's based mostly on structured control form, as in if/while/for and function calls, rather than goto and gosub.
18:23:28 <shachaf> In the past I would accidentally say "imperial programming language".
18:23:35 <Lykaina> does anyone actually use vb.net?
18:23:36 <b_jonas> The imperative is mostly a default, you can still write code that is mostly functional, as in, assigning each variable only once at the declaration.
18:23:48 <int-e> I guess if/while/for make it "structured", and function calls "precedural"
18:24:19 <b_jonas> Lykaina: no, but it's probably basically free to have once you have the compiler and other requirements for C# or some other dotnet language.
18:24:31 <int-e> Moreover, goto makes it unstructured and NULL makes it expensive
18:24:55 <fizzie> I heard it's the zero-terminated strings that make it an expensive mistake.
18:24:56 <shachaf> C is great because it has features like writing f(g(x), h(y))
18:25:08 <shachaf> You don't even need to say what registers the intermediate results go into!
18:25:16 <shachaf> It's such a high-level language.
18:26:05 <int-e> fizzie: I was refering to Hoare: 'Tony Hoare introduced Null references in ALGOL W back in 1965 "simply because it was so easy to implement", says Mr. Hoare. He talks about that decision considering it "my billion-dollar mistake".'
18:26:06 <Lykaina> and c--?
18:26:27 <b_jonas> shachaf: I disagree. a language is functional if bindings and values are immutable by default, even if mutability is provided. so standard ML and rust are functional languages.
18:26:32 <b_jonas> prolog too.
18:26:39 <b_jonas> and J too in fact
18:26:45 <b_jonas> though for J it's more debatable
18:26:56 <int-e> fizzie: But yes, zero-terminated strings are their own can of worms.
18:27:00 <b_jonas> nah, J probably shouln't count as functional
18:27:02 <shachaf> I disagree. A language is functional if it works, and dysfunctional if it doesn't work.
18:27:15 <fizzie> int-e: I was referring to https://queue.acm.org/detail.cfm?id=2010365
18:27:35 <j4cbo> is kotlin a functional language by that definition?
18:28:15 <b_jonas> what's a kotlin?
18:28:21 <fizzie> Kotlin makes me think of chickens, which makes me think of Scheme.
18:28:39 <shachaf> I don't know, I've never koppled before.
18:28:40 <b_jonas> heh
18:28:43 <Lykaina> H@0000=000FG@001048656c6c6f2c2057G@00186f726c64210a0000Q!0000=000AW0T@0000@0000=0001J!0000-W0K
18:28:49 <int-e> fizzie: Obviously if you wanted to save space you'd use ASCII and tag the last string element by setting the high bit. (Who needs non-ASCII or empty strings anyway...)
18:28:49 <shachaf> uh
18:28:54 <shachaf> I don't know, I've never kottled before.
18:29:03 <Lykaina> not the crazy paste again
18:29:36 <fizzie> fungot: What sort of programming paradigm do you feel like you represent most?
18:29:37 <fungot> fizzie: it refers to the real world is just one hygienic macro system based on closures.
18:29:50 <b_jonas> int-e: if you wanted to save space, you'd use five-bit strings with shift codes
18:29:53 <fizzie> Deep truths day today.
18:30:05 <int-e> fizzie: But you're right, if you want to pinpoint an expensive mistake that is specific to C, NUL-terminated strings are a good candidate.
18:30:39 <b_jonas> int-e: I'm not sure that even started with C. didn't unix have nul-terminated strings for filenames before C came around?
18:31:23 <int-e> b_jonas: I'm confused about the history here.
18:32:18 <Lykaina> unix and c were created for each other
18:32:28 <Lykaina> they got married in 72
18:33:00 <int-e> Yeah I thought the developments were intertwined.
18:33:06 -!- MDude has quit (Quit: Going offline, see ya! (www.adiirc.com)).
18:33:06 <b_jonas> int-e: UNIX v1 is an early unix (but not the earliest unix) of which we have the full set of manual pages. it precedes C, but is after the invention of pathnames (the earliest unix didn't have that). http://man.cat-v.org/unix-1st/2/sys-open says that open takes a nul-terminated string as filename.
18:33:27 <int-e> b_jonas: what did MULTICS do on that front?
18:33:50 <b_jonas> UNIX v1 was implemented in some machine language, and only later was a version of unix mostly implemented in C made.
18:33:55 <b_jonas> int-e: I don't know.
18:34:20 <b_jonas> it might be older than unix too, I'm just saying that nul-terminating definitely preceded C
18:34:21 <int-e> b_jonas: Anyway, I would say that since UNIX and C were basically created by the same people, shifting the blame from C to UNIX isn't all that meaningful.
18:34:29 <b_jonas> int-e: no no
18:34:35 <b_jonas> that's definitely not the history
18:34:49 <Lykaina> same three people
18:35:48 <b_jonas> unix was created by ken and dmr; C was started to get invented by kernigham, then dmr joined by popularizing C by basing the already popular unix to it, so that both userspace programs could be written in C and the kernel was implemented in C
18:36:17 <b_jonas> dmr did further C by a lot, which is only to be expected when he was its main user,
18:36:52 <b_jonas> hmm no
18:36:55 <b_jonas> I got that history wrong
18:37:00 <b_jonas> int-e: ok, you're probably right
18:37:11 <b_jonas> it's the same people
18:37:30 <b_jonas> still, I sort of think that unix makes sense even without C
18:37:41 <Lykaina> unix makes sense?
18:38:33 <Lykaina> sorry
18:38:46 <b_jonas> think about it, the rust people and a certain #esoteric regular both experiment with making a compiler that can make executables that run on unix and uses unix syscalls without depending on either C or libc
18:39:11 <shachaf> `? member
18:39:13 <HackEso> I'm sorry, #esoteric has regulars, not members. Who told you about members? There are definitely no members here, and you wouldn't be allowed to know about them, anyway.
18:39:13 <b_jonas> so I think even today the abstractions are a bit separated, even if they are tightly wound together because a lot of basic libraries are implemented in C
18:39:22 <b_jonas> yes, that's what I said
18:39:35 <b_jonas> a regular
18:39:55 <b_jonas> even if there was such a thing as members, I would not be allowed to tell who is and isn't a member
18:40:07 <Lykaina> if you knew
18:40:32 <Lykaina> as for me, i lost my membership form
18:40:48 <kmc> i wouldn't /join any channel that would have me as a member
18:41:24 <Lykaina> i wouldn't last a minute in one
18:41:40 <b_jonas> yes, I also don't know who are members, and have no way to know, because the only reliable way to verify that someone is a member is the secret handshake, which I also don't know, and since I live in Hungary but no other regular does, I haven't met anyone from #esoteric irl, and so couldn't have shaken their hands
18:42:09 <Lykaina> i know sgeo in rl, and no others.
18:42:17 <shachaf> Huh.
18:42:18 <Lykaina> i do not deny this
18:42:46 <shachaf> kmc: i'd like to "do the secret handshake" with you, if you know what i mean
18:43:08 <kmc> i don't know
18:43:11 <b_jonas> (sure, that's not a watertight argument, because at least two other #esoteric regulars have admitted to have visited Hungary; and I have been to the UK and Norway and like three other countries where #esoteric regulars work)
18:43:14 <int-e> shachaf: does it involve any dismemberment that would explain our lack of members?
18:43:22 <kmc> does it involve taking my clothes off
18:43:36 <shachaf> hm, that's a more advanced handshake than the one i know
18:43:36 <int-e> . o O ( let's not get crazy here )
18:43:39 <int-e> `? alice
18:43:41 <HackEso> Alice doesn't want to go among mad people.
18:44:07 <b_jonas> int-e: no. it's a zero-knowledge handshake to any party who doesn't know about the handshake, and dismembering people would be easily detectable so it would break that
18:44:14 <shachaf> b_jonas: Have you considered being to California?
18:44:19 <Lykaina> as far as i know, sgeo and i were best friends in college. they introduced me to here.
18:44:27 <b_jonas> shachaf: yes, and I decided I don't want to be there
18:45:24 <b_jonas> I decided I want to stay mostly in Europe during the foreseeable future
18:45:32 <int-e> b_jonas: maybe you just have to hide it cleverly (think Kill Bill)
18:45:57 <b_jonas> int-e: hmm, that would explain my messed up sleep schedule
18:47:11 <Lykaina> the line of "code" i accidentally pasted here was a distilled hello world.
18:49:03 <shachaf> b_jonas: What about Hexham?
18:49:43 <b_jonas> shachaf: that is somewhat more reasonable, I may yet go there at some point
18:50:39 <b_jonas> but my next vacation, starting in a week, will be in North-Reine Wesphalia, with one night in München before
18:55:23 <b_jonas> shachaf: although of course in the unlikely case that Brexit makes travel to England seriously inconvenient, I won't travel there
18:56:20 <b_jonas> but I hope that the current situation is stable: no Brexit, a promise of the intention to Brexit soon, and a sacrifice of two or three prime ministers per year
18:57:21 <b_jonas> it's like how Hungary has a contractual requirement to start using the Euro currency within like ten years, and have had so since like fifteen years ago, so we will permanently be planning to start the Euro ten years from the present
18:57:25 <b_jonas> that works fine
18:57:59 <b_jonas> it's just harder for Brexit because the promise is for a shorter term in the future
19:16:01 -!- Phantom_Hoover has joined.
19:22:56 <b_jonas> I wonder how many different locations of Google have people working there that are also #esoteric regulars
19:23:26 <b_jonas> and whether they represent all the major super-secret branches of Google
19:28:11 <b_jonas> but that latter is probably unanswerable
19:46:08 <zzo38> I reported a bug in Ghostscript and it has now been fixed.
19:46:17 <b_jonas> nice
19:46:28 <b_jonas> when did you report?
19:47:16 <zzo38> I reported it on Sunday; it was fixed on Tuesday.
19:47:55 <zzo38> (The bug has to do with using the forall command with strings.)
20:01:31 <imode> trying to implement 'swap' using only dup, roll and drop.
20:02:00 <imode> harder than I thought.
20:05:31 <imode> managed to implement 'over' using minimal primitives, which is something.
20:14:58 -!- xkapastel has quit (Quit: Connection closed for inactivity).
20:24:03 <imode> 'last' can also be done in constant time. really 'roll' and 'last' are basically just 'rotate queue left' and 'rotate queue right'.
20:29:01 <b_jonas> imode: is this still the crazy queue-based thing?
20:29:27 <imode> yessir.
20:29:47 <b_jonas> imode: why don't you add named lexically local variables to this interpreter, and then implement swap as { /a /b b a }
20:29:50 <imode> I added an operation that lets you recall an item from the end of the queue to the front of the queue.
20:30:13 <b_jonas> note that for an ordinary stack-based language like GML it would be { /a /b a b }
20:40:49 -!- MDude has joined.
20:41:52 -!- Camto[m] has quit (Remote host closed the connection).
20:42:05 -!- xylochoron[m] has quit (Remote host closed the connection).
20:42:08 -!- ivzem[m] has quit (Read error: Connection reset by peer).
20:42:14 -!- wmww has quit (Write error: Connection reset by peer).
20:42:21 -!- tswett[m] has quit (Write error: Connection reset by peer).
20:43:56 <imode> lexically scoped variables are too complex for the scope of this interpreter.
20:44:11 <imode> but that's kinda funny how that's a little non-intuitive.
20:44:52 <imode> "here's your parameters in order... and here they are again, but they're technically swapped because of the behavior of the stack."
20:45:36 <imode> https://hastebin.com/equnosetok.txt
20:46:10 <imode> whoops.
20:46:26 <imode> https://hastebin.com/welojekoqu.txt
20:46:30 <imode> there.
20:49:56 -!- Camto[m] has joined.
20:52:11 <imode> a pretty literal translation of an iterative factorial algorithm that I wrote in forth.
20:54:32 -!- Lord_of_Life_ has joined.
20:57:53 -!- Lord_of_Life has quit (Ping timeout: 265 seconds).
20:57:56 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
21:11:42 -!- wmww has joined.
21:11:42 -!- tswett[m] has joined.
21:11:42 -!- xylochoron[m] has joined.
21:11:50 -!- ivzem[m] has joined.
21:15:06 <imode> aha, it didn't work. but it didn't work because of the way I do math.
21:17:42 <imode> https://hastebin.com/gebucenehe.txt an updated version, plus a direct Python translation: https://repl.it/repls/LongtermBruisedDeals
21:21:13 <imode> this is pretty neat, because by the virtue of 'roll' and 'last', you can skip over newer elements in favor of old ones. 'last' can be implemented in a reasonable manner in a typical queue automaton by using the current state as temporary storage, and in an implementation with a circular buffer, can be done in constant time.
21:21:36 <imode> it's effectively a tape that grows and moves to the right on insert.
22:47:55 <zzo38> I thought a open source implementation of Magic: the Gathering should have a command line interface. At many prompts, you can enter a blank line to use the default action or to use a shortcut. The "priority prompt" might say something like "Mark:m1:0>" if the active player is Mark, the current phase is the precombat main phase, and the stack is empty.
22:51:47 <zzo38> u=upkeep, d=draw, m1=precombat main, bc=begin combat, da=declare attackers, db=declare blockers, fs=first strike combat damage, ns=normal strike combat damage, ec=end combat, m2=postcombat main, e=end, c=cleanup.
23:11:17 <Lykaina> hi
23:18:38 <Lykaina> b_jonas: should my subs have return values?
23:22:23 -!- ArthurStrong has joined.
23:24:14 -!- Phantom_Hoover has quit (Ping timeout: 246 seconds).
23:43:35 -!- arseniiv has quit (Ping timeout: 276 seconds).
2019-09-14
00:38:53 <shachaf> Wait, x86-64 has 64-bit push and 16-bit push, but not 32-bit push?
00:38:59 <shachaf> `asm push %rax
00:39:00 <HackEso> 0: 50 push %rax
00:39:02 <shachaf> `asm push %eax
00:39:03 <HackEso> ​/tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: operand type mismatch for `push' \ /tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: operand type mismatch for `push'
00:39:04 <shachaf> `asm push %ax
00:39:05 <HackEso> 0: 66 50 push %ax
00:39:10 <shachaf> `asm push %al
00:39:11 <HackEso> ​/tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: operand type mismatch for `push' \ /tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: operand type mismatch for `push'
00:41:01 <fizzie> Yes.
00:41:42 <fizzie> Back when we were doing the printable code thing here for a while, that was annoying, because on x86-32 you can just push values without leaving any gaps.
00:42:22 <shachaf> I think I knew it didn't have 32-bit push, but I thought that also applied to 16-bit.
00:42:37 <shachaf> What a bizarro situation.
00:42:48 -!- xkapastel has joined.
00:42:54 <shachaf> I mean, I was already surprised by 32-bit operations clearing the upper 32 bits and 16-bit operations not.
00:49:59 <fizzie> According to the manual, you can also push fs and gs in 64-bit mode, but not cs/ds/es/ss. Which I guess makes some sense, since there's the whole thing of cs/ds/es/ss always having a base of 0 while fs/gs are sort of usable in address calculations, but it's not like the registers didn't exist.
00:50:06 <fizzie> `asm push %fs
00:50:10 <HackEso> 0: 0f a0 pushq %fs
00:50:11 <fizzie> `asm push %ds
00:50:13 <HackEso> ​/tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: operand type mismatch for `push' \ /tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: operand type mismatch for `push'
00:50:19 <fizzie> Yet...
00:50:29 <fizzie> `asm mov %fs, %ax; mov %ds, %ax
00:50:30 <HackEso> 0: 66 8c e0 mov %fs,%ax \ 3: 66 8c d8 mov %ds,%ax
00:51:00 <fizzie> Also the manual mentions that 66h prefix is unnecessary, and that most assemblers will let you use...
00:51:04 <fizzie> `asm mov %fs, %eax
00:51:05 <HackEso> 0: 8c e0 mov %fs,%eax
00:51:11 <fizzie> To avoid it.
00:51:17 <fizzie> (The effect is apparently the same.)
00:51:45 <shachaf> What a bizarro world.
00:51:53 <int-e> `asm mov %fs, %rax
00:51:54 <HackEso> 0: 48 8c e0 mov %fs,%rax
00:51:58 <shachaf> Can we scrap x86 and switch to something reasonable?
00:51:59 <int-e> beauty
00:52:13 <int-e> shachaf: sure, once intel goes out of business
00:57:43 <shachaf> I suspect Intel could make pretty good processors for other instruction sets if they tried.
00:58:32 <int-e> I think Intel is looking at their die area for high performance CPUs, sees they're spendin 1-2% of it on instruction decoding, shrugs, and moves on.
00:59:05 <Lykaina> intel made strongarm i think
00:59:10 <shachaf> I mean, instruction decoding specifically isn't the only problem with x86, I think.
00:59:20 <int-e> (I believe, but don't know, that the rest of the CPU would remain largely the same complexity anyway.)
00:59:28 <shachaf> As I understand it they spend quite a bit of die area and power on things that a better instruction set wouldn't require.
00:59:41 <shachaf> Then again they made Itanium so who knows what better instruction set they would make.
01:00:10 <int-e> Itanium was a spectacular failure though.
01:00:15 <int-e> EPIC, even.
01:00:34 <Lykaina> IA-64 was a disaster
01:00:54 <Lykaina> took amd to do it
01:01:21 <Lykaina> and make x86-64
01:02:04 <zzo38> MMIX is better, I think
01:02:09 <int-e> Nobody's made a forward-compatible VLIW instruction set yet. So... you pay with huge bandwidth for a simpler processor, and the next generation will carry all the multiscalar baggage as the processor tries to identify parallel work dynamically, because they need to exploit parallelism simply can't be establish statically anyway.
01:02:45 <int-e> IA-64 was Itanium, no?
01:02:49 <Lykaina> yes
01:03:34 <fizzie> EM64T is the best name.
01:03:52 <Lykaina> that's intel's name
01:04:03 <fizzie> Well, they gave up on it too.
01:04:10 <fizzie> I think it's just Intel 64 now.
01:13:52 -!- imode has quit (Remote host closed the connection).
01:14:14 -!- imode has joined.
01:17:07 <Lykaina> grrr...found a bug in my interpreter i thought i patched
01:23:46 <Lykaina> no, it's a new bug
01:25:31 <Lykaina> or newly-found
01:39:06 <Lykaina> basically, it hits: while(a=='\n') a=putchar(); and acts strangely on the previous value of a
01:39:39 -!- FreeFull has quit.
01:40:05 <Lykaina> it shouldn't even remember the previous value
01:42:02 <Lykaina> it's a proof-of-concept of a switch in echidna
01:43:16 <Lykaina> equivalent of: if(a=='\n') a=putchar(); // behaves normally
01:43:42 <Lykaina> equivalent of: while(a=='\n') a=putchar(); // gives impossible output
01:44:56 <imode> trace it!
01:46:48 <Lykaina> what does that mean? i'm blanking out on it
01:46:54 <fizzie> I can't tell whether that's supposed to be getchar() or not.
01:47:32 <Lykaina> oh shit
01:47:49 <Lykaina> equivalent of: if(a=='\n') a=getchar(); // behaves normally
01:47:57 <Lykaina> equivalent of: while(a=='\n') a=getchar(); // gives impossible output
01:48:21 <fizzie> Well, that's more plausible.
01:49:02 <imode> as in, step the interpreter one instruction at a time.
01:49:06 <Lykaina> imode: what do you mean by "trace it!"
01:49:15 <Lykaina> how?
01:49:17 <imode> print out an instruction trace.
01:49:27 <Lykaina> how?
01:49:30 <imode> i.e what instructions you're executing, along with the content of main memory.
01:49:36 <imode> what do you mean how? presumably you have access to those things.
01:50:07 <Lykaina> um...
01:50:43 <Lykaina> imode: i don't like being called an idiot for not knowing some things
01:51:25 <Lykaina> how do i print out an instruction trace?
01:51:34 <imode> you aren't an idiot, I just assume that you're writing an interpreter that you have access to things like which instruction you're executing, and what the contents of main memory is.
01:51:56 <imode> it's literally just a printout of what instructions you're executing when they're executing.
01:52:07 <Lykaina> okay
01:52:18 <Lykaina> modify the interpreter
01:52:27 <imode> yes.
01:52:28 <Lykaina> to output that
01:53:30 <Lykaina> brb
01:54:09 <Lykaina> oh, by the way, main memory is 64KiB in size
01:54:45 <Lykaina> but i'm only using the lower 4 words in this example
01:54:56 <Lykaina> correction: 128 KiB
01:55:15 * Lykaina goes back to afkland
01:58:02 -!- imode has quit (Ping timeout: 265 seconds).
02:02:03 -!- Phantom_Hoover has joined.
02:09:38 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
02:25:35 <Lykaina> okay, so for some reason it's skipping an earlier "I @0000"
02:26:17 <Lykaina> how do i thank imode?
02:29:03 -!- adu has joined.
02:29:49 <Lykaina> it also misses an -W1
02:30:31 <Lykaina> which is weird
02:30:37 <Lykaina> hi adu
02:31:16 <adu> hi
02:31:46 <adu> what's up
02:40:41 <fizzie> `thanks imode
02:40:42 <HackEso> Thanks, imode. Thimode.
02:40:45 <fizzie> I'm not sure that sort of thanking is particularly useful, but it's the best we have.
02:41:28 <shachaf> `asm .byte 0x48, 0x89, 0x04, 0x64
02:41:29 <HackEso> 0: 48 89 04 64 mov %rax,(%rsp,%riz,2)
02:41:48 <shachaf> Now that I'm doing the whole ModR/M and SIB byte thing properly, I see what you mean about %riz.
02:52:23 <Lykaina> fixed
03:12:29 -!- xkapastel has quit (Quit: Connection closed for inactivity).
03:19:27 -!- hppavilion[1] has joined.
03:19:34 <Lykaina> the echidna-debug program for v0.10a2a outputs 256 bytes per cycle. (64 bytes of argument var and first 96 words of memory (total 65536 words))
03:22:34 <Lykaina> a lot of the key words are between 0000 and 005F anyway.
03:33:14 -!- imode has joined.
03:58:02 -!- b_jonas has quit (Ping timeout: 240 seconds).
03:58:53 -!- b_jonas has joined.
04:59:02 -!- adu has quit (Quit: adu).
05:17:42 <zzo38> The bug in Ghostscript that I reported existed since version 3.33. "9999 string {} forall" doesn't work, but "9999 string {0 add} forall" does work. Commit 8675b40266cbf9771a08f4178a6009cfd17e0ba corrects the bug.
05:28:17 -!- hppavilion[1] has quit (Ping timeout: 265 seconds).
06:13:49 <shachaf> https://raw.githubusercontent.com/espressif/binutils-esp32ulp/master/opcodes/i386-opc.tbl
06:13:55 <shachaf> Why doesn't Intel publish a file like that?
06:20:34 -!- b_jonas has quit (Remote host closed the connection).
07:18:38 -!- hppavilion[1] has joined.
07:26:42 -!- imode has quit (Ping timeout: 265 seconds).
07:56:15 -!- imode has joined.
08:37:49 -!- ArthurStrong has quit (Quit: leaving).
08:56:28 -!- Lord_of_Life has quit (Ping timeout: 264 seconds).
09:00:50 -!- Lord_of_Life has joined.
09:12:59 -!- imode has quit (Ping timeout: 276 seconds).
09:42:44 <esowiki> [[User talk:Ais523]] https://esolangs.org/w/index.php?diff=66149&oldid=65092 * YamTokTpaFa * (+157) /* Bug: Why is HQ9F+ shown on no category pages? */ new section
09:43:18 <esowiki> [[HQ9F+]] https://esolangs.org/w/index.php?diff=66150&oldid=64738 * YamTokTpaFa * (+22)
09:45:45 <esowiki> [[User talk:Ais523]] https://esolangs.org/w/index.php?diff=66151&oldid=66149 * YamTokTpaFa * (+270) /* Bug: Why is HQ9F+ shown on no category pages? */
09:49:13 <esowiki> [[COBOL]] M https://esolangs.org/w/index.php?diff=66152&oldid=47135 * YamTokTpaFa * (+1) I wanted an indent
09:50:07 <esowiki> [[User talk:Ais523]] https://esolangs.org/w/index.php?diff=66153&oldid=66151 * Fizzie * (+649) /* Bug: Why is HQ9F+ shown on no category pages? */ An answer of sorts.
10:08:32 -!- Frater_EST has joined.
10:28:08 -!- hppavilion[1] has quit (Remote host closed the connection).
10:29:11 -!- b_jonas has joined.
10:31:17 <esowiki> [[Chafa]] M https://esolangs.org/w/index.php?diff=66154&oldid=65347 * A * (+526) So just a reference of Zalgo characters
10:32:33 <b_jonas> the PDP-8 cpu has an interesting instruction set. just like all old cpus, it's optimized to allow dense code while being implementable in very little electronics. but the way PDP-8 achieves this is very different from newer cpus that I'm somewhat familiar with, like the 6502.
10:34:32 <b_jonas> in particular, PDP-8 is accumulator-based, but has no straight load instruction: instead it has an instruction that loads a value and adds it to the accumulator with carry, and an instruction that loads and does some bitwise op with it to the accumulator, plus there are multiplex operations that allow you to clear the accumulator, clear the carry flag, plus the store operation also automatically clears
10:34:38 <b_jonas> the accumulator.
10:35:16 <b_jonas> the memory is made of 12-bit bytes, and each instruction takes exactly one 12-bit byte.
10:35:47 <b_jonas> I should look at other popular old cpus from the core memory era to see what other interesting methods they use.
10:37:57 <b_jonas> "how do i thank imode?" => we don't have a widely used system of imaginary internet points and badges for #esoteric yet
10:41:01 <b_jonas> @thanks imode
10:41:01 <lambdabot> you are welcome
10:41:09 <b_jonas> hmm, that doesn't work
10:41:28 -!- xkapastel has joined.
10:41:29 <b_jonas> @karma+ imode
10:41:30 <lambdabot> imode's karma raised to 1.
10:41:34 <b_jonas> ^ ah yes, that's the command
10:41:55 <b_jonas> I don't think we have an equivalent implemented in HackEso, but the bot is very programmable, so you could implement something
10:42:55 <shachaf> lambdabot also listens to all user++ messages and silently increments karma
10:42:58 <shachaf> @karma user
10:42:58 <lambdabot> user has a karma of 0
10:43:07 <shachaf> Hmm. user++
10:43:09 <shachaf> @karma user
10:43:10 <lambdabot> user has a karma of 1
10:43:18 <shachaf> I guess user had negative karma. That makes sense.
10:43:56 <b_jonas> shachaf: ah
10:44:50 <shachaf> Oh, but I didn't see the original question.
10:45:05 <shachaf> You can thank people by typing "thank you", for example.
10:45:17 <shachaf> It's a better system than incrementing a number related to their name.
10:45:33 <b_jonas> shachaf: "Now that I'm doing the whole ModR/M and SIB byte thing properly" => when tom7 made his ABC compiler, I was very surprised that the 386 cpu uses 32-bit modr/m format in 16-bit mode if you use the address-size override prefix, but in retrospect that makes sense
10:46:17 <b_jonas> shachaf: yes, that's a good way to thank someone. but it may still make sense to have a system of giving imaginary internet points and achievement badges
10:46:28 <b_jonas> does lambdabot also listen to "thank you" messages?
10:46:41 <shachaf> How do you mean?
10:46:51 <shachaf> No, but the recipient of the thank you down, which is more important.
10:46:58 <shachaf> @karma
10:46:58 <lambdabot> You have a karma of 99
10:47:05 <b_jonas> like, if you say "thank you, imode" on the channel, does lambdabot increment the karma of imode?
10:47:06 <shachaf> I'm pretty sure most of that is fake oerjan karma.
10:47:22 <shachaf> What's the 32-bit modr/m format?
10:48:07 <shachaf> `` mov %ax, (%bx,si)
10:48:09 <HackEso> ​/hackenv/bin/`: eval: line 5: syntax error near unexpected token `(' \ /hackenv/bin/`: eval: line 5: `mov %ax, (%bx,si)'
10:48:12 <shachaf> `asm mov %ax, (%bx,si)
10:48:13 <HackEso> ​/tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: bad or irreducible absolute expression \ /tmp/asm.s:1: Error: expecting scale factor of 1, 2, 4, or 8: got `si' \ /tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: missing ')' \ /tmp/asm.s:1: Error: junk `)' after expression
10:48:33 <b_jonas> the one that's normally used in x86_32 code in 32-bit protected mode
10:49:42 <shachaf> Oh, this makes no sense of course.
10:49:49 <b_jonas> it lets you select a base register plus 0 or 1 or 4 byte long offset with just a mod/rm byte, or a base register and a scaled index register and a 0 or 1 or 4 byte offset with a modr/m plus sib bytes, and lets you use %ecx or %eax as base registers
10:50:10 <shachaf> Aren't imaginary Internet points and achievement badges a bad incentive?
10:50:58 <b_jonas> as opposed to the 16-bit addressing mode where sib bytes are never used, you can't use %cx or %ax as base or index registers, but you can select %si+%bx or %di+%bx in a modr/m byte
10:51:39 <shachaf> I'm sure glad 64-bit mode is the only one that matters.
10:51:59 <b_jonas> also both the 16-bit and the 32-bit modr/m format has some magical segment choice implications where if you use certain indexing modes, the address is relative to %ss rather than %ds by default, though you can override this in any case
10:52:04 <b_jonas> shachaf: sure
10:52:24 <b_jonas> only this is #esoteric so sometimes we talk about things that don't matter
10:52:32 <b_jonas> things that you don't want to use in production
10:52:43 <shachaf> Sure. But implementing 64-bit mode is enough of a headache for me right now.
10:53:08 <b_jonas> yeah
10:53:36 <shachaf> How can I tell whether my addressing mode implementation is correct?
11:01:10 <shachaf> Does x86 have a nop with immediate? I could use it to mark my output to recognize parts of it easily.
11:02:55 <shachaf> `asm .byte 0x0f, 0x1f, 0x80, 0, 0, 0, 0
11:02:56 <HackEso> 0: 0f 1f 80 00 00 00 00 nopl 0x0(%rax)
11:03:11 <shachaf> `asm .byte 0x0f, 0x1f, 0x80, 'A', 'B', 'C', 'D'
11:03:12 <HackEso> 0: 0f 1f 80 41 42 43 44 nopl 0x44434241(%rax)
11:03:15 <shachaf> I guess that works.
11:08:39 <shachaf> `asm .byte 0x0f, 0x1f, 0200, 'A', 'B', 'C', 'D'
11:08:40 <HackEso> 0: 0f 1f 80 41 42 43 44 nopl 0x44434241(%rax)
11:08:43 <shachaf> `asm .byte 0x0f, 0x1f, 0210, 'A', 'B', 'C', 'D'
11:08:44 <HackEso> 0: 0f 1f 88 41 42 43 44 nopl 0x44434241(%rax)
11:08:54 <shachaf> `asm .byte 0x0f, 0x1f, 0270, 'A', 'B', 'C', 'D'
11:08:55 <HackEso> 0: 0f 1f b8 41 42 43 44 nopl 0x44434241(%rax)
11:08:58 <shachaf> So many nops.
11:09:30 <shachaf> https://www.felixcloutier.com/x86/nop only says the /0 variant is a nop, though.
11:24:50 -!- atslash has quit (Ping timeout: 240 seconds).
11:25:38 -!- atslash has joined.
11:36:24 -!- FreeFull has joined.
11:39:27 <esowiki> [[Apple3.14]] M https://esolangs.org/w/index.php?diff=66155&oldid=49628 * A * (+0) /* How high will it go? */
11:41:32 <esowiki> [[PFD]] N https://esolangs.org/w/index.php?oldid=66156 * A * (+1478) Created page with "'''PFD''' is an esolang made by [[User:Cortex|Cortex]] designed to have very small code and many useful commands, but the only way to see what it actually did through the whol..."
11:43:12 <esowiki> [[PFD]] M https://esolangs.org/w/index.php?diff=66157&oldid=66156 * A * (-1417) Redirected page to [[Https://esolangs.org/wiki/Print Function Deluxe]]
11:43:38 -!- Frater_EST has quit (Ping timeout: 240 seconds).
11:43:41 <esowiki> [[PFD]] M https://esolangs.org/w/index.php?diff=66158&oldid=66157 * A * (-26) Redirected page to [[Print Function Deluxe]]
11:56:02 -!- atslash has quit (Ping timeout: 240 seconds).
11:56:42 -!- atslash has joined.
11:57:23 <esowiki> [[Print]] N https://esolangs.org/w/index.php?oldid=66159 * A * (+1345) Created page with "'''Print''' is an esolang made by [[User:Cortex|Cortex]] designed to make [[Print Function Deluxe]] programs (slightly) shorter. == Commands == {| class="wikitable" |- ! Char..."
12:00:33 <Lykaina> who's this A that edits everything?
12:13:07 <esowiki> [[Print]] M https://esolangs.org/w/index.php?diff=66160&oldid=66159 * A * (-11)
12:21:11 <esowiki> [[Print]] M https://esolangs.org/w/index.php?diff=66161&oldid=66160 * A * (+141)
12:22:38 -!- Frater_EST has joined.
12:25:37 <b_jonas> shachaf: the intel manual also says that only the /0 variant of the 0F 1F instruction is a nop
12:27:08 <esowiki> [[User talk:Lesidhetree]] N https://esolangs.org/w/index.php?oldid=66162 * Lykaina * (+156) Discovered an old account of mine from when I used a different name in rl.
12:30:42 <Lykaina> damn, i was crazy in 2015
12:31:07 <b_jonas> shachaf: you can also use the PREFETCHT2 instruction, whose opcode is 0F 18 /3, as a nop to mark your things. it's slightly less efficient than true nops, but still reasonably good.
12:32:16 <Lykaina> but there are possibly remnants of the "fourfuck" code in echidna's interpreter.
12:32:28 <b_jonas> or, of course, you could put markings in parts of the code that are never executed, or an immediate load to a dead register, or a marking into a debug section or some other elf section that isn't loaded to memory
12:35:02 <Lykaina> i know echidna's interpreter was originally based on hydra51's, a failed attempt of mine long ago to make an 8051 clone in C.
12:35:43 <Lykaina> but i forgot if there was any connection between hydra51 and fourfuck
12:36:48 <Lykaina> hydra51 wasn't esoteric
12:37:49 <Lykaina> but it began my trend of naming my language attempts after animals.
12:44:09 <b_jonas> `pbflist https://pbfcomics.com/comics/splash-down/
12:44:10 <HackEso> pbflist https://pbfcomics.com/comics/splash-down/: shachaf Sgeo quintopia ion b_jonas Cale
12:44:34 <Lykaina> preferably ones with mythological connections
13:05:41 -!- Phantom_Hoover has joined.
13:09:30 -!- arseniiv has joined.
13:30:12 <Lykaina> i have to stop and learn to program in Echidna before i edit more.
13:30:46 <Lykaina> b_jonas: what would echidna be best at?
13:32:21 <esowiki> [[Espro]] M https://esolangs.org/w/index.php?diff=66163&oldid=66046 * Timwi * (+5)
14:06:36 -!- Frater_EST has quit (Remote host closed the connection).
14:14:23 -!- FreeFull has quit (Remote host closed the connection).
14:15:55 -!- FreeFull has joined.
14:58:01 <Lykaina> b_jonas: are you ignoring me or just busy?
14:59:18 <Lykaina> am i being passive-agressive again? i hate when i'm like that...
15:00:33 <Lykaina> it's a personality flaw i've really been working on.
15:05:54 -!- imode has joined.
15:06:45 <Lykaina> also, i am incapable of "getting the hint" (whatever that hint is).
15:07:01 <Lykaina> hi imode
15:08:50 <imode> hey Lykaina.
15:09:00 <imode> what's up?
15:10:01 <Lykaina> just a little annoyed at self for possibly reverting to my old passive-aggressive state
15:10:37 <Lykaina> also, i really have to learn how to write in my Echidna language.
15:12:30 <Lykaina> it's one thing to make a language, it's another thing to learn to write in it, especially if it is esoteric.
15:14:06 <imode> yeah, that's why I'm putting my focus on figuring out different algorithms and control flow structures before I decide whether a full-on interpreter is a good idea or not.
15:14:35 <Lykaina> i'm developing the language and interpreter at the same time
15:15:44 <imode> https://repl.it/repls/WetViolentParallelcompiler
15:15:59 <imode> line 161 onward.
15:16:23 <imode> if your language is small, it should be easy to write and rewrite an interpreter for it.
15:17:31 <Lykaina> i'm still changing and improving it
15:17:44 <Lykaina> have you seen it?
15:18:10 <Lykaina> i'm trying to force myself to stop at 0.10a2a
15:18:29 <Lykaina> the most recent modification was a bug fix
15:19:43 <Lykaina> http://sif.lesidhetree.com/sara/echidna/Echidna%20v0_10a2_p2.pdf
15:20:09 <imode> what are you writing the intepreter in?
15:20:20 <Lykaina> C
15:22:36 <imode> maybe start with a higher level language for prototyping?
15:22:55 <Lykaina> c isn't high level?
15:26:11 <Lykaina> of the languages i have learned, c is the only one i remember well.
15:26:14 <imode> it's not got a lot of useful constructs for prototyping.
15:27:02 <Lykaina> i program console mainly
15:27:16 <imode> whenever I work in a project, I usually take two languages: a prototyping language and an implementation language.
15:27:56 <Lykaina> what is prototyping? i'm a little confused
15:28:45 <imode> you work in an environment that's easier to build things in to finalize a design, then you implement that final design in your actual environment.
15:30:24 <Lykaina> c is easy for me
15:30:38 <Lykaina> and i do a lot of command line
15:31:20 <Lykaina> object-orienting gives me a headache
15:31:38 <Lykaina> it's why i don't use c# much
15:33:35 <Lykaina> so, what am i doing wrong?
15:35:52 <imode> dunno, I'm not writing your interpreter.
15:36:32 <Lykaina> i created choose.ech, a proof of concept for a switch in echidna 0.10a2, and encountered a bug i thought i patched a while ago
15:36:59 <Lykaina> fixed it in .10a2a
15:38:23 <Lykaina> same command list, so the pdf still applies
15:40:07 <Lykaina> one of the things i do is use a bunch of c files. remnant from learning java/c#, where every class has it's own file.
15:41:23 <Lykaina> also, i split my interpreter amonst many .c and .h files for versioning reasons
15:43:11 <FreeFull> C's default string manipulation functions suck
15:43:20 <Lykaina> true
15:43:43 <FreeFull> Also strings with length stored are better than nul-terminated ones for a lot of stuff
15:43:57 -!- imode2 has joined.
15:45:57 <Lykaina> i prefer getchar/putchar over scanf/printf
15:46:26 -!- imode has quit (Ping timeout: 240 seconds).
15:49:50 <Lykaina> i do use fprintf for error messages, though.
15:51:40 <Lykaina> does the book tcpl cover the standard library?
15:55:18 <Lykaina> never mind, can't afford it anyway
15:56:36 <Lykaina> "strings" in c are just char arrays.
16:07:34 -!- imode2 has quit (Remote host closed the connection).
16:08:14 -!- imode has joined.
16:12:50 -!- Lord_of_Life has quit (Ping timeout: 240 seconds).
17:12:01 -!- imode has quit (Ping timeout: 265 seconds).
17:14:15 -!- imode has joined.
17:20:00 -!- atslash has quit (Quit: This computer has gone to sleep).
17:21:42 <Lykaina> got a hidden debug mode implemented!
17:22:53 <int-e> a backdoor?
17:23:57 -!- atslash has joined.
17:25:09 <Lykaina> just displays the cmd read and the first 96 words of internal ram on stderr whenever a cmd is read
17:25:36 <Lykaina> s/internal ram/program memory/
17:27:29 <Lykaina> addresses 0000 to 005F
17:28:01 <zzo38> Is there a "invisible" X server that does not have any input/output on the display and keyboard and so on, so is only usable to implement drawing functions and to allow programs to exchange data with window properties and selections?
17:32:52 <Lykaina> huh?
17:33:52 <int-e> Xvnc is invisible and still allows drawing.
17:44:16 <b_jonas> zzo38: yes, two of them, and I think we talked about them on the channel
17:44:33 <b_jonas> one vnc-related and one or two others
17:46:24 <b_jonas> I don't recall their names, but it's in the channel logs somewhere... sad
17:46:49 <b_jonas> Xvfb is one of htem
17:48:32 <Lykaina> b_jonas: i need to know: have you been ignoring me? Maybe i missed a hint...
17:50:07 <Lykaina> i'll assume you are just busy
17:50:07 -!- b_jonas has quit (Read error: Connection reset by peer).
17:50:29 <Lykaina> sorry...
17:52:05 <Lykaina> crap...
17:52:19 <Lykaina> i think i chased them away
17:58:33 <imode> turns out you _can_ write recursive functions using a queue, provided you have operators that treat it as a stack. :P
18:00:39 -!- b_jonas has joined.
18:01:00 <b_jonas> no, I parted for an unrelated reason
18:03:10 <Lykaina> oh
18:10:34 <esowiki> [[Special:Log/newusers]] create * Enchant3d * New user account
18:11:42 <Lykaina> i'm so scared
18:12:34 <Lykaina> i don't know why
18:15:56 -!- imode has quit (Remote host closed the connection).
18:21:27 <b_jonas> which fungot style provides gratuitious stock market tips?
18:21:27 <fungot> b_jonas: be less specific. :) but no fnord.
18:22:34 <int-e> ^style
18:22:34 <fungot> Available: agora alice c64 ct darwin discworld enron europarl ff7 fisher fungot homestuck ic irc* iwcs jargon lovecraft nethack oots pa qwantz sms speeches ss wp ukparl youtube
18:22:57 <b_jonas> less specific? which fungot style provides gratuitious tips on how to get rich quickly?
18:22:57 <fungot> b_jonas: if it matches
18:23:01 <int-e> ^style qwants
18:23:01 <fungot> Not found.
18:23:08 <int-e> ^style qwantz
18:23:08 <fungot> Selected style: qwantz (Dinosaur Comics transcriptions 2003-2011)
18:23:11 <int-e> ah
18:23:23 <int-e> ^style fisher
18:23:23 <fungot> Selected style: fisher (Fisher corpus of transcribed telephone conversations)
18:23:34 <int-e> fungot: blah
18:23:34 <fungot> int-e: yeah so and
18:23:37 -!- Lykaina has quit (Quit: leaving).
18:23:42 <int-e> fungot: how's mom?
18:23:42 <fungot> int-e: was just saying noise no because if they if the class if the students have access to computer twenty four seven
18:24:06 <int-e> ^style enron
18:24:06 <fungot> Selected style: enron (subset of the Enron email dataset)
18:24:13 <int-e> fungot: fraud?
18:24:13 <fungot> int-e: you know of any " position" ( " position" ( " position" ( " position" ( " position" ( " position" ( " position" ( " position" ( " position" ( " position" ( " position" ( " position" ( " position" ( " position" ( " position" ( " position" ( " position" ( " position" ( " position" ( " position" ( " position" ( " position" ( " position" ( " position" ( " position" ( " position" ( " position" ( " position" ( " position" ( "
18:24:30 <int-e> glad we settled that...
18:24:38 <int-e> fungot: loop?
18:24:38 <fungot> int-e: the bonds. briarpark ln. from the electronic version of the construction of the california legislature. bass" eric.bassenron.com to: " it is the only two: a band of choctaw indians, unable to attend any or any combination of the plan.
18:24:56 <int-e> ^style irc
18:24:56 <fungot> Selected style: irc (IRC logs of freenode/#esoteric, freenode/#scheme and ircnet/#douglasadams)
18:27:35 <arseniiv> hello
18:27:49 <arseniiv> (λx:μX.X→A.(unfold x)x) (fold λx:μX.X→A.(unfold x)x)
18:28:40 <arseniiv> fungot: lambda mu nu
18:28:41 <fungot> arseniiv: the is metaphorical, so it's the same thing :) i'd guess by alonzo church though
18:29:45 <int-e> arseniiv: I expecte mu X.X -> X
18:30:11 <b_jonas> fungot, do you understand indirect type recursion with the Mu type?
18:30:12 <fungot> b_jonas: but it's a slow daemon :(
18:30:19 <arseniiv> (also shouldn’t I write νX.X→T or is μ okay for these kinds of functors)
18:31:02 <int-e> and neither mu nor nu make so much sense with contravariant functors?
18:31:07 <arseniiv> int-e: I like the version with A as we can inhabit any type we pick, like 0
18:31:39 <arseniiv> (that term overall has type A)
18:31:44 <int-e> meh I don't know this stuff. Sure, you're somewhere in domain theory territory, but I don't know whether they can still support different kinds of fixed points nicely.
18:32:09 <int-e> :t fix id
18:32:11 <arseniiv> though I read Pierce on significance of μX.X→X, yeah (exactly today, even)
18:32:11 <lambdabot> a
18:33:30 <arseniiv> yeah, fix id is simpler when we already have fix typed, but I think typing omega by itself is a bit less long
18:33:53 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=66164&oldid=66041 * Enchant3d * (+279) /* Introductions */
18:36:59 <arseniiv> also I’m dabbling in deep waters here too, I heard about something which has sense only for covariant/contravariant functors but I don’t remember that
18:37:15 -!- b_jonas has quit (Read error: Connection reset by peer).
18:37:29 -!- b_jonas has joined.
18:41:41 <arseniiv> hm now I realize X ↦ (A → X, X → A) is not a functor? Not can it be covariant nor contravariant
18:42:30 <arseniiv> either I’m wrong or it looks strange
18:43:42 <arseniiv> also I realize I don’t remember what the class of contravariant functors is called in Haskell if there is one name somewhere
18:44:58 <int-e> Haskell's -> is very different from -> in Set.
18:49:27 <b_jonas> arseniiv: must be "Cofunctor", everything in Haskell is called co-something
18:49:28 <b_jonas> `? co
18:49:29 <HackEso> co? ¯\(°​_o)/¯
18:50:06 <kmc> cocoa coated co-cones
18:50:25 <kmc> the breakfast cereal for category theorists
18:51:55 <int-e> kmc: hmm what do category theorists do when they can't sleep? (set theorists count to aleph_1)
18:52:47 <arseniiv> oh poor set-theorists
18:52:56 <kmc> lol
18:54:01 <arseniiv> though maybe then they sleep for infinity
18:55:17 <kmc> `` python -c 'import time; time.sleep(float("inf"))'
18:55:18 <HackEso> Traceback (most recent call last): \ File "<string>", line 1, in <module> \ IOError: [Errno 22] Invalid argument
18:56:04 -!- Melvar has quit (Ping timeout: 268 seconds).
18:59:03 <arseniiv> so evidently Python is not a set theorist
19:01:37 <arseniiv> oh! let me try something
19:01:43 <arseniiv> `` python -c 'import time; time.sleep(-1)'
19:01:44 <HackEso> Traceback (most recent call last): \ File "<string>", line 1, in <module> \ IOError: [Errno 22] Invalid argument
19:02:25 <arseniiv> it can’t sleep backwards, too bad
19:02:27 <int-e> . o O ( Negative numbers are a cardinal error. )
19:03:00 <b_jonas> in a non-eso world, I think sleep(-1) should do the same as sleep(0), return very soon
19:03:04 <int-e> Or maybe I should go the whole mile and write "sin" there?
19:03:06 <arseniiv> int-e: (rofl)
19:03:18 <b_jonas> in an eso world, sleep(-1) should use a time machine to go back one second
19:03:54 <arseniiv> int-e: but sin is not a cardinal. At least I think in ZFC it shouldn’t be by any accident
19:04:31 <b_jonas> it can do that by first noting the current time, then sleeping until a reliable software time machine implementation becomes available, installing and dynamically loading it, then using that time machine implementation to go back in time one second before the call
19:04:57 <arseniiv> <b_jonas> in a non-eso world, I think sleep(-1) should do the same as sleep(0), return very soon => IIRC often -1 means “no limit” in that case
19:05:03 <int-e> arseniiv: I suppose as long as you're reasonable about representing the function...
19:05:26 <zzo38> If you write sleep infinity then perhaps it should call pause()
19:05:36 <b_jonas> arseniiv: that's for the c function that takes an unsigned int
19:05:38 <arseniiv> int-e: ah, that could be a loophole
19:05:44 <b_jonas> arseniiv: this one is a python function, which takes a python int
19:05:49 <int-e> arseniiv: You could represent the computable functions using some Gödel numbering :P
19:05:52 <b_jonas> so it's clear that the -1 isn't just a very large integer
19:06:08 <b_jonas> if you want to sleep infinitely with the python interface, you can just write sleep(1<<31)
19:06:17 <b_jonas> no wait
19:06:19 <b_jonas> that's not good enough
19:06:23 <b_jonas> I mean sleep(1<<62)
19:06:40 <b_jonas> 1<<31 is only a few decades
19:07:44 -!- Lord_of_Life_ has joined.
19:07:46 <arseniiv> b_jonas: hm in a hypothetical case Python ints would be encoded in p’s complement, -1 ≡ …11111 > any finite positive value = practically infinite
19:08:03 <arseniiv> (though then any negative value would behave the same)
19:08:35 <arseniiv> unbounded p’s complement*
19:08:41 <b_jonas> arseniiv: but time.sleep doesn't take an integer, it takes a floating point value for sub-second precision, that's documented clearly
19:08:57 <fizzie> I don't think it's uncommon for -1 to mean "no limit" for C functions that take an int as well. Although usually there's some other termination condition too. Like with `poll(struct pollfd *fds, nfds_t nfds, int timeout)`, where -1 (or any other negative value) means there's no timeout.
19:09:01 <arseniiv> b_jonas: you win :P
19:09:05 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
19:09:12 <zzo38> JavaScript integers are unbounded two's complement; this affects how bitwise operation are work
19:09:24 -!- Melvar has joined.
19:09:29 <b_jonas> ``` python3 -c'import time as t;print([(t.sleep(0.5),t.time()) for k in range(5)])'
19:09:32 <HackEso> ​[(None, 1568488170.3078678), (None, 1568488170.8085804), (None, 1568488171.3093328), (None, 1568488171.8100646), (None, 1568488172.310767)]
19:09:46 <int-e> > -8 .|. 2
19:09:48 <lambdabot> -6
19:09:51 <b_jonas> zzo38: sure, and so are python integers (except in ancient python) and GMP integers
19:09:54 <b_jonas> no wait
19:09:59 <b_jonas> maybe GMP integers are different, I can't recall
19:10:25 <fizzie> I think GMP integers might be sign-and-magnitude.
19:10:32 <b_jonas> fizzie: that's the representation
19:10:40 <arseniiv> <int-e> arseniiv: You could represent the computable functions using some Gödel numbering :P => ah I have just read the second one finally. You clearly win too. Or sin
19:10:41 <b_jonas> but how do the GMP bitwise functions affect them?
19:11:08 <int-e> http://www.computer-go.info/ "These functions behave as if twos complement arithmetic were used (although sign-magnitude is the actual implementation). The least significant bit is number 0. "
19:11:16 <int-e> huh
19:11:30 <zzo38> (JavaScript did not even have an integer type until somewhat recently, though)
19:11:43 <int-e> https://gmplib.org/manual/Integer-Logic-and-Bit-Fiddling.html
19:11:47 <int-e> that was the link
19:12:01 <arseniiv> oh I meant unbounded not in that sense, I wanted something p-adic maybe. For −1’s representation to be unbounded itself
19:12:29 <int-e> (Why can't software respect the X11 selection ownership protocol these days...)
19:13:01 <fizzie> I like languages that represent true and false as -1 and 0, respectively.
19:13:05 <fizzie> `forth true .
19:13:05 <int-e> (Java software is terrible at this.)
19:13:05 <HackEso> ​-1
19:13:14 <zzo38> (You can use bitwise operations with floating numbers, but then it converts them to 32-bit integers, and then converts it back to a floating point afterward. Optimizations may avoid having to perform the conversion every time, though.)
19:13:38 <zzo38> fizzzie: Yes, Forth, and also BASIC, does.
19:14:09 <int-e> > complement 0
19:14:12 <lambdabot> -1
19:16:05 <zzo38> I hope they add a popcount function into JavaScript; implementing it using JavaScript code would be inefficient.
19:16:09 <arseniiv> > iterate complement 0
19:16:11 <lambdabot> [0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,...
19:18:42 <b_jonas> int-e: yes, and very often -1 for true is more convenient than 1 for true. ideally if you go for optimizations, you can choose between those representations, and of different sizes too
19:19:27 <b_jonas> it is true though that representing true with 1 also makes sense, and it wasn't even C that started that, APL already depends on representing true by 1
19:19:30 <arseniiv> I’m glad true integers were added to JS, I hadn’t heard about that earlier. Maybe some day I’ll write something in a future JS
19:20:46 <arseniiv> b_jonas: is it connected with use of Iverson brackets?
19:21:02 <b_jonas> arseniiv: yes
19:21:21 <arseniiv> but then they aren’t needed?
19:21:27 <b_jonas> in fact, often the hybrid solution is the best:
19:21:46 <b_jonas> treat true as if it had the value 1 semantically when you use it as a number, but represent it as -1
19:22:00 <b_jonas> but again, that's not always the best either
19:22:21 <b_jonas> luckily it's not that hard to convert between different representations
19:24:49 <b_jonas> what's the best depends both on how you're generating the integers, what you're doing with them, and even the cpu instruction set extensions
19:25:36 <arseniiv> > let { true = -1; x `and` y = negate ((negate x) * (negate y)) } in true `and` true
19:25:39 <lambdabot> -1
19:31:04 <arseniiv> (hm is there a module to convert an unbounded integer to Knuth’s myriad-myllion system (or another I don’t know of))
19:31:48 <arseniiv> (though practical considerations make some complexity unnecessary)
19:31:58 <b_jonas> I don't know what "Knuth's myriad-myllion system" is. is that when you compute everything modulo various primes?
19:33:27 <arseniiv> b_jonas: it’s a textual representation suitable for unbounded integers, as traditional ones can’t handle values that are too big
19:34:07 <b_jonas> ah
19:34:11 <b_jonas> I hadn't heared of that
19:35:54 <arseniiv> first it declares its own myriad = 1e4, myllion = 1e8 and something for 1e16, 1e32 and so on for some time, and then it allows arbitrarily long names but I always forget in which manner. I’ll look up what the article was called
19:36:14 <b_jonas> I know http://www.madore.org/~david/weblog/d.2010-09-03.1791.html as an alternate system to write large integers, but it's not for unbounded ones, it has a limit of something between 10**21 and 10**100 depending on version
19:39:30 <shachaf> Do you like this? https://twitter.com/AlexKontorovich/status/1172715174786228224
19:39:57 <kmc> shachaf: wow, is this an unpopular opinion that is actually unpopular?
19:42:17 <arseniiv> b_jonas: I didn’t found the original article but there is another: https://en.wikipedia.org/wiki/-yllion
19:43:07 <int-e> . o O ( Fortunately the Collatz conjecture has no practical implications at all. )
19:44:09 <shachaf> kmc: shocking
19:45:13 <shachaf> I'm disappointed that lea r64,r64 is encodable but just an illegal instruction.
19:45:37 <int-e> shachaf: Well, he's not wrong. There's no particular reason why a weird universal machine should not be lurking inside the Collatz sequence. We'll never know.
19:46:44 <b_jonas> shachaf: why? there are several other instructions that are invalid with a register argument
19:46:53 <shachaf> int-e: wow, you're much less motivational than hilbert tdnh
19:48:56 <int-e> Feel my power of negativity.
19:49:01 <shachaf> Wir müssen wissen. Wir werden wissen.
19:49:49 <int-e> Gödel put an end to that attitude.
19:50:02 <int-e> I hear it was a huge blow to Hilbert.
19:50:18 <int-e> (Almost typed "Dilbert" there, how's that?)
19:51:29 <b_jonas> int-e: This reminds me of the time my uncle Bilbert
19:53:32 <int-e> shachaf: If you think about it a bit, by saying that we'll never know I'm also suggesting that no counterexample exists :)
19:53:49 <int-e> Not sure that was entirely intentional.
19:54:13 <shachaf> Are you actually?
19:54:18 <b_jonas> int-e: not really suggesting that
19:54:25 <b_jonas> there could be counterexamples that are hopelessly hard to find
19:54:28 <shachaf> I think we'll never know BB(100) but I think it exists.
19:54:31 <int-e> shachaf: Well presumably if we can /find/ a counterexample that would resolve the question!
19:55:01 <b_jonas> like, you know, there's almost certainly a string whose SHA-512 sum is zero, but we probably won't find one soon, and for a well-designed 1024-bit checksum, we'll probably never find one
19:55:07 <shachaf> Or that.
19:55:08 <int-e> shachaf: True. Hard to believe, but true.
19:55:34 <b_jonas> shachaf: in what sense can you "know" BB(100)? it's so large, surely you don't expect us to write down all digits
19:56:02 <b_jonas> no, I mean, in what sense can you "know BB(100)"?
19:56:17 <b_jonas> do you have a more specific true-false statement about BB(100)?
19:56:27 <shachaf> Your example is better for that reason.
19:56:34 <int-e> shachaf: Oh if https://www.treadwell-stanton.com/services/phaedra has any basis we'll have sha512 preimage attacks in no time ;-)
19:56:43 <shachaf> But I think most interesting predicates about that number are similarly unknowable.
19:56:55 <shachaf> For example: Is it greater than 5? We just don't know.
19:57:19 <int-e> "it"?
19:57:23 <shachaf> BB(100)
19:57:28 <int-e> shachaf: of course it is
19:57:31 <b_jonas> shachaf: it's greater than 5, yes
19:57:37 <shachaf> But is it greater than 8?
19:57:39 <int-e> we can give plenty of lower bounds, unimaginably large
19:57:41 <shachaf> That one's a real stumper.
19:57:51 <int-e> shachaf: you're mixing up something
19:58:10 <shachaf> The joke is that I said that predicates of this number are unknowable, and now I'm giving some knowable predicates.
19:58:14 <shachaf> It's not a very good joke.
19:58:51 <int-e> shachaf: https://en.wikipedia.org/wiki/Graham%27s_number is closer to what you're saying
19:59:05 <shachaf> That one's obviously less than BB(100)
19:59:11 <int-e> (best lower bound: 13. best upper bound... too large to write down)
19:59:14 <b_jonas> shachaf: I don't believe that. they'd be rich if they could break SHA-256 already. that said, I was careful and said SHA-512 deliberately.
19:59:28 <int-e> (without special notation)
19:59:41 <shachaf> Oh, you're not talking about the number but the original problem.
19:59:58 <int-e> b_jonas: yes, there's a lot that is wrong with that page :)
20:00:17 <b_jonas> I think we know that 100 is a lower bound for Collatz
20:00:18 <shachaf> int-e: So that link claims "orders of magnitude faster" than brute force.
20:00:22 <int-e> b_jonas: but, interestingly, the Digital Annealer Units are real technology.
20:00:25 <b_jonas> so 13 can't be the best lower bound
20:00:43 <shachaf> Let's say 3 orders of magnitude, so 10 bits?
20:00:57 <int-e> b_jonas: Uhm, the 13 is for that Ramsey theory problem that Graham's number is an upper bound for.
20:01:03 <shachaf> Oh man. "overlapping into the quantum computing realm"
20:01:18 <int-e> shachaf: I don't believe any of the performance claims in that link.
20:01:23 <shachaf> I'm sold.
20:01:28 <b_jonas> int-e: blockchains, neural nets, and dozens of other trendy jargon words are also real technology, yet marketing people sell so much bullshit with them
20:01:33 <shachaf> It's also good to know that Google has a preimage attack on SHA-1.
20:01:41 <b_jonas> int-e: ah
20:03:08 <int-e> b_jonas: The Digital Annealer Units are used for things like TSP. As far as I understand them, they're basically accelerators for simulated annealing.
20:03:10 <b_jonas> I don't know what graham's number is all about, I think it's another famous hype that's abused for marketing or something
20:04:01 <int-e> b_jonas: I have not seen any claims for plain combinatorial search, in particular satisfiability, and I can't really see how that would work either... there's no locality to exploit at all.
20:04:33 * int-e shrugs
20:05:02 <b_jonas> there's a nice question for which 7 is the best known lower bound so far, and it was improved from 6 to 7 in 2008: https://mathoverflow.net/a/100449/5340
20:05:26 <int-e> shachaf: I thought Google has a SHA 1 collision (shattered)... a proper preimage attack would be news to me.
20:06:16 <b_jonas> then there's also the Hadwiger-Nelson problem
20:06:40 <int-e> b_jonas: hmm, how does this relate to addition chains?
20:06:43 <shachaf> int-e: I'm only saying the obviously false things your link is saying.
20:06:47 <b_jonas> int-e: I don't think so
20:06:48 <arseniiv> ah I found that article now, there Knuth uses parentheses “latin…yllion” to represent n ↦ 10^2^(n+2) where n is named as “…” using the same system
20:06:52 <shachaf> Maybe it's not even saying that. Whatever.
20:07:11 <int-e> b_jonas: I guess addition chains count the + signs rather than the 1s. Hrm.
20:07:31 <int-e> b_jonas: (and allow some additional sharing of subexpressions too... so not the same)
20:07:32 <arseniiv> (then he discusses a series of prefix binary notations, couldn’t he make a prefix one here too)
20:07:41 <b_jonas> int-e: there are like ten thousand different interesting open questions in combinatorics that are easy to ask, I hear a lot about them from the guys at ELTE
20:08:11 <int-e> b_jonas: Ah I'm looking at the wrong entry...
20:09:55 <int-e> b_jonas: It's a bit boring when you have an infinite family of problems, and are just nibbling at the low end (here: 1 point, 2 points, 3 points ... 6 points, now 7... even if you find 8 points, that still leaves 9?)
20:10:48 <b_jonas> and there are a lot of them that, unlike these conjectures about eight points with pairwise rational distances or the Hadwiger-Nelson, sound like they should be easy to prove, but they really aren't
20:11:08 <b_jonas> int-e: sure, that's why I said the best lower bound is 7
20:11:18 <b_jonas> it would be good to know the actual highest value
20:12:39 <int-e> b_jonas: Of course the picture is different if there's a known upper bound. And it becomes fascinating when the upper and lower bounds are close as for the Hadwiger-Nelson problem.
20:13:09 -!- Phantom_Hoover has quit (Ping timeout: 268 seconds).
20:13:35 <int-e> Anyway, I wanted to see what "almost all" means in that Tao paper...
20:14:15 <int-e> (Almost all orbits of the Collatz map attain almost bounded values, https://arxiv.org/abs/1909.03562)
20:20:43 -!- Phantom_Hoover has joined.
20:21:41 <shachaf> How long has it been the olisters got the five-week Sphinx virus?
20:27:12 <int-e> Yeah I think there's still plenty of room in "almost all" for a universal machine to hide in.
20:27:41 <int-e> I mean the complement thereof, of course.
20:29:16 <shachaf> Does "almost all" mean "all but elements of an implied ideal"?
20:30:26 <int-e> No it means the logarithmic density is 1.
20:32:31 -!- tromp_ has joined.
20:36:08 -!- tromp has quit (Ping timeout: 276 seconds).
20:49:39 <b_jonas> shachaf: not long. they still haven't reached the predicted date of Harry's death, and that Sphinx virus was within two weeks I think
20:50:04 <b_jonas> wait, let me get more specific
20:51:16 <b_jonas> http://www.giantitp.com/comics/oots1081.html is when Hel says everyone on the ship is infected with deadly Sphinx Pox, and they got it from Mr. Scruffy back in the desert
20:51:39 <b_jonas> also that it has an incubation period of five weeks
20:54:00 <b_jonas> http://www.giantitp.com/comics/oots0937.html was still during the long day in the desert, and Haleo says that the ship will get them to past the Dwarven lands in eight days if the world is at stake, and the world is indeed at stake
20:54:11 <b_jonas> the fate of the world
20:54:46 <b_jonas> now going to the location of the Godsmoot and attending it was probably a day of delay, and the two fights at the dwarven lands took two or three days
20:55:02 <b_jonas> and the long day was, I think, two days after they arrived to the Empire of Blood
20:55:17 <b_jonas> the question is, how long they've been in the desert before they arrive to the Empire
20:56:21 <b_jonas> and that's hard to tell, because they already spent an unknown amount of time in the desert between #672 and #673,
20:56:54 <b_jonas> and in #673 they're in a large town, though not as large as the one in the Empire of Blood, but probably still large enough for pox to spread
20:57:37 <b_jonas> but Roy says in #673, "Here we are, gang. The town of Sandsedge, first stop on our journey."
20:58:03 <b_jonas> that sounds like they hadn't been to a town in the desert before that, so that's the earliest time that the cat could have gotted the virus
20:58:27 <b_jonas> now how much time did they spend from arriving to Sandsedge to arriving to the Empire of Blood? I've no idea
21:00:07 <b_jonas> https://oots.fandom.com/wiki/Timeline#The_Comics has some calculations
21:01:46 <b_jonas> ah yes, it points out to #692 which shows that they spend six days searching, but they don't spend twenty more pages
21:03:00 <b_jonas> hmm
21:03:16 <b_jonas> it looks like they did actually pass more than half of those five weeks of incubation
21:03:40 <b_jonas> of course, people in the forums already pointed out that now they have clerics who can cure such illnesses easily, and in fact may have already cured them
21:06:54 <shachaf> Oh, that's a good point.
21:07:00 <shachaf> But they may get separated again.
21:08:58 <b_jonas> in fact, Mechane Crewman with Goatee in #951 seems to me like he's the resident cleric of the Mechane, and he may have already cured the mechane crew from the pox too
21:09:15 <b_jonas> Greg had time to cure them as well
21:10:53 <shachaf> Who?
21:11:56 <b_jonas> cure the Mechane crew, before the dwarven lands
21:11:58 <b_jonas> no wait
21:12:01 <b_jonas> before the godsmoot
21:12:09 <b_jonas> since Greg left the Mechane at the godsmoot
21:12:18 <b_jonas> also, the potion factory with advertising deal may have given the Mechan crew potions other than the cure potions
21:12:31 <b_jonas> some of which may be good aginst illnesses
21:17:49 <b_jonas> fungot, have you ever got Sphix Pox?
21:17:49 <fungot> b_jonas: the answer seems pretty obviously ' no.' symbol is used as a normal atom?'.
21:18:07 <b_jonas> fungot: no, it's a virus
21:18:07 <fungot> b_jonas: if i am
21:30:18 <shachaf> Who's Greg?
21:31:05 <b_jonas> shachaf: the vampire that inhabited Durkon's body
21:32:08 <shachaf> Oh.
21:32:19 <shachaf> Why would the high priest of Hel sabotage Hel's plans?
21:33:53 <b_jonas> shachaf: he was disguised as Durkon, so he did some things that Durkon would do to keep the disguise
21:34:01 <b_jonas> he did protect the Mechane in other ways
21:35:54 <shachaf> But they didn't even know about the virus.
21:36:15 <b_jonas> shachaf: I think clerics have a way to detect illnesses
21:36:23 <b_jonas> in fact, maybe even Vaarsuvius or Elan has a way
21:37:34 <b_jonas> but it's more likely that they don't know about the virus, some of them still carry it, but it will be detected and quickly cured when the symptoms become visible
21:40:01 <b_jonas> luckily Remove Disease is available even in potion form (or "cleric in a can" as Tarquin calls it)
21:41:49 -!- Lykaina has joined.
21:42:28 <Lykaina> hi
21:46:10 <shachaf> I bet it'll have some impact on the story.
21:46:32 <b_jonas> shachaf: I already said that I'm sure it won't have an impact on the story
21:46:35 <Lykaina> arf?
21:46:39 <b_jonas> it may come back as a joke, but not as anything serious
21:47:05 <shachaf> Right, that's why I said it would.
21:47:34 <b_jonas> shachaf: I'm saying this mostly because in the Start of Darkness book, there's an entire story arch where a strange virus infection has a large impact on the story
21:47:44 <b_jonas> and I don't think the Giant would repeat such an element in the later storyline
21:50:44 <Lykaina> so, as i am a werewolf, i repeat my question. Arf?
21:52:10 <b_jonas> that out of universe argument convinces me more than any in universe explanation
21:52:48 <Lykaina> huh? i was just being silly
21:57:38 <Lykaina> so, what did i miss?
21:58:14 <Lykaina> did i actually say something profound by accident?
21:59:27 <b_jonas> Lykaina: we were talking about o, a certain webcomic that's popular here
22:00:45 <Lykaina> oh
22:03:42 <Lykaina> werewolf - english dictionary: arf? = huh?, grr... = oh shit..., still working on the rest.
22:05:07 <Lykaina> as Lykaina is greek for she-wolf, i sometimes speak canine due to my lupine nature.
22:05:36 <b_jonas> oh, that's what it means? so you're in the half of the channel whose nick means something?
22:06:11 <Lykaina> huh?
22:06:25 <b_jonas> we have some people whose nicks are entirely meaningless
22:06:40 <b_jonas> or at least they deny any meaning
22:06:44 <Lykaina> you aren't related to nick jonas?
22:07:01 <b_jonas> who is "nick jonas"?
22:07:09 <Lykaina> lol
22:07:18 <Lykaina> sorry
22:07:48 <Lykaina> 2000's teen pop star
22:07:51 <b_jonas> ah
22:08:03 <b_jonas> I don't think anyone asked me that yet
22:08:15 <b_jonas> people asked about some musicians called the Jonas brothers instead
22:08:42 <Lykaina> nick jonas was the front of the jonas brothers
22:08:47 <b_jonas> ah
22:08:53 <b_jonas> well that makes more sense then
22:09:27 <b_jonas> there's like a thousand different people out there who use the nick "jonas", and more who use the nick "Jonas"
22:09:46 <b_jonas> no wonder, because it's also a very popular real name, both as a first name and as a last name
22:10:10 <b_jonas> I too use the nick "jonas" on some places online
22:10:19 <Lykaina> last name?
22:10:24 <b_jonas> in at least one place I'm called "jonas" and another commenter is called "Jonas"
22:13:17 <Lykaina> then there's the Jessicas and Jennifers, and the years where there were three in every class in school
22:13:43 <b_jonas> yes, girls' names are fickle, the fashion changes every few years
22:13:52 <b_jonas> whereas boys' names are much more stable
22:14:19 <Lykaina> Sara's been popular for a while.
22:14:52 <b_jonas> Bence has been the single most popular boys' name for newborns in Hungary for two decades, and it was at least somewhat popular already more than a century ago
22:15:47 <zzo38> I also made up some Magic: the Gathering cards and wrote it on a paper, including: Night Wolf {3G(G/B)} Creature - Wolf (2/2) ;; First strike ;; Bands with other creatures named Night Wolf ;; Menace although maybe some thing should be altered a bit, I am not sure
22:16:16 <Lykaina> the years after twilight came out, Isabella was popular
22:17:00 <zzo38> Make up a name different from someone else's name, so that it is not confuse with other people with the same name.
22:17:24 <b_jonas> zzo38: yes, "b_jonas" is pretty unique, which is lucky given how short it is
22:17:35 <zzo38> OK, that is good, then.
22:18:34 <b_jonas> I guess "lob_jonas" is even more unique
22:19:13 <Lykaina> i snatched SchrodingersCat in 2005 when i first used freenode.
22:19:38 <Lykaina> i hated being asked if i was living or dead
22:19:52 <zzo38> O, so that is why your hostname cloak says schrodingerscat
22:20:02 <Lykaina> i was someone else then.
22:20:05 <Lykaina> yes
22:21:37 <Lykaina> i think i used SchrodingersCat when Sgeo first showed me this channel when i was in college.
22:22:07 <Lykaina> again, different person
22:22:16 <esowiki> [[B automaton]] N https://esolangs.org/w/index.php?oldid=66165 * A * (+158) Created page with "[[B automaton]] is a [[Bully automaton]] designed with problem-solving usefulness in mind. [[Category:2019]] [[Category:Languages]] [[Category:Unimplemented]]"
22:22:42 <b_jonas> yeah, this channel is old. we have logs going back to 2002
22:23:05 <Lykaina> that's around when freenode formed, right?
22:23:15 <b_jonas> no clue
22:24:08 <b_jonas> I think I started using irc in 2005 or so
22:24:26 <b_jonas> basically I started participating in internet communities in 2003
22:24:30 <b_jonas> irc came a bit later
22:24:50 <b_jonas> I came on it first for computer help, like many people do, then eventually got stuck because of communities
22:25:06 <b_jonas> freenode the most, but I've connected to like a dozen different irc networks at different times
22:25:14 <Lykaina> in 2008, when i started activly using irc, i chatted like a noob.
22:25:31 <Lykaina> cause i was one then
22:25:52 <Lykaina> took me a few years to learn how to chat properly
22:26:46 <b_jonas> I even founded three successful channels: #cbstream was active from 2006 to 2017, with some breaks; #jsoftware was active from probably 2009 and still lives;
22:27:26 <b_jonas> and ##Droidikar was an event-related one-time thing that was active for like four days
22:27:49 <zzo38> I sometimes use other IRC servers too but always use the nickname and username "zzo38" on them. On ifMUD I am #20071. On Usenet/Unusenet I am "news@zzo38computer.org.invalid" (in some old articles, it didn't have ".invalid" at the end; I added it at someone else's suggestion). I am also User:Zzo38 on some wikis (including esolang wiki)
22:28:53 <Lykaina> the username i use depends on when i start using it
22:29:00 <zzo38> OK
22:29:24 <Lykaina> i keep the one when i was most embarrassing private
22:29:30 <zzo38> OK
22:30:11 <kmc> it's cool that on the internet you can start over.
22:30:55 <zzo38> Yes, although if you have a static IP address then you would want to change it if you will start over.
22:31:46 <shachaf> A static IP address is indeed most people's main barrier.
22:32:08 <kmc> meh
22:32:13 <kmc> I use IRC from a VPS
22:32:20 -!- arseniiv has quit (Ping timeout: 246 seconds).
22:32:24 <kmc> if I want a new IP i can just ask for one
22:32:27 <zzo38> Yes, that works too
22:32:38 <kmc> also if I'm on my phone wifi then it's a different IP every time
22:33:04 <b_jonas> I don't think a static IP address is the main barrier
22:33:11 <b_jonas> it's more like all the personal information I give out
22:33:37 <b_jonas> almost all my online identities are linked together with lots of links and more implicit statements, it's easy to find me from any of them
22:34:01 <b_jonas> which is deliberate, but it would be much harder to deliberately make one that's not connected to my other identities and still chat in a reasonable way
22:34:07 <esowiki> [[B automaton]] M https://esolangs.org/w/index.php?diff=66166&oldid=66165 * A * (+576)
22:34:17 <b_jonas> secret identities come natural to some people, but it would be much harder for me
22:34:30 <b_jonas> I mean, if I entered here under any other nick, you'd probably recognize me after a few lines
22:34:52 <zzo38> Yes, if you have a RDF file to link them together, for example. Not all such services allow linking to such a RDF profile, but I invented the way to do so with NNTP. (You can easily have multiple RDF profiles too, if you want to keep them separate)
22:35:37 <zzo38> b_jonas: Maybe your hostname too, possibly
22:35:43 <b_jonas> zzo38: the nickserv user cbstream has a nickserv property set to connect it to me, you can see it with `NICKSERV INFO cbstream` with the current software I think
22:36:14 <b_jonas> zzo38: hostname is easier to mask by using a proxy that you don't recognize
22:36:36 <zzo38> Yes, if you deliberately do that, then of course it will be easier to mask
22:36:38 <b_jonas> ah no, you have to do `NICKSERV TAXONOMY cbstream` still
22:37:07 <Lykaina> read that as taxidermy
22:37:07 <zzo38> You can also abbreviate the command "NICKSERV" as "NS"
22:37:22 <Lykaina> and got really confused
22:37:22 <b_jonas> really?
22:37:24 <b_jonas> let me try
22:37:36 <b_jonas> yeah, you're right
22:39:23 <esowiki> [[B automaton]] M https://esolangs.org/w/index.php?diff=66167&oldid=66166 * A * (+352)
22:40:07 <b_jonas> I didn't know that for some reason
22:40:38 <Lykaina> Who is A on the wiki?
22:40:48 <Lykaina> is that code for anonymous?
22:40:58 <b_jonas> no
22:41:51 <Lykaina> i keep seeing updates by A and wonder if they are the wiki's #1 updater
22:42:04 <b_jonas> yes they are, they put a lot of nonsense there
22:42:07 -!- imode has joined.
22:42:40 <b_jonas> which is annoying, but admittedly it aligns with one of the goals of the wiki, which is to attract people's useless creative output away from more dangerous places they could mess up
22:44:15 <b_jonas> which is also why I think we should allow languages on the wiki when they aren't technically esoteric, but they're obscure enough that they don't get documented anywhere else
22:44:43 <b_jonas> so if a programming language doesn't get an en.wikipedia entry, then I think it should be on topic here
22:46:02 <b_jonas> which is why I documented https://esolangs.org/wiki/SIMPLE_(preprocessor) despite that it's technically not esoteric because david originally wrote it to do some preprocessing for html or tex or something and used it a little that way
22:50:14 <zzo38> (My way of using RDF user profiles on NNTP is to add a "From-RDF" header, which includes the URL of the RDF file (the "file:" scheme is not allowed). You still need a "From" header too, though.)
22:53:56 <zzo38> The information provided for Baba Is You is not complete, although from the information provided, and some guesses, it would seem that the example is paradox since the first line allows the second line to be interpreted as denying that it can be interpreted in this way.
22:54:29 <zzo38> Is it? Unfortunately, I don't know.
22:56:19 <zzo38> One nonstandard header I have seen in Usenet messages is "X-Clacks-Overhead". I looked it up, and seems that it was intended for HTTP, although it could also be used on NNTP (as in this case), and also email, and also ifMUD (although nobody can see it unless you set yourself examinable)
22:57:30 <zzo38> (and perhaps also it could be set as a NickServ property on Freenode, too)
23:04:35 <esowiki> [[Trate]] N https://esolangs.org/w/index.php?oldid=66168 * A * (+436) Created page with "[[Trate]] is a tool for bitwise-translating the input. == Instructions == Nx,y Negates the position on (x,y), also affecting the nearby cells to negate. If on the edge, cells..."
23:04:46 <esowiki> [[Trate]] M https://esolangs.org/w/index.php?diff=66169&oldid=66168 * A * (+1)
23:04:51 <Lykaina> not another bug...
23:09:45 <esowiki> [[User talk:A]] M https://esolangs.org/w/index.php?diff=66170&oldid=65854 * A * (+527)
23:11:34 <b_jonas> fungot, which one is the better pop song about a hopeless love between "I will love again" and "White flag"?
23:11:34 <fungot> b_jonas: i was working on a toy interpreter or two. i really want to
23:11:47 <b_jonas> fungot: oh nice, tell me more. what kind of interpreter?
23:13:41 -!- imode has quit (Ping timeout: 258 seconds).
23:18:07 <b_jonas> wait, so not only are ISO 3166-1 alpha-2 two-letter country codes sometimes reassigned to an unrelated country, but IATA two-letter airline codes are sometimes reassigned too? these standards are crazy
23:21:00 -!- imode has joined.
23:33:13 <zzo38> I am glad that PostScript allows integer literals in base four.
23:40:04 <b_jonas> `? linker
23:40:09 <HackEso> The linker (from German "links") is a part of a Turing machine that's responsible for moving all output data to the left of the tape before terminating.
23:41:07 <b_jonas> you know how the protagonist of the Metroid series is not called Metroid, she's called Samus, and the protagonist of the Zelda series is not called Zelda, she's called Link, right?
23:41:24 <b_jonas> well, now that's made more confusing, because there's a Zelda game where Zelda is the best playable character
23:43:07 <b_jonas> and it's not like one of the 3D games where Zelda is a huge glowing white elf princess who tells you the plot while Link is an elf child wearing a green hood and a sword and never speaks, no. it's a 2d game where Zelda is a tiny sprite
23:44:44 -!- adu has joined.
23:46:25 <b_jonas> admittedly there's also been a few Mario games where Princess Peach was a playable character
23:46:31 <b_jonas> s/was/is/
23:47:32 <b_jonas> (even apart from Smash and Mario Kart games)
23:48:17 <b_jonas> Is the baby metroid a playable character in any game?
23:48:32 <adu> I think the only Mario's I've played are gameboy and nintendo64
23:50:10 <b_jonas> adu: consider playing others, there are many good Mario games
23:52:04 <adu> how to play original mario
23:55:22 -!- imode has quit (Remote host closed the connection).
23:55:39 -!- imode has joined.
2019-09-15
00:01:13 -!- xkapastel has quit (Quit: Connection closed for inactivity).
00:11:33 -!- Phantom_Hoover has quit (Ping timeout: 265 seconds).
00:14:26 -!- imode has quit (Ping timeout: 240 seconds).
00:17:47 -!- imode has joined.
00:19:17 <Lykaina> what is a flow operation?
00:19:43 -!- imode2 has joined.
00:19:53 <Lykaina> is that if, while, switch type?
00:20:31 <b_jonas> those are usually called "control flow". I don't know what "flow operation" means.
00:21:05 <Lykaina> that's what i meant
00:21:58 <b_jonas> the "control" is the important word because a lot of Haskell libraries are named "Control" something in this sense, without mentioning flow
00:22:17 -!- imode has quit (Ping timeout: 268 seconds).
00:23:27 <Lykaina> in debugging, i found problems at the very core of the echidna language.
00:23:52 <Lykaina> basically, i've never tried breaking out of a loop before
00:24:12 <Lykaina> and not immediately ending
00:24:55 <Lykaina> well, to be precise, the implementation of the core
00:25:19 -!- cocof has joined.
00:25:33 <cocof> no
00:25:40 <b_jonas> Lykaina: ah, I never really looked at that part of the interpreter code
00:26:00 <b_jonas> I cared more about the arithmetic stuff
00:26:06 <Lykaina> if/while loops
00:26:43 <b_jonas> so basically, Samus got bitten by a radioactive baby metroid in the ending of Super Metroid, and since then she has super metroid powers and metroid sense and metroid DNA in his body?
00:26:54 <b_jonas> how do they invent such a story?
00:27:13 <Lykaina> lexx
00:27:25 <Lykaina> see: xev's origin
00:27:35 <Lykaina> that's how
00:28:58 <Lykaina> okay, no, that's not it
00:29:05 <Lykaina> it's spiderman
00:29:20 <cocof> how about astral travel?
00:29:27 <cocof> since you choose such name
00:29:36 <cocof> how can code be astral?
00:29:51 <Lykaina> huh?
00:29:58 <cocof> the name
00:30:03 <Lykaina> for?
00:30:06 <cocof> esoteric
00:30:38 <int-e> cocof: just look at regular expressions; they're full of stars
00:30:40 <Lykaina> esoteric programming languages
00:31:08 <cocof> both gays and esoteric code is a fail :)
00:31:14 <cocof> for not been able to use own name
00:31:43 <int-e> it's also worth noting that "esoteric" has nothing to do with stars.
00:32:23 <int-e> esoteric, 'from Greek esoterikos "belonging to an inner circle" (Lucian), from esotero "more within,"'
00:32:24 <cocof> why not call it language nr 23 :D
00:33:01 <shachaf> I like stars.
00:33:48 <int-e> I like shooting stars? Nah, that's a lie, I don't like shooting at all.
00:34:01 <zzo38> cocof: Unicode characters can be astral if it is more than 0xFFFF
00:34:21 <cocof> while not obviously related, how come shifting awareness outside body is tricky/
00:34:45 <cocof> well programming is fun also
00:34:49 <int-e> `? *
00:34:50 <HackEso> Twinkle, twinkle, little star!
00:35:04 <cocof> star rats
00:35:05 <cocof> :)
00:35:33 <zzo38> I don't know about shifting awareness outside body, and I doubt anyone else on here does. I am not even sure if it is possible
00:35:52 <cocof> it is possible
00:35:53 <shachaf> My awareness is not inside my body in the first place, so it's impossible to shift it out.
00:36:38 <cocof> when u carry bottle of vodka and your are alcoholic and all shops are closed...
00:36:50 <cocof> where is your awareness? D:
00:37:06 <cocof> same with body we are bodyholics :)
00:37:14 <zzo38> I think "where is your awareness" is not so clear what it is, to me
00:37:29 <cocof> bodyholics anon :)
00:37:31 <shachaf> Personally, I'm a utilityholic.
00:37:38 <shachaf> I'm addicted to utility. I just can't get enough.
00:38:20 <int-e> shachaf: Does that make you a tool...
00:39:37 <cocof> zzo38 well when you code you are a code :)
00:40:07 <cocof> now that you are can be some physical object but we are not accustomed and perhaps scared of such intimate encounters
00:40:27 <Lykaina> i gotta go afk for a bit.
00:40:50 <cocof> due to bodyholicm :) if I am a laptop i cant be 6`1 green eyes human perhaps, i wont be able to come back :P
00:42:15 <shachaf> I'm capable of being both of those things at once.
00:43:30 -!- GeekDude has quit (Quit: WeeChat 2.5).
00:44:01 <cocof> shachaf so as a laptop what do you feel when humans type on you? :)
00:45:05 <zzo38> Also I think sometimes you might be unaware
00:45:25 <cocof> most of the time
00:45:41 <zzo38> Or only partially aware
00:46:16 <int-e> only fungot is constantly aware
00:46:16 <fungot> int-e: fnord/ doc/ fnord/ dp/ 0262681374/ fnord/ fnord ( the red dot is where the final return value is a list
00:46:17 <cocof> i would say 100% unaware
00:47:00 <int-e> 0262681374 unlocks the gate to the gold mine
00:47:23 <cocof> midas did try
00:47:45 <cocof> although midas myth is so fake
00:48:00 <cocof> he was touching Earth while walking
00:48:07 <cocof> so entire planet would be gold :P
00:48:28 <zzo38> Well, I suppose, nobody can ever be fully aware, because that seems to be a violation of law of physics
00:48:43 <zzo38> cocof: Yes, of course, but that is how stories are written.
00:49:19 <cocof> yep and physics is a story
00:56:27 -!- cocof has quit (Remote host closed the connection).
01:14:05 -!- tromp_ has quit (Remote host closed the connection).
01:14:39 -!- tromp has joined.
01:23:21 <imode2> that did not just work.
01:23:33 <zzo38> Which one didn't work?
01:23:37 <imode2> no freakin' way.
01:24:13 <imode2> just implemented the common 'pick' operation..
01:27:31 <imode2> https://hatebin.com/jgkozrchae
01:28:14 <imode2> it allows you to reach back into the stack to "pick" out an item.
01:29:06 <imode2> i.e clone it.
01:30:31 <esowiki> [[User talk:A]] https://esolangs.org/w/index.php?diff=66171&oldid=66170 * Ais523 * (-527) Undo revision 66170 by [[Special:Contributions/A|A]] ([[User talk:A|talk]]): please stop provoking people, or you may end up blocked again
01:52:22 <Lykaina> talk to you later
01:53:22 -!- Lykaina has quit (Quit: leaving).
02:41:53 <esowiki> [[The Subtyping Machine]] N https://esolangs.org/w/index.php?oldid=66172 * Ais523 * (+11621) document a language (although, this time, it wasn't me who created it)
02:49:25 <zzo38> Do you like PostScript Z-machine?
03:11:54 <imode2> I do rather enjoy PostScript, haven't written anything in Z-machine assembly though.
03:12:38 <zzo38> Did you ever write a implementation of Z-machine, though?
03:12:58 <zzo38> (I did so, in C, JavaScript, Glulx, and now also PostScript.)
03:14:11 <imode2> I did not. never had a desire to.
03:18:01 <zzo38> Also, mine are some of the only few that implement small-endian (as well as big-endian) (except the one with Glulx, which implements only big-endian Z-machine). Some implementations at least check the endianness and refuse to run small-endian story files, which is OK. But some fail to even check such thing.
03:19:57 <zzo38> Also, one of them I wrote, includes a debugger, too.
03:20:28 <zzo38> imode2: What programs have you written in PostScript, then?
03:20:31 <imode2> I'm impressed you did it in postscript..
03:20:53 <imode2> I actually haven't written any usable programs, just small snippets.
03:20:56 -!- imode2 has changed nick to imode.
03:21:07 <imode> which is kinda funny, I guess.
03:21:50 <zzo38> OK. What small snippets?
03:22:29 <imode> the stuff you write when you're initially learning postscript and other concatenative languages. factorial and fibonacci and such.
03:23:03 <zzo38> OK
03:24:17 <zzo38> I wrote a JSON parser in PostScript also, and then after I posted it to comp.lang.postscript, someone else also made another JSON parser in PostScript.
03:24:53 -!- Frater_EST has joined.
03:25:41 <imode> neat.
03:25:44 -!- Frater_EST has quit (Read error: Connection reset by peer).
03:26:24 <imode> something I just realized is that I can actually store _arrays_ in the queue in a linear format..
03:26:55 <zzo38> Can you elaborate on that?
03:27:32 <imode> so I'm building a little queue-based language, i.e a language who's primary work area is a cyclical queue.
03:27:54 <imode> I've been trying to make it reasonably close to something like Forth.
03:28:37 -!- Frater_EST has joined.
03:29:33 <zzo38> OK. Once you have enough of it written, you can mention the document and then we can read
03:32:23 -!- Frater_EST has quit (Remote host closed the connection).
03:34:24 <imode> zzo38: https://repl.it/repls/WrongJauntyRectangle
03:35:05 <imode> line 169 is the actual program you're running when you hit "run".
03:39:25 <imode> using things like 'pick' as an "indexing" operator, along with length-prefixed sections of the queue, you could implement arrays.
03:44:57 <esowiki> [[Deklare]] N https://esolangs.org/w/index.php?oldid=66173 * A * (+274) Created page with "[[Deklare]] is a language where variables are initialized before they are declared. ==Example== <pre> a=b=c # a, b, and c are the same value. d=e=f # d, e, and f are the same..."
03:45:44 <esowiki> [[Deklare]] M https://esolangs.org/w/index.php?diff=66174&oldid=66173 * A * (+102)
03:49:27 <esowiki> [[Deklare]] M https://esolangs.org/w/index.php?diff=66175&oldid=66174 * A * (+119)
03:50:30 <esowiki> [[Deklare]] M https://esolangs.org/w/index.php?diff=66176&oldid=66175 * A * (+138)
03:54:11 -!- ais523 has joined.
03:54:42 <ais523> my latest bit of esolanging ridiculousness: https://codegolf.stackexchange.com/a/192843
03:55:03 <shachaf> Oh man, a non-referral link! So convenient.
03:58:02 <ais523> not for me, it's a pain to edit the referral out
03:58:34 <shachaf> But you only need to do it once, and you save n other people the work.
03:58:37 <ais523> fwiw, the SE devs don't seem to appreciate that a referral link might be viewed negatively
04:00:22 <ais523> well, the referral link mostly impacts the person who posted it (your most popular referral links are shown on your profile)
04:00:51 <shachaf> I try not to click on referral links as some sort of principle.
04:01:32 -!- ais523 has quit (Quit: sorry for my connection).
04:01:45 -!- ais523 has joined.
04:02:51 <shachaf> I've switched from compiling my thing with gcc to tcc by default, because it's so much faster.
04:03:00 <shachaf> Why do people put up with slow compilers?
04:05:25 <ais523> it depends on how much time the compiler saves me in a) debugging code and/or b) executing the program
04:05:56 <ais523> compared to the time cost of the compile
04:06:28 <ais523> at least in my case, I get really upset if the output asm is obviously suboptimal, which makes it hard to use any compiler atm, but I think most people aren't the same way
04:06:52 <shachaf> I mean -O0 compilation, of course.
04:07:47 <shachaf> If you compile your program many times and run it briefly, you should count the total time spent on optimizing against the time saved by generating better code.
04:08:29 <shachaf> You need quite a lot of optimization to offset 500ms extra of compilation time.
04:11:46 <ais523> I guess this depends on what sort of programs you run?
04:12:10 <ais523> typically if I'm using a compiled language, I expect the program to run for several minutes
04:12:27 <ais523> otherwise I'd have written it in a different language
04:13:19 <ais523> (or it might be a library, but in that case I'm going to be running tests on it, and my best use of time wrt testing is normally to write an exhaustive test or a fuzzer, both of which benefit hugely from speed)
04:31:09 -!- adu has quit (Quit: adu).
04:32:09 -!- Lord_of_Life has quit (Ping timeout: 246 seconds).
04:33:30 -!- Lord_of_Life has joined.
04:48:44 -!- wmww has quit (*.net *.split).
04:48:45 -!- xylochoron[m] has quit (*.net *.split).
04:48:45 -!- Taneb has quit (*.net *.split).
04:48:46 -!- zemhill_________ has quit (*.net *.split).
04:49:25 -!- xylochoron[m] has joined.
04:49:56 -!- wmww has joined.
04:50:50 -!- Lord_of_Life has quit (Ping timeout: 240 seconds).
04:54:16 -!- Taneb has joined.
04:54:16 -!- zemhill_________ has joined.
04:54:30 -!- Lord_of_Life has joined.
05:25:45 <esowiki> [[Category:Deque-based]] https://esolangs.org/w/index.php?diff=66177&oldid=14068 * YamTokTpaFa * (+24)
05:27:55 -!- Frater_EST has joined.
05:30:23 <esowiki> [[Talk:Pxem]] https://esolangs.org/w/index.php?diff=66178&oldid=66069 * YamTokTpaFa * (+348) /* This language should be one of deque languages */ new section
05:51:47 -!- FreeFull has quit.
05:53:22 -!- Frater_EST has quit (Ping timeout: 245 seconds).
06:07:46 <esowiki> [[Special:Log/newusers]] create * Yqloss * New user account
07:00:15 <imode> really getting used to working in a queue-based language. with some primitive operations, it's as natural as working in a stack-based language.
07:01:49 <imode> with the added benefit that "impure" operations like `pick` and `roll` can be implemented in the language itself. still trying to figure out how to do things like swapping.
07:05:00 <imode> 'swap' is unique in that it changes the order of the first two queue elements... hm.
07:05:46 <imode> doing that only with `dup`, `roll`, `last` and `drop` is my goal.
07:07:35 <shachaf> Oh, is this related to https://esolangs.org/wiki/Call_Queue ?
07:07:42 <shachaf> I wanted a language with a call queue once.
07:07:44 <imode> nope, my own language.
07:07:50 <imode> no call queue, but a data queue.
07:08:28 <shachaf> whoa
07:08:38 <shachaf> For some reason I never thought about the fact that Forth has a separate call stack.
07:08:41 <shachaf> Even though it's obvious.
07:08:56 <imode> yup, only reason it's TC.
07:09:10 <imode> that and the fact that it has access to main memory. but strip that away, that's the only way.
07:09:19 <imode> https://repl.it/repls/PoorUnevenDeskscan
07:09:33 <imode> line 163 onward.
07:10:25 <imode> the interpreter has a few bugs (conditional, mainly, because I'm too lazy to implement an 'if' macro.)
07:14:12 <imode> I want to experiment with a call queue, though. I had something like it with Modal, but that's because it was based on term rewriting, i.e the whole program was stored in a queue and rewrote itself.
07:15:29 <imode> I imagine if you allow manipulation of the call queue via words (like Forth does with the return stack), you can use it as a stack.
07:15:57 -!- Frater_EST has joined.
07:23:13 <b_jonas> imode: I don't think so, because forth can also pick the data stack
07:24:30 <imode> that is true. can also roll it.
07:25:33 -!- ais523 has quit (Quit: quit).
07:33:12 <b_jonas> imode: factorial and fibonacci => I prefer catalan numbers, see http://www.math.bme.hu/~ambrus/pu/catalan.ps
07:33:31 <imode> I don't consider `pick` and `roll` to be pure, though.
07:33:56 <b_jonas> it even does the calculations in postscript
07:34:09 <imode> hah, neat
07:34:15 <b_jonas> dunno why, that must have been inconvenient, I wouldn't have made it that way if I had to today
07:37:42 <b_jonas> cocof => no, you're forgetting that Midas was a rich king, so he didn't walk anywhere, he was carried by his servants in a hand-lifted palanquin, and had carpets everywhere, presumably even in the toilet
07:39:55 <b_jonas> that said, even if coding in postscript is stupid, the lesson that it shows of how handshakes correspond to triangulations, is a useful one
07:40:07 <b_jonas> because it's a nontrivial bijection
07:40:26 <b_jonas> it's worth to try to prove it without looking at the code, by looking at the output only
07:48:28 -!- b_jonas has quit (Remote host closed the connection).
08:10:31 <esowiki> [[User talk:Ais523]] https://esolangs.org/w/index.php?diff=66179&oldid=66153 * YamTokTpaFa * (+254) /* Any features to insert mathematical formulas like TeX style? */ new section
08:14:59 -!- imode has quit (Remote host closed the connection).
08:22:34 <esowiki> [[()]] https://esolangs.org/w/index.php?diff=66180&oldid=44645 * YamTokTpaFa * (+235) added some descriptions, though not done yet
08:57:03 -!- arseniiv has joined.
09:10:59 -!- FraterEST has joined.
09:14:02 -!- Frater_EST has quit (Ping timeout: 240 seconds).
10:39:23 -!- Frater_EST has joined.
10:41:47 -!- FraterEST has quit (Ping timeout: 276 seconds).
11:29:10 -!- tromp has quit (Remote host closed the connection).
12:13:58 -!- Phantom_Hoover has joined.
12:21:36 -!- xkapastel has joined.
12:24:55 <esowiki> [[Talk:Pxem]] M https://esolangs.org/w/index.php?diff=66181&oldid=66178 * A * (+111) /* This language should be one of deque languages */
12:25:10 <esowiki> [[Talk:Pxem]] M https://esolangs.org/w/index.php?diff=66182&oldid=66181 * A * (+151)
12:30:20 -!- Frater_EST has quit (Ping timeout: 276 seconds).
12:51:06 -!- Frater_EST has joined.
13:20:41 -!- Lykaina has joined.
13:21:10 <Lykaina> ugh...bugs are so annoying
13:38:25 -!- FreeFull has joined.
13:50:25 -!- b_jonas has joined.
14:06:51 -!- Phantom_Hoover has quit (Ping timeout: 258 seconds).
14:28:24 -!- tromp has joined.
14:41:05 -!- Sgeo has joined.
14:42:48 -!- Sgeo_ has quit (Ping timeout: 245 seconds).
14:49:33 <Lykaina> yay!
14:50:24 <Lykaina> hold on...how long have i been debugging?
14:59:30 <b_jonas> Lykaina: do you have an updated version of the formatted docs?
14:59:47 <b_jonas> also, why does echidna have so many instructions now?
15:03:36 -!- tromp has quit (Remote host closed the connection).
15:06:17 <Lykaina> b_jonas: 1) About to make it. 2) Everything not under "S" is added to avoid bugs.
15:07:32 <Lykaina> 3) i gotta make sure of something...
15:08:35 <Lykaina> good.
15:09:11 <Lykaina> gonna make the formatted docs for 0.11a0 in a moment
15:11:19 <b_jonas> Lykaina: this is strange, haven't you changed how addressing modes work so that you write `@0000` to either read from the first word of memory or write to it? the instruction docs seem to suggest it's still the older way, where you say `@0000` to read from the first word and `=0000` to write into it
15:13:39 <Lykaina> for 10a2?
15:13:56 <b_jonas> hmm, so the previous M operation is gone
15:14:16 <Lykaina> i'll try to fix it in the 11a0 doc
15:14:29 <b_jonas> why do you need all these many-argument bitwise thingies? can't you just have four simple ones that take two input arguments and one output like the rest of the arithmetic does?
15:15:01 <Lykaina> fun
15:17:04 <Lykaina> nobody else does it, but maybe someone should
15:18:34 <b_jonas> erk, these control instructions are getting more complicated
15:18:40 <b_jonas> I liked while they were simple
15:18:50 -!- imode has joined.
15:20:03 <b_jonas> especially given that the language doesn't seem to have any easy way to avoid the if-block statements
15:20:09 -!- Frater_EST has quit (Ping timeout: 268 seconds).
15:20:33 <Lykaina> what do you mean?
15:21:00 <Lykaina> what should i add next time around?
15:21:07 <b_jonas> heh, you now have 32-bit arithmetic builtins? but they work in a somewhat strange way
15:21:34 <b_jonas> do you really need them to take separate addresses for the low and high bytes, as opposed to always reading from two adjacent addresses?
15:22:26 <b_jonas> and there's no 32-bit move... interesting
15:24:02 <b_jonas> nor any signed compare or 32-bit compare, so you'll use three or four comparisons for that, fun
15:24:21 <b_jonas> and you can't even use the bitwise instructions to help anymore, because they're so long
15:24:49 <b_jonas> I guess you can still use subtract, then it only takes two subtractions and one compare to do a 16-bit signed comparison
15:25:53 <Lykaina> i can always recode afteer i'm done with the documentation
15:34:17 <Lykaina> i no longer need to rely on L and M, but I like them. I plan on making AND, OR, XOR, and NOT instructions for both 16-bit and 32-bit in the next version. I'll also take your advice into consideration.
15:37:18 -!- tromp has joined.
15:39:50 <b_jonas> ok
15:40:11 <b_jonas> I'd recommend AND, OR, XOR, ANDC instead
15:40:27 <b_jonas> but the traditional AND, OR, XOR, NOT also works
15:41:02 <Lykaina> what's andc?
15:41:25 <b_jonas> Lykaina: AND with the right input argument complemented
15:41:30 <b_jonas> notted
15:41:41 -!- tromp has quit (Ping timeout: 246 seconds).
15:42:05 <Lykaina> cool
15:42:16 <Lykaina> didn't know that one
15:42:26 -!- adu has joined.
15:43:59 -!- tromp has joined.
15:56:24 <b_jonas> Lykaina: it would have been easy if you just kept the previous version of M (or was it L?) that takes only one extra argument and that one can only be one of 16 possibilities
15:56:46 <b_jonas> I could just think of that as 16 instructions with a two-character opcode in the source code
15:57:28 -!- tromp has quit (Remote host closed the connection).
15:58:52 <b_jonas> well, maybe not, because that would give too many instructions total, but you could fix that by restricting the addressing modes in all instructions in general
16:00:53 <b_jonas> or do it the opposite way: add post-increment and pre-decrement addressing modes, allow all 100 combinations to each arithmetic and bitwise instruction :-)
16:12:40 <b_jonas> fungot, what is your favorite flavor of ice cream, and what is your favourite flavour of ice cream?
16:12:41 <fungot> b_jonas: postgresql for database.
16:12:48 <b_jonas> not a bad favorite, yes
16:16:44 <imode> what's the end goal behind echidna?
16:18:06 <Lykaina> to create a programmable console-based language
16:18:14 <Lykaina> i mean...
16:18:33 <Lykaina> a console-based language i can program in
16:19:12 <Lykaina> fun
16:19:21 <b_jonas> imode: I think it's for learning or something
16:21:10 <imode> "console-based language"?
16:22:18 <Lykaina> i mean, i don't want a gui
16:28:00 <Lykaina> b_jonas: http://sif.lesidhetree.com/sara/echidna/Echidna%20v0_11a0.pdf
16:28:16 -!- tromp has joined.
16:30:23 -!- Lord_of_Life_ has joined.
16:31:55 <b_jonas> thanks
16:32:03 <b_jonas> huh, now you changed the comparison conditionals?
16:32:19 <Lykaina> i had to
16:32:38 <Lykaina> there were bugs with the original system
16:33:41 -!- Lord_of_Life has quit (Ping timeout: 265 seconds).
16:33:48 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
16:42:19 <Lykaina> i have one more change planned for that. I want to be able to call subs indirectly
16:44:26 <Lykaina> i know the language looks a lot different than it used to
16:47:46 <Lykaina> b_jonas: you were saying something about possibly having too many instructions?
16:47:58 <Lykaina> i don't understand
16:48:33 <b_jonas> Lykaina: I'd still recommend you to find all subroutine starts once, when loading the program, make a table of their names and addresses in source code, ideally sort it too,
16:49:07 <b_jonas> and make the subroutine calls just look up sub names there, rather than reading the whole source
16:49:32 <Lykaina> i agree, just not sure how to do that
16:50:16 <b_jonas> Lykaina: first do it without the sorting
16:50:26 <Lykaina> still
16:50:46 <b_jonas> even that helps because there are much fewer subs than source code characters
16:52:04 <b_jonas> read through the source code, find all the sub heading statements, as you find them, put them in successive entries of a table that stores the name of the sub and its offset in the source code array
16:53:33 <Lykaina> how does this benefit?
16:53:45 <b_jonas> for a subroutine call, read through the names in that table until you find a matching name,
16:54:02 <b_jonas> then go to the offset in the source code given in that table
16:54:39 <b_jonas> then you're only reading through a smaller table rather than the source code which has lots of instructions that aren't sub headings
16:56:25 <Lykaina> is it a good idea to have the name of the sub, when called, be in memory as a possible option, as in indirectly?
16:57:25 -!- tromp has quit (Remote host closed the connection).
16:57:30 <Lykaina> oh...the table would have to be 128 KiB for that to work...
16:57:46 <Lykaina> as opposed to 512 bytes
16:58:49 -!- tromp has joined.
16:59:05 <Lykaina> so, what do you recommend?
17:03:50 <Lykaina> is 256 subs too few?
17:05:00 <b_jonas> yes, too few
17:06:26 <Lykaina> 65536?
17:11:44 <Lykaina> gonna have to move some letters around again
17:19:45 -!- hermez has joined.
17:21:56 -!- tromp has quit (Remote host closed the connection).
17:44:05 -!- imode has quit (Remote host closed the connection).
17:58:34 -!- imode has joined.
18:04:46 -!- hermez has quit.
18:30:03 -!- tromp has joined.
18:31:03 <imode> surprised that there's very little literature on queue machines vs. stack machines.
18:31:44 <int-e> imode: well there are tag systems :)
18:32:14 <int-e> queues are awkward, except when used as pipes between various stages of a process.
18:32:24 <imode> hehe, yeah, but I mean actual, y'know, processors.
18:32:33 <imode> I find them pretty natural actually. it's weird.
18:33:49 <int-e> imode: Oh have you found the Mill architecture? Its "belt" is a sort of queue.
18:34:19 -!- Phantom_Hoover has joined.
18:34:20 <imode> I've heard of it, isn't that the one with the rolling register file?
18:34:40 <imode> i.e a few spots down from the head of the queue are directly addressible?
18:35:27 <int-e> (Disclaimer: I do not know much about that architecture; I'm not convinced it's practical; and I have no clue whether they will ever produce real hardware. I'm really rather skeptical about it.)
18:35:39 <int-e> imode: I'd think the whole (finite) queue is addressable.
18:35:46 <imode> I think that was my gist as well when I saw it... also, ech.
18:36:36 <int-e> The belt is a cute idea. But one cute idea doesn't make a processor. :)
18:37:35 <imode> there's some literature on using queue machines to evaluate expressions in parallel via partitioning the dependency graph between expressions. it looks like a lot of the literature around queue machines is locked up in datalow architectures.
18:37:38 <shachaf> The Mill has a whole bunch of cute ideas!
18:37:40 <int-e> (Real CPUs probably end up doing something similar... via register renaming.)
18:37:49 <imode> yeah there are register windows and stuff.
18:37:55 <imode> you never really see that though.
18:38:39 <int-e> `grWp datalow
18:38:42 <HackEso> No output.
18:38:55 <imode> sorry, dataflow. missed an f.
18:39:35 <int-e> imode: Yeah, but that didn't stop me from wondering what a datalow could be... I mean, given the channel and all.
18:39:53 <imode> hahahahaha, good point.
18:44:33 <imode> int-e: if you're curious, https://repl.it/repls/SparklingHealthyArraylist
18:44:37 <int-e> shachaf: There's a huge hole in my knowledge about modern processors when it comes to assessing the viability of that Mill architecture... namely, I don't know how much of the parallelism that superscalar CPUs discover dynamically can actually be determined statically.
18:44:58 <imode> a queue-based Forth-like.
18:45:14 <shachaf> int-e: Yes, I'd also like to know the answer to that question.
18:45:52 <imode> that 'pick' actually works, by the by. `5 range 3 $ pick` yields you `4 1 2 3 4 5 0`
18:46:20 <imode> you could probably eliminate `roll`, too.
18:47:10 <shachaf> int-e: I think they had a claimed number which was pretty high and maybe cited some paper for it?
18:47:16 <shachaf> But who actually knows.
18:48:37 <imode> there's a bug in `range` (and subsequently, `factorial-recursive`) that causes it to clobber the queue when generating the range and then performing the multiplications.
18:48:54 <imode> do it with a bare queue and it's fine, but do it with some work already done and it breaks. I was lazy.
18:49:24 <Lykaina> b_jonas: sub table works
18:51:55 <int-e> shachaf: I'm rather skeptical mainly because I imagine that it involves predicting the level of the memory hierarchy that data resides in. that may work for some inner loops... but oftentimes it will just not be possible.
18:52:14 <Lykaina> indirect sub calls should work, though i haven't tested them
18:52:49 <b_jonas> Lykaina: that's not really what I said, but sure, if you want a dense array indexed by name, you can do that, it just gets uglier to write programs because you can't give more descriptive names to the subs
18:53:02 <int-e> shachaf: Maybe they (the Mill people) expect that some prefetching instructions will work for that?
18:53:24 <b_jonas> Lykaina: have you at least made sure that it gives some sort of error if you try to call a nonexistant sub?
18:53:43 <Lykaina> starts at the beginning
18:54:11 <Lykaina> i'll add one
19:00:42 <Lykaina> should i change the bitwise to just ADD, ADDC, OR, XOR?
19:02:03 <b_jonas> Lykaina: that's what I suggest, but it's your choice really, you're the one who's going to use this language
19:04:18 <shachaf> int-e: I was looking for a reference but all the information is in multi-hour videos so it's hopeless.
19:17:27 -!- adu has quit (Quit: adu).
19:34:16 <zzo38> Yes, I think they should write a text rather than trying to make most stuff as videos instead.
19:34:51 <Lykaina> done
19:35:14 <Lykaina> you're gonna love the new M? command
19:36:08 <Lykaina> oh, that's sarcasm
19:51:26 <shachaf> zzo38: I agree.
20:19:50 <Lykaina> http://sif.lesidhetree.com/sara/echidna/Echidna%20v0_11a1.pdf
20:26:05 <Lykaina> crap
20:26:21 <Lykaina> i messed something up
20:37:32 -!- cocof has joined.
20:37:34 <Lykaina> http://sif.lesidhetree.com/sara/echidna/Echidna%20v0_11a1a.pdf
20:38:12 <cocof> someone hacked EOS
20:38:18 <cocof> and gained 110,000 usd :)
20:38:43 <cocof> https://cointelegraph.com/news/hacker-spends-1k-to-win-over-110k-in-eos-betting-game-using-rex
20:39:37 -!- atslash has quit (Ping timeout: 245 seconds).
20:45:08 -!- atslash has joined.
20:47:01 <Lykaina> http://sif.lesidhetree.com/sara/echidna/Echidna%20v0_11a1a.pdf fixed
20:49:20 -!- arseniiv has quit (Ping timeout: 246 seconds).
20:59:34 -!- xkapastel has quit (Quit: Connection closed for inactivity).
21:11:38 -!- Lymia has quit (Quit: Hugs~ <3).
21:45:09 -!- Lymia has joined.
22:09:03 <Lykaina> hi lymia
22:20:22 <Lykaina> it's so quiet...
22:20:31 <kmc> hi
22:20:40 <kmc> is life good
22:20:41 <Lykaina> hi kmc
22:20:58 <Lykaina> i'm depressed
22:21:17 <kmc> I'm sorry
22:21:20 <kmc> I'm feeling down as well
22:21:22 * kmc offers hugs
22:22:02 <shachaf> higan
22:22:23 <kmc> hi
22:23:11 <Lykaina> does anyone want to look at the hopefully fixed version of Echidna? i'm not in the mood to make changes right now
22:24:57 <Lykaina> btw, what defines an esoteric language?
22:25:14 <cocof> :D
22:25:17 <cocof> its simple
22:25:30 <cocof> esoteric is a veil
22:25:51 <Lykaina> huh?
22:25:53 <cocof> why do u need it?
22:26:20 <cocof> its a bunch of symbols
22:26:37 <cocof> symbolic
22:28:51 <cocof> what is a language?
22:29:25 <cocof> native tongue
22:30:41 <kmc> Lykaina: I'd say it's a language whose primary design goal is to be fun, interesting, weird, and/or frustrating, rather than anything "practical"
22:30:58 <kmc> though I would exclude "serious" research languages even though "interesting" is arguably the goal there
22:31:18 <kmc> it's a bit hard to say
22:31:22 <kmc> is my Qoppa an esolang
22:31:36 <kmc> 'twas made as a demonstration of how tiny you can make a scheme-like language using fexprs
22:32:00 <kmc> (no special forms, only 3 eval cases, only a handful of built-ins)
22:32:07 <kmc> it got cited in a couple of papers
22:32:13 <Lykaina> cool
22:32:19 <kmc> and it's kind of based on someone's PhD thesis
22:33:27 <kmc> Lykaina: I sometimes say that C++ (and especially C++ template metaprogramming) is an esolang because it has that same bizarre mind-twisting nature, but by accident
22:33:52 <kmc> in exploit programming you frequently encounter "found esolangs" as well
22:34:01 <kmc> such as alphanumeric-only x86 code
22:34:44 <Lykaina> Echidna is just for fun and to releive boredom. I tend not to care about consistancy between pushes to the repo.
22:35:00 <kmc> or programs stitched together from an arbitrary collection of ROP gadgets
22:35:19 <kmc> ok, cool
22:36:09 <Lykaina> i might use what i learn from making it to make something more usable
22:36:21 <Lykaina> and consistant
22:36:55 <kmc> ok
22:38:36 <Lykaina> i got annoyed with only having 20 ops, so i made subops.
22:38:45 <Lykaina> (G-Z)
22:39:28 <kmc> the found esolangs are sometimes called "weird machines" in infosec
22:39:43 <b_jonas> `? kmc
22:39:44 <HackEso> kmc did not run the International Devious Code Contest of 2013.
22:39:52 <b_jonas> ^ this wisdom entry is somewhat underwhelming
22:39:53 <kmc> ELF unwinding info could be considered another example
22:40:53 <kmc> when people design file formats to have a certain type of flexibility
22:40:58 <b_jonas> kmc: or https://esolangs.org/wiki/The_Subtyping_Machine as a found esolang
22:41:11 <kmc> they often don't consider whether it allows nontrivial computation
22:41:17 <kmc> within the format parser
22:42:29 <shachaf> ELF has unwinding info?
22:42:30 <b_jonas> which is why I like to do obfuscated code in non-esoteric languages, to point out interesting features of those languages, like https://www.perlmonks.com/?node_id=1008395
22:43:10 <b_jonas> shachaf: it has to have unwinding info so that you can throw and catch exceptions through multiple compilation units
22:45:24 <shachaf> Perl is pretty esoteric.
22:45:41 <b_jonas> yeah, that's why this sort of thing is easier in perl
22:51:24 <shachaf> I guess this is DWARF?
22:53:10 <int-e> sort of... http://wiki.dwarfstd.org/index.php?title=Exception_Handling#Relationship_with_DWARF
22:53:30 <shachaf> Oh, it's DWARF-like but not DWARF.
22:53:36 <shachaf> Golly.
22:53:48 <shachaf> If I don't use C++ this is irrelevant, right?
22:54:41 <int-e> Might be used by other languages?
22:54:47 <int-e> Who knows.
22:55:34 <shachaf> I think all algorithms should be named after the Unicode code point that looks most visually similar to their execution graph.
22:56:59 <zzo38> I think that there might not be such a code point. Sometimes there might be one in another character set, but, there might not be a suitable character in another character set either. And, sometimes two algorithm will have a similar execution graph, and then it is same name and that is no good, either. So, I think it won't work
22:58:30 <kmc> shachaf: Rust uses it
22:58:33 <kmc> probably other things
22:58:41 <kmc> I think there's even exception support for C as a GNU extension?
22:58:46 <kmc> though generally unwinding thru C code is UB
22:59:57 <shachaf> Oh, for panic!, I guess.
23:01:02 <shachaf> Seems like panic should maybe just be longjmp.
23:01:03 -!- tromp_ has joined.
23:01:24 <shachaf> I guess Rust is all about resource cleanups, though.
23:04:02 -!- tromp has quit (Ping timeout: 240 seconds).
23:05:29 -!- tromp_ has quit (Ping timeout: 246 seconds).
23:17:40 -!- Phantom_Hoover has quit (Quit: Leaving).
23:21:20 <Lykaina> http://sif.lesidhetree.com/sara/echidna/Echidna%20v0_11a1a_1.pdf very minor formatting change
23:23:54 -!- FreeFull has quit.
23:27:49 -!- b_jonas has quit (Remote host closed the connection).
23:37:47 <Lykaina> http://sif.lesidhetree.com/sara/echidna/Echidna%20v0_11a1a_2.pdf a different change
23:38:49 <Lykaina> i hope that one's correct
23:39:28 <Lykaina> there was a typo in the previous one
23:41:23 <kmc> shachaf: yes, a thread is supposed to be able to clean up as it panics
23:42:33 <shachaf> longlongjmp
23:43:18 <Lykaina> another typo
23:43:21 <Lykaina> fixed
23:43:56 <Lykaina> i just overwrote the pdf with the new one
23:45:03 -!- xkapastel has joined.
23:48:53 <Lykaina> fixed the source typo
2019-09-16
00:09:41 <shachaf> I bet it's still less complicated than the situation in Windows with SEH.
00:10:03 <shachaf> Though to be fair SEH is more like a replacement for signal handlers, which are definitely a bunch of complexity.
00:22:23 -!- oerjan has joined.
00:34:04 -!- tromp has joined.
00:38:59 -!- tromp has quit (Ping timeout: 276 seconds).
01:21:20 <zzo38> If I rewrite TeXnicard (or maybe, can use a different name; I don't know), I might use a SQLite database as the card set file. Now that SQLite has window functions, maybe the ROW_NUMBER function can be used for assigning collector numbers. I also should make it workable with both RGB and CMYK. Separation colours might also be good to have, but that might be more difficult.
01:21:56 <zzo38> Probably I would avoid to implement hyphenation, but the TFM font metrics, PK font glyphs, and the line breaking like that of TeX, would be implemented.
01:22:37 <esowiki> [[Echidna]] https://esolangs.org/w/index.php?diff=66183&oldid=66075 * YamTokTpaFa * (+21) formatting, +WIP
01:23:10 -!- atslash has quit (Quit: Leaving).
01:24:11 -!- JimScope has joined.
01:25:20 <esowiki> [[Template:WIP]] https://esolangs.org/w/index.php?diff=66184&oldid=51711 * YamTokTpaFa * (+83)
01:27:17 <esowiki> [[Category:Works-in-Progress]] https://esolangs.org/w/index.php?diff=66185&oldid=64246 * YamTokTpaFa * (+100)
01:29:13 -!- JimScope has quit (Ping timeout: 265 seconds).
01:29:54 <esowiki> [[User talk:Erinius]] N https://esolangs.org/w/index.php?oldid=66186 * YamTokTpaFa * (+232) /* Prompting to complete Screwtape */ new section
01:31:12 <Lykaina> who's YamTokTpaFa?
01:34:03 <zzo38> One user in esolang wiki, I think; seem to be an alternative account for YamTokWae but they lost the password for that account, as far as I can tell.
01:34:27 <Lykaina> like me and lesidhetree, sorta?
01:36:08 <zzo38> I don't know.
01:36:47 <Lykaina> well, in my case, i forgot i had the lesidhetree account.
01:37:19 <esowiki> [[Higgledy Piggledy Processor]] https://esolangs.org/w/index.php?diff=66187&oldid=44416 * YamTokTpaFa * (+25)
01:37:28 <zzo38> OK
01:41:25 <esowiki> [[Blacktime]] https://esolangs.org/w/index.php?diff=66188&oldid=40276 * YamTokTpaFa * (+42)
01:42:33 <esowiki> [[Logical/Interpreter]] https://esolangs.org/w/index.php?diff=66189&oldid=65402 * YamTokTpaFa * (+4) linking
01:45:31 <esowiki> [[Malbolge20]] https://esolangs.org/w/index.php?diff=66190&oldid=51693 * YamTokTpaFa * (+24)
01:51:37 <esowiki> [[Treeng]] https://esolangs.org/w/index.php?diff=66191&oldid=45439 * YamTokTpaFa * (+30)
02:02:13 <esowiki> [[NICE]] https://esolangs.org/w/index.php?diff=66192&oldid=30326 * YamTokTpaFa * (+146)
02:05:37 -!- tromp has joined.
02:05:59 <Lykaina> http://sif.lesidhetree.com/sara/echidna/Echidna%20v0_11a1b.pdf
02:09:56 -!- tromp has quit (Ping timeout: 246 seconds).
02:15:03 <Lykaina> can someone look at the pdf and see if it has enough ops?
02:16:31 <zzo38> I think there is a mistake in the description of the "Ln" command
02:17:46 <Lykaina> crap
02:18:17 -!- xkapastel has quit (Quit: Connection closed for inactivity).
02:19:23 <Lykaina> yeah, that wassupposed to be "NOT"
02:22:58 <Lykaina> fixed the pdf and the source
02:24:18 <Lykaina> do you like the language?
02:24:33 <zzo38> I don't know
02:24:56 <Lykaina> there are five samples at the bottom
02:25:52 <Lykaina> https://github.com/lykaina/echidna
02:26:06 <zzo38> Yes, I saw the examples
02:26:26 <Lykaina> if, for some reason, you want to try it out
02:29:23 <Lykaina> if you are interested, let me know
02:30:42 <Lykaina> it's key that no cmd name can contain numbers or the letters a-f
02:30:59 <Lykaina> limits of implentation
02:31:09 <zzo38> Yes, that is what I thought
02:32:25 <Lykaina> so Lg instead of La, Oq instead of Oe...
02:40:28 <Lykaina> Oh, and if you named the compiled file "Echdebug" (you may have to put it in your path) you get a lot of debug info on stderr.
02:40:50 <Lykaina> i mean "echdebug"
03:38:04 <imode> fixed the problems in range generation.
03:38:13 <imode> wonder if I can do this recursively.
03:45:16 <imode> yeeeeeah boi.
03:48:49 -!- ArthurStrong has joined.
03:54:13 <imode> https://repl.it/repls/AptNoisyEnvironments
04:11:07 -!- cocof has quit (Ping timeout: 260 seconds).
04:32:25 -!- Lord_of_Life has quit (Ping timeout: 258 seconds).
04:37:40 -!- Lord_of_Life has joined.
05:37:07 -!- oerjan has quit (Quit: Nite).
06:15:10 -!- tromp has joined.
06:21:27 <shachaf> `5 w
06:21:30 <HackEso> 1/1:nano//nano is vi's sister. \ the five wisdoms//The first of the five wisdoms is that there is only one wisdom. \ kulør//Kulør er rett stavemåte. \ structsubural type//Something Bike is into. Not to be confused with suburban destruction. \ almond bread//Almond bread is a delicacy made from fractal dough.
06:42:15 <shachaf> ski: Did you see http://slbkbs.org/tmp/2019-08-21-test-cases.txt ? I can't remember.
06:42:25 <shachaf> I think it's like a special kind of delimited continuations.
07:36:20 <ski> i didn't
07:36:23 <ski> what's ⌜{ E; { ⋯ } }⌝ ?
07:38:04 <shachaf> It's in terms of some base semicolon behavior, I guess.
07:38:18 <shachaf> The point is that blocks nest right-associatively.
07:38:55 <shachaf> (Like in C++ when you write { A a; B b; ... }, B's constructor and destructor run inside a scope.)
07:47:05 <ski> mhm
07:50:56 <ski> oh, ⌜@⌝ and ⌜defer⌝ uses syntactical dynamic scoping (like ⌜return⌝,⌜break⌝,⌜continue⌝ in C, ⌜!⌝ in Prolog,&c.) ?
07:51:20 <shachaf> They refer to the current block.
07:51:40 <shachaf> The goal of @ is to convert a dynamically scoped thing to a lexically scoped thing.
07:52:08 <shachaf> So f() { return := @`; ... { return(5); } ... } would exit from the outer scope.
07:52:20 <ski> can you abstract out ⌜@⌝ into another operation, and call that, and get the same effect ?
07:52:43 <ski> perhaps you can't construct/define such an operation, without using the ⌜{ ⋯ }⌝ brackets ..
07:53:52 <shachaf> I'm not entirely sure about @. The origin of the name is that I had a syntax to name blocks earlier (similar to goto labels).
07:54:13 <shachaf> { @foo; ...exitfrom foo... } would exit from the block labeled foo, and so on.
07:59:17 <ski> <https://beautifulracket.com/explainer/parameters.html#syntax-parameters>,<http://www.greghendershott.com/fear-of-macros/Syntax_parameters.html>
08:00:59 -!- arseniiv has joined.
08:01:19 <ski> i'm also wondering whether this ⌜`⌝ (which would also, maybe, not be abstractable ?) behaves more like ⌜shift⌝ or more like ⌜control⌝ (or neither)
08:02:01 <ski> <http://slbkbs.org/tmp/2019-08-21-test-cases.txt> is something you were fiddling with ? someone else ?
08:02:04 <shachaf> I should figure out the difference between "shift" and "forall".
08:02:21 <ski> hm, now i also see there was a
08:02:23 <shachaf> s/forall/control/ -- mixed up channels
08:02:26 <ski> 2019-08-24 <fungot:#esoteric> b_jonas: hello ski :) ( actually i don't think you could like rephrase it? do you normally see?
08:02:26 <fungot> ski: how so? it's not improved at all: how often is it really necessary to shorten a 4-letter word to 3 letters?
08:02:31 <ski> that i forgot about
08:02:52 <shachaf> fungot is a bot that generates text by randomly
08:02:52 <fungot> shachaf: psox wtf? haha where can i find gambit scheme to be
08:03:02 <ski> (scrollback doesn't go that far back)
08:03:14 <shachaf> Yes, that file was me trying to write up the operators I was trying to figure out.
08:03:40 <ski> yea. but was that message triggered by something related to something i said ? or just a random thing ?
08:03:51 <ski> ah, ok
08:03:59 <shachaf> I think it's trained on IRC logs.
08:04:01 <shachaf> ^style irc
08:04:01 <fungot> Selected style: irc (IRC logs of freenode/#esoteric, freenode/#scheme and ircnet/#douglasadams)
08:04:40 <shachaf> I should add an additional fact, before I read your links, that the context I was trying to figure this out in was a low-level language where all of these things get resolved to control flow known at compiletime, with no indirect jumps or anything like that.
08:05:01 <shachaf> Which makes them maybe more macro-like than delimited-continuation-like, though probably both.
08:08:27 <ski> i think the ⌜{ ⋯(E)`⋯; ⋯ } ⟿ (E)(λx ↦ { ⋯x⋯; ⋯ }⌝ rule suggests it's not like ⌜shift⌝, anyway; since in that case there'd been an extra ⌜reset⌝/⌜prompt⌝ wrapping the whole thing, in the output
08:09:12 * ski tries to recall how ⌜control⌝ differed, exactly
08:11:47 <ski> (<irc://open.ircnet.net:6667/#douglasadams> ? what's that ?)
08:13:49 <shachaf> I don't know.
08:21:03 <ski> (my links above are just about (selective) dynamic scoping at the syntax level. being able to introduce a construct which is only valid, lexically/syntactically, inside the scope of another construct. well, in general, one could also allow a macro (or a TH splice) to expand to such a construct, inside the scoping construct)
08:21:27 <ski> (i think there may've been some nice blag about it, too, but i can't find it atm)
08:23:31 * ski . o O ( <https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/glasgow_exts.html#rebindable-syntax-and-the-implicit-prelude-import> )
08:43:07 <esowiki> [[Toi]] https://esolangs.org/w/index.php?diff=66193&oldid=17413 * Kritixilithos * (-26) /* Useful algorithms */ Removed redundant code in addition
08:57:32 <shachaf> ski: Hmm, this syntax parameter thing is interesting.
08:59:10 <ski> yes
08:59:33 <shachaf> It's related to the other question which is kind of implicit in this thing that I've discussed before, about compiletime values.
08:59:52 <ski> (the "parameter" part is just one way to render the dynamic scope thing. which is more or less what "implicit parameters" do, too)
09:00:13 -!- wob_jonas has joined.
09:01:27 <wob_jonas> do you ever wonder about all the connections that are always joined to #esoteric but never speak, and, in particular, which one is read by your boss?
09:01:35 <shachaf> I want a semi-first-class (first-class at compiletime) object called a "block", which is somewhere between an AST and an inline function.
09:02:05 <wob_jonas> I mean, it's not like it's hard to figure out that I'm often on this channel
09:02:29 <wob_jonas> hi, boss. yes, I'm totally working
09:04:15 <ski> shachaf : elaborate on what "somewhere between an AST and an inline function" means ? (in particular what does "an AST" mean, and what does "an inline function" mean, in this context ?)
09:04:56 <shachaf> I mean: Macros operate on AST nodes. They're entirely syntactic things, with random name shadowing and everything. An inline function has the same semantics as a regular function, and is just compiled differently.
09:05:48 <shachaf> I want a thing which is like a function -- can be called with parameters, has its own scope without accidental shadowing -- but is guaranteed to be inlined at compiletime, and as such can do things that a regular function can't.
09:06:07 <shachaf> For example, it can do early exit from a block (without something extremely dynamic like setjmp or continuations or exceptions).
09:06:25 <shachaf> A hygienic macro is probably kind of close to this.
09:06:41 <shachaf> (By AST I meant AST node.)
09:07:07 <shachaf> It's also perhaps possible for you to take this semi-function thing and explicitly do some operation on it, like evaluate it with a different scope, or check what free variables it has, at compiletime.
09:07:22 <esowiki> [[]] https://esolangs.org/w/index.php?diff=66194&oldid=62879 * YamTokTpaFa * (-23) Undo revision 62879 by [[Special:Contributions/A|A]] ([[User talk:A|talk]]) I don't think it a language description page, seeing the history summary.
09:11:28 -!- cpressey has joined.
09:12:30 <esowiki> [[Bytemap]] https://esolangs.org/w/index.php?diff=66195&oldid=33278 * YamTokTpaFa * (-40) +WIP
09:13:53 <esowiki> [[Mbius]] https://esolangs.org/w/index.php?diff=66196&oldid=45359 * YamTokTpaFa * (+51)
09:19:47 <ski> "with random name shadowing and everything" -- depends on whether you're talking about (at least, by default) hygienic macros, or not
09:20:06 <shachaf> Yes.
09:20:40 <shachaf> Even with hygienic macros, I think inserting an AST node hygienically is a kind of different thing. But it's possible it isn't.
09:21:15 <ski> different thing, from what ?
09:21:48 <shachaf> From this "in-between" thing I'm trying to figure out.
09:22:35 <ski> hm, from your description, it sounds like you want hygienic macros, possibly ?
09:23:02 * ski . o O ( "Compiling without Continuations" by Luke Maurer,Paul Downen,Simon Peyton Jones in 2017 at <https://www.microsoft.com/en-us/research/wp-content/uploads/2016/11/join-points-pldi17.pdf> )
09:24:32 <ski> names in the definiens of a hygienic macro definition refer to what those names lexically mean at the definition site (even if those names aren't exported, but the macro is)
09:25:16 <ski> (well, of course, if the name is a parameter of the macro, it'll be expanded with the AST you pass in as parameter, when calling it)
09:26:28 <shachaf> Let me see if I can think of examples of why this feels different.
09:26:38 <ski> however, with something like syntax parameters, you can still have a (by-default) hygienic macro invokation expand to something involving a `return' or `break loop_lab' or similar)
09:27:02 <shachaf> Ignoring the whole ` thing above, say you want to define something like a loop.
09:27:50 <shachaf> Maybe a for-in loop is used like "for(xs, {\x; ... })"
09:28:44 <shachaf> Here "for" is a lot like a regular function, and {\x; ... } is a lot like a lambda. The difference is that it all must be expanded at compiletime.
09:28:56 <ski> yes
09:29:18 <shachaf> for can't be "nonstrict" in xs, because it takes its arguments just like a regular strict function does.
09:29:28 <ski> in Scheme, it could be `(for (x xs) ...)'
09:29:50 <shachaf> Sure, but that's special syntax, right? The idea is that there's no special syntax here.
09:30:07 <shachaf> You could also write something like: { body := {\x; ... }; for(xs, body); }
09:30:51 <ski> depends on what you mean by "special syntax", i suppose
09:31:06 <ski> you could certainly define such a `for' macro, yourself
09:31:41 <shachaf> I mean that the "(x xs)" is "parsed" by the macro.
09:32:03 <shachaf> (Of course it's still an S-expression, but the meaning of the S-expression is determined entirely by the macro.)
09:33:20 <ski> (define-syntax-rule for ()
09:33:26 <ski> (for (?id ?expr) ?body ...)
09:33:31 <ski> (foo* ?expr (slambda (?id) ?body ...)))
09:33:59 <ski> (where `slambda' is an imagined macro abstraction thing)
09:34:18 <shachaf> Sure. I'd call that syntax.
09:34:23 <ski> (let-syntax ((?body (slambda (x) blah)))
09:34:24 <ski> (foo* xs ?body))
09:34:45 <shachaf> It's effectively doing parsing. Not from characters to AST, but from S-expressions to something meaningful.
09:34:56 <shachaf> Pretty different from e.g. "forM_ xs (\x -> ...)"
09:35:20 <ski> yes, this is macro-expansion-time, not run-time
09:35:35 <ski> <shachaf> I mean that the "(x xs)" is "parsed" by the macro.
09:35:36 <ski> yes
09:35:51 <ski> (pattern-matching)
09:37:21 <cpressey> shachaf: Stupid question maybe: what's to stop "for" actually being (instead of just "a lot like") a function, and {\x...} from actually being a lambda, and this being a compile-time optimization akin to constant folding?
09:37:23 <shachaf> Sure, but I want a thing that happens at compiletime, but doesn't do parsing.
09:37:57 <cpressey> I mean, if you can identify how it is different from that, something might become more obvious
09:38:03 <shachaf> The name of the optimization is inlining in this case. It's a very common one. :-)
09:38:28 <shachaf> Hence "inline function".
09:38:33 <shachaf> One thing is that it might be permitted to do things that regular functions can't.
09:39:23 <shachaf> For example, maybe "..." contains a "return" statement. If you did that with general functions, you'd need something complicated like continuations or exceptions.
09:39:39 <shachaf> Whereas with this "guaranteed-to-be-inlined" thing, implementing it is very simple.
09:40:19 <shachaf> You might also have other compiletime-only value. For example, maybe early-exit labels are a first-class thing that you can pass as an argument to these "always-inlined functions". You don't want to pass those as an argument to real functions.
09:40:49 <shachaf> Maybe you can evaluate a block but with a different scope. For example, "import(module, { ... })"
09:43:06 <esowiki> [[Symbolic Python]] https://esolangs.org/w/index.php?diff=66197&oldid=61331 * YamTokTpaFa * (+31)
09:44:14 <ski> "but doesn't do parsing" -- including parsing in the above macro pattern-matching sense ?
09:44:44 <esowiki> [[Symbolic Python]] https://esolangs.org/w/index.php?diff=66198&oldid=66197 * YamTokTpaFa * (-1) /* Example Implementation */
09:44:47 <ski> (is taking multiple parameters to a macro (or whatever you want to think of this thing as) "pattern-matching" ?)
09:45:33 <ski> (also, if you want to guarantee it's happening at compile-time, then it's not an optimization anymore)
09:45:46 <cpressey> OK, idk. There are language semantics, and then there are compiler optimizations. I find tackling one or the other is easier than tackling both at once.
09:46:18 <ski> (and what you were saying there is, also, i think, why i was reminded of "Compiling without Continuations")
09:47:05 <shachaf> It's not a compiler optimization for the reason ski said.
09:47:26 <shachaf> ski: The reason I'm calling it "parsing" is that (x xs) isn't a meaningful expression by itself, but only in the context of being the first "argument" to the macro.
09:48:01 <ski> yes
09:48:16 <shachaf> Also x is an identifier, which makes "for" a binder on top of everything else. If it was more function-like, something like for(xs, x, { ... }) would be an error because x is unbound.
09:48:20 <ski> however, perhaps it can be a meaningful phrase, on its own ?
09:48:22 <cpressey> Anything you can do at compiletime, you can also do at runtime, so, ok, if you don't want to use the word "optimization", that's cool.
09:48:36 <ski> (assuming we know which "syntactic type" to assign to it)
09:48:38 <shachaf> cpressey: That seems like a bad approach to language design?
09:48:52 <shachaf> You can do type checking at runtime but I want to do it at compiletime.
09:49:02 <cpressey> shachaf: I said "can", not "should"
09:49:19 <shachaf> The other reason I don't want to call it an optimization is that it's mandatory.
09:49:50 <shachaf> If a language specification requires tail-recursive functions to use constant space, that's not an optimization.
09:50:14 <shachaf> (I think tail call optimization isn't a good optimization, either. It should either be required or not happen at all.)
09:50:29 <cpressey> Find, pretend I said "technique" instead of "optimizaion"
09:50:34 <shachaf> OK, sure.
09:50:46 <cpressey> My point is, the semantics of a language doesn't usually prescribe this
09:50:54 <shachaf> The other thing is that I want something simple, and supporting these things at runtime is many times more complicated than supporting them at compiletime.
09:50:59 <cpressey> The program has the same meaning whether you expand these things early or later
09:51:13 <shachaf> This is in theory for a low-level language that doesn't even have closures.
09:51:15 -!- wob_jonas has quit (Remote host closed the connection).
09:51:32 <shachaf> Maybe it'll have closures later. But it certainly won't have arbitrary continuations.
09:51:36 <esowiki> [[Triangular]] https://esolangs.org/w/index.php?diff=66199&oldid=53953 * YamTokTpaFa * (+24)
09:54:11 <ski> (Scheme prescribes "proper tail recursion" (which is a bit of a misnomer, because it doesn't have anything, per se, to do with recursion). may be implemented with TCO, may be implemented in other ways. the spec only cares about the asymptotic space complexity property of the operational semantics, allowing an unbounded number of active tail calls, in bounded space)
09:54:48 <shachaf> That seems fine.
09:55:12 <shachaf> I've said before that I think optimizations that change asymptotic behavior are probably a bad idea.
09:55:26 <ski> cpressey : well, but "One thing is that it might be permitted to do things that regular functions can't.","For example, maybe \"...\" contains a \"return\" statement. If you did that with general functions, you'd need something complicated like continuations or exceptions."
09:56:04 -!- ais523_ has joined.
09:57:13 -!- ais523_ has quit (Changing host).
09:57:13 -!- ais523_ has joined.
09:57:13 -!- ais523_ has quit (Changing host).
09:57:13 -!- ais523_ has joined.
09:57:36 <ais523_> hmm, it was a pain to get KiwiIRC working, but I'm here now
09:58:00 <Taneb> Hi, ais523_
09:58:11 <shachaf> Are you a Kiwi now?
09:58:17 <ais523_> I don't think so?
10:00:10 <ais523_> fwiw, I'm not really convinced I understand The Subtyping Machine
10:00:20 <ais523_> found esolangs are elegant in a way, but less elegant in other ways
10:01:51 <ski> ais523_ : cloaks don't work with Kiwi ?
10:02:10 <ais523_> apparently not
10:03:27 <ski> hm, is this the Kiwi thing on the Freenode page, or running from elsewhere ?
10:04:11 <ais523_> elsewhere, I can't get the one on the Freenode page to work
10:05:16 <esowiki> [[User talk:Ais523]] https://esolangs.org/w/index.php?diff=66200&oldid=66179 * Ais523 non-admin * (+379) /* Any features to insert mathematical formulas like TeX style? */ reply
10:06:34 -!- lob_jonas has joined.
10:06:37 <lob_jonas> did I hear KiwiIRC?
10:07:03 <ais523_> you weren't in channel at the time, but maybe?
10:07:14 <ais523_> you seem to be using it too
10:07:26 <ais523_> (what does the "l" mean?)
10:07:38 <shachaf> new zeaLand
10:08:02 <lob_jonas> ski: kiwi irc is a different web irc client. freenode runs a thing called qwebirc at http://webchat.freenode.net/ , whereas kiwiirc is a client at https://kiwiirc.com/client/irc.freenode.net that lets you connect to any irc network if you know the hostname of the server
10:08:52 <ais523_> no, webchat.freenode.net is a kiwiirc instance nowadays
10:08:58 <ais523_> but I couldn't get it to work
10:09:03 <ais523_> that's why ais523_ disappeared for ages
10:09:59 <lob_jonas> the "l" was originally trying to make the esolangs.org formatter color the nick the same sort of green as it uses for "b_jonas", but apparently it's not working that way now. either I messed up something, or the coloring hash changed. hmm.
10:10:20 <lob_jonas> wait really?
10:10:26 <lob_jonas> wow
10:10:40 <esowiki> [[Policy Policy]] N https://esolangs.org/w/index.php?oldid=66201 * A * (+229) Created page with "[[Policy Policy]] is an [[esoteric programming language]] inspired by [[Baba Is You]] that allows modifying the rules. This is a set of rules for defining rules. Category:La..."
10:10:43 <ski> Freenode used to run qwebirc, yes, but they switched to Kiwi, recently
10:12:36 <ski> <https://freenode.net/news/moving-to-kiwiirc>
10:13:57 <ski> ("it supports ... usage of emoji" is a minus, of course)
10:14:23 <ski> "Along with this change, we will no longer apply gateway cloaks to users of our webchat, treating them the same as any other client. While channel operators will still be able to recognize them via the realname field, we strongly suggest that you carefully consider the impact on legitimate users and hope that you decide not to ban webchat users as a whole."
10:15:07 <ski> seems to indicate to me that cloaks should now work, just as if you connected with a non webchat client (unlike before)
10:15:17 <lob_jonas> ski: does it support usage of emoji in the same way as mibbit does, so that when I mention std::default::Default, you see the colon-D replaced by a smiley?
10:15:30 <lob_jonas> or does it support usage of emoji like twitter?
10:15:42 <ski> "does it support usage of emoji in the same way as mibbit does .." : i hope not
10:15:52 <lob_jonas> or maybe just "support usage of emoji" in a sane way, where it just passes emoji through unmodified when you enter them into the input bar?
10:15:59 <ais523_> this computer is running Windows, so I have no easy ability to type a smiley face or whatever
10:16:15 <ais523_> however kiwiirc has an onscreen keyboard with an :] on it
10:16:21 <ski> (when i tried Discord a little, turning off all emoji stuff was the first thing i did)
10:16:23 <ais523_> does that render correctly for people using a different client?
10:16:32 <lob_jonas> ais523: which version of windows? the one that brings up an emoji popup if you press win+dot?
10:16:36 <Taneb> ais523_: it renders as colon close square bracket for me
10:16:52 <ais523_> ugh, why not just send the Unicode? :-(
10:17:11 <lob_jonas> and where if you press win+dot then colon then parenthesis then it searches for smiling emoji characters from some database/
10:17:17 <ais523_> hmm, looks like it is just replacing sequences of ASCII characters (that was a manually typed emoticon, not an emoji)
10:17:31 <int-e> > (:) 1 []
10:17:34 <lambdabot> [1]
10:17:43 <lob_jonas> ais523: I think you can turn that off in the settings menu of kiwiirc
10:17:43 <ski> > (:[]) 1
10:17:45 <lambdabot> [1]
10:17:56 <ais523_> oh, I initially misinterpreted int-e's Haskell as an attempt to emoji
10:18:15 <int-e> ais523_: There's no misinterpretation
10:18:19 <esowiki> [[Policy Policy]] https://esolangs.org/w/index.php?diff=66202&oldid=66201 * A * (+471)
10:18:23 <shachaf> @quote eat.a.comment
10:18:23 <lambdabot> SamB_XP says: I once saw it eat a comment (:[{- Help! -}])
10:18:24 <ais523_> well, it rendered literally for me
10:18:32 <int-e> ais523_: I was wondering what that feature would do to more or less ordinary code
10:18:45 <ais523_> it seems to have a decent protection against false positives
10:18:57 <shachaf> > (🐱)
10:19:00 <ais523_> although it'd probably struggle with emoticon-based esolangs (there's at least one of those, possibly more?)
10:19:10 <ais523_> shachaf: OK, that one did render as an emoji
10:19:25 <int-e> > (1 :) [] -- more delibrarate attempt
10:19:25 <ais523_> and there's no way to see what the underlying ASCII characters were
10:19:27 <ski> @slap lambdabot
10:19:27 <lambdabot> [1]
10:19:27 * lambdabot decomposes lambdabot into several parts using the Banach-Tarski theorem and reassembles them to get two copies of lambdabot!
10:19:41 <ski> > (�)
10:19:44 <lambdabot> error: Variable not in scope: �
10:19:44 <shachaf> There were no underlying ASCII characters.
10:20:03 <lob_jonas> ais523_: try the settings icon on the top left, then unset "Show emoticons"
10:20:03 <ais523_> oh, I was wondering why lambdabot didn't evaluate it :-D
10:20:07 <shachaf> The underlying character was U+1F431 CAT FACE
10:20:21 <int-e> @unidecode 🐱
10:20:21 <lambdabot> Unknown command, try @list
10:20:25 <int-e> `unidecode 🐱
10:20:28 <HackEso> ​[U+1F431 CAT FACE]
10:20:45 <Taneb> I can't believe a Weebl's Stuff character got into Unicode
10:20:51 <ais523_> oh, I didn't realise there were /two/ settings menus
10:20:53 <shachaf> Unfortunately the version of mosh-server I'm using doesn't display this correctly.
10:20:56 <int-e> > let 🐱 = 9 in 🐱
10:20:58 <lambdabot> <hint>:1:5: error: parse error on input ‘🐱’
10:21:01 <ais523_> (there is also a settings menu in the top right, with the same icon)
10:21:04 <shachaf> It's annoying because everything except mosh works fine.
10:21:15 <Taneb> int-e: I think emoji are operators for some reason
10:21:19 <int-e> > let (🐱) = 9 in (🐱)
10:21:20 <ais523_> when you find the settings menu you don't normally look for another one
10:21:21 <lambdabot> 9
10:21:23 <lob_jonas> [ 'a '{~?80$2 NB. I think they even fixed the html style so it doesn't collapse multiple spaces in messages
10:21:24 <j-bot> lob_jonas: aaa aa a a aa a aa aaaaa aa aaa a aaaaa aa aa a aaaa aa a a a aa
10:21:31 <int-e> Taneb: apparently so
10:21:43 <Taneb> int-e: I assume because they're not alphanumeric?
10:21:48 <lob_jonas> ais523_: yeah, I'm not saying it's a particularly good client
10:21:51 <Taneb> So, what's everyone's favourite emojo
10:21:55 <shachaf> `quote alphanumeric
10:21:56 <HackEso> 1132) <shachaf> A Swede who was in #esoteric / Thought his rhymes were a little generic. / "I might use, in my prose, / ꙮs, / But my poetry's alphanumeric."
10:22:01 <lob_jonas> I'm just saying it's still better than mibbit or the old qwebirc
10:22:08 <shachaf> Is ꙮ an emojo?
10:22:12 <int-e> > generalCategory '🐱'
10:22:13 <lambdabot> OtherSymbol
10:22:21 <ais523_> Taneb: "emoji" is also the singular (it has a Japanese root, and Japanese doesn't inflect plurals)
10:22:47 <Taneb> ais523_: yes but I like to facetiously decline words such as that as if they were Italian
10:22:47 <int-e> ꙮ.ꙮ
10:23:00 <Taneb> Because one susho is never enough, you know?
10:23:18 <Taneb> > generalCategory 'ꙮ'
10:23:20 <lambdabot> OtherLetter
10:23:25 <shachaf> I appreciated Taneb's usage and I might pick it up now.
10:23:36 <Taneb> > let ꙮ = 3 in ꙮ
10:23:38 <lambdabot> 3
10:23:45 <Taneb> shachaf: we can conclude that ꙮ is not an emoji
10:23:47 <shachaf> Though maybe I should go back to the older hyphenated form, e-moji
10:23:57 <shachaf> Presumably the printed version is just called "moji".
10:24:15 <Taneb> shachaf: I think it's cognate to "mojo"
10:24:21 <shachaf> Taneb: In fact it's alphanumeric, the above limerick notwithstanding.
10:24:34 <shachaf> `quote SNOWMAN
10:24:34 <HackEso> 1256) <mauris> MAHJONG TILE AUTUMN / HIRAGANA LETTER YA / SNOWMAN WITHOUT SNOW
10:24:42 <shachaf> OK, it's time for more Unicode poetry.
10:25:04 <shachaf> Any double dactyl code points?
10:26:45 <shachaf> I bet you can write a nice poem with rhyme, metre, and meaning where every line is the name of a Unicode code point.
10:27:11 <shachaf> But automated search is difficult because code point names aren't English words.
10:27:34 * ski . o O ( <http://www.pathwayslms.com/swipltuts/())).pl> )
10:27:42 <ais523_> well, false negatives aren't a huge issue, and false positives can easily be excluded by hand if they end up in the finished poem
10:27:47 <ais523_> so an inaccurate syllable counter might be good enough
10:28:13 <lob_jonas> https://github.com/fis/esolangs/blob/master/esologs/format.cc#L406 this was where it was done
10:28:23 <Taneb> `unidecode '😚'
10:28:25 <HackEso> ​[U+0027 APOSTROPHE] [U+1F61A KISSING FACE WITH CLOSED EYES] [U+0027 APOSTROPHE]
10:28:43 <shachaf> I once downloaded an English pronunciation dictionary and used it to search for rhymes fitting a particular metre.
10:29:11 <shachaf> Actually it wasn't rhymes that time, it was just the metre.
10:29:39 <Taneb> shachaf: you can fit 😚 to a double dactyl meter., I think
10:29:45 <shachaf> I was trying dactylic hexameter, and I wanted words that cross foot boundaries in particular ways.
10:30:05 * ski . o O ( Emojo bag )
10:30:11 <shachaf> KISSing face WITH closed eyes?
10:30:19 <shachaf> That sounds kind of unnatural.
10:30:54 <Taneb> Ah, I was subconsciously forcing myself to say it that way
10:31:08 <Taneb> If I relax I say "kissing FACE with closed EYES"
10:31:30 <lob_jonas> shachaf: I recommend http://wyrdplay.org/AlanBeale/CAAPR-ref.html by Alan Beale, the maintainer of 12-dict, over worse pronunciation dictionaries like http://www.speech.cs.cmu.edu/cgi-bin/cmudict
10:31:37 <shachaf> `unicode ⚯
10:31:39 <HackEso> U+26AF UNMARRIED PARTNERSHIP SYMBOL \ UTF-8: e2 9a af UTF-16BE: 26af Decimal: &#9903; \ ⚯ \ Category: So (Symbol, Other) \ Bidi: ON (Other Neutrals)
10:31:51 <shachaf> Hmm, no, even ignoring SYMBOL it doesn't work either.
10:32:05 <shachaf> lob_jonas: Oh, I was using cmudict.
10:32:29 <lob_jonas> shachaf: I didn't know about CAAPR until earlier this year either
10:32:30 <shachaf> I also used cmudict for http://slbkbs.org/major/
10:32:31 <lob_jonas> but it seems really well done
10:32:56 <shachaf> Which lets you search for https://en.wikipedia.org/wiki/Mnemonic_major_system words.
10:33:09 <lob_jonas> on the minus side, you're screwed anyway if you're trying to work with unicode character names, since they have a lot of words that aren't common english words
10:33:48 <lob_jonas> like, they name every hangul syllable and all, and you won't get the pronunciation of those from an english pronunciation dictionary
10:34:04 <ais523_> are there any Unicode character names that contain "words" that aren't actually a word in *any* language?
10:34:34 <lob_jonas> ais523: yes, there's at least one obviously typoed english word
10:35:01 <shachaf> Higgledy-piggledy / Down-pointing Triangle
10:35:27 <shachaf> The Arabic ligatures in Unicode are kind of ridiculous. I was looking at them the other day.
10:35:31 <ais523_> OK, I agree that "down-pointing triangle" is a double dactyl
10:35:35 <ais523_> `unicode down-pointing triangle
10:35:37 <HackEso> U+23F7 BLACK MEDIUM DOWN-POINTING TRIANGLE \ UTF-8: e2 8f b7 UTF-16BE: 23f7 Decimal: &#9207; \ ⏷ \ Category: So (Symbol, Other) \ Bidi: ON (Other Neutrals) \ \ U+25BC BLACK DOWN-POINTING TRIANGLE \ UTF-8: e2 96 bc UTF-16BE: 25bc Decimal: &#9660; \ ▼ \ Category: So (Symbol, Other) \ Bidi: ON (Other Neutrals) \ \ U+25BD WHITE DOWN-POINTING TRIANGLE \ UTF-8: e2 96 bd UTF-16BE: 25bd Decimal: &#9661; \ ▽ \ Category: So (Symbol, Other) \ Bidi: ON (
10:35:42 <shachaf> Unfortunately it's not a code point.
10:35:49 <ais523_> oh, but apparently it isn't a code point
10:36:04 <Taneb> "down pointing" is more of an antibacchius
10:36:33 <shachaf> I think there's some liberty if a reader would naturally read it as a dactyl if they're in the groove.
10:37:25 <shachaf> `unidecode ⊎
10:37:26 <HackEso> ​[U+228E MULTISET UNION]
10:37:33 <shachaf> Higgledy piggledy / Multiset Union
10:37:53 <ais523_> I used ⊎ a lot in my thesis
10:37:54 <Taneb> Isn't multiset an anapest?
10:38:15 <lob_jonas> see http://www.unicode.org/notes/tn27/tn27-4.html , especially near "BRAKCET"
10:38:21 <ais523_> but mostly think of it as "disjoint union" (which doesn't scan), or even "\uplus"
10:38:55 <ais523_> I think "multiset" sounds a little unnatural as an anapest, but the stress is first and third
10:38:57 <lob_jonas> ais523: really? I thought people used u-with-plus-inside to mean a multiset union
10:39:05 <lob_jonas> oh
10:39:08 <shachaf> Aha!
10:39:11 <ais523_> except in American English where it's second
10:39:19 <shachaf> `unidecode ⏘
10:39:19 <HackEso> ​[U+23D8 METRICAL TETRASEME]
10:39:27 <shachaf> Higgledy piggledy / Metrical tetraseme
10:39:46 <ais523_> (the last vowel in "multi" has an entirely different pronunciation in American English and British English, I expect that extends to "multiset")
10:40:10 <ais523_> also, isn't "metrical" stressed second?
10:40:23 <shachaf> metRIcal?
10:40:26 <shachaf> I've never heard that.
10:40:29 <ais523_> if I try to pronounce it stressed first, the third syllable more or less completely disappears
10:40:33 <ais523_> even a schwa is too long
10:40:43 <Taneb> ais523_: I definitely pronounce it stressed first
10:40:50 <Taneb> METric'l
10:40:56 <shachaf> I admit it sounds more like "metricle" but it's still three syllables in my mouth.
10:41:26 <ais523_> "MET-tric-" and then about the softest possible "l" is what it ends up like for me
10:41:28 <ais523_> and that just sounds weird
10:41:35 <shachaf> If only ⏔ worked.
10:42:07 <shachaf> Also when I say "in my mouth" I mean in my mental model of my mouth, because I didn't actually pronounce it.
10:42:16 <ais523_> "met-RIC-əl" is a lot more natural
10:42:29 <shachaf> `unicode ⏝
10:42:30 <HackEso> U+23DD BOTTOM PARENTHESIS \ UTF-8: e2 8f 9d UTF-16BE: 23dd Decimal: &#9181; \ ⏝ \ Category: Sm (Symbol, Math) \ Bidi: ON (Other Neutrals)
10:42:38 <ais523_> `unidecode ⏔
10:42:39 <HackEso> ​[U+23D4 METRICAL LONG OVER TWO SHORTS]
10:43:27 <Taneb> ais523_: I find stressed second very unnatural
10:43:42 <ais523_> hmm, maybe it's an accent difference
10:43:48 <shachaf> I agreeneb.
10:43:49 <ais523_> I don't stress second that much, just more than first
10:43:55 <shachaf> And I never met treacle I didn't like.
10:44:12 <ais523_> it's definitely less of a stress than "treacle"
10:44:22 <shachaf> (I don't think I've ever met treacle, though. I only vaguely know it as a candyish or sugary thing.)
10:44:35 <Taneb> shachaf: I think treacle is the same thing as molasses, if that helps
10:44:40 <Taneb> That said, I've not had either
10:44:53 <lob_jonas> oh no. #esoteric is trying to make English poetry. we're doomed.
10:45:07 <ais523_> I think I once ate a cake for which treacle was an ingredient? not sure though
10:45:13 <shachaf> It helps a bit.
10:45:19 <shachaf> I hear molasses is pretty dangerous.
10:45:58 <shachaf> "Bottom parenthesis" is surely a double dactyl, though.
10:46:14 * ski . o O ( "Trapped in treaps of treacle." -- some paper, i forgot which )
10:46:22 <lob_jonas> which fungot style writes poetry?
10:46:22 <fungot> lob_jonas: if one day somebody visits a store, and any patches you send will be dropped
10:46:25 <lob_jonas> ^styles
10:46:26 <ais523_> the word break is in the wrong place, but otherewise yes
10:46:27 <Taneb> shachaf: that's a triple iamb, for me?
10:46:35 <Taneb> No, I'm wrong
10:46:50 <Taneb> BOTtom parENtheSIS for me
10:47:08 <shachaf> BOTtom paRENthebro
10:47:17 <ais523_> that's the same way that other people are pronouncing it, except you stressed "SIS"
10:47:20 <ais523_> and it's really not that stressed
10:47:29 <shachaf> `icode ⨹
10:47:30 <HackEso> ​[U+2A39 PLUS SIGN IN TRIANGLE]
10:47:37 <Taneb> It's as stressed as the EN for me
10:47:47 <ais523_> maybe more than "the", but secondary stress doesn't normally factor into this sort of poetry discussion
10:48:12 <shachaf> Apparently the original motivation of Arabic ligatures wasn't actually to be used in Arabic.
10:48:18 <shachaf> It was to be used in Urdu?
10:48:27 <ais523_> I think ⨹ is cheating slightly because the first meter unit is made out of three different words, and it's hard to leave two whole words unstressed like that
10:49:24 <Taneb> Plus sign is a spondee for me?
10:49:53 <shachaf> `icode ⸒
10:49:54 <HackEso> ​[U+2E12 HYPODIASTOLE]
10:49:59 <shachaf> That one is even one word.
10:50:20 <Taneb> Maybe this explains why I wasn't very good at the poetry sections in my Latin A-level
10:50:39 <Taneb> I'm going to unirc for a bit
10:51:18 <shachaf> `unicode ⸻
10:51:20 <HackEso> U+2E3B THREE-EM DASH \ UTF-8: e2 b8 bb UTF-16BE: 2e3b Decimal: &#11835; \ ⸻ \ Category: Pd (Punctuation, Dash) \ Bidi: ON (Other Neutrals)
10:51:23 <shachaf> This is ridiculous.
10:51:23 <ais523_> OK, after thinking about it a bit more, ⊎ is fundamentally a multiset union operation
10:51:33 <shachaf> THREE-EM dash?
10:51:40 <ais523_> hmm, how wide is U+2E3B in the typical monospace character set?
10:51:47 <shachaf> That's so many ems. I can't believe I was limiting myself to single em-dashes.
10:51:56 <shachaf> My terminal displays it triple-width.
10:52:14 <shachaf>
10:52:15 <shachaf> xxx
10:52:18 <shachaf> Hmm, no.
10:52:21 <shachaf>
10:52:22 <shachaf> xxxx
10:52:23 <ais523_> I was working on a wcwidth implementation based on the official Unicode documentation, but that doesn't leave any situation in which a single character can be drawn wider than fullwidth (= wcwidth 2)
10:52:29 <shachaf> Quadruple-width.
10:52:36 <ais523_>
10:52:37 <ais523_> mmm
10:52:48 <ais523_> hmm, it renders wider than three "m"s for me
10:52:48 <shachaf> ...I suppose m is more appropriate there.
10:52:51 <lob_jonas> check oren's font maybe
10:52:54 <lob_jonas> `? font
10:52:55 <HackEso> ​#esoteric bitmap fonts include: \oren\'s font http://www.orenwatson.be/fontdemo.htm , lifthrasiir's font https://github.com/lifthrasiir/unison/ , b_jonas's font http://www.math.bme.hu/~ambrus/pu/fecupboard20-c.pcf.gz , fizzie's font https://github.com/fis/rfk86/tree/master/web/font , FireFly's fonts http://xen.firefly.nu/up/fonts/
10:53:05 <shachaf>
10:53:06 <shachaf> mm
10:53:09 <lob_jonas> it's single-width in oren's font
10:53:09 <shachaf>
10:53:10 <shachaf> mmm
10:55:14 <shachaf> By the way: If you're talking about English, is there any use to names like "dactyl", "iamb", "spondee", etc.?
10:55:31 <shachaf> They seem like words that are bad for communicating.
10:55:40 <shachaf> Instead of "iamb", I'll write xX
10:55:47 <shachaf> And Xxx for dactyl, and so on.
10:56:35 <cpressey> They sounds like names of towns in Wales and Scotland
10:57:05 <shachaf> i,i spondeeneous combustion
10:57:05 * ski . o O ( Upper and lower case <https://pbs.twimg.com/media/Dbo0pbiWkAErHPD?format=jpg&name=4096x4096> )
10:57:12 <lob_jonas> SPACE, COMMA, COLON, TILDE, MACRON, CARON, BREVE, OGONEK, HYPHEN, DAGGER, BULLET, PRIME, CARET, NABLA, ANGLE, UNION, RATIO, EXCESS, MODELS, TRUE, FORCES, XOR, NAND, NOR, BOWTIE, HOUSE, ARC, SECTOR, WATCH, FROWN, SMILE, SLOPE, FUSE, CLOUD, COMET, SUN, ANKH, EARTH, SATURN, URANUS, PLUTO, ARIES, TAURUS, GEMINI, CANCER, LEO, VIRGO, LIBRA, PISCES,
10:57:13 <lob_jonas> ANCHOR, SCALES, FLOWER, GEAR, COFFIN, NEUTER, CERES, PALLAS, JUNO, VESTA, CHIRON, RAIN, PICK, CHAINS, CHURCH, CASTLE, FERRY, SKIER, TENT, PENCIL, TINY, MINY, JOIN, HYGIEA, PHOLUS, NESSUS, CUPIDO, HADES, ZEUS, KRONOS, SEDNA, FOGGY, FOG, TACO, CACTUS, TULIP, ROSE, HERB, TOMATO, GRAPES, MELON, LEMON, BANANA, PEAR, PEACH, BREAD, DANGO, ODEN, SUSHI,
10:57:13 <lob_jonas> COOKIE, CANDY, RIBBON, CINEMA, TICKET, GUITAR, VIOLIN, RUNNER, SURFER, TROPHY, GOLFER, DESERT, BANK, HOTEL, SCHOOL, LABEL, RAT, MOUSE, OX, COW, TIGER, RABBIT, CAT, DRAGON, WHALE, SNAIL, SNAKE, HORSE, RAM, GOAT, SHEEP, MONKEY, DOG, PIG, BOAR, BUG, ANT, FISH, TURTLE, BIRD, KOALA, POODLE, EYES, EYE, EAR, NOSE, MOUTH, TONGUE, CROWN, JEANS, DRESS,
10:57:14 <lob_jonas> KIMONO, BIKINI, PURSE, POUCH, BOY, GIRL, MAN, WOMAN, FAMILY, BABY, GHOST, IMP, SKULL, DANCER, PILL, RING, KISS, BOMB, SEAT, DVD, LEDGER, BOOKS, SCROLL, MEMO, PAGER, CAMERA, RADIO, KEY, LOCK, BELL, FIRE, WRENCH, HAMMER, HOCHO, PISTOL, KAABA, MOSQUE, BOOK, CANDLE, HOLE, SPIDER, SCREEN, FOLDER, NOTE, PAGE, PAGES, LIPS, MOYAI, ROCKET, TRAIN, METRO,
10:57:14 <lob_jonas> TRAM, BUS, TAXI, SHIP, DOOR, TOILET, SHOWER, BATH, BED, STUPA, PAGODA, SHIELD, CANOE, SLED, SELFIE, PRINCE, SHRUG, FENCER, SPOON, RIFLE, BACON, POTATO, CARROT, EGG, PIE, MANGO, BAGEL, CRAB, TURKEY, EAGLE, DUCK, BAT, SHARK, OWL, DEER, LIZARD, SHRIMP, SQUID, T-REX, LLAMA, PARROT, BADGER, SWAN, BONE, LEG, FOOT, TOOTH, ADULT, CHILD, MAGE, FAIRY, ELF,
10:57:15 <lob_jonas> GENIE, ZOMBIE, BRAIN, SCARF, GLOVES, COAT, SOCKS, ABACUS, BRICK, MAGNET, BROOM, BASKET, SPONGE,
10:57:18 <ais523_> so according to glibc, 1 is the correct wcwidth for U+2E3B: https://tio.run/##VYzBCoJAFEX3fsVDEUdQaRlYbcRWklIKtRJ5M@aAjaFjBtF/Bf1NP2Jjrdyee85F94w4jgZlJRcM8mOchLv8EGf7INQMLrDuKYNVJylvvGozRyqaswGrop2jusGiZhPTuJBwKbggt4ZTGx4aQMfkXyBRkAfpKQkd0AMvS7fuUrd9ZfwucwkIa4isz@ttTfTaqrOS6CYF8647yho4lRVB2wGiJht/cctk3wpY@NpzHL8
10:57:32 <lob_jonas> ^ these are single-word unicode character names, just write a poem from them
10:57:37 * ski stares blankly
10:57:38 <lob_jonas> you don't have to work with the long names
10:57:54 <ais523_> my browser renders it at 5 monospace units wide, though
10:58:12 <ais523_> anyway. time to go
10:58:15 -!- ais523_ has quit (Quit: quit).
10:59:04 <shachaf> Please group them into equivalence classes by rhyme.
10:59:16 <lob_jonas> there's also just as many longer single-word character names, starting from AMPERSAND, including such things as DUMPLING and BLOSSOM and POPCORN
11:01:20 <lob_jonas> https://hack.esolangs.org/edit/tmp/single-word-character-names
11:03:06 <shachaf> I don't think this list of words is good for poetry.
11:03:29 <lob_jonas> yeah, there are too many verbs. hard to make complete sentences from them. let me try to find them.
11:03:31 <shachaf> Better to use some multi-word code points that contain other grammatical ingredients.
11:04:43 <int-e> hmm, new one for me: https://en.wikipedia.org/wiki/Koomey%27s_law
11:05:17 <shachaf> Why is MUSHROOM missing?
11:05:31 <shachaf> I have a poem with Unicode code points:
11:05:43 <lob_jonas> BADGER, BALLOON, BANK, BAT, BLOSSOM, BOMB, BRICK, BUG, CHICKEN, COAT, COMPLEMENT, DESERT,
11:05:49 <lob_jonas> shachaf: MUSHROOM is in the longer list
11:05:52 <lob_jonas> that I tried to paste
11:05:58 <lob_jonas> `fetch tmp/single-word-character-names https://hack.esolangs.org/get/tmp/single-word-character-names
11:06:00 <HackEso> 2019-09-16 11:05:59 URL:https://hack.esolangs.org/get/tmp/single-word-character-names [4459/4459] -> "tmp/single-word-character-names" [1]
11:06:00 <cpressey> int-e: Moore's law is much more well-publicized
11:06:18 <shachaf> BADGER, BADGER, BADGER, BADGER, BADGER, BADGER, BADGER, BADGER, BADGER, BADGER, BADGER, BADGER, MUSHROOM, MUSHROOM
11:07:10 <shachaf> int-e: Fancy.
11:07:12 <lob_jonas> DIVIDES (the first one that's primarily a verb), DOCUMENT, DRESS, DUCK, ENVELOPE, ESTIMATES,
11:07:13 <int-e> cpressey: and less relevant, somehow.
11:08:48 <lob_jonas> FORCES, FROWN, FUSE, GHOST, HAMMER, HOUSE, INCREMENT (second), INTERCALATE (third), JOIN (fourth, this is getting better),
11:10:24 <lob_jonas> KISS (fifth), LABEL, LOCK (sixth), MAN, MAXIMIZE (seventh), MINIMIZE (eighth; though I wonder if I should have counted BLOSSOM),
11:11:35 <cpressey> tbf BADGER BALLOON BANK BAT BLOSSOM and BOMB are all verbs too
11:11:56 <cpressey> and DIVIDES can easily be a plural noun
11:12:04 <lob_jonas> NEUTER, NOTE, OVERLAP (ninth), OVERLINE, PACKAGE, PAGE, PAGES, PARROT,
11:12:18 <lob_jonas> cpressey: yes, I did list BADGER BALLOON BANK BAT BLOSSOM as the first ones that can be verbs
11:13:07 <cpressey> lob_jonas: sorry, I wasn't paying attention
11:13:34 <fizzie> `quote alphanumeric
11:13:35 <HackEso> 1132) <shachaf> A Swede who was in #esoteric / Thought his rhymes were a little generic. / "I might use, in my prose, / ꙮs, / But my poetry's alphanumeric."
11:15:18 <lob_jonas> PENCIL, PICK (tenth primarily verb), PRECEDES, RING, ROSE (eleventh), SCALES, SCHOOL, SCREEN, SCROLL (12th), SEAT, SEGMENT, SHILED, SHIP, SHOWER, SHRUG (13th), SMILE (14th), SNAKE, SPACE, SPARKLE (15th), SPARKLES (16th),
11:17:12 <shachaf> lob_jonas: I was very confused by this CAAPR file.
11:17:16 <lob_jonas> STATION, SUCCEEDS (17th), TICKET, TONGUE, TRAIN, TRUMPET, WATCH (18th).
11:17:27 <lob_jonas> shachaf: read its documentation, it becomes more clear from that
11:17:28 <shachaf> But it turns out my editor was misrendering it.
11:17:39 <shachaf> So most characters weren't showing up.
11:17:44 <lob_jonas> shachaf: it's iso-8859-1 encoded
11:18:05 <shachaf> Right, I just figured that out.
11:18:28 <lob_jonas> so that's like fifty verbs usable, and if I count BLOSSOM as primarily a verb, then 19 of them are primarily a verb
11:18:45 <lob_jonas> there are probably a few more that I just don't know
11:19:48 -!- ArthurStrong has quit (Quit: leaving).
11:20:18 <lob_jonas> does Moore's law say that the number of emojis double every two years, if you include the ones that are encoded as a combination of more than one unicode code point?
11:22:39 <cpressey> lob_jonas: This is a notable open problem in Emoji Science, we need to find an eminent Emoji Scientist to answer it
11:22:43 <int-e> `grWp moore
11:22:45 <HackEso> No output.
11:24:22 <int-e> Is anybody garbage collecting the emojis that nobody ever uses?
11:24:39 <int-e> That way, maybe, we won't run out of unicode points for them ;)
11:24:51 <shachaf> Someone proposed a capybara emojo, I was happy to hear.
11:24:56 <shachaf> I was going to do it myself otherwise.
11:25:15 <shachaf> It's currently pending review as part of a larger group of emoji.
11:25:56 <shachaf> lob_jonas: What's the benefit of this over cmudict?
11:26:00 <lob_jonas> we can at least make some of those ambiguously parsing news headlines from these. FORCES DESERT, JOIN OPPOSITION.
11:26:04 <shachaf> cmudict was much easier for me to read.
11:26:49 <lob_jonas> shachaf: but alan-pron is more informative if you actually want to use it, and doesn't lack as many common words
11:27:35 <lob_jonas> SPACE SUPERHERO
11:29:30 <shachaf> This American dictionary clearly doesn't match some American pronunciations.
11:29:44 <shachaf> For example, it says: comfortable : ku'mf°rtøb°L
11:30:51 <lob_jonas> shachaf: some words have more than one possible pronunciation, and it doesn't generally list all possibilities
11:31:24 <shachaf> Oh. Sometimes it lists multiple pronunciations, but maybe only for words with different meanings.
11:31:41 <shachaf> cmudict has it wrong too: COMFORTABLE K AH1 M F ER0 T AH0 B AH0 L
11:31:54 <shachaf> Hmm, maybe I'm wrong.
11:32:05 <shachaf> Some people pronounce it a completely bizarro way, which I thought was standard.
11:32:08 <lob_jonas> yes, multiple pronunciations only when they can make a difference within one speaker, or implicitly in a few symbols that mean vowels that can be pronounced in multiple ways
11:33:51 <lob_jonas> shachaf: in any case, the docs of alan-pron describes which dictionaries it's derived from, so you can always check those sources and see what they say, and complain to Alan in email about mistakes. I know he reads emails, he fixed one doc-bug on my request.
11:34:14 <lob_jonas> you know how when a maintainer replies meaningfully to bug reports, that really increases my confidence in how much I can trust something like this, right/
11:34:47 <shachaf> @time
11:34:51 <lambdabot> Local time for shachaf is Mon Sep 16 04:34:48 2019
11:34:53 <shachaf> I'm going to sleep.
11:35:24 <shachaf> cmudict has about 4 times as many entries
11:36:00 <lob_jonas> shachaf: and yet misses lots of common words;
11:36:14 <fizzie> cuvoald710-0.2.scm:( "comfortable" j ( k uh1 m f t @ b l ) ((pos "OA%" ) ))
11:36:39 <lob_jonas> whereas Alan compiled those small english dictionaries in 12dicts, and used reputable printed dictionaries to compile this, including Wells's, so it should miss fewer common words
11:36:40 <cpressey> That's an impressive constant cluster there, I didn't realize!
11:37:04 <cpressey> *consonant
11:37:40 <cpressey> With all those consonants comfortably clustered together like that
11:38:12 <fizzie> I couldn't find where I stashed a bunch of pronunciation dictionaries I was playing with, but 'locate' found the above as part of Festival.
11:55:43 <lob_jonas> `unidecode 👥🕏🥩🕊😂🥛🍃⨔🕴🙌🧻🤣🥘🗾🗽
11:55:44 <HackEso> ​[U+1F465 BUSTS IN SILHOUETTE] [U+1F54F BOWL OF HYGIEIA] [U+1F969 CUT OF MEAT] [U+1F54A DOVE OF PEACE] [U+1F602 FACE WITH TEARS OF JOY] [U+1F95B GLASS OF MILK] [U+1F343 LEAF FLUTTERING IN WIND] [U+2A14 LINE INTEGRATION NOT INCLUDING THE POLE] [U+1F574 MAN IN BUSINESS SUIT LEVITATING] [U+1F64C PERSON RAISING BOTH HANDS IN CELEBRATION]
11:55:52 <lob_jonas> `unidecode 🙌🧻🤣🥘🗾🗽
11:55:54 <HackEso> ​[U+1F64C PERSON RAISING BOTH HANDS IN CELEBRATION] [U+1F9FB ROLL OF PAPER] [U+1F923 ROLLING ON THE FLOOR LAUGHING] [U+1F958 SHALLOW PAN OF FOOD] [U+1F5FE SILHOUETTE OF JAPAN] [U+1F5FD STATUE OF LIBERTY]
11:57:24 <fizzie> Is that a cohesive storyline that I'm just not following, or are those characters releated to each other in some other way?
11:57:45 <lob_jonas> fizzie: other way
11:58:01 <lob_jonas> I thought of what a poem would need other than verbs that is rare in character names
11:58:13 <lob_jonas> the answer is common words: "the", "of", "in", "to"
11:58:21 <lob_jonas> so all of these character names have one of those common words
11:58:40 <lob_jonas> there are much more such character names, this is just a small selection
11:59:06 <lob_jonas> some of them, like "LEAF FLUTTERING IN WIND", are poetic
11:59:16 <lob_jonas> some, like "LINE INTEGRATION NOT INCLUDING THE POLE", aren't quite
11:59:51 <lob_jonas> also the character names are mostly in alphabetic order
12:01:09 <lob_jonas> "SHALLOW PAN OF FOOD" could also work in a poem
12:01:31 <lob_jonas> "SILHOUETTE OF JAPAN" I just found that one strange because of what we said about flag emojis earlier
12:06:21 <cpressey> DID YOU KNOW THAT NAMES OF UNICODE CHARACTERS MUST BE UPPERCASE SO THAT THEY CAN BE TRANSMITTED CORRECTLY IN BAUDOT
12:06:26 <lob_jonas> despite that I think theflag situation is stupid
12:08:01 <Lykaina> cpressey: baudot is still used?
12:09:45 <lob_jonas> here? sure
12:10:58 <Lykaina> is baudot ITA-1?
12:12:39 <Lykaina> oh, ITA1
12:13:12 <Lykaina> apparently there's a difference
12:17:59 <Lykaina> ITA2 is still used in telecommunications devices for the deaf (TDD), telex, and some amateur radio applications, such as radioteletype ("RTTY").
12:18:28 <Lykaina> from https://en.wikipedia.org/wiki/Baudot_code
12:19:22 <lob_jonas> Lykaina: by baudot I just vaguely mean any of the similar codes
12:19:34 <lob_jonas> there's a lot of locally used variations
12:19:59 <Lykaina> 5-bit codes
12:20:04 <lob_jonas> they form a huge family, just like how there are a lot of codes similar to ascii and lots of codes similar to ebcdic
12:20:30 <lob_jonas> yes, they come from five-bit telexes and five-hole tape
12:20:41 <Lykaina> ebcdic was an encryption standandard
12:21:00 <lob_jonas> just like how ascii is related to seven-bit bytes and ebcdic from 12 line punch cards
12:22:08 <lob_jonas> you can tell the difference because in ascii-related codes, most letters are arranged in alphabetic order; in ebcdic-like codes, they're still in alphabetic order but grouped to nines; in baudot they're in a different order where the most frequent characters have few holes
12:22:23 <lob_jonas> or few bits set
12:22:33 <Lykaina> oh
12:22:36 <lob_jonas> admittedly that's true to ebcdic too, but in a different way
12:23:15 <lob_jonas> in ebcdic, usually there's zero or one bits set from among the 2..9 holes, and ideally as few as possible from the shift holes 12, 11, 10, 1
12:23:32 <lob_jonas> the holes are numbered 12, 11, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9 iirc
12:23:44 <lob_jonas> which admittedly isn't that much worse than 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K, 1
12:24:07 <lob_jonas> or 7, 8, 9, u, o, K, 10, A
12:24:13 <lob_jonas> or any of the other ridiculous numberings
12:25:29 <lob_jonas> the ones with C, B, A, S, M, MM, MK, MV, GM; the ones with C, B, A, A+, A++, A+++; the ones with D, C, B, A, AA, AAA
12:25:57 <lob_jonas> and even the ones with 000, 00, 0, 1, 2, 3, 4
12:27:28 <lob_jonas> surely no battery will be smaller than the "mini" A battery, so let's name that from the _first_ letter of the alphabet. there could be larger batteries than the goliath D battery, so let's reserve all the letters E..Z for them.
12:29:03 <Lykaina> i've never actually seen an A battery
12:29:30 <Lykaina> N is smaller than AAA
12:29:33 <lob_jonas> Lykaina: yes, those aren't used anymore
12:29:38 <lob_jonas> https://en.wikipedia.org/wiki/List_of_battery_sizes lists a lot
12:29:43 <lob_jonas> history is complicated
12:30:49 <Lykaina> cr2016/2025/2032 are named after their size
12:31:29 <lob_jonas> and note from the table that most battery sizes have lots of aliases, because every brand calls them different
12:31:42 <lob_jonas> I have used like a dozen different battery sizes, and got confused among them several times
12:32:15 <lob_jonas> note that that article doesn't even have a photo of an A battery
12:33:25 <lob_jonas> which basically means that it doesn't exist anymore
12:41:16 <Lykaina> i had a dream that i got a series of comic books that looked and worked like 2-way frs/gmrs radios.
12:42:02 <Lykaina> dreams are weird
12:47:52 <esowiki> [[2/9 of an esolang]] https://esolangs.org/w/index.php?diff=66203&oldid=65104 * YamTokTpaFa * (+9) +WIP
12:48:32 -!- ais523 has joined.
12:50:41 <Lykaina> hi ais523
12:51:04 <ais523> hello
12:51:15 <ais523> Baudot is used in a few esolangs
12:51:18 <ais523> mostly the US-TTY variation
12:51:31 <ais523> both CLC-INTERCAL and 7 use it as part of their character encoding
12:52:11 <ais523> 7 does it because it's normally more efficient than ASCII at storing common strings (in terms of the number of bits required to represent the input), especially when workinig in base 6
12:52:22 <ais523> whereas I think CLC-INTERCAL just does it to be perverse
12:52:41 <Taneb> That's why INTERCAL does most things that it does
12:53:04 <ais523> well, yes
12:53:14 <ais523> the aim of INTERCAL is to do things differently from other languages
12:53:41 <ais523> it'll do things better if it can, but normally it does things worse because all the better options have already been taken
12:54:03 <ais523> for example, there is a POSIX standard for tarballs that basically nobody cares about or follows
12:54:42 <ais523> but it's backwards compatible with basically any `tar` implementation (and more modern `tar` implementations actually know how to read it, just in case someone decides to produce a tarball in that format)
12:54:47 <ais523> so I've been using it for C-INTERCAL's tarballs
12:55:36 <Lykaina> pax?
12:55:57 <ais523> yes
12:59:03 <Lykaina> i'm relearning how to play go
12:59:47 <Lykaina> i say relearning because i have a vague memory of me and Sgeo playing.
12:59:58 <ais523> wow, now I'm looking at the specification of the original tar format, without the modern improvements
13:00:06 <ais523> it's pretty insane
13:00:14 <ais523> e.g. the header is 257 bytes long, padded out to 512 bytes
13:00:43 <ais523> (512-byte alignment was likely considered necessary at the time, so technically there's no wasted space, but that 257 really hurts)
13:01:52 <ais523> the number encoding is ASCII-encoded octal, with a fixed length, but the last character of the fixed-length field has to be either NUL or a space
13:03:42 <lob_jonas> ah yes, tar supports like a hundred historical formats. but zip is even more complicated, with all sorts of new compression methods and extensions to store more file information.
13:04:37 <lob_jonas> ais523: gnu should have just renamed the format, rather than pretend that it's a new version of tar. they did it right when they created zlib and gzip, and zlib has grown to become the single most installed software library ever, as far as we can tell.
13:05:22 <lob_jonas> I don't want to know whether it became the most installed one before or after they fixed the stupid security bugs in it.
13:05:41 <ais523> lob_jonas: aimake actually assumes the presence of zlib's header files
13:06:04 <ais523> because some operating systems use a different location for nonstandard header files, and aimake needs to be able to find them too
13:06:21 <ais523> so I needed at least one nonstandard header file that I could assume to be installed, zlib.h seemed like the best option
13:07:03 <Lykaina> i gotta wake up now
13:09:05 <lob_jonas> and these days it has dozens of alternate implementations of zlib compression and decompression, both production and esoteric
13:11:27 <ais523> that said, I think I released at least one version of C-INTERCAL as .shar, for old times' sake
13:11:31 <ais523> (to Usenet, obviously)
13:13:09 <lob_jonas> ``` tar --help | sed -n '/Archive format se/,$p'
13:13:10 <HackEso> ​ Archive format selection: \ \ -H, --format=FORMAT create archive of the given format \ \ FORMAT is one of the following: \ \ gnu GNU tar 1.13.x format \ oldgnu GNU format as per tar <= 1.12 \ pax POSIX 1003.1-2001 (pax) format \ posix same as pax \ ustar POSIX 1003.1-1988 (ustar) format \ v7 old V7
13:15:38 <lob_jonas> and that's just the ones it can write.
13:24:00 <ais523> another thing I learned today: ar is a plaintext format (other than the data of the files it contains, which is stored literally)
13:24:32 <ais523> which is ironic given that nowadays it's basically only used for storing object files (also, IIRC, .deb's outermost wrapper is in ar format)
13:25:18 <Lykaina> ais523: weren't you in agora?
13:25:28 <Lykaina> i recognize the name
13:26:29 <ais523> yes
13:26:37 <esowiki> [[Kleinfunge]] https://esolangs.org/w/index.php?diff=66204&oldid=45154 * YamTokTpaFa * (+53)
13:26:42 <Lykaina> i think i was SCat then.
13:26:53 <ais523> I still sort-of am in spirit, but mostly just post in a-d and am not a player
13:27:09 <ais523> (I made an ambiguous registration attempt a while back but it was ruled to have failed)
13:27:10 <lob_jonas> ais523: the chunked transfer encoding on HTTP is also a text format, even when the contents aren't text. the chunk lengths are written in ascii-encoded hexadecimal. PPM header is text too, even when the body is binary.
13:28:05 <lob_jonas> MIME multipart can also contain binary data with ascii text headings.
13:28:51 <lob_jonas> in fact, even HTTP headers are text, when the bodies can be any binary content, and you can have a new header after the end of a body for a persistent connection, if either the Content-Length or the Transfer-Encoding tells where the previous body ends.
13:29:06 <lob_jonas> (this applies both for HTTP requests and responses, they're basically the same format)
13:29:17 <lob_jonas> so I don't much find text header formats too strange
13:29:52 -!- imode has quit (Ping timeout: 265 seconds).
13:29:55 <lob_jonas> there are also some binary formats like PNG and sqlite where the magic numbers in the header contain some ascii text, just to make it easier to identify the file type at a glance
13:30:30 <lob_jonas> even bmp and exe and elf are like that, but there the text is only two or three bytes, and for elf it starts at offset 1
13:30:40 <lob_jonas> iirc
13:32:01 <Lykaina> omg, did i actually store live quarantined virii on a hard drive? i must have been really crazy then
13:32:31 <Lykaina> maybe i was just too lazy to clean out the antivirus
13:33:44 -!- xkapastel has joined.
13:38:46 <Lykaina> i have fragmented memories of my past
13:39:01 <esowiki> [[Policy Policy]] M https://esolangs.org/w/index.php?diff=66205&oldid=66202 * A * (+964)
13:40:37 <Lykaina> like i didn't know i ever played Go till i started trying to remember my interactions with Sgeo in college.
13:40:55 <FireFly> heh
13:42:57 <Taneb> I have played go on at least one occasion!
13:43:18 <Lykaina> I met them at the Green Chair Club.
13:43:27 <Taneb> I understand enough of it to know that I am really bad at the game
13:43:43 <Taneb> I'm equally bad at the programming language, probably
13:43:45 <Lykaina> 1000 kyu here too
13:44:12 <Lykaina> i think that means "i suck at the game"
13:44:37 <Taneb> Maybe if we ever run into each other we should have a game
13:44:51 <Lykaina> i don't remember the rules
13:45:00 <Taneb> Then we are equally disadvantaged
13:45:16 <cpressey> Hmm, are there any esolangs based on Go (the board game)?
13:45:28 <Taneb> Not to my knowlege
13:45:37 <ais523> if there are, they were most likely created by zzo38
13:45:39 <Lykaina> what about chess?
13:45:42 <cpressey> istr seeing a paper showing that (infinite) Go is PSPACE-complete
13:46:07 <ais523> yes, that paper is basically an esolang definition in its own right
13:46:26 <ais523> also, PSPACE-completeness would imply generalized, not infinite, wouldn't it?
13:46:48 <ais523> the infinite version is likely to be TC with a plausible definition of how to arrange the initial board and what the win conditions are
13:46:54 <cpressey> Right, I misspoke when I said "infinite". I'm very sorry.
13:47:15 <lob_jonas> I have seen someone else who tried to teach Go to young people to popularize it. does that count?
13:47:33 <ais523> you could make it work by marking some of the stones of each player, and you win by capturing a marked stone
13:48:00 <Lykaina> i think my sanity level got improved after i realized I was misgendered at birth.
13:48:08 <lob_jonas> `? go
13:48:11 <HackEso> Go is a common irregular verbal game programming language invented by the Germanic Taneb tribes catching monsters in the strategic territories of East Asia.
13:48:13 <Taneb> Lykaina: often the way
13:49:40 <lob_jonas> win by capturing a marked stone => there's a variant rule for Risk the board game like that, where every player names a territory as their capital, and if it's continuously not controlled by that player for three turns, then they lose
13:49:59 <lob_jonas> and the capitals are publci
13:50:13 <Lykaina> pubic?
13:50:23 <lob_jonas> public
13:50:27 -!- imode has joined.
13:50:29 <Lykaina> sorry
13:53:19 <Lykaina> you know it costs over $200 to change your name in the state i live in?
13:53:33 <Taneb> That's a whole bunch
13:53:40 <Taneb> In the UK it's free if you know what you're doing
13:54:07 <lob_jonas> Lykaina: is that for an adult to change their name?
13:54:16 <Lykaina> yes
13:55:01 <lob_jonas> could you just get named differently in a different state where that's simpler, then come back with the identifying documents from that state to prove that you've changed your name, to get the change accepted by this state easiliy?
13:56:23 <Lykaina> i use my chosen name so much that i kinda have to change it to it. Hell, i type copyright notices for essolangs with my chosen name, not my deadname.
13:57:14 <ais523> IIRC in the UK the main requirement to have your name legally changed is that you convince sufficiently many people to interact with you using it
13:57:36 -!- user24 has joined.
13:57:48 <Taneb> ais523: there's a thingy with a standard wording that you have to fill in in the presence of witnesses
13:58:14 <ais523> Taneb: yes, that's a fairly easily complied-with requirement though
13:58:27 <Taneb> That's the only requirement
13:58:42 <Taneb> (in England and Wales)
13:58:57 <lob_jonas> ais523: that's the officially recommended way, but isn't it easier everywhere to just get id documents in another country that doesn't insist that you use exactly the same name as on your previous identification documents, and then migrate that name back?
13:58:59 <Lykaina> i will have to publish my name change in the local newspaper
13:59:30 <ais523> I think many newspapers have columns for legal notices, that nobody actually reads
13:59:43 <Lykaina> except my dad...
14:00:43 <lob_jonas> ais523: are these printed newspapers or digital newspapers or both?
14:00:51 <Lykaina> that's ho he found out the neighbors were doing something asshole-ish
14:00:58 <ais523> https://en.wikipedia.org/wiki/Deed_of_change_of_name
14:01:12 <ais523> lob_jonas: at the time the laws were created, it was printed newspapers
14:02:43 <ais523> wow, so apparently if you change your name by deed poll, you don't even need to tell anyone you've changed it; all you need is the deed poll itself, which has to be notarized but doesn't have to be officially registered
14:03:28 <ais523> but there is an official process if you want, e.g., your passport changed
14:03:52 <lob_jonas> well sure, because very few institutions are allowed to issue passports
14:05:11 <lob_jonas> it's mostly some government office for permanent passports, consulates for temporary passports, and a few more for special purpose stuff, but the biggest are government offices that issue thousands of passports so they need procedures and forms
14:13:39 <lob_jonas> apparently Wob_jonas would work to get the same green as b_jonas
14:13:59 <Lykaina> you not same person?
14:14:41 <lob_jonas> I am the same person
14:14:51 <Lykaina> what i thought
14:16:05 <lob_jonas> so would wib_jonas or bb_jonas
14:16:17 -!- ais523 has changed nick to callforjudgement.
14:16:20 -!- callforjudgement has changed nick to ais523.
14:16:22 -!- ais523 has changed nick to callforjudgement.
14:16:35 -!- callforjudgement has changed nick to ais523.
14:17:00 -!- Lykaina has changed nick to SchrodingersCat.
14:17:07 -!- SchrodingersCat has changed nick to Lykaina.
14:19:08 <Lykaina> rather be a she-wolf than a semi-dead cat
14:22:56 <Lykaina> on the internet, nobody knows if you are a werewolf.
14:26:14 <cpressey> On that note, I saw a very nice full moon a few days ago. Close to the horizon, sort of amber in colour.
14:26:39 <Lykaina> howoo!
14:26:52 <ais523> cpressey: and due to a fairly well-known optical illusion, appearing larger than normal?
14:27:59 <lob_jonas> cpressey: that seems possible, because the moon was full two days ago
14:29:20 <Lykaina> cd ..
14:29:23 <Lykaina> oops
14:29:25 <Lykaina> brb
14:29:32 <lob_jonas> ``` cd ..
14:29:33 <HackEso> No output.
14:30:14 <ais523> that's like writing (cd ..) in a shellscript
14:30:25 <ais523> running it in a subshell makes it pretty pointless
14:32:34 <lob_jonas> ais523: sure. except in DOS, or to check that you have permissions to chdir there.
14:33:30 <ais523> now I'm curious about whether there's any circumstance in which cd .. might fail due to a lack of permission
14:34:01 <ais523> obviously it can fail if you're cd'ing to a filename (lack of permission, nonexistent, not a directory, probably other things I haven't thought of)
14:35:33 <lob_jonas> ais523: it sure can change
14:35:35 <ais523> I'm trying to remember what .. is internally; I think it's a hardlink, right?
14:35:36 <lob_jonas> sure can fail
14:35:49 <lob_jonas> no, .. is just handled by the file system code magicallyi
14:36:03 <lob_jonas> it used to be represented by a hardlink on some file systems, but that barely matters now
14:36:29 <lob_jonas> the kernel parses .. to mean the parent directory even if it's not stored as an explicit name in the file system
14:36:31 <ais523> the link count of a directory still reflects .. as though it were a hardlink
14:36:44 <ais523> so I think its hardlinkness is being simulated even though it's obsolete
14:37:10 <ais523> anyway, I read through the possible failure modes of chdir(1) and none of them seem to apply to a chdir to .. apart from possibly ENOMEM and EIO
14:37:41 <lob_jonas> hmm
14:38:15 <lob_jonas> ais523: that too is only on most filesystems; on some filesystems the link count of directories doesn't show anything useful
14:38:39 <lob_jonas> hmm
14:38:55 <Lykaina> back
14:39:20 <lob_jonas> maybe cd .. rarely fails to permissions because you can't read the .. directory entry if you don't have effective execute permissio to the parent directory?
14:39:26 <lob_jonas> I don't know
14:39:45 <Lykaina> cd .. would fail on the root dir, right?
14:39:54 <lob_jonas> Lykaina: not on unix, no
14:40:08 <lob_jonas> on unix, /.. is just the same as /
14:41:11 <ais523> OK, I managed to make cd .. fail to permissions
14:41:22 <ais523> by chmodding the .. in question to 000
14:41:36 <Lykaina> why?
14:42:05 <ais523> oddly, I could chmod it back without issues
14:42:10 <ais523> even by naming it as ..
14:43:10 <ais523> oh wow, I can chmod .. if I have write+search permission to the current directory, even if I have neither permission to either .. or ../..
14:43:11 <ais523> that feels like a bug
14:43:31 <ais523> and may be part of the reason why hardlinking directories is banned
14:46:13 <lob_jonas> ais523: chmod by using its absolute pass. you can't look up .. because you don't have search permissions for .. so you can't check if . exists and .. should fail if . doesn't exist
14:46:19 <lob_jonas> s/pass/path/
14:46:57 <ais523> lob_jonas: the situation is that I'm currently in directory /a/b/c/, I have no permissions to a or b (because I removed them while chdir'd into c) but I do have permissions to c
14:47:23 <ais523> I can chmod b by naming it as ".." even though I can't chmod it by naming it with its name
14:47:54 <lob_jonas> ais523: that makes sense
14:48:20 <ais523> why? I just changed the metadata of a directory I have no permissions to, with no permissions to its parent directory either
14:48:21 <lob_jonas> the permissions to c won't be re-checked if you access it through cd or a file handle, so what I said above makes no sense
14:48:36 <lob_jonas> also don't forget that the shell does some magic for cd
14:48:38 <lob_jonas> ``` help cd
14:48:40 <HackEso> cd: cd [-L|[-P [-e]] [-@]] [dir] \ Change the shell working directory. \ \ Change the current directory to DIR. The default DIR is the value of the \ HOME shell variable. \ \ The variable CDPATH defines the search path for the directory containing \ DIR. Alternative directory names in CDPATH are separated by a colon (:). \ A null directory name is the same as the current directory. If DIR begins \ with a slash (/),
14:48:41 <ais523> it's not the permissions to c that matter, it's the permissions to b
14:48:45 <lob_jonas> which involves interpreting .. specially
14:48:55 <ais523> and although magic is involved in cd, this is not a cd command, it's a chmod command
14:49:11 <lob_jonas> so that if you cd to a symlink, .. goes back to where the symlink were, because the shell pretends that that's how it works, even if that's not the kernel's idea
14:49:54 <ais523> if I have no permission to . either, then I can't chmod either . or ..
14:50:36 <lob_jonas> ``` help cd | tail -n+16
14:50:38 <HackEso> ​ Options: \ -Lforce symbolic links to be followed: resolve symbolic \ links in DIR after processing instances of `..' \ -Puse the physical directory structure without following \ symbolic links: resolve symbolic links in DIR before \ processing instances of `..' \ -eif the -P option is supplied, and the current working \ directory cannot be determined successfully, exit with \ a non-zero status \
14:50:39 <lob_jonas> try cd -P
14:50:50 <ais523> but my problem is with the apparent situation that .. is treated as being contained in the current directory and thus I can edit its metadata if I have write permission to the current directory
14:51:04 <ais523> lob_jonas: this is nothing to do with cd
14:51:14 <ais523> cd doesn't change into directories where you're missing search permission
14:51:25 <ais523> the situation can arise without using cd at all
14:51:49 <ais523> (other than the fact that your current directory needs to somehow be a few directories away from the root)
14:52:19 <ais523> the issue is that chmod, and presumably other metadata-changing commands, are allowed on .. as long as you have write permission to the current directory, even if you don't have write permission to it or its parent directory
14:53:43 <lob_jonas> ais523: hmm
14:53:55 <lob_jonas> ais523: but isn't that because you own .. ?
14:54:27 <ais523> let me set up a test for this
14:55:37 <lob_jonas> ais523: http://man7.org/linux/man-pages/man2/chmod.2.html suggests that to be able to chmod a file, when the set?id bits are not involved, what you need is to either own the file or be root
14:55:48 <lob_jonas> in this case, you own the directory, so that permission check succeeds
14:55:57 <ais523> OK, chmod is specified to allow chmodding if a) you own the file, and b) you have +x permission to all components in the path you use other than the last
14:56:16 <ais523> so the weirdness in this case is that I can specify the directory's name despite it being in a -x directory
14:56:20 <lob_jonas> yes, the latter is needed for the path lookup to succeed
14:57:02 <ais523> the permission is related to the lookup, rather than the directory itself, so if I'm already inside the directory I don't need the lookup and chmod lets me change the directory permissions because I own it
14:57:21 <lob_jonas> I started to do some tests on hackeso, but the way it runs my commands twice complicates that
14:59:17 <lob_jonas> ais523: yes, and if you have a deep hierarchy of directories, you can traverse them with either pwd or file descriptors pointing to the directories and *at functions, and the kernel doesn't need to do any checks on the whole deep path from the root to your file
14:59:48 <lob_jonas> just like how read/write doesn't try to do permission checks once you have a file open
14:59:53 <ais523> the *at API works so much better than the cwd API
15:00:09 <ais523> and the "let's just use absolute paths everywhere" API, which is massively subject to race conditions
15:00:51 <ais523> I'm glad that WASM decided to use the *at API as the only filesystem API (this is both for allowing the program to secure itself against races, and for allowing the surrounding environment to secure itself against the program)
15:01:27 <lob_jonas> ais523: isn't that because pwd doesn't work well with multithreading, and people want multithreaded programs with WASM in a threaD?
15:01:41 <ais523> pwd is basically a global variable API
15:02:00 <ais523> those always seem to turn out to be a bad idea in retrospect (often when written, too!)
15:02:35 <lob_jonas> yes, it's sort of like an implicit file descriptor that you usually can't access as a normal file descriptor, except in specific *at calls
15:04:03 <lob_jonas> you can even go between the two, open(".",O_PATH,0) to get a file descriptor from the pwd, fchdir to get the pwd from a file descriptor
15:06:37 <lob_jonas> `olist 1180
15:06:39 <HackEso> olist 1180: shachaf oerjan Sgeo FireFly boily nortti b_jonas
15:07:10 <int-e> `? password
15:07:13 <HackEso> The password of the month is ninjaed.
15:07:34 <Lykaina> `open the pod bay door
15:07:35 <HackEso> ​/srv/hackeso-code/multibot_cmds/lib/limits: line 5: exec: open: not found
15:07:59 <lob_jonas> the o comic is on a separate server, you can access the published strips without the password. in fact, we ring the o-bell when one of the strips becomes accessible without a password.
15:08:06 <int-e> Lykaina: I'm afraid I can't let you do that, [single-syllable version of Lykaina].
15:08:07 <lob_jonas> `whatis open
15:08:12 <HackEso> open(2) - open and possibly create a file \ open(3p) - open file relative to directory file descriptor \ open(3glibc) - Opening and Closing Files
15:09:50 <Lykaina> int-e: Lyka, but it's two syllables
15:12:32 <Lykaina> Lyka = lee-kah
15:12:54 <Lykaina> Lykaina = Lee-keh-nah
15:14:41 <Lykaina> at least, that's how i pronounce them
15:40:24 <kmc> it's an interesting name :)
15:45:58 -!- ais523 has quit (Quit: quit).
15:52:37 -!- cpressey has quit (Quit: A la prochaine.).
15:53:10 -!- xkapastel has quit (Quit: Connection closed for inactivity).
16:02:14 <arseniiv> hi all have a nice day or night
16:02:25 <Taneb> Do we get to choose?
16:02:57 <arseniiv> no it’s ⅋
16:04:37 -!- tromp has quit (Read error: Connection reset by peer).
16:04:47 <Taneb> Aww :(
16:04:56 <Taneb> Can we refuse to have a day or night at all?
16:05:02 -!- tromp has joined.
16:05:51 <arseniiv> Taneb: no; though there is a speciall offer for the first to use it to replace their copy of ⅋ with ⊕
16:06:15 -!- lob_jonas has quit (Remote host closed the connection).
16:06:22 <Taneb> I decline
16:06:35 <arseniiv> also I didn’t know linear logic jokes are that fun
16:12:23 <Lykaina> gtg
16:12:48 -!- Lykaina has quit (Quit: leaving).
16:14:08 <kmc> hello arseniiv
16:14:39 <arseniiv> kmcello!
16:17:10 <arseniiv> also I have a stupid question. I see several people and bots have something like “unaffiliated” in theirs /WHOIS info (that “is connecting from” part of output). I don’t know the proper terminology so I don’t even know what to google to know if I can change that thing myself
16:17:47 <Taneb> I think that's called a cloak
16:18:25 <fizzie> Yes: https://freenode.net/kb/answer/cloaks
16:19:02 <arseniiv> Taneb: fizzie: oh, thank you!
16:19:26 <fizzie> fungot: Do you think we should apply for an "unaffiliated/fizzie/bot/fungot" cloak for you?
16:19:26 <fungot> fizzie: who uses it apart from graphics primitives. if built correctly it actually takes less typing for bigger stuff. :) hehe... to task switch, it just the hw you're intrested in motorola fnord :)
16:19:41 <fizzie> I can't tell if that's yes or no.
16:19:49 <Taneb> I think it's a no
16:19:58 <Taneb> Who uses cloaks, apart from graphics primitives?
16:20:03 <fizzie> At least it wasn't a very enthusiastic yes.
16:20:21 <kmc> wizards? or is that more of a robe than a cloak
16:20:30 <fizzie> fungot: We will respect your right to self-determination and not do that, then.
16:20:30 <fungot> fizzie: what unholy magic is this :o fnord hours left
16:21:03 <fizzie> I've heard assassins and spies have both a cloak and a dagger.
16:21:31 <Taneb> I think these days those are more ceremonial, awarded at the graduation ceremony
16:21:31 <arseniiv> hm are there cloak categories
16:23:50 <arseniiv> . o O ( on a graduation ceremony, a party of people threw their ceremonial daggers skywards. What is the probability of each dagger striking the wrong person )
16:24:08 <arseniiv> I mean, landing on
16:24:28 <arseniiv> striking is a striking typo
16:25:19 <int-e> needs more information
16:26:07 <Taneb> 1/n I think, assuming all the unreasonable assumptions I am making
16:30:01 <int-e> arseniiv: Is there a God? Will there be a God after They've been struck by n knives? Are they a person, and if so, are they right or wrong?
16:30:41 <int-e> But I'm thinking about this too realistically, I think... in which case most knives will land between people rather than on them.
16:31:07 <int-e> And at least one person will die in a freak accident unrelated to the knives.
16:32:30 <int-e> Taneb: Making some unreasonable assumptions myself I get (1-1/n)^n ~ 1/e, or 1/0! - 1/1! + 1/2! - + ... +/- 1/n! ~= 1/e.
16:33:27 <int-e> 1/n would be the probability of getting a permutation with a single cycle of length n, but there are many more derangements than that.
16:34:59 -!- Lord_of_Life has quit (Ping timeout: 265 seconds).
16:37:53 -!- Lord_of_Life has joined.
16:41:48 <arseniiv> int-e: hmmm
16:42:09 <arseniiv> I think they is a personal pronoun, not a person
16:42:16 <arseniiv> (I’ll show myself out)
16:43:36 <arseniiv> ah now I understand why are there God-related questions
16:44:25 <arseniiv> let’s assume They are insubstantial if existent so can’t be striken by anything but cosmic grief
16:45:04 <arseniiv> <int-e> But I'm thinking about this too realistically, I think... in which case most knives will land between people rather than on them. => even if people are packed tight?
16:45:41 <arseniiv> (if considering asymptotic behavior, this should be the case)
16:46:31 -!- FreeFull has joined.
16:46:39 <arseniiv> ≈ 1/e is the classic and right answer in the limit, yes
16:47:11 <kmc> 1/e is the answer to everpthing
16:47:37 <arseniiv> (this is a classic problem with many names and formulations so I made my own)
16:47:45 <arseniiv> kmc: not e?
16:47:57 <kmc> it depends whether the answer should be less than or greater than one
16:48:10 <arseniiv> (and what about 42, certainly 42 ≠ e)
16:48:13 <arseniiv> kmc: ah!
16:49:24 <int-e> e makes a lousy probability
16:49:46 <fizzie> arseniiv: Presumably 42 = e in base 1/4(e-2).
16:50:34 <arseniiv> one cen find e positive enswer to enything with eny nonzero precision by summing powers of e
16:50:43 <int-e> But of course -80538738812075974^3 + 80435758145817515^3 + 12602123297335631^3 isn't a good probability either.
16:51:08 <arseniiv> ah I heard that!
16:53:15 <arseniiv> > Note that cloaks are a privilege, and staff have the right to deny that privilege to users if they deem necessary.
16:53:17 <lambdabot> <hint>:1:33: error: parse error on input ‘,’
16:53:20 <arseniiv> hmmm
16:53:27 <arseniiv> oh sorry lambdabot
16:53:32 <arseniiv> @botsnack
16:53:32 <lambdabot> :)
16:53:46 <int-e> @lambdabot is used to abuse.
16:53:46 <lambdabot> Unknown command, try @list
17:02:43 <arseniiv> I’m bit afraid to write them. Now I don’t know if it’s feasible
17:35:43 -!- b_jonas has joined.
17:36:21 <b_jonas> guess what. I just got dead-tree spam about scientology. this may be a first, but of course I'm not really sure because I don't read or forget spam really quickly.
17:36:55 <b_jonas> they even succeeded to make it look different enough from normal spam that I payed attention for enough time to read that it's about scientology
17:37:49 <kmc> wow
17:37:56 <kmc> there is a scientology office just up the street from me
17:38:06 <kmc> and I see them in public areas (subway stations and plazas) pretty offten
17:38:24 <kmc> though I see the Jehova's Witnesses more
17:38:45 <b_jonas> I do know they have some presence here, but I don't follow the details
17:38:47 <kmc> also on Sundays there will be a guy down in the hispanic neighborhood wearing a suit yelling into a megaphone about Jesus in spanish
17:43:24 <b_jonas> there are a lot of religious evangelist groups on the street here, both polite ones and annoying ones
17:44:15 <b_jonas> there's a big group of polite ones who stand in underpasses with some booklets, they never bother anyone and don't try to talk to people on their own initiative, their signs are attention-catching enough
17:45:40 <b_jonas> there's a really annoying group shouting and singing about how Jesus is the only way to salvation every Wednesday evening when I return from the swimming pool, they're standing in such a huge circle in the Barross tér underpass that you can't avoid them if you have to go from the Thököly side to the Kerepesi side, you have to pass between them twice as you intersect the circle twice
17:45:46 <b_jonas> they're very loud too
17:46:50 <b_jonas> such a big circle is quite a feat, because that underpass is huge and partly open, and the circle is sparse enough that they're clearly doing it deliberately
17:47:29 <b_jonas> no Spanish ones of course, but I have met a polite guy in the Blaha underpass many years ago who was explaining to me about the grace of God in English
17:54:45 -!- Phantom_Hoover has joined.
18:48:55 -!- user24 has quit (Remote host closed the connection).
18:49:16 -!- user24 has joined.
18:51:47 -!- user24_ has joined.
18:54:39 -!- user24 has quit (Ping timeout: 264 seconds).
19:22:07 -!- Sgeo has quit (Ping timeout: 245 seconds).
19:38:45 -!- user24_ has quit (Quit: Leaving).
19:43:39 <b_jonas> argh!
19:43:59 <b_jonas> ``` date "+%^08%"
19:44:01 <HackEso> 0000000%
19:44:26 <b_jonas> gnu libc's strftime accepts width and modifiers to the %% format specifier
19:45:21 <b_jonas> I want to find the start of format specifiers in a strftime format. I thought at first it would be as easy as finding all percent signs that are preceded by exactly an event number of percent signs. no. you have to parse the modifiers in full.
19:46:10 <b_jonas> ``` date "+(%08i)" # it even accepts width for invalid format specifiers, seriously
19:46:13 <HackEso> ​(0000%08i)
19:46:41 <b_jonas> "%i" would be passed through, but "%08i" pads "%08i" to 8 wide with zeroes
19:46:51 <b_jonas> ``` date "+%^i"
19:46:53 <HackEso> ​%^I
19:47:04 <b_jonas> ^ that one uppercases the passed through invalid sequence
19:50:31 <zzo38> It seem to me that it would be sensible for invalid format specifiers to be an error. Width and modifiers for %% format specifier look like OK, though, even though it seems strange and not so useful, it still makes sense that it will work.
19:51:53 <b_jonas> zzo38: what kind of error?
19:52:39 <b_jonas> note that it makes sense for strftime to allow untrusted format strings as input, so that eg. a web form can let the user type any locale name and format string that they want to see timestamps formatted in
19:52:57 <zzo38> I don't know what kind of error.
19:53:16 <b_jonas> it would make sense to not apply the modifiers to the passed through invalid format escapes I think
19:53:28 <b_jonas> and to consider double percent with anything between invalid
19:53:50 <b_jonas> hmm no, even then it wouldn't be so simple
19:54:58 <b_jonas> ideally make the double precent invalid, but in a way where the second percent string starts a new format specifier, so even "%0%B" is turned to "%0" followed by the month name
19:57:22 <b_jonas> I guess I'll just make a half-solution that works on sane format strings, and gives garbage but doesn't segfault on general format strings
19:59:41 <zzo38> Maybe it should return 0 if an invalid format specifier is included, because that is what the man page says it otherwise does in case of an error. (But, it can also return 0 if it is empty. Still, it shouldn't be a problem, since it is easy to see if it is empty, and it is unlikely that you want %p by itself anyways; if you do, then you probably don't care why it is zero.)
20:02:00 <b_jonas> ``` date "+(%:z)(%8:z)(%:8z)" # oh, that's even funnier
20:02:06 <HackEso> ​(+00:00)(+0000:00)(%:8z)
20:02:19 <zzo38> (If it is entered by a user and the program wants to check for an error but does not check that it is empty, then, depending on the application, the user might put in a space, or a Unicode zero width space (on a web form), etc)
20:02:23 <b_jonas> "in case of an error"? what error? strftime can't give an error, can it?
20:03:17 <zzo38> I suppose one error might be that it is too long and won't fit in the provided buffer; maybe there are other errors too I don't know
20:04:46 <b_jonas> hmm, you'er right, it returns 0 if the string is too long for the buffer
20:05:17 <zzo38> I suppose %5Y is good for the Long Now Foundation
20:07:34 <b_jonas> I'll just parse by assuming each format escape is valid, in which case I can match them by /(%[-#0-9:EO^_]*[^-#0-9:EO^_])/
20:07:51 <b_jonas> no, actually
20:08:07 <b_jonas> make that /(%[-#0-9:EO^_]*[^-#0-9:EO^_]?)/ so it matches truncated ones at the end
20:12:06 <b_jonas> I should check what gnu coreutils date does, because it does add _one_ new format to strftime's repertoire, %N, which doesn't make sense for strftime
21:29:09 <b_jonas> (LC_ALL=hu_HU.utf8 date -d "2019-10-05" "+%^B") prints "OKTóBER" with a lower case ó on my machine where that locale is installed. I think that's a bug.
21:29:31 <b_jonas> not that I trust the date formats of the hu_HU.utf8 locale anyway
21:29:37 <b_jonas> but still
21:29:52 <b_jonas> ``` locale -a # can't test it on HackEso, locales aren't installed
21:29:54 <HackEso> C \ C.UTF-8 \ POSIX \ en_GB.utf8 \ en_NZ.utf8 \ en_US.utf8
21:30:45 <b_jonas> there's a C.UTF-8 locale? that's nice
21:32:57 <fizzie> b_jonas: (LC_ALL=fi_FI.utf8 date -d "2019-06-05" "+%^B") prints "KESäKUU" with a lowercase ä on my machine, which is likely the same bug.
21:33:13 <b_jonas> fizzie: good to know
21:33:21 <b_jonas> fizzie: that's on linux, right?
21:33:40 <fizzie> Yes, on a conventional glibc Debian system.
21:34:33 <fizzie> Also, "kesäkuu" translates literally to "summer month", which is I guess evidence that whoever named the Finnish months wasn't too creative.
21:34:44 -!- hppavilion[1] has joined.
21:34:44 -!- hppavilion[2] has joined.
21:34:59 <fizzie> Also syyskuu (September) translates to "autumn month".
21:35:08 <fizzie> For some reason there's no "spring month" or "winter month" though.
21:35:31 <b_jonas> Hungarian has at least two series of alternate month names, one where all of them are named of the four seasons, and one where they're named of saints
21:35:48 <b_jonas> besides the normal latin-based month names
21:35:55 <b_jonas> and roman numerals
21:36:02 <b_jonas> I still say we should just use %m to name the months
21:36:10 -!- hppavilion[2] has quit (Client Quit).
21:36:45 <b_jonas> and %Y-%m-%d for dates
21:37:28 <fizzie> The Finnish %b abbreviations are up to 6 letters, which I'm sure causes some formatting problems somewhere.
21:37:31 -!- andrewtheircer has joined.
21:37:58 <b_jonas> fizzie: like buffer overflows on particular dates, depending on the phase of the moon?
21:38:10 <andrewtheircer> hi
21:38:11 <fizzie> In fact, "%B" is always the same as "%bkuu".
21:38:32 <fizzie> ("kuu" being the Moon.)
21:39:05 <b_jonas> you know, tests misteriously failing on saturdays between 10 september and 31 september on full moon if the wind speed is over 100 km/h
21:40:12 <fizzie> I once submitted some code at work that got automagically blamed as a build-breaking change because it was the first change submitted after the time when a time-based unit test stopped working.
21:40:34 <int-e> Hmm, is "misterious" a foggy version of "mysterious"?
21:40:54 <b_jonas> oh wow
21:41:12 <b_jonas> https://hu.wikipedia.org/wiki/H%C3%B3nap#Magyar_h%C3%B3napnevek lists _four_ series of alternate months names
21:41:24 <b_jonas> many of those names don't even make sense
21:42:00 <b_jonas> but it sayss that columns 5 and 6 don't count, so only three series
21:42:26 <b_jonas> one with the saints, one with the seasons, and a weird one
21:43:07 <fizzie> That's a lot more month names than we've got.
21:48:36 -!- andrewtheircer has quit (Remote host closed the connection).
21:48:56 <b_jonas> I barely know the normal latin-based month names anyway. I always keep forgetting which names are for month 08, 09, and 10.
21:50:07 <b_jonas> calendars are supposed to track this, but half of them don't show both the month number and month name together
21:52:06 <b_jonas> ``` for m in 08 09 10; do date "+%m %B" -d "2019-$m"; done
21:52:10 <HackEso> date: invalid date '2019-08' \ date: invalid date '2019-09' \ date: invalid date '2019-10'
21:52:15 <b_jonas> stupid
21:52:19 <b_jonas> ``` for m in 08 09 10; do date "+%m %B" -d "2019-$m-01"; done
21:52:21 <HackEso> 08 August \ 09 September \ 10 October
22:02:53 <imode> what language is that.
22:03:24 <b_jonas> `locale
22:03:26 <HackEso> LANG=en_NZ.UTF-8 \ LANGUAGE= \ LC_CTYPE="en_NZ.UTF-8" \ LC_NUMERIC="en_NZ.UTF-8" \ LC_TIME="en_NZ.UTF-8" \ LC_COLLATE="en_NZ.UTF-8" \ LC_MONETARY="en_NZ.UTF-8" \ LC_MESSAGES="en_NZ.UTF-8" \ LC_PAPER="en_NZ.UTF-8" \ LC_NAME="en_NZ.UTF-8" \ LC_ADDRESS="en_NZ.UTF-8" \ LC_TELEPHONE="en_NZ.UTF-8" \ LC_MEASUREMENT="en_NZ.UTF-8" \ LC_IDENTIFICATION="en_NZ.UTF-8" \ LC_ALL=
22:03:27 <b_jonas> ``` locale
22:03:29 <HackEso> LANG=C \ LANGUAGE= \ LC_CTYPE="C" \ LC_NUMERIC="C" \ LC_TIME="C" \ LC_COLLATE="C" \ LC_MONETARY="C" \ LC_MESSAGES="C" \ LC_PAPER="C" \ LC_NAME="C" \ LC_ADDRESS="C" \ LC_TELEPHONE="C" \ LC_MEASUREMENT="C" \ LC_IDENTIFICATION="C" \ LC_ALL=
22:03:36 <b_jonas> imode: C
22:03:45 <imode> wat.
22:03:56 <b_jonas> `` locale
22:03:58 <HackEso> LANG=en_NZ.UTF-8 \ LANGUAGE= \ LC_CTYPE="en_NZ.UTF-8" \ LC_NUMERIC="en_NZ.UTF-8" \ LC_TIME="en_NZ.UTF-8" \ LC_COLLATE="en_NZ.UTF-8" \ LC_MONETARY="en_NZ.UTF-8" \ LC_MESSAGES="en_NZ.UTF-8" \ LC_PAPER="en_NZ.UTF-8" \ LC_NAME="en_NZ.UTF-8" \ LC_ADDRESS="en_NZ.UTF-8" \ LC_TELEPHONE="en_NZ.UTF-8" \ LC_MEASUREMENT="en_NZ.UTF-8" \ LC_IDENTIFICATION="en_NZ.UTF-8" \ LC_ALL=
22:04:12 <b_jonas> two backticks gives New Zealand english locale, three backticks gives C locale
22:04:23 <imode> no no no I mean the `for m in 08 09 10; do date "+%m %B" -d "2019-$m-01"; done`
22:04:30 <imode> is that just bash?
22:04:32 <b_jonas> ``` locale; for m in 08 09 10; do date "+%m %B" -d "2019-$m-01"; done
22:04:34 <HackEso> LANG=C \ LANGUAGE= \ LC_CTYPE="C" \ LC_NUMERIC="C" \ LC_TIME="C" \ LC_COLLATE="C" \ LC_MONETARY="C" \ LC_MESSAGES="C" \ LC_PAPER="C" \ LC_NAME="C" \ LC_ADDRESS="C" \ LC_TELEPHONE="C" \ LC_MEASUREMENT="C" \ LC_IDENTIFICATION="C" \ LC_ALL= \ 08 August \ 09 September \ 10 October
22:04:35 <b_jonas> yes, it's bash
22:04:37 <imode> err, shellscrip- yup, that is.
22:05:05 <b_jonas> ``` echo $BASH $BASH_VERSION
22:05:08 <HackEso> ​/bin/bash 4.4.12(1)-release
22:11:38 -!- Sgeo has joined.
22:28:50 -!- Sgeo_ has joined.
22:29:15 <zzo38> Skill Bite {XUR} Instant ;; Target creature you control deals X damage to another target creature; X can't be more than the first creature's power. If any damage is dealt in tihs way, the first creature gains copies of all of the second creature's activated abilities until end of turn. ;; Cycling {3} ;; Flashback {X2UR}
22:30:10 <zzo38> South Sunrise {2W} Instant ;; Skip the next main phase.
22:31:38 -!- Sgeo has quit (Ping timeout: 240 seconds).
22:31:47 <zzo38> Now you can write your comment/complaint of this please.
22:31:55 <b_jonas> zzo38: that latter is sort of like a Silence, right?
22:32:43 <zzo38> Maybe a little bit, but it is different.
22:33:01 -!- rickbutton has quit (Quit: ZNC 1.7.2+deb1+bionic0 - https://znc.in).
22:33:14 -!- rickbutton has joined.
22:34:18 <zzo38> O, now I thought of what feature should be adding in TeXnicard, which is, something to help with the collaboration, maybe.
22:35:36 <b_jonas> zzo38: I'm not sure that first one works. what happens if you choose a too high value of X? you choose X before the targets. it should be phrased to restrict the first target I think.
22:36:02 -!- Sgeo_ has quit (Ping timeout: 265 seconds).
22:36:06 <zzo38> Of course it does restrict the valid targets, even though the wording is like that.
22:36:19 <b_jonas> as for the cannibal abaility, that's ... weird, but might work, I dunno
22:36:40 <b_jonas> s/abai/abi/
22:37:31 <b_jonas> it's especially funny when the damage is redirected
22:39:21 <b_jonas> or when it steals loyalty abilities, and yes, I know that happens with other quicksilver abilities too
22:51:38 -!- cocof has joined.
22:51:50 <cocof> can I ask a php related question?
22:52:06 <cocof> my nick registration is pending
22:53:59 -!- tromp_ has joined.
22:56:52 <zzo38> I suppose you can try
22:57:20 -!- tromp has quit (Ping timeout: 246 seconds).
23:02:43 <b_jonas> ? php
23:02:49 <b_jonas> `? php
23:02:52 <HackEso> php is the PigeonHole Principle
23:03:11 -!- Phantom_Hoover has quit (Quit: Leaving).
23:03:37 -!- cocof has quit (Remote host closed the connection).
23:13:50 -!- rickbutton has quit (Quit: ZNC 1.7.2+deb1+bionic0 - https://znc.in).
23:26:19 -!- Sgeo has joined.
23:32:07 -!- b_jonas has quit (Quit: leaving).
23:40:16 -!- Lykaina has joined.
23:41:36 <Lykaina> hi
23:57:11 <Lykaina> bye... (feeling too sick to stay connected)
23:57:24 -!- Lykaina has quit (Quit: leaving).
2019-09-17
00:10:35 <moony> Anyone here messed with WebAssembly much?
00:11:18 <moony> I'm trying to figure out a clean way for WASM to generate and load WASM, and then load references to the generated functions/tables/data so that it can be used.
00:12:24 <moony> This is for a embedded impl of WASM, not the kind you'd see in a browser
00:12:40 <moony> so spec changes are possible
00:13:14 -!- arseniiv has quit (Ping timeout: 240 seconds).
00:18:37 <shachaf> Why does amd64 have both "Move imm32 to r32." and "Move imm32 to r/m32."?
00:18:56 <shachaf> I should probably look up the 32-bit encodings.
00:19:23 <shachaf> https://c9x.me/x86/html/file_module_x86_id_176.html has it too.
00:19:54 -!- FreeFull has quit.
00:20:20 <shachaf> I guess it's one byte shorter for the imm32-to-r32 case?
00:27:38 <fizzie> I've been assuming they've dedicated 8 one-byte opcodes for "MOV r32, imm32" because it's so common.
00:27:56 <fizzie> (And 8 more for "MOV r8, imm8".)
00:28:17 <shachaf> Right.
00:31:14 <shachaf> `asm .byte 0x64; lea (%rax), %rax
00:31:17 <HackEso> 0: 64 48 8d 00 lea %fs:(%rax),%rax
00:32:29 <moony> =rasm2 mov eax, 0x7f7f7f7f
00:32:34 <moony> =ping
00:32:39 -!- asdfbot has joined.
00:32:42 <moony> =rasm2 mov eax, 0x7f7f7f7f
00:32:44 <asdfbot> b87f7f7f7f
00:32:52 <moony> =rasm2 mov [ecx], 0x7f7f7f7f
00:32:52 <asdfbot> c7017f7f7f7f
00:33:00 <moony> shachaf: ^ 1 byte shorter, so yes
00:33:16 <moony> =rasm2 mov [eax], 0x7f7f7f7f
00:33:16 <asdfbot> c7007f7f7f7f
00:34:03 <shachaf> Yes, I know.
00:34:47 <moony> sorry, assumed you were unsure due to saying `i guess`
00:35:06 <shachaf> Fair enough.
00:36:27 <shachaf> I like the way VEX flips some of the REX bits so that the 32-bit encoding happens to turn into an invalid register r/m operand.
00:40:50 <shachaf> `asm .byte 0xa1
00:40:52 <HackEso> 0: a1 .byte 0xa1
00:40:54 <shachaf> How is this used?
00:41:07 <moony> oo. uh let's see
00:41:14 <moony> `cat bin/asm
00:41:16 <HackEso> ​#!/bin/sh \ echo "$1" > /tmp/asm.s; for o in ',' '-msyntax=intel -mnaked-reg,-M intel'; do if as ${o%,*} /tmp/asm.s -o /tmp/asm.o 2>>/tmp/asm.err; then objdump ${o#*,} -d --insn-width=20 /tmp/asm.o | sed -e "1,/0000000000000000/d" | perl -pe 'if (/^\s*(\w+:)\s*((?:\w\w )+)\s*(\S.*)$/) { ($a,$b,$c) = ($1,$2,$3); $_ = "$a $b ".($c =~ s/\s+/ /rg)."\n"; }'; exit; fi; done; cat /tmp/asm.err
00:41:29 <shachaf> Reference: https://www.felixcloutier.com/x86/mov
00:41:36 <shachaf> MOV EAX,moffs32
00:42:39 <moony> ..what assembler is being used? I can't tell
00:42:50 <shachaf> It's using GNU as.
00:42:58 <moony> ah
00:42:59 <shachaf> It tries both Intel and AT&T syntax.
01:15:55 <shachaf> `` echo '__thread long x; long foo(void) { return x; }' > /tmp/test.c && gcc -shared -fPIC -O2 -shared /tmp/test.c -o /tmp/test.so && objdump -d /tmp/test.so | grep -A5 'foo'
01:15:58 <HackEso> 0000000000000740 <foo>: \ 740:48 83 ec 08 sub $0x8,%rsp \ 744:66 48 8d 3d 84 08 20 data16 lea 0x200884(%rip),%rdi # 200fd0 <x@@Base+0x200fd0> \ 74b:00 \ 74c:66 66 48 e8 cc fe ff data16 data16 callq 620 <__tls_get_addr@plt> \ 753:ff
01:16:14 <shachaf> What's all this? What are those data16s doing?
01:16:52 <shachaf> Oh, wait, I just needed -fPIC to get this behavior, not -shared.
01:17:57 <shachaf> Is this just some kind of padding?
01:24:30 <fizzie> Or space for patching something? (Don't know, just a guess.)
01:25:06 <shachaf> I also don't quite get bwhy it needs a call.
01:26:14 <fizzie> There was a time when GCC defaulted to using "rep ret" when it needed to emit a return instruction that was also the target of a branch, because of a branch predictor bug on AMD processors.
01:26:54 <fizzie> Presumably faster than "nop; ret".
01:26:57 <shachaf> `1 echo '__thread long x; long foo(void) { return x; }' > /tmp/test.c && gcc -shared -fPIC -O2 /tmp/test.c -S -o /dev/stdout
01:27:00 <HackEso> 1/2:.file"test.c" \ .text \ .p2align 4,,15 \ .globlfoo \ .typefoo, @function \ foo: \ .LFB0: \ .cfi_startproc \ subq$8, %rsp \ .cfi_def_cfa_offset 16 \ .byte0x66 \ leaqx@tlsgd(%rip), %rdi \ .value0x6666 \ rex64 \ call__tls_get_addr@PLT \ movq(%rax), %rax \ addq$8, %rsp \ .cfi_def_cfa_offset 8 \ ret \ .cfi_endproc \ .LFE0: \ .sizefoo, .-foo \ .globlx \ .section.tbss,"awT",@nobits \ .align 8 \ .typex, @object \ .sizex,
01:27:19 <shachaf> Even -S explicitly generates ".value 0x6666".
01:29:08 <fizzie> For the call, I think a bunch of the @PLT stuff involves calls that get patched out on first call, so maybe it's space for that. Don't remember any of the details though.
01:29:46 <esowiki> [[SIG]] https://esolangs.org/w/index.php?diff=66206&oldid=19939 * YamTokTpaFa * (+42)
01:30:06 <shachaf> It's the same deal with -fno-plt
01:30:19 <shachaf> (Good gcc flags I found out about recently. I think I'll compile all my program with -fno-plt now.)
01:30:38 <kmc> what's it do
01:31:36 <shachaf> Compiles dynamic linker calls to "callq *offset(%rip)"
01:31:45 <shachaf> Where offset is an offset into the GOT.
01:31:58 <shachaf> It means you can't do lazy loading, but lazy loading doesn't seem great to me anyway.
01:32:02 <kmc> yeah
01:32:15 <kmc> and it means you always have an indirect call
01:32:17 <shachaf> (Actually you probably could do lazy loading if you really wanted to.)
01:32:19 <fizzie> shachaf: Well, maybe TLS involves some of the same kind of shenanigans, it's a TLA as well.
01:32:20 <kmc> rather than a direct call and a direct jump?
01:32:23 <shachaf> But the PLT has an indirect call anyway!
01:32:27 <kmc> does it?
01:32:33 <shachaf> Yes. It has the same call.
01:32:36 <kmc> doesn't it self-modify to remove it
01:32:38 <shachaf> So you get a direct call *and* an indirect call.
01:32:46 <shachaf> Nope, it's scow.
01:33:01 <shachaf> Or... Hmm, does it?
01:33:12 <fizzie> I'm sure it involved self-modification *somewhere*.
01:33:19 <shachaf> OK, I should double-check.
01:33:35 <shachaf> I'm pretty sure the PLT doesn't turn +w at runtime, though.
01:34:14 <fizzie> Maybe it used to self-modify, but then security happened.
01:34:23 <fizzie> Stacks used to be executable too.
01:34:27 <shachaf> But this is the amd64 ABI. It's all different for 86 anyway.
01:34:29 <shachaf> x
01:34:31 <kmc> if you use ld -z now, or whatever
01:34:37 <kmc> then it should do the self modification before main()
01:34:38 <kmc> maybe?
01:34:48 * kmc execute fizzie's stack
01:35:19 <fizzie> fungot: You're all about stacks and stack stacks, right? Are they executable?
01:35:20 <fungot> fizzie: the problematic part is that no annotations are produced/ maintained for expanded syntax form of f, and y
01:36:03 <shachaf> kmc: It doesn't look that way.
01:36:07 <kmc> ok
01:36:14 <shachaf> Even on the second call, even with -z now.
01:36:18 <kmc> fat stacks of cache
01:36:21 <kmc> ok
01:36:23 <kmc> welp
01:36:23 <shachaf> At least based on gdbing it up.
01:36:48 <shachaf> I think it's probably fine and no one should expect dynamically linked calls to be extremely efficient.
01:37:00 <shachaf> Instead, they should stop dynamic linking, and only use it where necessary.
01:37:20 <kmc> God Damn these Bampires
01:38:21 <shachaf> I think this is reasonable, because no one expects Programming Language Theory types to generate efficient code.
01:43:46 -!- Sgeo_ has joined.
01:44:41 <fizzie> If that's definitely never writable, then I don't know what those extra prefix bytes could be for. Something something alignment performance?
01:45:27 <fizzie> Honestly I'd expect that explanation only between functions and branches, not in bytes that are actually executed.
01:45:34 <shachaf> It could be that the linker could want that extra space at link time, in some cases?
01:46:19 <shachaf> But I don't know how that would work.
01:46:26 -!- Sgeo has quit (Ping timeout: 240 seconds).
01:47:56 -!- tromp_ has quit (Remote host closed the connection).
01:48:20 <shachaf> Why is __tls_get_addr a function call, anyway?
01:50:51 <shachaf> `1 echo '__thread long x; long foo(void) { return x; }' > /tmp/test.c && gcc -shared -fPIC -Os /tmp/test.c -S -o /dev/stdout
01:50:53 <HackEso> 1/2:.file"test.c" \ .text \ .globlfoo \ .typefoo, @function \ foo: \ .LFB0: \ .cfi_startproc \ subq$8, %rsp \ .cfi_def_cfa_offset 16 \ .byte0x66 \ leaqx@tlsgd(%rip), %rdi \ .value0x6666 \ rex64 \ call__tls_get_addr@PLT \ movq(%rax), %rax \ popq%rdx \ .cfi_def_cfa_offset 8 \ ret \ .cfi_endproc \ .LFE0: \ .sizefoo, .-foo \ .globlx \ .section.tbss,"awT",@nobits \ .align 8 \ .typex, @object \ .sizex, 8 \ x: \ .zero8 \
01:51:12 <shachaf> It generates that even with -Os so I doubt it's an instruction alignment thing.
02:01:49 <fizzie> https://www.fsfla.org/~lxoliva/writeups/TLS/RFC-TLSDESC-x86.txt might explain it. AFAICT it describes a proposal that looks different, but it also talks about the "existing ABI" which looks like that.
02:03:10 <shachaf> Aha, https://akkadia.org/drepper/tls.pdf
02:03:17 <shachaf> Page 22.
02:04:35 -!- Sgeo_ has quit (Read error: Connection reset by peer).
02:06:00 -!- Sgeo has joined.
02:09:26 <fizzie> Yes, was just reading that.
02:09:52 <shachaf> "The call instruction has to be preceeded by two data16 prefixes and one rex64 prefix to increase the total size of the whole sequence to 16 bytes."
02:10:39 <fizzie> IIRC, Intel specifically says that sort of thing is not allowed.
02:10:50 <shachaf> What sort of thing?
02:11:53 <fizzie> Well, prefix abuse. Or it definitely says that about some classes of that sort of thing, not necessarily all of it.
02:12:03 <moony> fizzie: pretty sure the reason is because old nephelem CPUs would fall to a decoding stall if you mucked with prefixes like that. (Source: using a nephelem CPU right now)
02:13:02 <fizzie> "Other use of the 66H prefix is reserved; such use may cause unpredictable behavior."
02:13:36 <shachaf> Something about the REX prefix specifies that 0x66 is ignored when used with REX, though.
02:16:22 <moony> hmm
02:16:25 <moony> ok
02:16:37 <moony> the code they show may actually play nice on nephalem
02:16:40 <moony> which suprises me
02:17:03 <moony> it's under 6 instrs in 16 bytes, perfect size for the nephalem decoder
02:17:14 <shachaf> Man, this "large code model" where your text segment is bigger than 2GB sounds like a nightmare.
02:17:25 <moony> of course..
02:17:27 <moony> yea
02:17:33 <moony> that code also does trigger the length changing prefix penalty
02:17:33 <shachaf> Presumably you should be banned from using computers if that ever happens.
02:18:05 <moony> presumably twice
02:18:14 <moony> wasting 12 cycles because of the two 66h prefixes
02:18:44 -!- tswett[m] has quit (Read error: Connection reset by peer).
02:19:03 -!- ivzem[m] has quit (Remote host closed the connection).
02:19:12 -!- xylochoron[m] has quit (Read error: Connection reset by peer).
02:19:12 -!- wmww has quit (Read error: Connection reset by peer).
02:19:14 -!- Camto[m] has quit (Remote host closed the connection).
02:19:17 <shachaf> What's the reason for making that sequence 16 bytes?
02:19:17 <fizzie> Yes, there's a bit that says "if a 66H prefix is used with prefix (REX.W = 1), 66H is ignored". Although I think you could reasonably argue that's not meant to say you could put 66H in wherever.
02:19:50 <fizzie> The document was too hard to read, I was thinking it has something to do with those special relocation types under specific circumstances needing that space.
02:19:58 <fizzie> Think I'll sleep instead, though.
02:21:18 <moony> shachaf: seems to be the decoder width for a lot of modern CPUs
02:21:50 <moony> so it helps with some decoding stalls to make it fit
02:24:08 <shachaf> I'm not quite sure why this is a function call at all.
02:24:45 <shachaf> Looking at the implementation in musl, it seems to claim this function uses things that are part of the public ABI?
02:26:26 -!- Camto[m] has joined.
02:47:28 -!- xylochoron[m] has joined.
02:47:28 -!- wmww has joined.
02:47:28 -!- tswett[m] has joined.
02:47:35 -!- ivzem[m] has joined.
02:50:54 -!- tswett[m] has quit (*.net *.split).
02:50:54 -!- Camto[m] has quit (*.net *.split).
02:50:54 -!- Taneb has quit (*.net *.split).
02:50:54 -!- zemhill_________ has quit (*.net *.split).
02:51:12 -!- Camto[m] has joined.
02:56:18 -!- tswett[m] has joined.
02:56:18 -!- Taneb has joined.
02:56:18 -!- zemhill_________ has joined.
02:56:24 -!- tswett[m] has quit (Changing host).
02:56:24 -!- tswett[m] has joined.
03:16:21 -!- tromp has joined.
03:17:36 -!- tromp_ has joined.
03:18:58 -!- tswett[m] has quit (*.net *.split).
03:18:58 -!- Taneb has quit (*.net *.split).
03:18:58 -!- zemhill_________ has quit (*.net *.split).
03:19:16 -!- tswett[m] has joined.
03:21:14 -!- tromp has quit (Ping timeout: 276 seconds).
03:22:32 -!- tromp_ has quit (Ping timeout: 276 seconds).
03:24:19 -!- Taneb has joined.
03:24:19 -!- zemhill_________ has joined.
03:34:48 -!- j-bot has quit (Ping timeout: 244 seconds).
03:38:14 -!- hppavilion[1] has quit (Remote host closed the connection).
03:38:43 -!- hppavilion[1] has joined.
04:05:05 -!- Frater_EST has joined.
04:35:06 -!- Lord_of_Life has quit (Ping timeout: 246 seconds).
04:37:30 -!- Lord_of_Life has joined.
05:28:11 -!- Sgeo_ has joined.
05:30:50 -!- Sgeo has quit (Ping timeout: 240 seconds).
05:31:42 * ski . o O ( Upper and lower case <https://pbs.twimg.com/media/Dbo0pbiWkAErHPD?format=jpg&name=4096x4096> )
05:40:54 <int-e> ski: oh wow
05:43:47 <int-e> (I don't think I've ever questioned the etymology of those phrases.)
05:45:28 <int-e> ski: Now does that mean that shift-o (for example) can produce any of A, B, H or I?
06:32:07 -!- hppavilion[1] has quit (Ping timeout: 268 seconds).
06:36:30 <FireFly> but the etymology of shifting is separate.. :p
06:36:58 <FireFly> well, AFAIK at least
06:45:51 <int-e> FireFly: Yeah different (and more advanced) technology :)
06:46:40 <int-e> But that was easy for me because I did play with a mechanical type writer as a kid.
07:01:14 * FireFly nods
07:10:13 <olsner> since I accidentally read about that a couple of months ago I can smugly pretend I always knew about upper and lower case
07:13:51 <int-e> olsner: please do
07:14:24 <shachaf> hi olsner
07:14:30 <shachaf> long time nolsner
07:14:41 <shachaf> `? olsner
07:14:44 <HackEso> olsner seems to exist at least. He builds all his esolangs in diesel engines. His poetry's alphanumeric.
07:16:19 <int-e> hmm, amend to "alphanumeric, both lower and upper case"
07:16:26 <int-e> or not?
07:18:22 -!- olsner has quit (Ping timeout: 246 seconds).
07:18:39 -!- tromp has joined.
07:28:30 -!- olsner has joined.
08:13:44 -!- imode has quit (Ping timeout: 276 seconds).
08:22:47 -!- imode has joined.
08:28:40 -!- imode has quit (Ping timeout: 268 seconds).
08:41:49 -!- wib_jonas has joined.
08:43:11 <wib_jonas> int-e: I'm getting old. apparently there are now people who haven't played with mechanical typewriters while they were young.
08:43:39 <Taneb> wib_jonas: I didn't get to play with a mechanical typewriter until I was 18
08:45:58 <int-e> wib_jonas: I bet some of them have never even properly dialed a phone number
08:46:16 <wib_jonas> fizzie: it's more complicated than that. the intel docs hides some quite complicated rules for what prefix you can use for what instructions, when it doesn't change the meaning, when it means what the prefix normally means, when it changes to a different instruction, and when the combination is reserved in which case the cpu can either raise an
08:46:16 <wib_jonas> undefined instr exception or ignore the prefix,
08:46:24 <int-e> (and by "some" I mean "most")
08:46:43 <int-e> Or tuned a radio.
08:47:17 <wib_jonas> and they sometimes use reserved ignored combos to add new meanings to the prefixes, like how the rep prefixes can now mean a probably or improbably branch or a transactional memory prefix,
08:47:46 <wib_jonas> and the optimization manuals also say some things about what's slow and fast to decode, and this specifically differs between intel and amd a lot.
08:47:53 <Taneb> Oh wow, this conversation is making me feel young
08:48:33 <wib_jonas> int-e: what? you can still tune radios, you just usually issue the commands digitally via buttons or fake dials that work all digital
08:49:31 <int-e> wib_jonas: it's just not the same without fading, and temperature/moisture sensitive capacitors.
08:49:36 <wib_jonas> dialing a phone number is sort of a better example, but that's also a discriminator for younglings. I have made a phone call from a phone where the only option was to ask the number from an operator, because there was no dial.
08:50:29 <wib_jonas> only a few times during my life, because at home and basically everywhere in town we had dialer phones and automated phone switch stations, so I only had to call through an operator if I wanted a reverse cost call
08:50:47 <int-e> (tbf I really grew up with frequency modulation which did away with most of the fading issues already)
08:51:47 <wib_jonas> int-e: sure, but even on FM we get a lot of artifacts from it being analog, especially noticable if you are in a place with poor reception and the amount of noise changes depending on which direction you're holding the wire of the headphones that function as an antenna
08:54:32 <int-e> But mostly I'm interested in this because of outdated phrases that are still in use as idioms. Dialing a phone number, hanging up on somebody, tuning into a radio station (at least in the form of "tune in again tomorrow")...
08:55:41 <shachaf> Hmm, now I'm not sure what the origin of "tune" is.
08:55:56 <wib_jonas> heck, these days there are even messed up android phones where, after typing your PIN code on a touchscreen, if you touch the # button on the touchscreen, instead of accepting your entry, it erases the last digit from it.
08:56:05 <wib_jonas> I don't understand interfaces
08:56:11 <Taneb> shachaf: adjusting a frequency is called tuning in music as well
08:56:32 <shachaf> Was that the origin?
08:56:33 -!- cpressey has joined.
08:56:38 <Taneb> Variant of "tone"
08:56:42 <shachaf> They're two different kinds of frequencies.
08:56:59 <int-e> You're tuning a resonance circuit to the right frequency.
08:57:37 <Taneb> I think it was used as "adjusting for optimum perfomance" as an extension of the music term
08:57:55 <int-e> Typically using a variable capacitor (which stand out when you take apart an old radio: https://en.wikipedia.org/wiki/Variable_capacitor )
08:59:21 <cpressey> Kids these days tune machine-learning algorithms instead of radios
08:59:24 <int-e> Oh the diagram on that page totally ignores the spiral nature of the blades in the rotor...
09:01:54 <int-e> It almost feels like I grew up in the previous century ;-)
09:03:40 <cpressey> shachaf: I couldn't sleep last night and I wrote a page trying to explain what I was talking about yesterday re semantics.
09:03:47 <cpressey> But I think I can summarize it.
09:03:56 <wib_jonas> I don't know how the radio hardware actually works, I only know it from a user's perspective
09:05:05 <wib_jonas> radios were reliable enough in my childhood that we no longer needed to service them, like replace vacuum tubes and capacitors (they didn't have vacuum tubes anymore), so I didn't have to know the details
09:05:16 <cpressey> OK, maybe I can't summarize it
09:06:01 <int-e> wib_jonas: there was a reason why I wrote "take apart" rather than "repair" ;-)
09:06:27 <shachaf> Semantics?
09:06:32 <cpressey> shachaf: Never mind
09:06:42 <cpressey> shachaf: Good luck on your language.
09:07:05 <shachaf> Uh oh.
09:07:10 <int-e> wib_jonas: There was a mechanical side to this as well of course... tuning knobs were liable to break.
09:07:18 <shachaf> I can't tell whether I said something mega-rude just now.
09:08:37 <cpressey> shachaf: No, you didn't.
09:09:06 <cpressey> I just feel like there's something I'd like to communicate to you, but also feel like Sisyphus
09:09:25 -!- tromp has quit (Remote host closed the connection).
09:09:40 <cpressey> No, not quite Sisyphus.
09:09:46 <cpressey> Getting my metaphors mixed up.
09:09:58 <cpressey> Feels like pushing water uphill, maybe that's it.
09:10:27 <Taneb> I feel like I'm eating a yoghurt
09:10:48 <int-e> Taneb: Are you eating a yoghurt?
09:10:51 <Taneb> int-e: yes
09:10:57 <Taneb> How did you know?
09:10:57 <cpressey> Also, I have to solve a horrible problem with time zones, and it's burning a hold in my head
09:11:04 <int-e> Taneb: Then that seems to be no reason for concern.
09:11:13 <shachaf> I have a horrible problem with time zones.
09:11:18 <Taneb> int-e: thank goodness
09:11:24 <shachaf> The problem is that you're always here when I should be asleep?
09:11:37 <Taneb> cpressey: the thing to remember with time zones, is that there's four simultaneous days in a single rotation of the time cube
09:11:41 <int-e> Taneb: Of course you shouldn't take my word for it. I'm just a stranger on the Internet.
09:12:43 <shachaf> You're just a stranger on the Internet? Says who?
09:12:59 <int-e> A stranger on the Internet. Duh!
09:13:22 <Taneb> int-e: I have met someone in person who claimed to be you
09:13:46 <int-e> Taneb: Heh, that did happen.
09:14:14 -!- tromp has joined.
09:15:17 <shachaf> I didn't know int-e had so many impostors.
09:15:37 <int-e> shachaf: Oh did you meet one of those?
09:15:47 <wib_jonas> cpressey: what is it burning? a _hold_ or a _hole_?
09:16:25 <shachaf> I didn't, no.
09:16:45 <wib_jonas> int-e has impostors? are they like evil twins?
09:16:56 <int-e> Not at all.
09:17:13 <int-e> Impostors don't have goatees to tell them apart from the original.
09:17:29 <Taneb> Impostors might also have different birthdays
09:17:59 <Taneb> (although not necessarily)
09:18:01 <wib_jonas> int-e: you can't tell them apart from the original because the original is evil too
09:19:23 <int-e> Taneb: twins can be born on different days (close to midnight)
09:20:04 <wib_jonas> Taneb: correct. I told about how I want to make another similar language similar to Consumer Society, so that in one programs have properly nested braces and in the other they have properly matched brackets, and if you want to parse both, choosing according to which one is properly nested, the resulting union language has a syntax that is an
09:20:05 <wib_jonas> intrinsically ambiguous context-free language,
09:20:19 <shachaf> If twins are born on different days they're called siblings.
09:20:30 <wib_jonas> and these too languages are mutually evil sibling languages of each other, but in fact Consumer Society is significantly younger than its sibling.
09:20:58 <wib_jonas> shachaf: no, they're still twins if they were conceived close to each other but happen to be born across a day change
09:21:31 <int-e> ""
09:21:31 <int-e> Twins can be born in different decades, as happened as 2009 changed to 2010 and a pair of Florida twins came into the world on each side of the dividing line.
09:21:46 <cpressey> What if one twin is born during daylight savings and the other isn't
09:22:00 <int-e> Why, Firefox, do you put extra newlines at the beginning of a paste...
09:22:02 <shachaf> wib_jonas: Yes, they're still twins
09:22:18 <int-e> s/paste/selection/
09:22:29 <cpressey> The one delivered second is younger than the other one by an hour
09:23:53 <int-e> cpressey: Hmm it could be more interesting when switching back from DST... old twin born 2:59am, young twin 2:01am, same day.
09:24:26 <int-e> (or whenever the switch happens exactly)
09:25:00 <wib_jonas> cpressey: yes. and if you travel from america to europe, you become six hours older, but you count as three year older for drinking age purposes
09:27:37 <shachaf> int-e: You could also cross a time zone border presumably.
09:28:11 <shachaf> Admittedly temporal time zone borders are much sketchier than spacial ones.
09:28:25 <Taneb> Hmm, with time zone borders it's possible for the older twin to have the later birthday
09:29:29 <shachaf> `grWp twin
09:29:31 <HackEso> ​*:Twinkle, twinkle, little star! \ ☆:Twinkle, twinkle, little star! \ ☾_:☾_ is moon_'s lawful twin. He's banned in the IRC RFC for being an invalid character. He sometimes eats papers. \ boorjan:boorjan is oerjan's uneducated twin. \ c#:C Pound is Java's good twin. \ myname:myname is not your name. You don't know what they are doing. Or you are doing. Or am I? He is Perl's evil twin brother. \ orin:orin is oren's evil twin, stalking him from the o
09:29:32 <wib_jonas> shachaf: that's not practical though, because there are few places convenient for births that are split among multiple timezones
09:30:17 <shachaf> `2 grWp twin
09:30:26 <HackEso> 2/3: other side of the international date line. \ örjan:Örjan is the diæresed twin. He will punctuate your vöẅëls, and maybe a few other unsuspecting letters. \ ørjan:Your pal Ørjan is oerjan's good twin. He's banned in the IRC RFC for being an invalid character. Sometimes he publishes papers without noticing it. \ owrjan:owrjan is oerjan's wise twin. \ pico:pico is the useless twin of nano. \ sewerjan:sewerjan is oerjan's extremely poor twin. \
09:31:17 -!- ArthurStrong has joined.
09:31:31 <shachaf> wib_jonas: I think births en route to hospitals happen sometimes.
09:31:32 <Taneb> wib_jonas: hmm, certain places in the US I think
09:31:35 <shachaf> https://www.theepochtimes.com/supermom-delivers-her-own-twins-in-moving-car-while-giving-husband-directions-to-the-hospital_2817854.html
09:31:53 <shachaf> Presumably you could cross a border while hurrying to a hospital.
09:33:04 <wib_jonas> Taneb: yeah, they have weird timezones, especially near semi-autonomous native american territories
09:33:37 <wib_jonas> I'm not saying that it's impossible, it's just usually inconvenient for the pregnant mother
09:33:53 <shachaf> Birth in general is quite an inconvenient process, I hear.
09:34:29 <shachaf> `n
09:34:31 <HackEso> 1/3:*:Twinkle, twinkle, little star! \ ☆:Twinkle, twinkle, little star! \ ☾_:☾_ is moon_'s lawful twin. He's banned in the IRC RFC for being an invalid character. He sometimes eats papers. \ boorjan:boorjan is oerjan's uneducated twin. \ c#:C Pound is Java's good twin. \ myname:myname is not your name. You don't know what they are doing. Or you are doing. Or am I? He is Perl's evil twin brother. \ orin:orin is oren's evil twin, stalking him from the
09:34:39 <shachaf> Hmm?
09:34:49 <shachaf> How did that happen?
09:34:54 <shachaf> `2 grWp twin
09:34:57 <HackEso> 2/3: other side of the international date line. \ örjan:Örjan is the diæresed twin. He will punctuate your vöẅëls, and maybe a few other unsuspecting letters. \ ørjan:Your pal Ørjan is oerjan's good twin. He's banned in the IRC RFC for being an invalid character. Sometimes he publishes papers without noticing it. \ owrjan:owrjan is oerjan's wise twin. \ pico:pico is the useless twin of nano. \ sewerjan:sewerjan is oerjan's extremely poor twin. \
09:34:58 <wib_jonas> shachaf: yeah, because it usually comes with a tight deadline that's not announced early enough, so the mother and all the helpers don't get an early enough warning for when they have to prepare for birth. it's really rude I think.
09:34:59 <shachaf> `n
09:35:01 <HackEso> 1/3:*:Twinkle, twinkle, little star! \ ☆:Twinkle, twinkle, little star! \ ☾_:☾_ is moon_'s lawful twin. He's banned in the IRC RFC for being an invalid character. He sometimes eats papers. \ boorjan:boorjan is oerjan's uneducated twin. \ c#:C Pound is Java's good twin. \ myname:myname is not your name. You don't know what they are doing. Or you are doing. Or am I? He is Perl's evil twin brother. \ orin:orin is oren's evil twin, stalking him from the
09:35:04 <shachaf> `n
09:35:08 <HackEso> 3/3:twint-e:twint-e is int-e's stupid twin. He sometimes hijacks int-e's keyboard and spouts nonsense. \ typoerjan:typoerjan is oerjan's clumsy twin. \ אrjan:אrjan is oerjan's first uncountable twin. He's inconsistent with the ZFC axioms.
09:35:16 <shachaf> That seems like a bug.
09:35:27 <int-e> `? bug
09:35:31 <HackEso> bug? ¯\(°​_o)/¯
09:35:38 <int-e> `grWp feature
09:35:40 <HackEso> ​ä:Ä is a Swedish geographical feature. \ degenerate:Degenerate things are those that have been featured on the Ellen DeGeneres Show. The subjects of this sui degeneris program include spaghoti sauce, talking spheres of zero volume, and watches without mustard. \ eyebrow:Eyebrows are Taneb's most notable feature. \ intercal:INTERCAL has excellent features for modular program for the enterprise market. \ java:Java is a programming-language shaped collec
09:36:21 <shachaf> `cat bin/n
09:36:22 <HackEso> line="${1-$(cat /hackenv/tmp/spline)}"; len="$(awk 'END{print NR}' /hackenv/tmp/spout)"; echo -n "$line/$len:"; sed -n "${line}{p;q}" /hackenv/tmp/spout; echo "$((line<len?line+1:1))" > /hackenv/tmp/spline
09:36:24 <wib_jonas> in normal jobs, when you have to stand by day and night to react quickly to emergencies, either they pay you lots of money for that, or at least people of the profession occasionally complain loudly why the government cheats them out of the money they are awed. but mothers usually don't get that sort of wage even if they have to stand by all the
09:36:24 <wib_jonas> time just in case there's an urgent birth.
09:39:48 <shachaf> I don't get it.
09:40:21 <shachaf> `` line=1; len="$(awk 'END{print NR}' /hackenv/tmp/spout)"; echo -n "$line/$len:"; echo "$((line<len?line+1:1))"
09:40:27 <HackEso> 1/3:2
09:40:29 <shachaf> `` line=2; len="$(awk 'END{print NR}' /hackenv/tmp/spout)"; echo -n "$line/$len:"; echo "$((line<len?line+1:1))"
09:40:31 <HackEso> 2/3:3
09:40:36 <shachaf> `` line=3; len="$(awk 'END{print NR}' /hackenv/tmp/spout)"; echo -n "$line/$len:"; echo "$((line<len?line+1:1))"
09:40:37 <HackEso> 3/3:1
09:40:56 <shachaf> `n 1
09:40:57 <HackEso> 1/3:*:Twinkle, twinkle, little star! \ ☆:Twinkle, twinkle, little star! \ ☾_:☾_ is moon_'s lawful twin. He's banned in the IRC RFC for being an invalid character. He sometimes eats papers. \ boorjan:boorjan is oerjan's uneducated twin. \ c#:C Pound is Java's good twin. \ myname:myname is not your name. You don't know what they are doing. Or you are doing. Or am I? He is Perl's evil twin brother. \ orin:orin is oren's evil twin, stalking him from the
09:41:04 <shachaf> `n
09:41:06 <HackEso> 3/3:twint-e:twint-e is int-e's stupid twin. He sometimes hijacks int-e's keyboard and spouts nonsense. \ typoerjan:typoerjan is oerjan's clumsy twin. \ אrjan:אrjan is oerjan's first uncountable twin. He's inconsistent with the ZFC axioms.
09:41:10 <shachaf> What's all this?
09:41:34 <wib_jonas> shachaf: I just use | tail -n+4 and stuff like that for greps
09:41:37 <shachaf> `n 1
09:41:39 <HackEso> 1/3:*:Twinkle, twinkle, little star! \ ☆:Twinkle, twinkle, little star! \ ☾_:☾_ is moon_'s lawful twin. He's banned in the IRC RFC for being an invalid character. He sometimes eats papers. \ boorjan:boorjan is oerjan's uneducated twin. \ c#:C Pound is Java's good twin. \ myname:myname is not your name. You don't know what they are doing. Or you are doing. Or am I? He is Perl's evil twin brother. \ orin:orin is oren's evil twin, stalking him from the
09:41:41 <wib_jonas> for greps through HackEso
09:41:53 <shachaf> `cat tmp/spline
09:41:55 <HackEso> 2
09:41:55 <wib_jonas> I don't trust all these fancy scripts
09:42:10 <shachaf> `n
09:42:13 <HackEso> 3/3:twint-e:twint-e is int-e's stupid twin. He sometimes hijacks int-e's keyboard and spouts nonsense. \ typoerjan:typoerjan is oerjan's clumsy twin. \ אrjan:אrjan is oerjan's first uncountable twin. He's inconsistent with the ZFC axioms.
09:42:16 <shachaf> `n 1
09:42:18 <HackEso> 1/3:*:Twinkle, twinkle, little star! \ ☆:Twinkle, twinkle, little star! \ ☾_:☾_ is moon_'s lawful twin. He's banned in the IRC RFC for being an invalid character. He sometimes eats papers. \ boorjan:boorjan is oerjan's uneducated twin. \ c#:C Pound is Java's good twin. \ myname:myname is not your name. You don't know what they are doing. Or you are doing. Or am I? He is Perl's evil twin brother. \ orin:orin is oren's evil twin, stalking him from the
09:42:22 <shachaf> `n 2
09:42:23 <HackEso> 2/3: other side of the international date line. \ örjan:Örjan is the diæresed twin. He will punctuate your vöẅëls, and maybe a few other unsuspecting letters. \ ørjan:Your pal Ørjan is oerjan's good twin. He's banned in the IRC RFC for being an invalid character. Sometimes he publishes papers without noticing it. \ owrjan:owrjan is oerjan's wise twin. \ pico:pico is the useless twin of nano. \ sewerjan:sewerjan is oerjan's extremely poor twin. \
09:42:37 <shachaf> How are those different?
09:42:40 <shachaf> `n 1
09:42:42 <HackEso> 1/3:*:Twinkle, twinkle, little star! \ ☆:Twinkle, twinkle, little star! \ ☾_:☾_ is moon_'s lawful twin. He's banned in the IRC RFC for being an invalid character. He sometimes eats papers. \ boorjan:boorjan is oerjan's uneducated twin. \ c#:C Pound is Java's good twin. \ myname:myname is not your name. You don't know what they are doing. Or you are doing. Or am I? He is Perl's evil twin brother. \ orin:orin is oren's evil twin, stalking him from the
09:42:45 <shachaf> `cat /hackenv/tmp/spline
09:42:46 <HackEso> 2
09:42:59 <shachaf> line="${1-$(cat /hackenv/tmp/spline)}"
09:43:09 <shachaf> What am I missing?
09:43:46 <int-e> hmm
09:44:05 <int-e> something to do with the two-phase commit logic in hackeso?
09:44:17 <shachaf> Oh, oh, right!
09:44:31 <shachaf> Why did that never come up before?
09:44:44 <int-e> `hurl bin/n
09:44:46 <HackEso> https://hack.esolangs.org/repo/log/tip/bin/n
09:45:01 <wib_jonas> dunno, but I did see a few days ago that hackeso runs all my writes to /hackenv/tmp twice
09:45:20 <int-e> no clue, the script seems unchanged since 2017
09:45:53 <shachaf> Of course it could write extra state to tmp/ to track this.
09:45:58 <shachaf> Is there a good solution?
09:46:35 <wib_jonas> ``` mkdir /hackenv/tmp/0KpPun-ahPnp
09:46:35 <int-e> we should ask fizzie what changed first, maybe?
09:46:37 <HackEso> mkdir: cannot create directory '/hackenv/tmp/0KpPun-ahPnp': File exists
09:46:43 <wib_jonas> ``` mkdir /hackenv/tmp/I3ZdY_oWgTHb
09:46:44 <HackEso> mkdir: cannot create directory '/hackenv/tmp/I3ZdY_oWgTHb': File exists
09:46:56 <wib_jonas> ^ tries to create the directory twice, which is why I get the EEXISTS the second tiem
09:47:55 <wib_jonas> whereas I assumed that if I only write to tmp, not elsewhere, then usually it's only ran once, unless some other statement is also running
09:48:57 <shachaf> fizzie: Do you know what changed?
09:49:14 <int-e> shachaf: or maybe we should check the logs ;)
09:49:34 <int-e> (Q: did this ever work?)
09:50:16 <int-e> `2 grwp dual
09:50:20 <shachaf> I wrote this thing originally and I'm pretty sure it worked then.
09:50:30 <HackEso> 2/3:he Matrix, eventually gaining increased individuality and becoming a threat to the Machines themselves. \ nundrum:A nundrum is the categorical dual of a conundrum: a problem whose solution is useless. \ palindrome:A palindrome is a word that remains the same if you take it to the mirror dimension, and then take each individual letter back to the normal dimension separately. \ sober space:Sober spaces are the dual of Stoned spaces. Taneb invented them.
09:50:34 <int-e> `n
09:50:37 <HackEso> 1/3:block device:Block devices are a concession made in Unix to make raw hard disks and magnetic tape have a similar interface to regular files and terminals. Since magnetic tapes can't write individual bytes, only entire blocks, the interface isn't exactly the same, thus the dreaded dd obs= option was born. \ comonad:Comonads are just monads in the dual category. They are hard to get into. \ elrond:Elrond is a rogue program originally created to police t
09:51:14 <shachaf> It seems to have worked as recently as last month.
09:51:20 <int-e> yeah still worked in August
09:51:49 <wib_jonas> ``` hg log -T "{date|isodate}\n" # and we didn't write anything in the versioned parts
09:51:51 <HackEso> 2019-09-13 12:14 +0000 \ 2019-09-13 12:14 +0000 \ 2019-09-13 12:13 +0000 \ 2019-09-13 11:19 +0000 \ 2019-09-13 11:17 +0000 \ 2019-09-13 11:15 +0000 \ 2019-09-13 10:44 +0000 \ 2019-09-13 10:43 +0000 \ 2019-09-13 10:13 +0000 \ 2019-09-13 10:09 +0000 \ 2019-09-13 09:36 +0000 \ 2019-09-13 09:32 +0000 \ 2019-09-13 09:32 +0000 \ 2019-09-13 09:31 +0000 \ 2019-09-08 02:18 +0000 \ 2019-09-08 02:17 +0000 \ 2019-09-01 19:25 +0000 \ 2019-08-29 20:48 +0000 \ 2019-08-29
09:51:52 <int-e> 2019-08-14
09:53:08 <int-e> Err, make that August 22nd
09:53:34 <shachaf> But with my understanding of the HackEso commit behavior, it shouldn't have worked before either.
09:53:35 <int-e> That's the last working `n with more than two entries that I've found.
09:54:22 <shachaf> Shouldn't even one-entry `n have this issue?
09:54:23 <int-e> I forgot why, but I did think that it only ran the command a second time if it actually detected a change.
09:54:28 <shachaf> Er, two-entry.
09:54:36 <shachaf> `5 w
09:54:41 <HackEso> 1/1:mirth//Mirths are juvenile moths. They giggle a lot. \ 8/8/8/8/8/8/8/8//8/8/8/8/8/8/8/8 is an empty chess board in FEN. \ wisdoom//Wisdoom is realizing just too late how you could have avoided your demise. \ css//CSS are confusing style sheets. \ impomatic//impomatic never did anything weird enough to get into this database.
09:54:44 <shachaf> `5
09:54:45 <int-e> shachaf: No, since the line number is set up by the `2 command?
09:54:47 <HackEso> 1/2:561) <fizzie> It's a bit like a regular monowheel, except when you brake too hard, instead of you going around and around inside the wheel, the (1100lb) wheel rolls over you. \ 488) <fizzie> "Do a sea monster while whatever." \ 223) <fizzie> $ perl -e '/? <-- HERE/' Quantifier follows nothing in regex; marked by <-- HERE in m/? <-- HERE <-- HERE/ at -e line 1. \ 215) <Vorpal> !bfjoust test (++-)*1000000 <Vorpal> probably will suck <EgoBot> Scor
09:54:49 <int-e> `cat bin/2
09:54:50 <HackEso> ​\` "$@" |& sport 2
09:54:52 <shachaf> `n
09:54:54 <HackEso> 1/2:561) <fizzie> It's a bit like a regular monowheel, except when you brake too hard, instead of you going around and around inside the wheel, the (1100lb) wheel rolls over you. \ 488) <fizzie> "Do a sea monster while whatever." \ 223) <fizzie> $ perl -e '/? <-- HERE/' Quantifier follows nothing in regex; marked by <-- HERE in m/? <-- HERE <-- HERE/ at -e line 1. \ 215) <Vorpal> !bfjoust test (++-)*1000000 <Vorpal> probably will suck <EgoBot> Scor
09:55:01 <shachaf> Yep, it doesn't even go to the second page.
09:55:15 <shachaf> (Or rather it wraps around.)
09:55:16 <int-e> `cat bin/5
09:55:18 <HackEso> cmd="${1-quote}"; \`^ 5 "$cmd"
09:55:28 <shachaf> `cat bin/`^
09:55:30 <HackEso> ​[[ $# == 2 ]] || { echo "Usage: $0 n cmd" >&2; exit 2; }; for ((i=0; i < $1; i++)); do \` "$2"; done | sport
09:55:40 <fizzie> Ooh, that may be a thing.
09:55:49 <fizzie> Writes to tmp/ should normally not be executed twice.
09:56:03 <fizzie> The way the logic goes, if the repository is clean after the command ran once, that's it.
09:56:09 <shachaf> Oh, right, it only executes twice if it detects a write.
09:56:43 <fizzie> Okay, there's actually a race condition there, in that a concurrent command may make a non-write operation also run twice. Normally that's benign, but with tmp/ it might cause issues. It's going to be pretty rare though.
09:56:57 <int-e> shachaf: Err, sorry. I didn't think that through.
09:57:04 <fizzie> My guess is there's something in the working directory that it can't commit for whatever reason, so it permanently thinks the repository is dirty.
09:57:10 <fizzie> I'll have a look.
09:57:26 <shachaf> `` hg status
09:57:43 <HackEso> EGYj6LpQgFKM: Permission denied \ o6M9ot4UJDYs: Permission denied
09:57:48 <wib_jonas> fizzie: can you make it give you logs so you can exclude concurrent commands in private message?
09:58:12 <int-e> funny file names
09:58:20 <shachaf> `` ls -l EGYj6LpQgFKM
09:58:22 <HackEso> ls: cannot access 'EGYj6LpQgFKM/s': Permission denied \ total 0 \ d????????? ? ? ? ? ? s
09:58:23 <wib_jonas> althoguh we should see something in the hg log if that happens usually, but perhaps not if the command is particularly sneaky and gives no changes to the versioned part the second time or smoething
09:58:31 <wib_jonas> int-e: sorry, part of that was me
09:58:35 <shachaf> `ls
09:58:36 <wib_jonas> ``` ls -aF
09:58:38 <HackEso> ​./ \ ../ \ .hg/ \ .hg_archival.txt \ .hgignore \ EGYj6LpQgFKM/ \ bin/ \ canary \ emoticons/ \ esobible/ \ etc/ \ evil/ \ f| \ factor/ \ good/ \ hw/ \ ibin/ \ interps/ \ izash.c \ karma \ le/ \ lib/ \ misle/ \ o6M9ot4UJDYs/ \ paste/ \ ply-3.8/ \ quines/ \ quinor/ \ quotes \ share/ \ src/ \ test2 \ testfile \ tmflry/ \ tmp/ \ wisdom/
09:58:39 <HackEso> bin \ canary \ EGYj6LpQgFKM \ emoticons \ esobible \ etc \ evil \ f \ factor \ good \ hw \ ibin \ interps \ izash.c \ karma \ le \ lib \ misle \ o6M9ot4UJDYs \ paste \ ply-3.8 \ quines \ quinor \ quotes \ share \ src \ test2 \ testfile \ tmflry \ tmp \ wisdom
09:58:45 <wib_jonas> I mistakenl created some files to hackenv rather than tmp
09:58:54 <wib_jonas> ``` rmdir -v EGYj6* o6M9o
09:58:56 <HackEso> rmdir: failed to remove 'EGYj6LpQgFKM': Directory not empty \ rmdir: failed to remove 'o6M9o': No such file or directory \ rmdir: removing directory, 'EGYj6LpQgFKM' \ rmdir: removing directory, 'o6M9o'
09:59:03 <int-e> `ls -ld EGYj6LpQgFKM
09:59:04 <wib_jonas> ``` rmdir -vp EGYj6*/s o6M9o*/s
09:59:05 <HackEso> ls: invalid option -- ' ' \ Try 'ls --help' for more information.
09:59:06 <HackEso> rmdir: failed to remove 'EGYj6*/s': No such file or directory \ rmdir: failed to remove 'o6M9o*/s': No such file or directory \ rmdir: removing directory, 'EGYj6*/s' \ rmdir: removing directory, 'o6M9o*/s'
09:59:09 <int-e> `` ls -ld EGYj6LpQgFKM
09:59:11 <HackEso> drw-r-xr-x 3 1000 1000 4096 Sep 16 14:43 EGYj6LpQgFKM
09:59:19 <int-e> no x for user, great
09:59:26 <wib_jonas> ``` find EGYj6* o6M9o*
09:59:27 <HackEso> find: 'EGYj6*': No such file or directory \ find: 'o6M9o*': No such file or directory
09:59:27 <fizzie> I cleaned them up from the outside.
09:59:44 <wib_jonas> int-e: yeah, I was trying to test something about permissions when ais523 talked about them
09:59:46 <wib_jonas> sorry
09:59:51 <wib_jonas> I should have done it in tmp but I messed up
09:59:58 <wib_jonas> then didn't notice that I didn't revert them properly
10:00:05 <wib_jonas> let me check the hg log if there's any other remain
10:01:52 <wib_jonas> what the...
10:01:57 <int-e> wib_jonas: I don't think it's a huge deal really... it only seems that way because it manifested in this terribly obscure way.
10:02:00 <wib_jonas> did you just rewrite version history?
10:02:13 <fizzie> No, those never got committed.
10:02:17 <fizzie> Because of the no-x thing.
10:02:23 <fizzie> They just stuck around in the work directory.
10:02:31 <wib_jonas> int-e: yeah, but I did know that I messed up and apparently didn't pay enough attention to clean them up
10:02:42 <wib_jonas> fizzie: who, hackeso does that? interesting
10:03:03 <shachaf> REX has WRXB bits
10:03:17 <shachaf> Clearly WRX should stand for write read execute, but what should B stand for?
10:03:35 <int-e> bullying rights?
10:03:36 -!- Sgeo__ has joined.
10:05:11 <wib_jonas> shachaf: https://esolangs.org/logs/2019-08.html#lbV
10:05:34 <int-e> shachaf: "base" since it extends the base register for modr/m or sib?
10:05:51 <shachaf> wib_jonas: Yes, I know what they actually stand for.
10:05:58 <fizzie> The cleanup logic is to run "hg status -rumad", remove anything mentioned in the output, then run "hg up -C" to get back to a clean state. But apparently hg will just print warnings into stderr about files/directories it can't access and ignore them otherwise, so they never get either committed or cleaned.
10:06:05 <int-e> (I'm guessing from "This 1-bit value is an 'inverted' extension to the MODRM.rm field or the SIB.base field.")
10:06:06 <shachaf> (You told me the other day, and also it became clear once I implemented addressing modes.)
10:06:43 -!- Sgeo_ has quit (Ping timeout: 268 seconds).
10:06:45 <wib_jonas> fizzie: I guess that sort of makes sense for normal version control
10:06:52 <wib_jonas> it's just strange in hackeso's context
10:06:56 <shachaf> Yes, R extends the "reg" register (or the register in the opcode), X extends the index registers, and B extends the base register.
10:07:04 <int-e> fizzie: can you remind me why there are two phases in the first place?
10:07:17 <fizzie> int-e: To allow commands that don't write run concurrently.
10:07:27 <int-e> ah
10:07:40 <fizzie> (It obtains an exclusive lock only for the second phase.)
10:08:02 <shachaf> `` hg status -rumad
10:08:11 <fizzie> TBH, it's probably more trouble than it's worth, but that's the way it was written and anyway it's kind of an #esoteric thing.
10:08:16 <HackEso> No output.
10:08:26 <shachaf> Does it handle the newline-in-filename thing I was talking about a while ago?
10:08:26 <wib_jonas> right. it's much better than in jevabot, where if you run two commands in the same context simultaneously, then the changes of one that finishes first will be ignored, even if the second one doesn't write anything
10:08:28 <int-e> fizzie: makes me wonder whether it would be worthwhile to detect whether there was an intervening command at all
10:08:42 <wib_jonas> and jevalbot doesn't currently offer any way to override this
10:08:53 <wib_jonas> shachaf: what newline-in-filename thing?
10:09:13 <wib_jonas> int-e: it does normally try to detect that
10:09:19 <wib_jonas> or so I think
10:09:32 <int-e> wib_jonas: apparently not
10:10:44 <wib_jonas> int-e: something seems wrong in the logic or the environment, because like fizzie said, it shouldn't rerun a command that edits tmp only
10:11:08 <int-e> fizzie: But of course that's not entirely trivial either, to say the least.
10:11:10 <fizzie> wib_jonas: That was the effect of those non-accessible directories, it likely isn't doing that any more.
10:12:02 <int-e> wib_jonas: well, the detection uses hg status, and assumes that this can recognize its own pristine state.
10:12:18 <shachaf> wib_jonas: http://esolangs.org/logs/2014-11.html#lX6d
10:12:26 <int-e> arguably the real problem here is that resetting to a pristine state results in a working directory that doesn't match the repo contents.
10:12:46 <shachaf> `? shaventions
10:12:48 <HackEso> Shaventions include: before/now/lastfiles, culprits, hog/{h,d}oag, le//rn, tmp/, mk/mkx, {s,p}led/sedlast, spore/spam/speek/sport/1/4/5, edit. Taneb did not invent them yet.
10:12:56 <shachaf> tmp/ was such a good shavention
10:13:07 <fizzie> shachaf: I think newlines are probably a problem. I don't think there's an equivalent for -0 for the status output.
10:13:09 <int-e> We have funventions?
10:13:29 <shachaf> Imagine: Without tmp we wouldn't `1 or any of that.
10:13:39 <int-e> "funiragvbaf"
10:13:49 <fizzie> int-e: Yeah, I'd really like a hg option to just "restore the working directory exactly as it was, including the removal of untracked files". There's a way to do that in git, I couldn't discover a way to do it in hg.
10:13:55 <shachaf> `` rot13 tanebvention
10:13:56 <HackEso> gnaroiragvba
10:14:15 <wib_jonas> wait, maybe the no-permission files were the ones that made hackeso think that there were changes in the versioneed part
10:14:19 <fizzie> (Anyway, it would probably still fail for things like "no permission for the user" even if it did exist.)
10:14:23 <fizzie> wib_jonas: Yes, that's not a "maybe".
10:14:34 <int-e> wib_jonas: they were
10:14:37 <shachaf> fizzie: You could require write commands to run without tmp/
10:14:41 <wib_jonas> ``` mkdir /hackenv/tmp/-BE8SJn_Dnja
10:14:42 <HackEso> No output.
10:14:43 <shachaf> (By moving tmp/ out temporarily.)
10:14:52 <wib_jonas> ``` mkdir -v /hackenv/tmp/X81G5u_N85_r
10:14:53 <HackEso> mkdir: created directory '/hackenv/tmp/X81G5u_N85_r'
10:14:56 <wib_jonas> yeah, that was the problem
10:14:59 <wib_jonas> now it behaves sane
10:15:29 <shachaf> I do like the `mv tmp/foo . bug, though.
10:15:54 <shachaf> It would be nice to keep that one to trip up unsuspecting people who think computers don't hate them for some reason.
10:16:07 <wib_jonas> fizzie: hg status accepts a template too, with the -T argument
10:16:07 <int-e> shachaf: they don't
10:16:28 <int-e> shachaf: we're just making software too complex for our own good
10:16:36 <shachaf> I agree with that!
10:16:40 <int-e> So complexity is the real enemy, not computers.
10:16:57 <fizzie> shachaf: Huh, there *is* a -0 option for 'hg status'.
10:17:20 <fizzie> I can make it use that and split on '\0' instead of '\n', and then it'll work on files with newlines in them.
10:17:28 <shachaf> fizzie: The logs I linked to point it out.
10:17:43 <shachaf> I guess that change never happened?
10:18:14 <fizzie> shachaf: I couldn't find the relevant bit in there, you linked to the gigantic monthly logs and the "scroll to anchor" isn't working somehow.
10:18:20 <shachaf> Oh.
10:18:39 <wib_jonas> ``` hg log -T '{rev}:{join(files,"\0,")}\0;' | tr \\0 % # joins files within a revision with "\0," and revisions with "\0;"
10:18:40 <shachaf> I download the monthly logs to grep through, so I didn't have the file name for the daily logs.
10:18:41 <HackEso> 11941:bin/beat%;11940:bin/beat%;11939:bin/beat%;11938:share/whatis%;11937:bin/beat%;11936:bin/beat%;11935:bin/beat%;11934:bin/beat%;11933:bin/beat%;11932:bin/beat%;11931:share/whatis%;11930:share/whatis%;11929:share/whatis%;11928:share/whatis%;11927:bin/as-encoding%;11926:bin/as-encoding%;11925:wisdom/password%;11924:wisdom/can't%;11923:wisdom/can't%;11922:wisdom/can't%;11921:wisdom/can't%;11920:wisdom/can't%;11919:wisdom/can't%;11918:wisdom/can't%;11917:w
10:19:23 <wib_jonas> but why do you care about the specific output of hg status anyway?
10:20:43 <fizzie> Because I couldn't figure out a command to restore the working directory to a state matching the repository without manually removing files.
10:20:53 <fizzie> "hg up -C" definitely doesn't do it.
10:20:57 <int-e> fizzie: crazy thought... would switching to git storage + hg-git do the trick?
10:21:07 <wib_jonas> int-e: eww
10:21:24 <fizzie> I could just migrate the repository to git altogether. Even Bitbucket has stopped supporting Mercurial.
10:21:27 <int-e> (and using git for cleanup)
10:21:31 <wib_jonas> let me look at the hg manual
10:21:40 <wib_jonas> int-e: that would be worse
10:22:03 <int-e> (the point of hg-git would be to keep all the existing hg magic working)
10:22:29 <int-e> (and I don't know whether it's up to the task)
10:22:30 <fizzie> Well, it'd be a nice exercise to update all the tooling.
10:22:50 <fizzie> Although the 'h's in the names would become obsolete then.
10:23:00 <wib_jonas> int-e: yes, but... the git part would be harder to use
10:23:19 <shachaf> git is much easier to use than hg
10:23:36 <shachaf> hg might be better in some technical ways
10:23:38 <wib_jonas> shachaf: not for when you have strange untrusted data like filenames with newlines
10:23:45 <int-e> shachaf: wait didn't you advocate mercurial not too long ago?
10:23:48 <wib_jonas> and probably not in the normal case either
10:23:58 <wib_jonas> int-e: no, I think that was ais523
10:24:21 <shachaf> int-e: I think it's likely to be better?
10:24:34 <shachaf> But the UI is much more confusing than git's.
10:24:50 <int-e> I agree
10:24:59 <int-e> but I think it's a matter of first exposure, largely
10:25:14 <shachaf> Yes. I'm just making a baseless assertion here, like people always make about hg.
10:25:25 <fizzie> https://bitbucket.org/blog/sunsetting-mercurial-support-in-bitbucket "Git adoption has grown over the years to become the default system" "almost 90% of developers use Git, while Mercurial is the least popular version control system with only about 3% developer adoption" "the percentage of new Bitbucket users choosing Mercurial has fallen to less than 1%"
10:25:29 -!- sftp has quit (Quit: leaving).
10:25:43 <fizzie> Got to follow the trends here.
10:26:06 <shachaf> The git model is very simple and I can always use a few commands to get it to do what I want.
10:26:32 <wib_jonas> shachaf: you don't want interesting enough things then
10:27:40 <shachaf> What do you recommend wanting?
10:27:41 <int-e> mercurial is better... a) for hosting over dumb http and b) if you're confused about having a staging area between the working directory and the repo.
10:28:19 <wib_jonas> shachaf: try manipulating git repositories that pull data from a server repository into which other people commit and tag and history-edit in stupid ways
10:28:19 <shachaf> I don't think any of these systems are that great.
10:28:21 <fizzie> int-e: I've been told Mercurial is also better for extensibility.
10:29:00 <int-e> fizzie: maybe. it's mostly python with some bits of C rather than mostly C with some bits of Perl
10:29:05 <wib_jonas> including bad filenames, inconsistent line endings, changing whitespace in existing source files extensively even when they don't modify the file,
10:29:10 -!- sftp has joined.
10:29:12 <fizzie> int-e: In particular, Google's DVCS of choice is Mercurial with a lot of extra oddness, and AIUI the decision was primarily motivated by Git not having any sort of API to do the odd parts.
10:30:25 <wib_jonas> shchaf: also, do you happen to know how to ask git to remove directories from the working copy that it couldn't commit because of lack of permissions?
10:30:36 <int-e> extensibility doesn't come up so much in day to day usage :P
10:30:54 <wib_jonas> shachaf: and how to make git use a .git outside hackenv so that hackenv commands can't directly write it?
10:31:07 <int-e> wib_jonas: GIT_DIR
10:31:29 <wib_jonas> int-e: where is that documented?
10:31:33 <shachaf> fizzie: I think Facebook made the same decision for the same reason.
10:31:48 <int-e> wib_jonas: but it's a non-issue, I think? the umlbox can mount subdirectories read-only.
10:31:54 <shachaf> wib_jonas: I'm talking about non-esoteric uses so this is all irrelevant.
10:32:00 <wib_jonas> int-e: hmm, that might make sense
10:32:07 <shachaf> `` ls -ld .hg
10:32:10 <HackEso> drwxr-xr-x 5 1000 1000 4096 Sep 17 09:59 .hg
10:32:13 <fizzie> wib_jonas: I don't currently have .hg outside hackenv either.
10:32:15 <Taneb> wib_jonas: it's documented in the git-init man
10:32:18 <wib_jonas> shachaf: but... wasn't the whole point the esoteric uses in hackeso?
10:32:45 <int-e> `` touch .hg/doesnotwork
10:32:46 <HackEso> touch: cannot touch '.hg/doesnotwork': Read-only file system
10:32:48 <shachaf> No, I'm making a general claim.
10:33:00 <shachaf> One big advantage of git is that it's written in C.
10:33:09 <shachaf> ...But a big disadvantage is that big parts of it are written in sh.
10:33:57 <wib_jonas> int-e, Taneb: thanks
10:34:32 <int-e> wib_jonas: I actually use GIT_DIR quite a bit because I can never remember --bare ;-)
10:34:52 <wib_jonas> shachaf: all of subversion is written in C
10:35:08 <shachaf> Yes. Subversion is a pretty good version control system.
10:35:19 <shachaf> (I meant git over hg above, though.)
10:35:45 <wib_jonas> the main drawback of subversion is that it's a very bad distributed vcs right now, and that's hard to fix, but that problem doesn't come up too much for HackEso
10:36:05 <wib_jonas> that said, keeping the existing mercurial solution for HackE*o is probably for the best
10:37:24 <shachaf> I'm going to sleep.
10:38:01 <wib_jonas> these spams that advertise services to send bulk spam are sort of the most honest spam there is, because they at least prove that they can offer such services
10:38:27 <wib_jonas> unlike the other spam, which are usually about outright scams and state or promise something that they can't provide
10:38:59 <wib_jonas> not that the bulk mailers have to be totally honest of course, they can still scam you and underperform and overcharge you
10:39:09 <wib_jonas> or just steal the money
10:39:16 <wib_jonas> but they at least offer a service that they can do
10:40:35 <int-e> How much of this mess would be solved by sanitizing permissions of directories (making sure they're u+rx)?
10:41:20 <wib_jonas> int-e: eh, next you'll want to disallow symlinks and pipes and socket files from hackenv?
10:41:29 <wib_jonas> and even force regular files to readable?
10:42:17 <int-e> `? pipe
10:42:18 <HackEso> This is not a pipe.
10:50:57 <wib_jonas> maybe you'll even suggest that we shouldn't have a symlink to /proc/self/args in wisdom?
10:53:34 <int-e> I don't care. fifos are annoying because they break grep
10:53:44 <wib_jonas> ``` set -e; cd wisdom; find -type l -printf "%p > %l\n"
10:53:45 <HackEso> ​./СССР > ссср \ ./the usual suspect > usual suspect \ ./perpetuum mobile > perpetual motion machine \ ./r.i.p. > rip \ ./☆ > * \ ./h4gb4rd > hagb4rd \ ./issue > .doorstop \ ./the reals > real \ ./off by two error > off by two \ ./wolfram > stephen wolfram
10:53:48 <int-e> that symlink doesn't do that
10:53:52 <int-e> `grwp grep
10:53:54 <HackEso> No output.
10:53:58 <int-e> `grwp wisdom
10:53:59 <HackEso> ​?:? is wisdom \ america:This wisdom entry had to be removed due to a DMCA takedown notice. \ bimonthly:The word "bimonthly" has at least two meanings, although this wisdom only gives about half of one. No matter which expert you follow, you're 50% likely to misinterpret it, or doubly so, depending on the phase of the moon. \ busy beaver growth:No one can compute the length of a wisdom entry sufficient to explain busy beaver growth. \ claustrophobia:Clau
11:05:14 <fizzie> int-e: It might help. Currently I sanitize only the .hg and .hgignore permissions.
11:08:50 <fizzie> I think I thought about using the purge extension instead of the status parsing + remove approach, but I suspect it would not work any better w.r.t. bizarre permissions. Presumably it would be inherently robust against odd file names though.
11:21:15 <cpressey> Are there operators + and * on rings such that the set of rings forms a ring
11:22:09 <Taneb> I don't think so
11:23:07 <cpressey> Such that *some* set of rings forms a ring, maybe?
11:23:56 <cpressey> Every ring in such a set would need to have an inverse
11:23:57 -!- Frater_EST has left.
11:24:17 <cpressey> This is very difficult for me to think about, but it is entertaining.
11:26:53 <Taneb> The other week I tried to think about ZF¬C and the properties of a vector that lacks a basis
11:27:37 <int-e> cpressey: this is not what you want... but technically all you need is a ring of the right cardinality
11:29:46 <wib_jonas> `? ring
11:29:47 <HackEso> Addition, subtraction and multiplication have a certain ring to them.
11:31:14 <cpressey> int-e: I was thinking maybe you could do something trivialish with two boolean rings
11:31:23 <cpressey> Well anywan
11:31:34 <cpressey> Back to timezones, brain!
11:36:03 -!- arseniiv has joined.
11:38:08 <cpressey> Taneb: I once saw a stackexchange answer listing the bizarre implications of having Axiom of Choice next to the bizarre implications of *not* having Axiom of Choice... but I can't find it again now :/
11:42:24 <cpressey> Might've been this one, but I thought it was longer: https://math.stackexchange.com/questions/1771052/soft-question-why-does-the-axiom-of-choice-lead-to-the-weirdest-constructions
12:59:20 <esowiki> [[@NUM]] https://esolangs.org/w/index.php?diff=66207&oldid=59504 * KrystosTheOverlord * (+3)
13:01:49 <esowiki> [[@NUM]] https://esolangs.org/w/index.php?diff=66208&oldid=66207 * KrystosTheOverlord * (+76)
13:03:11 <esowiki> [[@NUM]] https://esolangs.org/w/index.php?diff=66209&oldid=66208 * KrystosTheOverlord * (+37)
13:24:23 <wib_jonas> `? banach-tarski # https://www.xkcd.com/804/
13:24:24 <HackEso> banach-tarski # https://www.xkcd.com/804/? ¯\(°​_o)/¯
13:24:29 <wib_jonas> hmm
13:28:46 <myname> i don't think they understand comments
13:30:16 <wib_jonas> ``` set -e; d=$(date +@%s); export TZ; for TZ in UTC Europe/Paris Europe/London America/New_York America/Los_Angeles; do date -d "$d" +"%Y-%m-%d %H:%M %z %Z"; done # timezones like this?
13:30:19 <HackEso> 2019-09-17 13:30 +0000 UTC \ 2019-09-17 15:30 +0200 CEST \ 2019-09-17 14:30 +0100 BST \ 2019-09-17 09:30 -0400 EDT \ 2019-09-17 06:30 -0700 PDT
13:30:21 <wib_jonas> ``` \? banach-tarski # https://www.xkcd.com/804/
13:30:24 <HackEso> ​"Banach-Tarski" is an anagram of "Banach-Tarski Banach-Tarski".
13:30:31 <wib_jonas> yes, that
13:31:37 <wib_jonas> at least the timezone database (or part of it) is installed, even if very few locales are
13:55:35 <wib_jonas> `pbflist https://pbfcomics.com/comics/the-forbidden-cave/
13:55:35 <HackEso> pbflist https://pbfcomics.com/comics/the-forbidden-cave/: shachaf Sgeo quintopia ion b_jonas Cale
13:59:32 -!- sprocklem has quit (Ping timeout: 276 seconds).
14:07:26 <cpressey> My head hurts.+00:00
14:12:40 -!- shikhin has quit (Quit: Quittin'.).
14:13:52 -!- shikhin has joined.
14:18:28 -!- ArthurStrong has quit (Quit: leaving).
14:21:40 -!- shikhin has quit (Read error: Connection timed out).
14:22:01 -!- shikhin has joined.
14:24:10 <cpressey> Robin should probably be split into an esolang and a non-esolang, but it's not entirely clear where I should draw the line.
14:24:33 <cpressey> Macros as fundamental + strange environment tricks based on that -> esolang.
14:25:45 <wib_jonas> cpressey: wait, if you remove that, then what remains that's interesting and unique as a non-esolang?
14:29:00 <cpressey> Referentially transparent homoiconic language with a reactive framework. Is that not interesting and unique enough?
14:29:31 <wib_jonas> I don't know. couldn't you just use a reactive frameword in scheme or something?
14:29:49 <wib_jonas> wait, what does the referentially transparent part mean?
14:30:12 <wib_jonas> ah
14:32:45 <cpressey> If I felt like I could successfully submit a SRFI for "immutable scheme" I'd probably do that instead.
14:33:33 <cpressey> Well, whatever
14:53:04 <cpressey> https://github.com/wolfgangj/bone-lisp#readme <-- That is virtually the only other language with immutable data and homoiconic syntax that I've found.
14:53:39 <cpressey> Could port the reactive framework to it; in some ways it would be a good fit
15:16:57 -!- APic has quit (Ping timeout: 244 seconds).
15:20:20 -!- APic has joined.
15:25:14 -!- APic has quit (Ping timeout: 265 seconds).
15:38:01 <wib_jonas> `? Screen
15:38:07 <HackEso> Screen? ¯\(°​_o)/¯
15:40:23 -!- wib_jonas has quit (Remote host closed the connection).
15:59:20 -!- cpressey has quit (Quit: A la prochaine.).
16:33:09 -!- Lord_of_Life_ has joined.
16:35:52 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
16:36:01 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
16:55:48 -!- sprocklem has joined.
17:00:46 <esowiki> [[Special:Log/newusers]] create * Alalalize * New user account
17:07:44 -!- b_jonas has joined.
17:12:49 -!- Phantom_Hoover has joined.
17:26:12 -!- APic has joined.
17:26:25 -!- FreeFull has joined.
17:26:32 <b_jonas> it seems like the time format bug that I mentioned yesterday is not in libc's strftime function. it's in coreutils's reimplementation of strftime.
17:26:43 <b_jonas> that's good to know.
17:36:53 -!- sprocklem has quit (Ping timeout: 268 seconds).
17:47:02 -!- arseniiv has quit (Ping timeout: 276 seconds).
17:47:28 -!- arseniiv has joined.
18:02:01 <fizzie> Hmm.
18:02:31 <fizzie> These seem both equally broken to me: http://ix.io/1VAl
18:02:55 <fizzie> And I'm sure the latter is using the libc's strftime.
18:03:15 <fizzie> (Unless this was a different bug you were talking about.)
18:03:31 <b_jonas> hmm
18:10:26 -!- imode has joined.
18:11:28 <b_jonas> (set -e; export LC_ALL=hu_HU.utf8; gcc -Wall -O -o a.out -x c - <<<$'#include<time.h>\n#include<stdio.h>\n#include<locale.h>\n''int main(void) { char o[100] = {0}; setlocale(LC_ALL, ""); struct tm b = {0}; time_t t = 1570230000; gmtime_r(&t, &b); strftime(o, 100, "%^B", &b); printf("%s\n", o); return 0; }'; ./a.out )
18:11:33 <b_jonas> OKTóBER
18:11:41 <b_jonas> let me install the fi_FI.utf-8 locale
18:12:10 <b_jonas> you're right this seems broken, so there's something wrong in my tests
18:12:59 <b_jonas> wait, I misread my previous tests
18:13:04 <b_jonas> those printed OKTóBER too
18:13:06 <b_jonas> darn
18:13:14 <b_jonas> or maybe I can't reproduce them or something
18:13:15 <b_jonas> I'm confused
18:13:42 <b_jonas> ...
18:13:45 <b_jonas> thanks for checking then
18:14:15 <b_jonas> let me see what the libc documentation actually says about this, and check their bug tracker where there's probably a ticket for that and they argue that this is completely correct behavior
18:17:20 <b_jonas> oh hey look
18:17:34 <b_jonas> it does uppercase correctly for the hu_HU.iso88592 locale
18:18:46 <b_jonas> in that case it prints OKTÓBER only the Ó is encoded in iso-8859-2 as a \xD3 as you'd expect
18:18:55 <b_jonas> so it can uppercase single-byte stuff
18:19:20 <b_jonas> aren't locales fun? this is why we don't use them these days, and just use libraries that do stuff like this without relying on locales
18:42:37 <fizzie> b_jonas: It's also correct for fi_FI.ISO-8859-1.
18:42:52 <b_jonas> good
18:43:07 <b_jonas> ``` locale -a
18:43:08 <HackEso> C \ C.UTF-8 \ POSIX \ en_GB.utf8 \ en_NZ.utf8 \ en_US.utf8
18:45:01 <fizzie> I think I probably added en_GB in addition to en_NZ and en_US when migrating to HackEso, to honor the fact that it's physically in the UK.
18:55:41 -!- xkapastel has joined.
19:06:21 -!- sprocklem has joined.
19:11:21 -!- cocof has joined.
19:11:37 <cocof> people in usa complain that college is experensive
19:11:57 <cocof> why don't they study online or in mexico?
19:12:37 <esowiki> [[Hello world program in esoteric languages]] https://esolangs.org/w/index.php?diff=66210&oldid=65984 * Dtuser1337 * (+106) /* Codd */
19:12:46 <cocof> *expensive
19:13:10 <shachaf> Who says they don't?
19:13:27 <cocof> their complain
19:13:31 <cocof> complains
19:13:36 <b_jonas> how is that a php question?
19:13:39 <int-e> . o O ( "why did you study online or in mexico?" )
19:14:14 <shachaf> Maybe they complain, and then go online to Mexico to study.
19:14:14 <cocof> I am watching a program about some free uni that started to charge fees and students claim their are entitled to free edu
19:14:23 <int-e> I suspect the former may be a real issue, if you study full time.
19:14:44 <cocof> int-e as far as person is smart he is more likely to be hired if he saved money on collegde
19:14:49 <cocof> colledge
19:14:57 <cocof> as it shows he she is smart
19:15:00 <int-e> college
19:15:09 <cocof> yet many spend 100K on gender study ? :D
19:15:38 <cocof> I haven't been in USA for some time and I suspect IQ drop is real
19:16:05 <shachaf> I get the impression you don't care about what anyone says here, and you just want to complain.
19:16:16 <cocof> there is a solution
19:16:18 <shachaf> I recommend complaining online, or in Mexico.
19:16:33 <cocof> it seems some standord professors made their own online unis
19:16:35 <b_jonas> we're mostly programming people, but let's ask the one foremost expert of politics in our channel
19:16:51 <int-e> fun!
19:16:51 <b_jonas> fungot, what do you think about the higher education system in the USA?
19:16:51 <fungot> b_jonas: i see,
19:17:07 <shachaf> ^style
19:17:07 <fungot> Available: agora alice c64 ct darwin discworld enron europarl ff7 fisher fungot homestuck ic irc* iwcs jargon lovecraft nethack oots pa qwantz sms speeches ss wp ukparl youtube
19:17:08 <int-e> uh, how did that... ah I won't even ask.
19:17:20 <shachaf> ^style speeches
19:17:20 <fungot> Selected style: speeches (misc. speeches from Project Gutenberg)
19:17:34 <cocof> programming requires logic and paying 100K for a college indicated IQ drop
19:17:39 <cocof> :D
19:17:48 <cocof> don't you have kids?
19:17:59 <cocof> do you beat them up when they mention college loan?
19:18:26 <int-e> fungot, fungot, fungot
19:18:27 <fungot> int-e: claiming only that they have been since, much employed by that political school, is an ancient story of a speech made in one parliament has been growing to by a progressive increase of improvement, brought in a bill to prevent judges from entering those lists in which lord ellenborough is a perfect man, if able, will take from the rest of mankind in all ages a chief cause of the house, that, in losing her american coloni
19:18:42 <b_jonas> oh, so talking about college loan is why fungot is beating his children?
19:18:43 <fungot> b_jonas: prior, matthew, his intimacy with bishop atterbury. appears as a witness in favour of wit; he tolerated even tameness for the sake of example they should be deluded, and should occasionally fnord to the institution to learn and to know that a man has not received such an education as enables him to understand that it was not merely a great writer, will, for a long time without pay, or at least a tinge of toryism. he li
19:18:50 <cocof> fungot IQ drop usa
19:18:50 <fungot> cocof: " when will rulers learn that, where we used to play it in this house, in the county. what is to be observed, or whether it shall be the vicegerent and with what portion of the american slave, the pride of man?
19:18:54 <int-e> `relcome fungot
19:18:54 <fungot> int-e: by fnord cleveland was not a very material difference in the main but three, which i consider excellent advice: and you give us to- night again, so amiable is our nature, and in some of its members is large, than cyrus, in the meantime, in spite of the opposition met for the purpose of greatness, which it is designed for the great honour which you have presented me, shall never break the tie of consanguinity between us a
19:18:55 <HackEso> fungot: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: <https://esolangs.org/>. (For the other kind of esoterica, try #esoteric on EFnet or DALnet.)
19:19:21 <cocof> fungot cocof
19:19:21 <fungot> cocof: first i thought i'd go and see. then i will proceed in my account of the great tory prelate were, as they are now taking the surest way to prevent a total rupture."
19:19:27 <cocof> see
19:19:40 <cocof> I am surest way to prevent a total rupture
19:19:44 <b_jonas> cocof: our expert says that "the institution to learn and to know that a man has not received such an education as enables him to understand that it was not merely a great writer, will, for a long time without pay"
19:19:45 <cocof> first kids must be beaten
19:20:31 <int-e> is garfield without garfield still ongoing?
19:20:39 <int-e> uhm s/without/minus/
19:20:45 <cocof> commonsense.com
19:20:46 <cocof> :D
19:20:46 <esowiki> [[Fishing]] https://esolangs.org/w/index.php?diff=66211&oldid=52777 * Dtuser1337 * (+66) /* Programs */
19:21:32 <kmc> fungot: what do you make of the present situation?
19:21:32 <fungot> kmc: but the fact is, that malignant disposition to which this building is devoted, of its brilliant and inspiring history, of which it is designed. a man, he seemed to be united with each other, but the influence was very broad in effect.
19:22:28 <cocof> yes malignant
19:22:32 <cocof> snowflakes
19:22:44 <cocof> need physical work forced
19:22:47 <cocof> to collect oranges
19:23:17 <esowiki> [[Deadfish]] https://esolangs.org/w/index.php?diff=66212&oldid=65925 * Dtuser1337 * (+1004) Yare yare daze
19:24:21 * kmc pelts cocof with oranges
19:24:44 <b_jonas> ``` \? "gene ray" | sed s/.*god..//
19:24:45 <HackEso> Academians are teaching - pseudocience. Worshipping a Word God will destroy the USA.
19:25:10 <b_jonas> to quote our other expert
19:25:23 <shachaf> I asked another expert: http://slbkbs.org/tmp/talk_to_transformer.png
19:26:16 <int-e> https://66.media.tumblr.com/2b8b62a7f4390548136987acf3943a5f/tumblr_nzs9xeDR3r1qz8z2ro1_500.png is every garfield strip, in a nutshell.
19:26:50 <b_jonas> shachaf: has to refer to Prime, because he's the most popular transformer so that's what sells everything
19:27:03 <b_jonas> even though he's totally irrelevant to this question
19:29:45 <shachaf> I don't know much about transformers.
19:29:53 <shachaf> I guess Megatron is also one?
19:30:17 <b_jonas> `? transformer
19:30:20 <HackEso> A transformer is one who used to trans, but no longer does.
19:30:48 <b_jonas> I don't know. I think a Megatron is either an angel or a unit of measure
19:32:32 -!- sprocklem has quit (Ping timeout: 245 seconds).
19:37:50 <esowiki> [[Talk:ZOWIE]] https://esolangs.org/w/index.php?diff=66213&oldid=43704 * Rdebath * (+237) My bad
19:45:59 <shachaf> `5 w
19:46:05 <HackEso> 1/1:violation//Violation is the act of playing an instrument in the viola family. \ nilfisk//Nilfisk is the fish of choice for the connoiseuring spämmer. \ pikachu//Pikachu is a universal quantifier for Chu spaces. \ clever//Being clever is different from being wise, but they are indistinguishable in sufficiently large quantities. \ forth//Since Biblical times, Forth has been the go-to language for multiplication.
19:53:48 <cocof> is there a mandatory IQ test before applying for a
19:53:55 <cocof> and who here have kids?
19:54:58 <b_jonas> nobody here has kids, but some of us have evil twins or reincarnations
19:55:30 <kmc> i'm my own grandpa
19:55:35 <kmc> and fungot is my grandma
19:55:35 <fungot> kmc: but, low as was the polished orator or writer, but as to me, and one day when we felt that we must not be understood as saying that there are two kinds of objects of desire; those which give mere bodily pleasure, and pain, without fnord passionate fnord furious fnord really proofs of the public.
19:55:57 <Phantom_Hoover> fungot is so literary
19:55:57 <fungot> Phantom_Hoover: bible, the fnord, which, fnord as i should speak as i now try to prevent others from oppressing them, as a means of ensuring fnord the consequence of triennial corruption, triennial drunkenness, triennial idleness, triennial law-suits, litigations, prosecutions, triennial phrensy, of society dissolved, industry interrupted, ruined; of those personal hatreds that will never be able to say to our friend and guest
19:56:27 <b_jonas> `? kmc
19:56:28 <HackEso> kmc did not run the International Devious Code Contest of 2013.
19:57:44 <b_jonas> `? kmc
19:57:45 <HackEso> kmc did not run the International Devious Code Contest of 2013. She is her own grandpa.
19:57:53 <kmc> :D
19:58:05 <shachaf> whoa whoa whoa
19:58:10 <shachaf> Editing in /msg?
19:58:10 <b_jonas> that entry was too bare. now it has something informative and specific in it.
19:58:15 <kmc> ty b_jonas
19:58:28 <cocof> '?usa education now
19:58:35 <cocof> '? usa education now
19:58:46 <cocof> `? usa education now
19:58:47 <HackEso> usa education now? ¯\(°​_o)/¯
19:58:54 <cocof> :)
19:59:06 <cocof> `? usa needs kids beating
19:59:07 <HackEso> usa needs kids beating? ¯\(°​_o)/¯
19:59:11 <cocof> yes yes
19:59:24 <shachaf> Maybe lay it off with the kids beating thing?
19:59:34 <kmc> i,i https://twitter.com/capsule_169/status/993963705791545344
19:59:45 * kmc beats cocof with the ugly stick
20:00:02 <shachaf> kmc: didn't heinlein write that story
20:00:03 <b_jonas> it's called a mapole
20:00:05 <cocof> kmc is a fail student?
20:00:10 <cocof> haha
20:00:16 <cocof> soon professors can kick students
20:00:22 <kmc> shachaf: yeah and like a billion people reply with that in the comments
20:00:25 <cocof> and ask security to drag them out
20:00:25 <kmc> i didn't read it, though
20:00:36 <shachaf> kmc: i'm the bazillionth and one
20:00:38 <b_jonas> shachaf: he rewrote it, but it's an ancient Sumerian tale originally
20:00:39 <kmc> cocof: no, I was a success in college, I'm a failure at everything *subsequent*
20:00:49 <shachaf> presumably i get a prize for being the bazillionth and one visitor to your website
20:01:09 <kmc> what prize would you like?
20:01:18 <kmc> currently in stock: hugs, coffee cake
20:01:31 <b_jonas> no imaginary internet points?
20:01:36 <kmc> sure
20:01:53 <int-e> kmc: are you suggesting that there's a life after college
20:02:00 <shachaf> no internet points for me
20:02:10 <shachaf> but i'll sign up for one hugs and one coffee cake
20:02:35 <kmc> hooray
20:02:35 <int-e> shachaf: you win a MASSIVE YACHT.
20:02:38 <kmc> *hugs*
20:02:41 <kmc> *coffee cake*
20:03:13 <b_jonas> https://www.xkcd.com/570/
20:03:48 <shachaf> those look a lot like internet points
20:04:02 <int-e> shachaf: cf. https://www.youtube.com/watch?v=sdi6E-qzS1c
20:06:09 <cocof> i can make 100 cups of coffee\
20:06:15 <cocof> got 2 jars :D
20:06:23 <cocof> and 2lts of milk
20:11:09 <cocof> who wants an e cup?
20:11:51 <cocof> https://www.youtube.com/watch?v=EHcr6R8nbZA
20:12:06 <esowiki> [[Mailman]] N https://esolangs.org/w/index.php?oldid=66214 * Xanman12321 * (+1451) Created page with " This language is about mail; the program runs until all houses have been delivered to. It was created by User:Xanman12321 and User:Andrew3335 in 2019, based on a Google Docs..."
20:16:42 <esowiki> [[Mailman]] https://esolangs.org/w/index.php?diff=66215&oldid=66214 * Xanman12321 * (+109)
20:23:29 <esowiki> [[Mailman]] https://esolangs.org/w/index.php?diff=66216&oldid=66215 * Xanman12321 * (+230)
20:26:06 -!- cocof has quit (Remote host closed the connection).
20:35:48 <arseniiv> strict symmetric monoidal categories are nice. We can talk about composition of things with several colored inputs and as well as outputs, if we constrain Obj(C) to be generated from some S via ⊗, hence getting a colored PROP
21:04:35 <kmc> mo noids mo problems
21:08:48 <arseniiv> <b_jonas> nobody here has kids, but some of us have evil twins or reincarnations => I want to have a twin :′(
21:14:22 <arseniiv> btw is IQ even a feasible measure of normal people’s intellect. I heard initially it was made to determine if a person is medically, sufficiently unsmart. These are very rare in any times
21:16:10 -!- Lykaina has joined.
21:18:44 <arseniiv> I don’t trust people who talk about IQ this IQ that
21:19:52 <arseniiv> also about BMI
21:24:36 <b_jonas> `forget vampire
21:24:38 <HackEso> Forget what?
21:24:41 <arseniiv> should we call semicatefory a polyid?
21:24:52 <arseniiv> semicategory*
21:37:10 -!- Lykaina has quit (Quit: leaving).
22:01:23 <esowiki> [[Special:Log/newusers]] create * Moose moose moose moose moose * New user account
22:03:34 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=66217&oldid=66164 * Moose moose moose moose moose * (+354)
22:30:34 -!- FreeFull has quit.
22:34:27 <b_jonas> ``` datei # I edited this to show only three digits after the decimal point for seconds
22:34:28 <HackEso> 2019-09-17 22:34:28.192 +0000 UTC September 17 Tuesday 2019-W38-2
22:57:25 <esowiki> [[Special:Log/newusers]] create * MiroslavRD * New user account
23:10:33 -!- Phantom_Hoover has quit (Quit: Leaving).
23:12:13 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=66218&oldid=66217 * MiroslavRD * (+61)
23:13:16 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=66219&oldid=66218 * MiroslavRD * (+600)
23:15:48 <esowiki> [[User:MiroslavRD/vector.css]] N https://esolangs.org/w/index.php?oldid=66220 * MiroslavRD * (+1) Created page with "k"
23:16:10 <esowiki> [[User:MiroslavRD/vector.css]] https://esolangs.org/w/index.php?diff=66221&oldid=66220 * MiroslavRD * (+22)
23:23:18 -!- cocof has joined.
23:23:21 <cocof> https://www.youtube.com/watch?v=7kpDA8wgOrU
23:23:26 <cocof> :D
23:29:14 <cocof> the less people need to work the more watch youtube and IQ drops
23:31:11 -!- b_jonas has quit (Quit: Lost terminal).
23:35:53 <esowiki> [[Sashleyfuck]] N https://esolangs.org/w/index.php?oldid=66222 * MiroslavRD * (+969) Created page with "Sashleyfuck is just like [[Brainfuck]], but it uses the letters S, A, H, L, E, and Y. It was made after [[User:MiroslavRD]] being the biggest Sashley hater. == Commands == S..."
23:36:34 <esowiki> [[Language list]] https://esolangs.org/w/index.php?diff=66223&oldid=66053 * MiroslavRD * (+18) Add my new page
23:37:50 <esowiki> [[Sashleyfuck]] https://esolangs.org/w/index.php?diff=66224&oldid=66222 * MiroslavRD * (+11)
23:40:41 <esowiki> [[Sashleyfuck]] M https://esolangs.org/w/index.php?diff=66225&oldid=66224 * MiroslavRD * (+4) Link to Hello World
23:41:50 <esowiki> [[Sashleyfuck]] M https://esolangs.org/w/index.php?diff=66226&oldid=66225 * MiroslavRD * (+16) Use "Hello, world!" instead of "Hello World!" (link)
23:46:56 <esowiki> [[Brainoof]] N https://esolangs.org/w/index.php?oldid=66227 * MiroslavRD * (+23) Redirect from the Roblox-cleaned Brainfuck
23:47:30 <esowiki> [[Brainfuck]] M https://esolangs.org/w/index.php?diff=66228&oldid=65758 * MiroslavRD * (+10) Added a new clean alternative
23:49:07 <esowiki> [[User:MiroslavRD]] N https://esolangs.org/w/index.php?oldid=66229 * MiroslavRD * (+14) Created page with "A rush editor."
23:50:20 <esowiki> [[User:MiroslavRD]] M https://esolangs.org/w/index.php?diff=66230&oldid=66229 * MiroslavRD * (+25) Rushed my last edit (i'll be editing more later)
23:51:18 -!- cocof has quit (Remote host closed the connection).
23:57:55 -!- sprocklem has joined.
2019-09-18
00:42:26 -!- sprocklem has quit (Ping timeout: 240 seconds).
00:58:31 -!- sprocklem has joined.
01:17:44 <shachaf> kmc: do you know about intel's thing where you're required to mark valid branch targets with an otherwise-nop instruction
01:17:51 <kmc> no
01:18:39 <shachaf> though apparently returns don't count as indirect branches for this purpose
01:18:46 <shachaf> and they have some other thing for that
01:24:38 -!- arseniiv has quit (Ping timeout: 276 seconds).
01:25:58 <kmc> "required"?
01:26:15 <shachaf> I mean, if whatever this feature is is enabled.
01:26:55 <shachaf> Apparently ARM has this too, with bti ("branch target indicator").
01:35:37 -!- sprocklem has quit (Remote host closed the connection).
01:44:37 <kmc> huh
01:44:39 <kmc> what's the point?
01:44:59 <kmc> what's intel's version called?
01:45:01 <kmc> and how do you enable it?
01:45:28 -!- xkapastel has quit (Quit: Connection closed for inactivity).
01:45:31 <kmc> ah, it's for security?
01:45:37 <kmc> that's kind of clever
01:45:52 -!- sprocklem has joined.
01:47:30 <shachaf> Oh, yes, for security.
01:47:50 <shachaf> The Intel version is called CET (Control-flow Enforcement Technology).
02:08:39 -!- sprocklem has quit (Ping timeout: 258 seconds).
02:34:20 -!- sprocklem has joined.
02:48:50 -!- sprocklem has quit (Ping timeout: 240 seconds).
02:54:51 -!- sprocklem has joined.
03:19:25 <kmc> I made a self-deleting shell script
03:19:37 <kmc> it's generated by another script, intended to be edited once and then deleted
03:19:46 <kmc> edited, run once*
03:23:05 <shachaf> `cat bin/slist
03:23:06 <HackEso> echo -n "$(basename "$0")${@:+ }$@: "; tail -n+2 "$0" | xargs; exit \ Taneb \ atriq \ Ngevd \ nvd \ Fiora \ Sgeo \ ThatOtherPerson \ alot
03:23:11 <shachaf> hm
03:23:22 <shachaf> sorry, all pinged
03:23:29 <kmc> for sale: shell script, never run
03:23:35 <shachaf> `` doag bin/slist | rot13
03:23:37 <HackEso> 5366:2015-05-12 <brewn̈a> frq -v "5vaiq" ova/fyvfg \ 5075:2014-10-18 <abegg̈v> frq -v \'/abeggv/q\' ova/fyvfg \ 5073:2014-10-18 <brewn̈a> erireg \ 5072:2014-10-18 <brewn̈a> erireg 5069 \ 5070:2014-10-18 <brewn̈a> frq -v \'f|ez ova/fyvfg; ||\' ova/fyvfg \ 5069:2014-10-18 <brewn̈a> erireg \ 5068:2014-10-16 <Gnar̈o> fyvfg \ 3924:2013-10-18 <Ovẍr> erireg \ 3923:2013-10-18 <Ftr̈b> fyvfg Arjf: Tvtncnhfr \ 3920:2013-10-18 <funpun̈s> frq -v \'f/rkvg/ez
03:23:51 <kmc> also I learned that bash printf has a %q format specifier which escapes the parameter for use in further bash commands
03:23:55 <shachaf> `doag bin/slist
03:23:57 <HackEso> 5366:2015-05-12 <oerjän> sed -i "5invd" bin/slist \ 5075:2014-10-18 <nortẗi> sed -i \'/nortti/d\' bin/slist \ 5073:2014-10-18 <oerjän> revert \ 5072:2014-10-18 <oerjän> revert 5069 \ 5070:2014-10-18 <oerjän> sed -i \'s|rm bin/slist; ||\' bin/slist \ 5069:2014-10-18 <oerjän> revert \ 5068:2014-10-16 <Tanëb> slist \ 3924:2013-10-18 <Bik̈e> revert \ 3923:2013-10-18 <Sgëo> slist News: Gigapause \ 3920:2013-10-18 <shachäf> sed -i \'s/exit/rm
03:23:58 <kmc> `` echo "foo ' bar" | printf "%q\n"
03:23:59 <HackEso> ​''
03:24:10 <kmc> er
03:24:19 <kmc> `` printf "%q\n" "foo ' bar"
03:24:20 <HackEso> foo\ \'\ bar
03:24:22 <kmc> there we go
03:24:24 <shachaf> kmc: Oh, that's pretty fancy.
03:24:28 <kmc> 'tis
03:24:41 <shachaf> If you're writing bash commands something has gone wrong, though. :-(
03:24:46 <kmc> you can also do ${X|@Q} in more recent bashes
03:24:47 <shachaf> I mean scripts.
03:24:51 <kmc> perhaps
03:25:05 <kmc> life involves lots of things going wrong
03:25:11 <kmc> and yet we muddle through
03:26:11 <shachaf> i wrote a small amd64 assembler
03:26:23 <shachaf> it supports movs and jumps so maybe it's turing-complete?
03:26:38 <shachaf> except for the finite-state bit
03:28:31 <kmc> neat
03:28:34 <kmc> why'd you do it?
03:31:23 <shachaf> I just wanted to generate some code and I was tired of handwriting it.
03:34:06 <kmc> ok
03:34:11 <kmc> why not use nasm or something?
03:37:47 <shachaf> Seems silly to go through a whole program that has to parse text and everything?
03:37:57 <shachaf> Maybe nasm is available as a library.
03:39:55 <kmc> well
03:40:01 <kmc> i support your efforts anyway
03:40:04 <kmc> writing an assembler is fun
03:40:09 <kmc> it could be
03:40:15 <kmc> is it a 2 pass thing
03:40:43 <kmc> does it generate relocatable files?
03:42:16 <shachaf> it's a v. simple 1-pass assembler that always uses 4-byte jump offsets and so on, right now
03:42:30 <shachaf> smart assemblers presumably use more than two passes for edge cases
03:43:42 <shachaf> It generates ELF executables right now.
03:43:48 <shachaf> I guess they're dynamically relocatable?
03:44:07 <shachaf> It doesn't support non-internal linkage or anything.
03:51:22 -!- sprocklem has quit (Read error: Connection reset by peer).
03:54:08 <kmc> ok
03:54:12 <kmc> did you use a library to output ELF
03:56:03 <shachaf> no, i wrote out all the bytes
03:56:35 -!- sprocklem has joined.
04:00:38 -!- sprocklem has quit (Client Quit).
04:10:58 <esowiki> [[Talk:ZOWIE]] M https://esolangs.org/w/index.php?diff=66231&oldid=66213 * Ais523 * (-23) /* Turing completeness */ use the correct link syntax for an internal link
04:36:56 -!- Lord_of_Life has quit (Ping timeout: 265 seconds).
04:38:25 -!- Lord_of_Life has joined.
04:43:19 -!- sprocklem has joined.
05:37:58 -!- Sgeo_ has joined.
05:41:08 -!- Sgeo__ has quit (Ping timeout: 246 seconds).
07:37:17 <shachaf> Huh, when you write code in continuation-passing style, you should name the continuation "return".
08:15:52 -!- Frater_EST has joined.
08:16:09 -!- Frater_EST has left.
09:04:18 <fizzie> I thought you should name it "k".
09:04:31 <shachaf> Only if you're reasonable.
09:30:50 -!- imode has quit (Ping timeout: 276 seconds).
09:43:16 -!- cpressey has joined.
09:43:20 -!- wib_jonas has joined.
10:08:46 <fizzie> Does the k stand for "kontinuation"?
10:17:06 <shachaf> I think so.
11:19:40 -!- PaniniTheDevelop has joined.
11:21:06 <PaniniTheDevelop> Hello
11:21:25 <cpressey> Hi PaniniTheDevelop
11:22:16 <myname> do you develop stickers?
11:22:35 <cpressey> fizzie: κ is very traditional, if your chosen notation supports it.
11:28:15 <cpressey> I've been reduced to translating some code of mine from Haskell to Javascript so that I can debug it.
11:28:48 <Taneb> cpressey: that's a depth of hell I've never visited
11:32:17 <wib_jonas> cpressey: that sounds scary
11:32:25 <cpressey> Perhaps it isn't the best idea
11:32:28 <wib_jonas> can't you put printfs in the Haskell code?
11:32:51 <cpressey> uneval(function(x) { return x; }) === "(function(x) { return x; })"
11:33:16 <cpressey> But can I say "deriving (Show)" for a function value in Haskell? Not as far as I'm aware.
11:34:32 <wib_jonas> dunno. you could ask #haskell but you already said they're too abstract and category theorist for you
11:39:58 <fizzie> `js uneval(function(x) { return x; });
11:39:59 <HackEso> ​[eval]:1 \ uneval(function(x) { return x; }); \ ^ \ \ ReferenceError: uneval is not defined \ at [eval]:1:1 \ at Object.exports.runInThisContext (vm.js:54:17) \ at Object.<anonymous> ([eval]-wrapper:6:22) \ at Module._compile (module.js:409:26) \ at node.js:648:27 \ at nextTickCallbackWith0Args (node.js:489:9) \ at process._tickCallback (node.js:418:13)
11:40:12 <fizzie> Apparently you can't say that in "JavaScript" either.
11:41:16 <PaniniTheDevelop> hmm
11:41:48 <fizzie> (It's apparently unique to Firefox.)
11:42:11 <myname> you can do that in lisp, though
11:42:36 <fizzie> `js (function(x) { return x; }).toString();
11:42:37 <HackEso> function (x) { return x; }
11:42:41 <fizzie> Looks like you can do that on nodejs.
11:48:09 <wib_jonas> but does it give you only the body, or also the identity of the closed variables?
11:50:32 <fizzie> I think it's only the source text.
11:51:49 <fizzie> `js function f(x) { return function(){return x+1} } f(1).toString() + f(2).toString();
11:51:50 <HackEso> function (){return x+1}function (){return x+1}
11:52:17 <wib_jonas> what engine does this `js run?
11:52:18 <wib_jonas> `? `js
11:52:20 <HackEso> ​`js? ¯\(°​_o)/¯
11:52:23 <fizzie> It's nodejs.
11:52:42 <fizzie> I just added it to replace the broken previous `js, so it doesn't have an entry anywhere.
11:52:48 <fizzie> `cat bin/js
11:52:49 <HackEso> ​/usr/bin/js -p "$*"
11:53:28 <fizzie> The previous one was I think Rhino. But it got broken in the migration because there's no JRE installed on the system.
11:55:07 <fizzie> `js process.versions.v8
11:55:09 <HackEso> 4.5.103.46
11:55:16 <fizzie> I guess strictly speaking that's the "engine".
11:56:02 <fizzie> `js JSON.stringify(process.versions)
11:56:06 <HackEso> ​{"http_parser":"2.7.0","node":"4.8.2","v8":"4.5.103.46","uv":"1.9.1","zlib":"1.2.8","ares":"1.10.1-DEV","icu":"57.1","modules":"46","openssl":"1.0.2k"}
12:03:43 <cpressey> Yeah, it wasn't the best idea. But I don't know where y'all're getting this "depth of hell" stuff from, Javascript's a lovely language!
12:04:18 -!- atslash has joined.
12:04:22 * cpressey tries hard to keep a straight face
12:08:25 <wib_jonas> cpressey: of course it seems enticing at first.
12:08:50 <wib_jonas> it only reveals its true face once you've invested enough to no longer be able to change your existing code to a different language easily.
12:09:43 -!- arseniiv has joined.
12:13:50 -!- PaniniTheDevelop has quit (Remote host closed the connection).
12:14:59 <arseniiv> wow what a weather. September onwards until snow falls, here are usually rains only. Now I heard thunder two times, and tiny ice chunks fall. Didn’t think convection is still good enough, given there weren’t thunderstorms for weeks
12:15:20 -!- arseniiv has quit (Quit: gone completely :o).
12:19:03 -!- PaniniTheDevelop has joined.
12:19:10 <PaniniTheDevelop> rip
12:25:55 -!- arseniiv has joined.
12:26:11 -!- PaniniTheDevelop has quit (Remote host closed the connection).
12:49:11 <esowiki> [[Fishing]] https://esolangs.org/w/index.php?diff=66232&oldid=66211 * Dtuser1337 * (+24)
13:04:39 <esowiki> [[Truth-machine]] https://esolangs.org/w/index.php?diff=66233&oldid=66135 * Dtuser1337 * (+73) /* > */
13:06:16 <esowiki> [[Hello world program in esoteric languages]] https://esolangs.org/w/index.php?diff=66234&oldid=66210 * Dtuser1337 * (+57) /* FiM++ */
13:06:58 <esowiki> [[Fishing]] https://esolangs.org/w/index.php?diff=66235&oldid=66232 * Dtuser1337 * (-12) /* Hello, World! */ why adding <pre> when there a space before it.
13:08:19 <esowiki> [[Turth-machine]] https://esolangs.org/w/index.php?diff=66236&oldid=65569 * Dtuser1337 * (+22)
13:10:51 <esowiki> [[Talk:MSM]] https://esolangs.org/w/index.php?diff=66237&oldid=65203 * Dtuser1337 * (-41) Nani!? This must be the work of a enemy stand! they blanked the page and removed the redirect!!!!!!!!!!11111111111111111 this is awfullll!!!!!!!!!!!!!!!!!!!!11111!!!!!!!111111111!!!!!!!!
13:11:12 <myname> oh dear
13:14:34 <esowiki> [[User:Dtuser1337/Sandbox]] https://esolangs.org/w/index.php?diff=66238&oldid=66101 * Dtuser1337 * (+2696)
13:15:00 <esowiki> [[User:Dtuser1337/Sandbox]] https://esolangs.org/w/index.php?diff=66239&oldid=66238 * Dtuser1337 * (-1) /* commands */
13:27:07 <esowiki> [[User:Dtuser1337/Sandbox]] https://esolangs.org/w/index.php?diff=66240&oldid=66239 * Dtuser1337 * (+66) /* commands */
14:22:02 -!- arseniiv has quit (Ping timeout: 276 seconds).
14:24:25 -!- arseniiv has joined.
14:26:15 -!- APic has quit (Ping timeout: 268 seconds).
14:30:44 -!- APic has joined.
15:20:14 <esowiki> [[Flop]] https://esolangs.org/w/index.php?diff=66241&oldid=65750 * InfiniteDonuts * (-239)
15:41:06 <esowiki> [[Special:Log/move]] move * InfiniteDonuts * moved [[Flop]] to [[Brainflop]]: Name changed
15:41:20 <esowiki> [[Brainflop]] https://esolangs.org/w/index.php?diff=66244&oldid=66242 * InfiniteDonuts * (+5)
15:44:49 -!- tromp_ has joined.
15:47:23 -!- tromp has quit (Ping timeout: 252 seconds).
15:54:29 -!- wib_jonas has quit (Remote host closed the connection).
15:59:39 -!- cpressey has quit (Quit: I got BLISTERS on my FINGERS *thwannggg*).
16:15:08 -!- arseniiv has quit (Ping timeout: 276 seconds).
16:28:25 -!- arseniiv has joined.
16:31:20 -!- FreeFull has joined.
16:33:53 <esowiki> [[Hexar]] N https://esolangs.org/w/index.php?oldid=66245 * Enchant3d * (+6052) Created page with "'''Hexar''' is an [[esoteric programming language]] which uses almost only hexadecimal numbers. ==Language overview== Hexar runs on an array that can contain only positive num..."
16:35:04 -!- Lord_of_Life_ has joined.
16:35:06 <esowiki> [[Language list]] https://esolangs.org/w/index.php?diff=66246&oldid=66223 * Enchant3d * (+12) /* H */
16:37:07 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
16:37:07 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
16:46:56 <esowiki> [[ABC]] M https://esolangs.org/w/index.php?diff=66247&oldid=65492 * Dtuser1337 * (+59)
18:29:12 <esowiki> [[@NUM]] https://esolangs.org/w/index.php?diff=66248&oldid=66209 * KrystosTheOverlord * (-4261)
18:57:54 -!- Phantom_Hoover has joined.
19:03:06 -!- dingwat has joined.
19:22:43 -!- MrBismuth has quit (Read error: Connection reset by peer).
19:23:55 -!- MrBismuth has joined.
19:34:51 -!- imode has joined.
19:47:02 -!- APic has quit (Ping timeout: 276 seconds).
19:51:13 -!- Cale has quit (Ping timeout: 252 seconds).
19:56:05 <esowiki> [[Special:Log/newusers]] create * Tetratrary * New user account
20:04:19 -!- Cale has joined.
20:13:46 -!- APic has joined.
20:18:22 -!- APic has quit (Ping timeout: 245 seconds).
20:28:50 -!- MDude has quit (Ping timeout: 240 seconds).
20:49:45 -!- MDude has joined.
20:55:26 -!- b_jonas has joined.
21:05:08 <shachaf> Are there any interesting esolangs based on the idea of jumping into the middle of an instruction?
21:06:02 <b_jonas> dunno. you can do that in a lot of low-level languages, but I don't know any that really require it
21:06:21 <shachaf> I know you can do it but usually it's only in special cases.
21:06:43 <shachaf> I'm thinking of a language where doing things like that is required to do computation.
21:07:22 <olsner> maybe you could advance the instruction pointer by one byte instead of the size of an instruction (and have all instructions be at least 2 bytes large to make it interesting)
21:07:37 <b_jonas> shachaf: there might be something like bytepusher, but that modifies an instruction as it executes it. I might have even seen one but I don't recall which esolang
21:08:32 <shachaf> I guess more broadly you could ask for something that interprets the same instructions multiple different ways.
21:10:11 <b_jonas> shachaf: that's a bit easier. Piet can interpret the same instruction in different ways
21:10:51 <b_jonas> heck, even in befunge we have instructions that we use in multiple ways depending on the direction of execution
21:11:01 <shachaf> I guess so.
21:11:03 <b_jonas> that should count as similar to jumping into the middle of an instruction
21:11:11 <shachaf> It's funny that these disassemble differently:
21:11:16 <shachaf> `asm jmp 0
21:11:17 <HackEso> 0: e9 00 00 00 00 jmpq 0x5
21:11:18 <shachaf> `asm jmp $0
21:11:19 <HackEso> 0: e9 00 00 00 00 jmp 0x5
21:14:19 <b_jonas> shachaf: I think that's because the `asm command guesses different assembly syntaxes from your input
21:14:57 <shachaf> Yes, that's why.
21:18:18 <b_jonas> Forte, SMETANA, ///, Fuun DNA are all self-modifying, and in an interesting way where the self-modifying entails more than just modifying plain memory offset or immediate operands of instructions, but I don't think you could say that you usually jump into the middle of an instruction in them
21:18:37 <b_jonas> even though in /// and Fuun DNA, you could overlap instructions in interesting ways if you wanted to
21:18:49 <b_jonas> but that's impractical just like in x86
21:19:05 <b_jonas> so all that you normally do is to put instructions as arguments into other instructions
21:19:15 <b_jonas> or put parts of instructions as arguments into other instructions if you wish
21:19:36 <b_jonas> ah yes
21:19:40 <b_jonas> it was MiniMAX
21:19:54 <b_jonas> hmm no
21:20:05 <b_jonas> I think you can't overlap instructions in MiniMAX
21:20:30 <b_jonas> no wait
21:20:32 <b_jonas> you CAN overlap them
21:20:51 <b_jonas> in fact iiuc, MiniMAX does essentially require you to overlap instructions if you want to write useful programs
21:20:56 <b_jonas> shachaf: that's your answer, you want MiniMAX
21:22:32 <shachaf> Aha.
22:15:05 -!- APic has joined.
22:36:36 <fizzie> Today's possible GCC bug: with `#define b +` as the context, the expression `0b10` is either treated as a binary literal (-std=c11) or an error (-std=c11 -pedantic), while in a strictly conforming implementation I believe it should be treated as `0+10`.
22:39:08 -!- Lykaina has joined.
22:39:48 <Lykaina> hi
22:39:56 <fizzie> Rationale: In translation phase 3 the input is decomposed into preprocessing tokens. C11 6.4p4 says "the next preprocessing token is the longest sequence of characters that could constitute a preprocessing token", which should at the start be "0" (as a pp-number), next "b" (as an identifier) and then finally "10" (again a pp-number). That sequence of tokens would then in translation phase 4 have the "b"
22:40:02 <fizzie> token undergo macro invocation to expand to "+".
22:41:20 <Lykaina> made a tiny version of echidna (unfortunately with all different letters) for my arduino
22:43:08 <int-e> fizzie: so b10 is not an identifier?
22:43:13 <shachaf> I think "#define b +" should just crash the compiler.
22:43:41 <fizzie> int-e: Oh, I guess it is. Good point.
22:43:49 <fizzie> int-e: Well, you can modify the example appropriately.
22:44:15 <fizzie> Let's say `#define b10 +10` then.
22:45:42 <fizzie> Although maybe `#define b1 -1` and `0b1` is better, it's pleasantly symmetrically either +1 or -1. Or would be if it didn't get treated as a binary literal in all cases.
23:02:50 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
23:12:35 * Lykaina lets out an f-bomb
23:13:02 <Lykaina> i just saved over something i was working on for a while
23:14:53 <Lykaina> no way to effing restore the douments
23:16:36 <int-e> sucks... the only condolence I can offer is that it'll likely be better the second time
23:17:32 <int-e> `grWp backup
23:17:34 <HackEso> taneb:Taneb is not elliott, no matter whom you ask. He also isn't a rabbi although has pretended in the past. He has at least two backup keyboards with dodgy SHIFT KEys, cube root of nine genders, one of which is a Czech woman, and above average, not too voluminous, but calm eyebrows. He sometimes invents without noticing it (see: tanebventions).
23:17:40 <int-e> `quote backup
23:17:41 <HackEso> 791) <fizzie> Backups are so like one of those circus guys walking on a wire except with a safety rope. \ 1082) <fizzie> Possible business plan: data storage on the moon? <fizzie> Getting at it after the collapse of civilization here might be an issue. <boily> who cares about civilization? you have backups!
23:18:34 <int-e> This channel is populated by smart people. Sometimes it shows.
23:19:07 <fizzie> Not sure this was one of those times.
23:20:02 <shachaf> int-e: Huh. Somehow I read your 16:16 comment as starting with the word "life", several times.
23:20:11 <shachaf> The word doesn't seem to be present now. Very odd.
23:22:33 <int-e> shachaf: I went back in time and erased it, mwahahaha.
23:22:50 <shachaf> Was life better the second time?
23:23:05 <int-e> no, it was gone
23:26:14 <Lykaina> video game universe, everyone gets 3
23:26:29 <int-e> that seems unfair to cats
23:27:02 <shachaf> `? cat
23:27:03 <HackEso> Cats are cool, but should be illegal.
23:27:14 <shachaf> Where do I express my membership in the cat fan club?
23:28:50 <int-e> That's the sole purpose of Instagram I believe.
23:30:01 <int-e> always these extrapolation problems... 0m0.175s / 0m1.565s / 0m13.975s / 2m5.592s / 18m58.191s / ???
23:30:29 <int-e> (I was estimating 3 hours and it's at 164m)
23:30:38 <Lykaina> http://sif.lesidhetree.com/sara/echidna/Echidna%20v0_11a1b_1.pdf
23:31:01 <Lykaina> http://sif.lesidhetree.com/sara/echidna/echidna-uno-doc.pdf
23:32:05 <shachaf> I wish C varargs were better.
23:32:24 <int-e> shachaf: fwiw, the statement "life sucks" would not face much opposition from my side.
23:32:45 <shachaf> `? life
23:32:46 <HackEso> ​‘Life,’ said Marvin, ‘don't talk to me about life.’
23:32:47 <int-e> I'd probably limit myself to pointing out that it's better than the alternative.
23:32:56 <Lykaina> is it?
23:33:23 <int-e> Well, s/pointing out/claiming/ if you like.
23:33:51 <int-e> There's potential in life. There's no potential in death.
23:33:54 <shachaf> It would be nice, I think, if C had some kind of runtime-accessible type info.
23:34:04 <shachaf> And then varargs included information about it.
23:34:29 <shachaf> I fake that for http://slbkbs.org/tmp/fmt.txt
23:35:11 <Lykaina> the thing i had to redo and was swearing about the original: http://sif.lesidhetree.com/sara/echidna/dec%20sixbit.pdf
23:36:04 <int-e> shachaf: but would it still be C then?
23:36:10 <fizzie> int-e: The ??? is 1h16m7.135s hth
23:36:29 <int-e> fizzie: we're way past that point :P
23:36:38 <shachaf> int-e: No, but I guess that's OK.
23:36:56 <shachaf> I guess I should use this language: https://github.com/pervognsen/bitwise/blob/master/notes/ion_motivation.md
23:37:58 <int-e> fizzie: https://gist.github.com/int-e/21f328a88bfd96146a5df0937b9b743d is the context... it *is* hard to predict these kind of searvhes.
23:38:37 <shachaf> What are you searching for?
23:38:44 <int-e> fizzie: but I'd fit an exponential function
23:39:00 <shachaf> My extrapolation advice is: If f(1) = 1 and f(2) = 3, f is probably TREE.
23:39:12 <int-e> shachaf: the current run is powers of two such that all but 13 of the last k digits are 9... maximizing k.
23:39:53 <int-e> shachaf: the file has results for 13 replaced with 8..12
23:40:17 <fizzie> int-e: I always fit a polynomial of degree n if given n+1 points to work with.
23:40:27 <int-e> Oh, it's done.
23:40:30 <int-e> user 173m33.476s
23:40:47 <Lykaina> what were you compiling?
23:40:57 <Lykaina> or running?
23:41:13 <int-e> Lykaina: see the above link... it's a C++ program
23:44:58 <shachaf> int-e: That reminds me, my "time" program only shows seconds, not minutes.
23:45:03 <shachaf> Is that worth fixing?
23:45:32 <shachaf> I think "time" should be built in to my shell. It should time every command it runs automatically, and give me the information if I request it.
23:45:36 <int-e> shachaf: entirely up to you
23:45:51 <int-e> arguably minutes are more human readable
23:46:02 <int-e> but not much
23:46:52 <int-e> "but not by much" is more proper I guess
23:47:16 <shachaf> The few times I ran it on time scales where minutes were useful, I divided by 60 manually.
23:48:23 <shachaf> Man, my time program is so good. It's the best.
23:51:53 <Lykaina> did i pick the right subset of echidna for the arduino?
23:52:47 <int-e> shachaf: It's great to hear that you're happy with *something*.
23:52:52 <fizzie> `which time
23:52:53 <HackEso> No output.
23:52:56 <shachaf> int-e: Oh no. :-(
23:53:02 <fizzie> Huh, there's no time program on HackEso at all.
23:53:03 <shachaf> int-e: Have I been complaining too much?
23:53:14 <fizzie> Just a shell builtin. Or maybe several of them.
23:53:21 <shachaf> `` type -a time
23:53:22 <HackEso> time is a shell keyword
23:53:28 <shachaf> Not even a builtin!
23:53:54 <Lykaina> `time
23:53:55 <HackEso> ​/srv/hackeso-code/multibot_cmds/lib/limits: line 5: exec: time: not found
23:54:07 <Lykaina> `date
23:54:09 <HackEso> Wed Sep 18 23:54:08 UTC 2019
2019-09-19
00:00:13 -!- FreeFull has quit.
00:03:36 <int-e> shachaf: I'm not sure about whether it's *too* much. :P
00:04:06 -!- oerjan has joined.
00:05:36 <Lykaina> just backed up echidna-uno
00:06:18 <fizzie> `` date && time;
00:06:19 <HackEso> real: 0m0.000s, user: 0m0.000s, sys: 0m0.000s \ Thu Sep 19 00:06:19 UTC 2019
00:06:35 <fizzie> The empty command: it's fast.
00:06:47 <shachaf> Running commands isn't that fast.
00:07:13 <Lykaina> takes several seconds to compile echidna
00:10:16 <Lykaina> i'll go time it
00:11:29 <Lykaina> `datereal0m0.901s
00:11:29 <Lykaina> user0m0.512s
00:11:29 <Lykaina> sys0m0.264s
00:11:30 <HackEso> ​/srv/hackeso-code/multibot_cmds/lib/limits: line 5: exec: datereal0m0.901s: not found
00:11:37 <Lykaina> oops
00:12:18 <Lykaina> stupid scrollwheel
00:13:34 * oerjan scrolls a bit in the logs and notices someone called PaniniTheDevelop
00:13:54 <oerjan> i'm now hoping for a sanskrit-grammar-based esolang
00:14:11 * oerjan won't read all the logs these days, alas
00:14:17 <Lykaina> real0m2.296s
00:14:18 <Lykaina> user0m1.595s
00:14:18 <Lykaina> sys0m0.674s
00:14:27 <Lykaina> that's another machine
00:15:11 <Lykaina> the one i do most my coding on
00:15:43 <Lykaina> hi oerjan
00:15:50 <oerjan> hi Lykaina
00:16:02 <Lykaina> how's agora?
00:16:21 <oerjan> i don't know, i'm about a month backlogged, although it's still alive
00:16:27 <Lykaina> wow
00:16:33 <oerjan> make that 1 month 11 days
00:17:04 <oerjan> where i'm at they were doing a Birthday Tournament based on the Fantasy Rules Committee
00:17:36 <Lykaina> i'm thinking of rejoining
00:17:49 <oerjan> and trying to clear up bugs for a broken space minigame
00:17:59 <oerjan> (in Agor itself)
00:18:02 <oerjan> *Agora
00:19:02 <Lykaina> but i need to find out if any of my email addresses are still receiving stuff
00:19:06 * oerjan is actually trying to read _that_ log, but has about 450 messages left
00:19:58 <shachaf> So is there a nomic-style thing based on something computer-interpretable which is good?
00:20:16 <int-e> oerjan: are you adding messages to the log faster than you read them?
00:20:53 <oerjan> shachaf: i don't know but i had some fun in schemenomic way back
00:21:40 <oerjan> int-e: not on average but i go several days between binges
00:21:50 <oerjan> well, it's about the same days i'm on irc
00:21:57 <oerjan> a bit fewer
00:27:41 <oerjan> once again schlock mercenary (from yesterday) triggers my fridge logic: what's to prevent the pa'anuri from obliterating the station with their long gun the moment they notice it's been retaken?
00:28:18 <oerjan> unlike the ship, it's unlikely to be able to do massive evasion maneuvers
00:31:22 -!- Cale has quit (Remote host closed the connection).
00:31:50 <int-e> oerjan: nothing? it is a great risk :P
00:32:48 <int-e> (I don't know where Howard Taylor is going with this atm. My thought was that if you want to kill off a nigh-indestructible amorph, this is one way to do it.)
00:33:02 -!- arseniiv has quit (Ping timeout: 276 seconds).
00:33:22 <oerjan> he's been killed off before, restored from backup
00:33:30 <oerjan> and these days everyone has backups
00:33:36 <int-e> Yeah that's the hole in my idea.
00:33:49 <int-e> Maybe the backup servers... but those have never been talked about.
00:34:23 <oerjan> i hope they do multiple redundancy.
00:35:35 <int-e> This is the last book... will he bring up old, forgotten lore? Gate keepers, attorney drones (too bad about that contract)...
00:36:15 <oerjan> and it's not clear how distributed they are. many people might not want Petey / the Oafans to have that complete control so maybe they have their own servers.
00:36:28 <int-e> Anyway. I like the characters, I've always liked the grand scheme of things so far... I forgive the details :)
00:36:46 <int-e> I
00:36:54 <int-e> I'll wait to see where this is going.
00:37:00 <oerjan> another fridge logic: _if_ petey controls all the backups then he could essentially do the Gatekeeper scheme without killing people
00:37:45 <int-e> But he's benevolent... right?! :P
00:38:11 <oerjan> i'm hoping to see Pa'anuri talk at some point. for other enemy races, tayler has pretty much always shown that not everyone is evil, but not for the pa'anuri.
00:39:11 <int-e> Again, I'm happy to wait and see.
00:39:15 <oerjan> well maybe not always. but often.
00:39:41 <int-e> . o O ( attorney drones are another exception :P )
00:39:46 <oerjan> i'm thinking there are so many loose ends, how can they possibly fit in one book.
00:39:51 <oerjan> true
00:39:57 -!- Cale has joined.
00:40:22 <int-e> I suspect some loose ends will be left behind for good.
00:40:28 <int-e> Especially from the early books.
00:43:51 <oerjan> yeah
00:45:15 <int-e> In the meantime I'm wondering who exactly the attacker in GG is. (Is it Lucrezia? Is it a van Rijn clank?)
00:45:35 <oerjan> i thought it was pretty clearly lucrezia
00:45:48 <oerjan> she admits to having killed Queens before, after all
00:46:01 <int-e> It's just... time travel is so weird.
00:46:38 <oerjan> and she can hop bodies too
00:46:41 <int-e> But yeah maybe for this particular question I'm just stupid.
00:47:09 <oerjan> i'm also wondering whether she's organic or a clank, though, the color is a bit ambiguous
00:52:18 <oerjan> lucrezia's time travel appears to be of the novikov self consistency principle kind, which is still mind bending but a bit saner than rewriting timelines
00:54:32 <oerjan> incidentally, that purple extradimensional gentleman apparently has a name that is only visible in the chapter selection menu
00:54:53 <oerjan> (although people on the girl genius wiki have picked it up)
01:06:21 -!- imode has quit (Ping timeout: 268 seconds).
01:13:30 <b_jonas> "This is the last book..." => ah yes. and it's the last book of OotS too. it's crazy how far we've gone. we've been reading it for a while.
02:11:03 -!- Phantom_Hoover has joined.
02:52:34 -!- imode has joined.
03:17:02 -!- Phantom_Hoover has quit (Ping timeout: 265 seconds).
03:17:35 <Lykaina> b_jonas: does this have enough from echidna? http://sif.lesidhetree.com/sara/echidna/echidna-uno-doc.pdf
03:18:25 <Lykaina> oh, 256 1-byte memory on this one
03:41:00 <Lykaina> correction: http://sif.lesidhetree.com/sara/echidna/echidna-uno-doc_1.pdf
04:26:23 -!- tromp_ has quit (Remote host closed the connection).
04:27:22 -!- oerjan has quit (Quit: Nite).
04:37:26 -!- Lord_of_Life has quit (Ping timeout: 276 seconds).
04:38:36 -!- Lord_of_Life has joined.
05:09:10 -!- tromp has joined.
05:13:50 -!- tromp has quit (Ping timeout: 276 seconds).
06:15:13 <Lykaina> correction: http://sif.lesidhetree.com/sara/echidna/echidna-uno-doc_0002.pdf
06:15:47 -!- rodgort has quit (Quit: Leaving).
06:20:00 -!- rodgort has joined.
06:21:37 <Lykaina> night
06:21:46 -!- Lykaina has quit (Quit: leaving).
06:47:42 -!- tromp has joined.
06:49:35 -!- tromp_ has joined.
06:53:56 -!- tromp has quit (Ping timeout: 276 seconds).
07:05:37 -!- Lord_of_Life has quit (Read error: Connection reset by peer).
07:10:35 -!- Lord_of_Life has joined.
07:39:55 -!- b_jonas has quit (Remote host closed the connection).
08:04:15 <esowiki> [[User talk:Fizzie]] N https://esolangs.org/w/index.php?oldid=66249 * YamTokTpaFa * (+365) /* Requesting to install Extension:Math to this wiki */ new section
08:05:12 <esowiki> [[Totally Accurate Malbolge]] https://esolangs.org/w/index.php?diff=66250&oldid=55343 * YamTokTpaFa * (+29)
08:05:41 <esowiki> [[Cubestate]] https://esolangs.org/w/index.php?diff=66251&oldid=53053 * YamTokTpaFa * (+24)
08:09:27 -!- imode has quit (Ping timeout: 265 seconds).
08:10:22 <esowiki> [[Template:Disambig]] https://esolangs.org/w/index.php?diff=66252&oldid=30340 * YamTokTpaFa * (+160)
08:10:38 <esowiki> [[Template:Disambig]] M https://esolangs.org/w/index.php?diff=66253&oldid=66252 * YamTokTpaFa * (-1)
08:13:50 <esowiki> [[Esolang talk:Introduce yourself]] N https://esolangs.org/w/index.php?oldid=66254 * YamTokTpaFa * (+255) /* Shall we archive this project page regularly? */ new section
08:14:56 <esowiki> [[Mindcrush]] https://esolangs.org/w/index.php?diff=66255&oldid=40559 * YamTokTpaFa * (+60)
08:15:24 <esowiki> [[Codesine/implementation]] https://esolangs.org/w/index.php?diff=66256&oldid=44357 * YamTokTpaFa * (+30)
08:28:06 -!- cpressey has joined.
08:28:35 -!- Phantom_Hoover has joined.
08:42:35 <esowiki> [[FISHQ9+]] https://esolangs.org/w/index.php?diff=66257&oldid=53379 * Dtuser1337 * (+4) /* C */
08:52:43 -!- tromp_ has quit (Remote host closed the connection).
08:54:13 -!- tromp has joined.
08:56:26 -!- tromp_ has joined.
08:59:13 -!- tromp__ has joined.
08:59:23 -!- tromp has quit (Ping timeout: 276 seconds).
09:00:39 -!- tromp_ has quit (Ping timeout: 252 seconds).
09:04:35 -!- tromp__ has quit (Ping timeout: 276 seconds).
09:12:47 -!- tromp has joined.
09:18:29 <esowiki> [[User talk:Fizzie]] https://esolangs.org/w/index.php?diff=66258&oldid=66249 * Fizzie * (+901) /* Requesting to install Extension:Math to this wiki */ Thoughts.
09:20:56 -!- ais523 has joined.
09:25:10 <ais523> fizzie: "0b10" is a pp-number (n1570 6.4.8p1), thus by 6.4p4 parsing it as "0 b 10" is not allowed; so this is a syntax error as there's no valid parses
09:25:38 <ais523> there's a nice example in 6.4p5 that specifically talks about this case, and it's compared to the example of x+++++y (which is also a syntax error)
09:25:58 <ais523> although I guess this is more about lexing than parsing
09:27:23 <ais523> now, you can certainly make a reasonable argument that pp-numbers shouldn't allow random letters embedded in them, but they dod
09:27:24 <ais523> *do
09:28:31 <fizzie> ais523: Oh, I didn't notice it has got /identifier-nondigit/ in it.
09:28:37 <ais523> hmm, re the discussion of time(1): how does that command actually work? what's the API for timing commands?
09:28:37 <fizzie> That's a bit funky.
09:29:01 <fizzie> I just saw it's got special formats for e, E, p, P and thought it'd be an exhaustive list.
09:29:16 <ais523> e, E, p, P are the only letters that bridge a sign to their right
09:29:29 <ais523> other letters are allowed but don't incorporate a + or - to their right as part of the number
09:29:34 -!- wib_jonas has joined.
09:30:15 <ais523> hmm, this reminds me of a huge annoyance I have with languages that allow - in identifiers
09:30:33 <ais523> the problem is that identifiers then end up with a random mix of hyphens and underscores in and it's hard to remember which to use
09:30:35 <wib_jonas> ais523: that is at least more consistent with C++'s relaxed rules, which allow most combinations of numbers and letters as a token lexed to a user-defined literal
09:30:42 <fizzie> By the way, the context for this was whether GNU C (with -fno-gnu-keywords, otherwise it's clear) is a superset of C in the sense that all strictly conforming programs behave the same.
09:30:48 <ais523> if a language allows hyphens in identifiers, it should probably ban underscores, and vice versa
09:30:49 <wib_jonas> (and their more relaxed rules for string literals and character literals)
09:30:59 <wib_jonas> this way we can have one preprocessor that works for all language variants
09:31:24 <ais523> ah right, the preprocessor is meant to be the same between C and C++, isn't it?
09:31:24 <fizzie> I was reading through the extensions and landed on binary literals in the hopes of making those valid, but looks like the pp-number thing precludes that.
09:32:11 <ais523> in C89/GNU89, you can use // comments to tell the two languages apart using the //*…*/ trick
09:32:38 <ais523> oh, there's also the extern inline thing
09:32:39 <wib_jonas> ais523: I think the opposite way, a language should allow hyphens, underscores, and one or two more characters in identifiers, because that way you can conveniently put base64-encoded stuff into generated identifiers, and still have a delimiter
09:33:01 <wib_jonas> but of course printable ascii characters are sparse, so this may not be practical in some languages
09:33:02 <ais523> but maybe -fno-gnu-keywords would disable that? logically it should
09:33:33 <wib_jonas> and hyphens are already used for other meanings in C and many languages, so we shouldn't allow hyphens in particular
09:33:38 <fizzie> ais523: I think it disables 'inline' in C90 mode.
09:33:42 <ais523> isn't that just an argument for allowing two punctuation marks as part of an identifier?
09:33:51 <fizzie> Er, GNU90 mode.
09:33:56 <ais523> many languages have that, the most common choices being $ and _
09:33:57 <shachaf> Do you think languages should allow spaces in identifiers, like ALGOL 68?
09:34:21 <ais523> shachaf: oddly the use of _ within identifiers may have indirectly come from ALGOL 68
09:34:27 <wib_jonas> ais523: yes, it doesn't need to be hyphen specifically, though there's some precedent for hyphens
09:34:45 <ais523> in ambiguous situations you used a leading . to mark something a keyword and leading or trailing _ to mark something as an identifier
09:34:51 <wib_jonas> there's also precedent for not allowing hyphens, but allowing _ @ $ . and I think one more in assembly syntax
09:34:54 <wib_jonas> let me check
09:34:57 <ais523> and with two-word identifiers it was usual to put the _ between the words to mark them both as identifiers
09:35:16 <wib_jonas> though this is used more on windows
09:35:27 <ais523> wib_jonas: it makes a lot of sense for asm to allow at least one character the source language doesn't
09:35:31 <ais523> so that you can generate temporary identifiers
09:35:40 <wib_jonas> ais523: yes, or mangled identifiers
09:36:03 <ais523> some languages allow arbitrary strings as identifiers, but you can't write them literally in source code
09:36:11 <wib_jonas> but on the other hand, it also makes sense to allow that character in the source language, possibly with some escaping, but heavily discourage using it in production, because it may clash with temporary or mangled identifiers,
09:36:24 <ais523> there's some escape syntax, normally similar to that for strings but with a different delimeter
09:36:36 <myname> ais523: afaik php does that
09:36:47 <wib_jonas> so that if you _really_ want to, you can write C code that directly refers to C++ identifiers, even if they're mangled the windows way with @ signs, rather than the unix way with ZZ prefix
09:37:01 <myname> like, you can happily define $GLOBALS[""] but you cannot access it via $
09:37:03 <wib_jonas> we already have this working as the de facto way to access fortran identifiers from C
09:37:11 <wib_jonas> you just append an underscore
09:37:46 <ais523> VHDL actually disallows two consecutive underscores from appearing anywhere in an identifier
09:37:48 <shachaf> ais523: Was this on plaforms that didn't support bold keywords?
09:37:51 <ais523> presumably for this sort of reason
09:37:54 <ais523> shachaf: i.e. all of them
09:37:58 <wib_jonas> "arbitrary strings as identifiers, but you can't write them literally in source code" => yeah. perl allows arbitrary or almost arbitrary strings, definitely much more freely than the ordinary identifier syntax
09:38:12 <wib_jonas> and in fact this is used for some internal hidden stuff, although somewhat inconsistently
09:38:13 <ais523> "keywords in bold, identifiers in italic" is the "official" definition of the language but nobody actually stores programs like that
09:38:18 <shachaf> Should I support spaces in identifiers?
09:38:31 <shachaf> Hmm, why not?
09:38:40 <shachaf> It works for colorForth.
09:39:51 <wib_jonas> https://sourceware.org/binutils/docs-2.32/as/Symbol-Intro.html#Symbol-Intro says that gas allows $ _ . as punctuation
09:40:07 <wib_jonas> details depend on the architecture conventions
09:41:03 <wib_jonas> shachaf: that too depends on the language. in some languages it makes sense, in others it doesn't. it can also make sense to allow but _ignore_ spaces in identifiers.
09:41:42 <ais523> wib_jonas: :: and ' are treated as synonymous inside an identifier
09:42:03 <ais523> in Perl
09:42:10 <wib_jonas> ais523: IIRC only if you use symbolic references, not if you access the symbol table directly
09:42:12 <wib_jonas> let me check
09:42:26 <wib_jonas> also :: is special because it delimits packages
09:43:33 <ais523> if you're accessing the symbol table directly, is it even an identifier any more?
09:44:48 <ais523> anyway, ${":'::"} and ${"::':"} turn out to be different variables (the latter is the same variable as ${":::::"})
09:45:01 <wib_jonas> also :: is special because it delimits packages
09:45:10 <wib_jonas> `perl -e $f::g = 3; $t = 4; $u = 5; $::{"f::g"} = *t; $::{"f'g"} = *u; print join(",", ${"f::g"}, ${"f'g"}, ${$::{"f::g"}}, ${$::{"f'g"}});
09:45:11 <HackEso> 3,3,4,5
09:45:29 <wib_jonas> ^ right. though I think a few of the rules have changed at some point after perl 5.12
09:45:40 <ais523> yes, I know, ' is special for the same reason
09:45:57 <ais523> this is mostly useless in modern Perl, but it has lead to some interesting modules like ACME::Don't
09:46:04 <fizzie> Ah, the T_PAAMAYIM_NEKUDOTAYIM token.
09:46:37 <fizzie> I think they at least changed the error message to no longer say that in PHP, and added T_DOUBLE_COLON as an alias for the token.
09:46:56 <ais523> is there an explanation for why it was in Hebrew in the first place? IIRC the other tokens weren't
09:46:58 <wib_jonas> ais523: yeah, maybe it doesn't count as an identifier then, I don't know. the symbol table still doesn't behave like an ordinary hash, but its keys mostly do, only its values don't
09:47:07 <ais523> …did PHP's parser use strlen for hashing too? :-D
09:47:40 <fizzie> I think it was in Hebrew just as a little easter egg about the developers.
09:50:27 <ais523> (the reason PHP's built-in functions are named so inconsistently is that they used to be hashed using strlen, and thus needed a wide distribution among the possible names)
09:51:24 <myname> ew
09:51:38 <shachaf> One odd thing is that "nekudatayim" would be a more correct transliteration.
09:52:56 <myname> one of my favorite php bugs was that matching for class names or interfaces is made on lowercase of the name. this results in class Foo implement BarInterface not working on turkish locales because lowercase will result in a small i without a dot which does not match the small i with the dot that it's matched against
09:54:45 <wib_jonas> myname: right. which is why compilers shouldn't care about the locale, not even as much as javac does, to decide what encoding to decode string literals from
09:55:29 <ais523> if a program uses locale-sensitive operations (e.g. is written case-insensitively), it should have an explicit locale declaration, just like programs typically have an explicit encoding declaration
09:56:17 <wib_jonas> also excel cares about the number and date formats that are set globally to the user, so some more obscure things that you can do with macros (that effectively eval a formula) will break if you use the spreadsheet on a machine with different settings,
09:57:22 <ais523> it's a very common mistake to use an IO routine intended for human-readable numbers on machine-readable numbers or vice versa
09:57:27 <wib_jonas> because on locales with dot as the decimal separator, dot is parsed as decimal point, comma as argument separator, and semicolon as magic; on machines with comma as the decimal point, comma is parsed as decimal point, semicolon as function argument separator, and backslash as magic.
09:57:53 <wib_jonas> and these stupid industry systems that we use at work are even worse in this respect, depending on the global locale, as well
09:58:15 <wib_jonas> though not quite in the way that excel is, they depend on the locale in different ways
09:58:37 <wib_jonas> but the end result is also that you sometimes have to set global locale settings to be able to run a program
10:02:12 <ais523> the locale settings for a program should in theory tell it how to interact with the user and the user's files, terminals, etc.
10:02:25 <ais523> so that means you need two different APIs, one for the user's files, one for the program's own files
10:02:32 <ais523> but this is a distinction that not enough languages draw
10:02:45 <ais523> and most that do, don't draw in a useful manner
10:03:09 <ais523> (Java, for example, has a concept of a "program's own files" when working out the security implications of opening a file, but this doesn't extend to encoding/locale as far as I know)
10:05:20 <wib_jonas> there's also the strange but tolerable results that you get on windows when a program uses a stock message box and the message in it is in a different language than the captions of the "Yes" and "No" buttons, because the latter come from windows's message language, the former from the program's
10:07:20 <ais523> right, the Windows library has an API for "show me a dialog box with yes/no buttons" that's orders of magnitude easier to use than a custom dialog box would be
10:07:30 <ais523> so that helps to get the dialog boxes standardised
10:07:51 <ais523> (arguably it'd make sense to have an API for "show me a dialog box with n buttons, here's the text to show on them" but last time I checked, it didn't)
10:08:08 <shachaf> I wish platform APIs were much simpler, with things like that moved into a standard library that you can link if you want.
10:08:10 <wib_jonas> Luckily I finally managed to get a configuration of windows at work where the message language of every program is english, even that of office and firefox. Though firefox breaks that config once every few years.
10:08:59 <ais523> I assume your workplace normally uses Hungarian?
10:09:13 <wib_jonas> So I only get mixed language stuff on machines other than my main one, though I do have to touch other machines (by remote access) often.
10:09:31 <wib_jonas> ais523: yes, or at least mixed hungarian and english, because many programs aren't localized to hungarian
10:10:25 <ais523> surely the appropriate fallback for programs with no hungarian localisation would be Finnish? ;-)
10:10:35 <wib_jonas> mind you, windows 10 sort of requires you to install the message localization of windows in order to be able to use hungarian keyboard layout, even when that's not the primary keyboard layout. so I do have a full copy of hungarian messages on windows on the hard disk.
10:11:27 <ais523> oóőö
10:11:45 <wib_jonas> ais523: they don't have localization in finnish too. they're Siemens programs, they sometimes have parts that are accidentally localized only in german, not in english, or that can be switched to english but default to german, or where a list in the english help file is sorted by the german order.
10:11:46 <shachaf> `òh nó´
10:11:47 <HackEso> ​/srv/hackeso-code/multibot_cmds/lib/limits: line 5: exec: òh: not found
10:11:49 <ais523> I guess Hungarian isn't /that/ hard to type on a UK keyboard (at least under X/Gnome)
10:11:50 <shachaf> Oops.
10:11:51 <myname> double accents?
10:12:13 <shachaf> I use the keyboard layout US International (AltGr deadkeys)
10:12:25 <shachaf> It's great. Everyone should have an AltGr key.
10:12:27 <ais523> myname: Hungarian has a double acute, which is basically an acute and umlaut at the same timee
10:12:29 <ais523> *time
10:12:52 <myname> i have no idea on how to pronounce that, but i like it
10:12:54 <ais523> although the "acute" is more of a length mark, the macron is more standard for that
10:13:20 <wib_jonas> ais523: does that include uppercase letters like ÁÉŐ, and common punctuation like „a” b – c … d?
10:13:25 <ais523> shachaf: what does altgr-` produce on that?
10:13:51 <ais523> ÁÉÓ are easy enough
10:13:58 <shachaf> It behaves like a deadkey, so altgr-` a produces à
10:14:04 <ais523> as are “”, but I don't know where the inverted ” is
10:14:05 <shachaf> But ` by itself produces `
10:14:25 <ais523> ah, I see, so it's different from the UK layout but mostly just a rearrangement of keys it has
10:14:33 <shachaf> Which UK layout?
10:14:40 <ais523> on a UK layout, dead grave is AltGr-#
10:14:47 <shachaf> Aha.
10:15:01 <shachaf> The default US English layout has no deadkeys and no way to type à
10:15:38 <ais523> and this is the standard UK English layout
10:15:49 <ais523> there are variants but they're mostly things like Dvorak that make really major changes
10:16:06 <ais523> that said, the altgr-combinations work differently on Linux and Windows, and kind-of suck on Windows
10:16:08 <shachaf> I should probably make my own layout or at least my own compose key file at one point.
10:16:17 <wib_jonas> ais523: in theory yes, but I can be the devil's advocate and argue against. The letters á and é are overwhelmingly more common than any other accented letter in Hungarian, and "é" changes openness compared to "e" and "á" changes every vowel quality compared to "a".
10:16:17 <shachaf> Since I often don't know how to type the things I want.
10:16:21 <wib_jonas> The length of vowels is hard to perceive in some context, you find situations where the length is uncertain in writing or can be changed deliberately for meter, and this is the most common for words ending in "ú", but very rarely happens for "e" vs "é".
10:16:21 <ais523> Linux has a really complete set of them
10:16:33 <shachaf> Fortunately I have a good Unicode searcher and selector.
10:16:47 <ais523> the only real change I made to the layout was to move Compose to Caps Lock (and Caps Lock to Shift-Shift), because Compose is used often enough that the default binding of Shift-AltGr is awkward
10:18:13 <ais523> I think I might also have re-enabled Ctrl-Alt-Backspace? but I don't want to try pressing it to find out
10:18:49 <wib_jonas> ais523: I don't usually bother with the altgr combinations on windows. I mostly just switch back to the US-english layout for typing fancy puntuation. There are even some ascii characters for which I really can't remember which key is it on with altgr on the Hungarian layout. The ampersand is somewhere in the z-m row, but I don't know where.
10:19:05 <ais523> (I know I re-enabled a lot of Alt-SysRq sequences but those don't have much to do with the keyboard layout, and in fact are IIRC typed in QWERTY regardless of what the layout is)
10:19:09 <shachaf> Hmm, I use Caps Lock for Esc. Maybe I should map Esc to compose.
10:19:21 <wib_jonas> As for typing non-ascii stuff on windows, I mostly just open either Wordpad or Word, type the unicode character code in hex, press alt-x, and copy-paste.
10:19:49 <ais523> having a dedicated key for Esc that means something on its own is an antipattern :-(
10:20:52 <ais523> it's convenient but it's ambiguous with a lot of things that use Esc as a prefix
10:21:03 <shachaf> What uses Esc as a prefix?
10:21:08 <wib_jonas> I do type some hungarian text occasionally in mails, and for that I sometimes use the hungarian layout for words.
10:21:10 <Taneb> <ais523> on a UK layout, dead grave is AltGr-# Oooh, this is helpful
10:21:39 <shachaf> Apparently in my layout, AltGr-Shift-3 a produces ā
10:22:11 <ais523> ā is altgr-shift-] a for me
10:22:38 <ais523> the dead accents are basically all AltGr + punctuation on the right side of the keyboard
10:23:00 <wib_jonas> shachaf: I type that one by character code, 0x101
10:23:07 <ais523> there's a sort-of logic to it, with AltGr-; AltGr-' AltGr-# acute, circumflex, grave
10:23:30 <Taneb> äåãāáâǎàă
10:23:41 <ais523> "dead grave" sounds a lot scarier than it actually is
10:23:43 <shachaf> AltGr-' AltGr-6 AltGr-` seems much more logical.
10:24:18 <ais523> indeed, but sequences like altgr-6 are risky to use for forward compatibility reasons
10:24:24 <ais523> as that's where newly discovered punctuation marks go
10:24:37 <ais523> (most notably, altgr-4 for €)
10:24:55 <shachaf> AltGr-Shift-4 produces £ here
10:25:05 <wib_jonas> there's a logic to the character codes in the iso-8859-1 and latin-extended-A regions too. the order is always the same: grave, acute, circumflex, tilde, umlaut, macron, brevis for vowels.
10:25:22 <ais523> shachaf: ugh, I'd expect £ variants to be tied to 3
10:27:04 <wib_jonas> (It gets uglier for consonants.)
10:27:37 <shachaf> What does the x86-64 extension do?
10:27:39 <myname> you must have lots of fun on international shippings
10:28:00 <shachaf> Presumably it gives you access to a second set of punctuation marks.
10:28:10 <myname> huh?
10:28:44 <shachaf> If you use the REX prefix on ISO-8859-1, I mean.
10:28:58 <ais523> aren't the REX prefixes capital letters?
10:29:08 <ais523> apart from the null REX prefix, which is @
10:29:41 <shachaf> That's true.
10:29:45 <ais523> I'm not sure whether rex.b or rex.x would be more appropriate for the second set of punctuation marks
10:30:13 <ais523> `asm .byte 0x41, 0x90, 0x42, 0x90, 0x44, 0x90, 0x48, 0x90
10:30:13 <shachaf> Or rex.r? I don't think puncutation marks even use memory addressing.
10:30:15 <HackEso> 0: 41 90 xchg %eax,%r8d \ 2: 42 90 rex.X xchg %eax,%eax \ 4: 44 90 rex.R xchg %eax,%eax \ 6: 48 90 rex.W nop
10:31:09 <ais523> actually, yes, rex.r is the only one that makes sense in almost every context
10:31:20 <ais523> although, hmm, no
10:31:39 <ais523> as the examples above show, rex.b is the relevant bit when you have only the one non-fixed argument
10:31:52 <ais523> presumably because most commands can take either register or memory
10:32:12 <shachaf> Oh, hmm.
10:32:28 <ais523> so I'm guessing we use a prefix of capital A to switch to the other set of punctuation marks
10:32:57 <ais523> `asm xchg %al, %sil
10:32:59 <HackEso> 0: 40 86 c6 xchg %al,%sil
10:33:06 <shachaf> But https://www.felixcloutier.com/x86/xchg says 90+rd is XCHG EAX,r32
10:33:21 <shachaf> Why would that use REX.B instead of REX.R?
10:33:49 <ais523> more to the point, why doesn't one affect the EAX and the other affect the r32?
10:33:51 <shachaf> Oh, I was mixed up.
10:34:09 <shachaf> REX.R specifically affects the "reg" field of the ModR/M byte.
10:34:30 <shachaf> Actually, no, this is still kind of odd.
10:35:15 <shachaf> `asm .byte 0x87, 0324
10:35:17 <HackEso> 0: 87 d4 xchg %edx,%esp
10:35:31 <shachaf> `asm .byte 0x44, 0x87, 0324
10:35:32 <HackEso> 0: 44 87 d4 xchg %r10d,%esp
10:35:45 <shachaf> `asm .byte 0x41, 0x87, 0324
10:35:46 <HackEso> 0: 41 87 d4 xchg %edx,%r12d
10:35:47 <ais523> <AMD> REX.B: 1-bit (msb) extension of the ModRM r/m field 1 , SIB base field 1 , or opcode reg field, permitting access to 16 registers.
10:36:00 <shachaf> Oh, that's better than the source I read.
10:36:02 <ais523> that's very clear
10:36:13 <ais523> AMD invented this instruction set, so I use their documentation to learn about it
10:36:34 <ais523> the " 1 " should be "¹", there was a character encoding mishap
10:36:41 <ais523> it's just a reference to a footnote
10:36:53 <shachaf> I wonder why it's not REX.R, though.
10:37:11 <shachaf> To me the opcode reg field seems a lot like the modr/m reg field.
10:37:27 <wib_jonas> "a prefix of capital A to switch to the other set of punctuation marks" => actually it's more like a prefix  in utf-8
10:37:59 <ais523> `unicode U+00C2
10:38:00 <HackEso> ​Â
10:38:46 <ais523> wib_jonas: your statement is really confusing, not because I don't understand it, but because trying to make sense of it means mixing character encodings in a really weird way
10:39:04 <ais523> are you assuming that the encoding is UTF-8-as-Latin-1 mojibake?
10:39:23 <ais523> although mojibake isn't really a character encoding, it's something else
10:39:36 <ais523> /encoded/ mojibake is a character encoding
10:39:54 <ais523> you should be able to set the locale to, say, "UTF-8 misinterpreted as Latin-1 and then encoded in UTF-8"
10:49:31 <ais523> hmm, actually Latin-2 would be the appropriate set to mojibake into in Hungary
10:49:52 <ais523> but C2 is still  there
11:05:11 <shachaf> Is there any reason to target 32-bit x86 nowadays?
11:05:50 -!- Phantom_Hoover has quit (Ping timeout: 246 seconds).
11:07:03 <ais523> my current attitude towards 32-bit x86 is to not worry about performance at all on it
11:07:13 <ais523> I'll write programs that are only efficient on 64-bit systems
11:07:26 <fizzie> Will they still work on 32-bit systems?
11:07:41 <ais523> at the source code level, yes
11:07:50 <ais523> I don't normally write raw asm, but when I do it's processsor-specific
11:10:50 <myname> is there such a thing as processor-indipendent asm?
11:12:02 <wib_jonas> ais523: "UTF-8 misinterpreted as Latin-1 and then encoded in UTF-8" is called double-utf, but yes
11:12:20 <ais523> myname: WebAssembly is created as that
11:12:25 <ais523> there were a few attempts before then that didn't catch on
11:12:32 <wib_jonas> and the more common version is à before a letter to turn it to an accented letter
11:12:34 <ais523> also, C gets described at that sometimes, but I don't think it's an accurate description
11:14:27 <wib_jonas> and yes, it might not make more sense, but using a REX prefix to switch punctuation marks also doesn't make much sense
11:15:04 <fizzie> There's certainly various degrees of processor-dependedness, in the sense that you can target the lowest common denominator of a specific instruction set.
11:21:28 <esowiki> [[Salary program]] N https://esolangs.org/w/index.php?oldid=66259 * A * (+410) Created page with "The [[Salary program]] is a well-known [[Golf]]-oriented [https://esolangs.org/wiki/Category:Program_forms program form] on [https://codegolf.stackexchange.com/ CGCC] [https:/..."
11:24:32 <cpressey> myname: There's also LLVM. The idea is quite old (see e.g. https://en.wikipedia.org/wiki/P-code_machine)
11:26:21 <ais523> IIRC LLVM isn't portable, in the sense that different targeted platforms will have slightly differently looking LLVM
11:28:53 <wib_jonas> Right, LLVM is lower level in the sense that if you want to generate good optimized machine code through LLVM, then you already optimize the LLVM code you write to the particular cpu and instr set and other circumstances. In particular, you tell LLVM where to use 32-bit integers and where 64-bit ones, and that's a decision that depends on your cpu.
11:29:37 <cpressey> That seems like a rather ungenerous definition of "portable" to me
11:29:46 <ais523> I wonder if it's portable in the sense of being able to transpile any LLVM IR onto any CPU
11:30:06 <ais523> or, more, compile/assemble, I guess
11:30:11 <ais523> not sure what the right verb for this is
11:31:03 <shachaf> It occurred me recently that "compiler", "assembler", and "linker" all have roughly the same meaning.
11:31:05 <cpressey> At any rate, it bills itself as portable, and it's fairly widely used, so one should at least be aware of it.
11:31:44 <shachaf> It also billed itself as low-level, and as a virtual machine.
11:32:15 <ais523> I didn't think of LLVM as a universal asm because I didn't think of it as an asm
11:36:39 <cpressey> idk but the first line of the manual is "This document is a reference manual for the LLVM assembly language."
11:37:42 -!- ais523 has quit (Ping timeout: 258 seconds).
11:55:03 <fizzie> The LLVM modules generated by clang aren't portable in the sense that they contain datalayout -- https://llvm.org/docs/LangRef.html#data-layout -- and target triple -- https://llvm.org/docs/LangRef.html#target-triple -- specifications that identify the target processor. But I think those are optional, and it's probably possible to write LLVM modules that are applicable to more than one target.
11:57:21 <wib_jonas> cpressey: when LLVM bills itself portable, doesn't that mean that it can produce output machine code to multiple architecutres, but not necessarily from the same input? just like how gas and the rest of binutils are portable, they can assemble ARM assembly code to ARM machine code or x86_64 assembly code to x86_64 machine code, but not ARM assembly
11:57:21 <wib_jonas> code to x86_64 machine code.
11:57:44 <wib_jonas> ah yes, that's what ais hints about the word "portable" I guess
11:58:56 <fizzie> AIUI, the LLVM IR also encodes assumptions about the platform's ABI if you call anything external to the program, so it's not portable in that sense.
11:59:19 <fizzie> http://llvm.org/docs/FAQ.html#can-i-compile-c-or-c-code-to-platform-independent-llvm-bitcode "Also, since many platforms define their ABIs in terms of C, and since LLVM is lower-level than C, front-ends currently must emit platform-specific IR in order to have the result conform to the platform ABI."
12:00:24 <fizzie> But a self-contained program written in the LLVM IR might be "portable" to some degree.
12:04:45 <esowiki> [[Greentext]] https://esolangs.org/w/index.php?diff=66260&oldid=55935 * YamTokTpaFa * (+9)
12:05:43 <esowiki> [[Template:WIP]] M https://esolangs.org/w/index.php?diff=66261&oldid=66184 * YamTokTpaFa * (-2)
12:10:34 <esowiki> [[Salary program]] https://esolangs.org/w/index.php?diff=66262&oldid=66259 * A * (+209)
12:11:01 -!- ais523 has joined.
12:13:29 <ais523> OK, so LLVM is portable as a language in its own right, but can't be portable when used as a backend for something else because the "something else" may need to vary things based on the details of the platform and LLVM can't vary them the same way
12:16:52 <wib_jonas> ais523: no, I think it's more like that most of LLVM is portable, so it's portable enough that you can write working programs that LLVM can compile on multiple systems, but that's not typically what you do, because you use LLVM to make optimized programs, and you can't write good optimized program that LLVM compiles from the same source on multiple
12:16:53 <wib_jonas> platforms
12:17:05 <wib_jonas> this is even true to a lesser extent for C or C++ actually
12:17:19 <wib_jonas> but more true for LLCM
12:17:24 <wib_jonas> for LLVM
12:18:34 <ais523> wib_jonas: well, you could write the program in "high-level" LLVM and optimise it for the target platform
12:18:44 <ais523> it's not like LLVM translates directly into asm anyway, e.g. you need to do register allocation
12:20:09 <wib_jonas> yes, and LLVM knows a lot about the platform-specific stuff, it abstracts away most of the unportability, but not all of it
12:20:45 <wib_jonas> anyway, I don't really know much about this, because luckily I don't write programs in LLCM
12:20:51 <wib_jonas> in LLVM -- darn, I can't type this
12:21:05 <wib_jonas> that's for serious compiler maintainers to know about
12:28:02 -!- APic has quit (Ping timeout: 265 seconds).
12:47:08 <wib_jonas> lol... I'm reading the intel x86 architecture reference manual. it has some statements that are necessary but still funny.
12:47:37 -!- arseniiv has joined.
12:48:39 <wib_jonas> in particular, it has a note about when you execute from memory that is also used as paging table entries, and how when the cpu updates the dirty and accessed bits of those page table entries because of paging, it has less guarantees than usual about self-modifying code
12:49:39 <wib_jonas> they need this statement because, for legacy 386 compatibility reasons, x86 provides very strong guarantees about the semantics of self-modifying code (even though the performance of such is abysmal)
12:50:47 <ais523> executing a page table is admittedly not something I had thought of
12:51:19 <ais523> there are similarly silly cases, like executing an interrupt vector, which are at least likely to be easy to implement
12:52:00 <ais523> (although I imagine that in some architectures, interrupt vectors are actually executable code rather than a list of addresses)
12:54:17 <wib_jonas> yes, 6502 has executable interrupt vectors, as in, the interrupts jump to a fixed address rather than load the jump address from a fixed address
12:59:37 -!- APic has joined.
13:22:15 <wib_jonas> It also has the ridiculous statement "Processors need not implement any TLBs." about caching page translation info
13:23:35 -!- Lykaina has joined.
13:23:55 <Lykaina> http://sif.lesidhetree.com/sara/echidna/echidna-uno-doc_0002_1.pdf
13:26:48 <Lykaina> i mean, hi
13:28:42 <Lykaina> wib_jonas: hi
13:29:41 <ais523> a thought I've been having: currently, assemblers do two jobs, one is converting asm to machine code, the other is resolving things like jump destinations and .align directives and the like
13:29:49 <ais523> but the latter job duplicates what the linker does
13:30:27 <ais523> perhaps it would make sense for assemblers to /only/ do the first job, and the linker is the only thing that does the second
13:30:47 <ais523> (for performance, this means that you would probably want to link individual object files as they were created, and then link those object files together later in the build)
13:31:11 <ais523> current linkers support incremental link, I think, even though it isn't the normal way to do things; this would be an extreme version of that
13:32:50 <ais523> the advantage of doing things this way is that the exact layout of an object file in memory could be deferred to later in the build if necessary
13:33:06 <wib_jonas> ais523: I think that would be rather inefficient in the common case, when and a lot of references are quickly resolved by the assembler, and would be inefficient to emit symbolically to the linker, since the linker would have to do all the tasks of the second pass of the assembler, plus the assembler is usually not run separately but is built into
13:33:06 <wib_jonas> the compiler in such a way that it doesn't go through actual assembly syntax.
13:33:54 <wib_jonas> as in, the assembler resolves all the local references, so the linker only moves larger sections around
13:34:51 <ais523> well, the advantage of leaving the local references unresolved is that you can move small parts of the code around, e.g. to substitute a short jump for a long jump in the case where the target happens to be nearby
13:35:05 <ais523> present compilers have to leave enough space for the longest possibile jump
13:35:13 <wib_jonas> How much this matters may depend on the cpu architecture of course, in some older cpus you'd have a lot of local references because there are few ways to avoid jumps and you have to load large constants as memory accesses rather than immediates.
13:35:46 <ais523> if your large constants are memory accesses you'd often be loading from rodata anyway (= you need the linker)
13:35:54 <ais523> although I guess there's an argument for putting them in text
13:36:40 <wib_jonas> ais523: I don't think that will often happen, because each function (in the low-level sense) will be assembled to the same section, and you use calls and returns rather than jumps between functions, and those can't be short even if the functions are close to each other.
13:37:01 <wib_jonas> if there's an opportunity for a short jump, then the functions will be compiled together at the optimizer and inliner state already.
13:37:04 <ais523> tail calls are jumps, in some calling conventions
13:37:56 <wib_jonas> ais523: no, you can't load all the constants from rodata, because then you have to load their _address_ somehow, and you'd have to load those from rodata too etc
13:38:10 <ais523> you have relocations
13:38:19 <ais523> but I see, assuming PIC
13:38:36 <ais523> then rodata probably isn't in a constant space relative to text due to ASLR, and you don't want to do the relocation at runtime
13:38:41 <wib_jonas> on those older cpus, you load the long immediates from the text with IP-relative or similar accesses. you can still do that on modern cpus like x86_64, it's just usually not worth because they have more convenient immediates.
13:38:47 <ais523> although, hmm
13:38:56 <wib_jonas> this is for old cpus which don't have a way to load a full immediate
13:39:00 <ais523> maybe rodata is in a constant location relative to text, because rodata is constants too
13:39:02 <wib_jonas> a full sized immediate
13:39:04 <wib_jonas> only a small one
13:39:14 <ais523> wib_jonas: modern CPUs can't load full sized immediates either
13:39:28 <wib_jonas> ais523: sure, but they're closer to it
13:39:46 <ais523> on x86-64 largest possible immediate is 64 bits for movabs, largest register is typically 256 bits wide
13:40:21 <wib_jonas> right, but the 64 bit load is enough to give the address into anywhere else at least
13:41:26 <wib_jonas> but I guess you're right, you could load such constants (or even index small tables) from the code section and place them close to the function
13:41:34 <wib_jonas> that still usually works on x86_64
13:46:37 <wib_jonas> basically, by putting the read-only data and the code into the same section (but not in the same cache line), you guarantee that they're no farther than 2**31 bytes, so you can access them with a simple and efficient RIP-relative access, and the linker doesn't have to translate the addresses
13:47:10 <ais523> now I'm wondering if it's bad to have executing code and read-only data on the same cache line
13:47:38 <ais523> it's obviously bad to have executing code and writable data on the same cache line, but there's no obvious reason why in the former case you couldn't just load it into both L1 caches
13:49:26 <ais523> fwiw, the thing that inspired the "let's do the linking outside the assembler" idea was that I was reading about how TLS is implemented
13:49:46 <ais523> and there are four different ways to implement TLS, some of which are faster but less general, and the optimisation is done by the linker
13:50:01 <ais523> which means it has to delete code sequences from the executable and replace them by sequences of different length, sometimes
13:50:18 <ais523> currently this is implemented by leaving padding in the code so that the linker can overwrite it, but that seems ridiculous
13:50:24 <wib_jonas> ais523: also, if the linker moved around code in small parts, then the assembler would have to be able to tell it not only how to move the code, but also how to adjust the detailed debugging information and the unrolling info. that would make the linker even more complicated than it already is.
13:51:30 <wib_jonas> ais523: same cache line => only bad in the sense that it can waste the L1 cache, because the L1 cache is separated to an L1D cache that is used for data access only and an L1C cache that is used for code access only, and both are small, so you'd have a half-used entry for the same cache line in both;
13:52:00 <ais523> well, it depends on whether you can fit other useful data into the same cache line
13:52:08 <ais523> if not there's no actual loss
13:52:25 <wib_jonas> plus to some amount the same thing for decode caches and branch prediction and branch target caches, but those usually work at 16-bit sized units rather than 64-bit ones currently
13:52:32 <ais523> err, depending on where the code ends
13:52:54 <ais523> if you have 1½ cache lines of code and ½ a cache line of data, you want to merge them into 2 cache lines, not separate them into 3
13:53:17 <ais523> as either way you end up with 3 cache lines between the two L1 caches
13:53:21 <wib_jonas> ais523: yes, if you can fit read-only data without losing space, then it's not bad, but separating data and code to separate cache lines is a good enough general rule and you rarely lose from following it
13:53:50 <ais523> so why not have rodata in a fixed location relative to text, and put the constants in rodata?
13:54:35 <ais523> "rodata in a fixed location relative to text" is probably required anyway (especially if you don't have a PIC base register), otherwise the references to data from rodata will be too expensive
13:54:35 <wib_jonas> ais523: in fact it may make sense to separate them to separate pages, at least on some cpus... I don't recommend the recommendations taht the optimization manual says
13:54:57 <wib_jonas> but even if they're in separate pages, they can be within 2**31 bytes from each other, which is still useful
13:55:04 <ais523> fwiw, many compilers seem to prefer using multiple movabs instructions
13:56:22 <wib_jonas> ais523: sort of, but putting them to fixed location can be done in the linker, which places those two segments and resolves references between them at link time. I think it could even place them within 2**31 from enough (unless they're very large of course)
13:57:27 <wib_jonas> multiple movabs instructions => sure, if you can use them, use them
13:57:57 <ais523> interestingly, AMD doesn't use the term "movabs"
13:58:00 <wib_jonas> at that point it's a tricky call, can depend on what's tight in that part of the code, L1 cache accesses or decoding
13:58:00 <ais523> to them it's just a variant of the mov instruction
13:58:15 <wib_jonas> does intel use it? I think they don't either\
13:58:32 <wib_jonas> I think movabs is just an AT&T assembly syntax thing
13:58:41 <ais523> I would have thought movabs would decode quickly; it's easy to find the end of it, for example
14:02:02 <ais523> `asm .byte 0x66, 0x66, 0x48, call 0x12345678
14:02:06 <HackEso> ​/tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: junk at end of line, first unrecognized character is `0' \ /tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: junk at end of line, first unrecognized character is `0'
14:02:09 <ais523> `asm .byte 0x66, 0x66, 0x48; call 0x12345678
14:02:11 <HackEso> 0: 66 66 48 e8 00 00 00 00 data16 data16 callq 0x8
14:02:23 <ais523> `asm .byte 0x66, 0x66, 0x48; call $0x12345678
14:02:24 <HackEso> 0: 66 66 48 e8 00 00 00 00 data16 data16 call 0x8
14:02:25 <wib_jonas> ais523: it's not just about the speed of decoding, it's also that if you use, say, four movabses to load a 32 byte constant rather than a single 32-byte memory load, then you get longer code, which uses up more of the decoded cache
14:02:47 <ais523> `asm .byte 0x66, 0x66, 0x48; callq $0x12345678
14:02:48 <HackEso> 0: 66 66 48 e8 00 00 00 00 data16 data16 call 0x8
14:02:54 <wib_jonas> it could also decode slowly, but that's less of a problem
14:03:05 <ais523> hmm, I wonder what's happening to the argument to call
14:03:19 <wib_jonas> but I guess most of the time the decoding won't be the problem
14:03:24 <ais523> oh right, the µop cache
14:03:43 <ais523> it's kind-of crazy that something like that is beneficial
14:03:49 <wib_jonas> ais523: that, and the other cache that runs very short loops, but you don't put constant loads in those
14:05:05 <ais523> the branch predictors on modern processors predict loop counts for loops with a small fixed loop count
14:05:23 <wib_jonas> ais523: it's beneficial only in intel cpus, not on amds, because intel has a broken decoder that only decodes one aligned 16-bit block of code per cycle, and if you write floating point machine learning code that never hits an L1 cache miss, then it will execute four floating-point add-multiplies in a clock cycle, and those four instructions are
14:05:24 <wib_jonas> longer than 16 bytes
14:05:29 <ais523> arguably it'd make more sense just to have a processor instruction for a loop with a small fixed count, then the prediction could be perfect
14:05:33 <wib_jonas> s/16-bit/16-byte/
14:06:37 <ais523> in AMD processors there are three decode units and an instruction can take up one, two, or all three of them (the three-unit instructions also cause a pipeline stall in the decode, so they're recommended against)
14:07:08 <ais523> at least, that's how it worked last time I checked, it might have changed since
14:08:20 <ais523> `asm nopw %cs:0x0(%rax,%rax,1)
14:08:21 <HackEso> 0: 2e 66 0f 1f 04 00 nopw %cs:(%rax,%rax,1)
14:08:34 <ais523> that's not as long as I thought it would be
14:09:19 <ais523> perhaps there should be a VEX version of a NOP?
14:09:33 <wib_jonas> "2E" for segment override, "66" for data size override, "0F 1F" for the opcode, "04" for mod/rm byte, "00" for SIB byte
14:10:12 <wib_jonas> but you can add a displacement if you want a longer one
14:10:21 <wib_jonas> and drop the segment override, that never helps
14:11:14 <wib_jonas> ais523: the intel manual and the amd manual both describe what nops you should use, and the intel gives a 9-byte nop as the longest, but all the nops that are longer than one byte have an input dependency on a general register that you can choose
14:11:30 <wib_jonas> the amd version is easier
14:12:22 <wib_jonas> that said, when writing or compiling actual code, you can use instructions that are technically not nops, but are fast and don't do anything that matters in the context of the particular code, such as zero a register
14:13:01 <wib_jonas> that works for shorter nops only I think, but there it may sometimes be easier than following intel's recommendations
14:13:10 <wib_jonas> for longer nops I think you're out of luck
14:13:46 <ais523> `asm .byte 0xc4, 0xe1, 0x79, 0x1f, 0x04, 0x00
14:13:47 <HackEso> 0: c4 e1 79 1f (bad) \ 4: 04 00 add $0x0,%al
14:14:01 <wib_jonas> no no
14:14:06 <ais523> that was an attempt to encode a NOP using VEX, just for fun
14:14:19 <ais523> (I know you can't actually use VEX on non-SSE instructions)
14:14:33 <ais523> (but it's in an opcode map that means the syntax exists, at least, the processors just reject it)
14:14:35 <wib_jonas> I mean like sub %r8w, %r8w
14:14:53 <wib_jonas> no wait
14:14:57 <ais523> `asm sub %r8w, %r8w
14:14:58 <HackEso> 0: 66 45 29 c0 sub %r8w,%r8w
14:15:01 <wib_jonas> it shouldn't be word-sized
14:15:06 <ais523> although that isn't a no-op, of course
14:15:10 <wib_jonas> it should be dword or qword size
14:15:17 <wib_jonas> sub %r8d, %r8d
14:15:21 <wib_jonas> which is only three bytes
14:15:29 <ais523> `asm .byte 0x67; and %r8, %r8
14:15:30 <HackEso> 0: 67 4d 21 c0 addr32 and %r8,%r8
14:15:34 <wib_jonas> yeah, I think you can do this only for two or three byte long nops
14:15:55 <wib_jonas> maybe more if you zero an SSE register, but on newer cpus only
14:15:56 <ais523> there's no reason you /can't/ stick an 0x67 prefix on there
14:16:03 <ais523> even if 0x66 would cause trouble
14:16:12 <ais523> although, both sub and and change flags
14:16:19 <ais523> (and is better because at least it doesn't change the register)
14:16:38 <wib_jonas> doesn't the 0x67 prefix cause a decoding slowdown?
14:16:55 <ais523> not sure; it's used so rarely that maybe it does
14:17:17 <wib_jonas> yes, but it doesn't _read_ the flags, and doesn't _read_ the registers, it only writes them
14:17:31 <ais523> surely lea is the best instruction, anyway?
14:18:06 <ais523> `asm leaq 0(%r8), %r8
14:18:08 <HackEso> 0: 4d 8d 00 lea (%r8),%r8
14:18:17 <ais523> you could use a 4-byte displacement there
14:18:26 <ais523> `asm leaq 0(%r12), %r12
14:18:27 <HackEso> 0: 4d 8d 24 24 lea (%r12),%r12
14:18:30 <wib_jonas> on newer cpus, you can get four and five byte instructions to zero an xmm register
14:18:52 <ais523> that can be terrible for performance in some cases, initializing the FPU takes ages
14:19:00 <ais523> if it's switched off for power-saving purposes
14:19:05 <ais523> (probably bad for power drain, too)
14:19:14 <ais523> admittedly, lots of things use vector registers nowadays
14:19:29 <ais523> `asm leaq 0x12345678(%r12), %r12
14:19:30 <HackEso> 0: 4d 8d a4 24 78 56 34 12 lea 0x12345678(%r12),%r12
14:19:40 <wib_jonas> or more likely, if you're using 32-byte ymm registers and you suddenly zero a 16-byte one
14:19:59 <ais523> `asm .byte 0x4d, 0x8d, 0xa4, 0x24, 0x00, 0x00, 0x00, 0x00
14:20:00 <HackEso> 0: 4d 8d a4 24 00 00 00 00 lea 0x0(%r12),%r12
14:20:06 <wib_jonas> "lea is the best instruction" => again, that depends on what for and where
14:20:06 <ais523> that should be a true NOP, I think
14:20:14 <ais523> and might be pretty fast to both decode and run
14:20:26 <ais523> doesn't play well with 0x66 prefixes, though
14:22:20 <wib_jonas> and I think on intel it's strictly worse than nopw 0(%rax,%rax,1)
14:22:50 <ais523> according to AMD, an lea runs in one cycle if it only has one register and no scale on the LHS
14:23:03 <wib_jonas> no, I mean worse than nopw 0(%r12,%r12,1)
14:23:12 <wib_jonas> sorry
14:23:17 <wib_jonas> worse or equal, obviously
14:23:18 <ais523> although, on AMD (and probably also Intel), a nop runs in zero cycles (the only time it spends is the time spent in decode)
14:24:03 <ais523> I think that only applies to 0x90 nop, though
14:24:16 <ais523> which is why the recommended pattern on AMD is 0x66 0x66 0x66 0x90
14:24:22 <ais523> repeated to fill space
14:24:37 <wib_jonas> the eight-byte nop doesn't execute, the only cost it has is that it has a false _read_ dependency on %r12, so it won't be scheduled until the value of %r12 is available
14:25:05 <wib_jonas> it doesn't actually compute the address or attempt access the memory if I understand correctly
14:25:23 <wib_jonas> and I think it doesn't even tie up any execution core, but that doesn't typically matter
14:25:28 <wib_jonas> s/core/unit/
14:25:39 <ais523> 0x90 NOP has the benefit that it isn't scheduled at all, though
14:26:26 <wib_jonas> whereas an instruction like sub %r12d,%r12d is three bytes long, doesn't depend on any input register, and only writes flags, not any register in execution
14:26:44 <wib_jonas> 0x90 nop is very magical
14:26:45 <ais523> yes it does, it writes 0 in %r12d
14:27:02 <ais523> do you mean sub $0, %r12d
14:27:04 <wib_jonas> ais523: the effect writes the register, but the execution units and the register file don't know that
14:27:18 <wib_jonas> it's handled in decoding/scheduling by renaming the register
14:27:36 <wib_jonas> so that %r12 will refer to a zero register rather than whatever entry contained the value before the instruction
14:27:44 <ais523> oh I see, in that case you should be using xor I think
14:27:52 <wib_jonas> xor vs sub doesn't matter
14:28:04 <wib_jonas> it does also write the register for the purpose of dependencies (but doesn't read)
14:28:18 <ais523> don't the processors that special case sub-of-itself also special case mov 0?
14:28:34 <wib_jonas> I don't think so, but I'm not sure
14:28:45 <ais523> mov $0 seems to be superior in two ways: a) it doesn't change flags (thus removing potential false dependencies on flags), b) the encoding is longer
14:29:09 <ais523> `asm movq 0x00000000, %r12d
14:29:10 <HackEso> ​/tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: operand type mismatch for `movq' \ /tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: operand type mismatch for `movq'
14:29:12 <ais523> `asm movq 0x00000000, %r12
14:29:13 <HackEso> 0: 4c 8b 24 25 00 00 00 00 mov 0x0,%r12
14:29:23 <wib_jonas> I dunno
14:29:44 <ais523> maybe it depends on how the 0 is encodedd
14:29:48 <ais523> `asm movq 0x00, %r12
14:29:49 <HackEso> 0: 4c 8b 24 25 00 00 00 00 mov 0x0,%r12
14:29:58 <ais523> although I don't think there is an 8-bit mov into a non-8-bit register
14:30:04 <ais523> `asm movzxq 0x00, %r12
14:30:09 <HackEso> ​/tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: unsupported syntax for `movzx' \ /tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: invalid instruction suffix for `movzx'
14:30:13 <ais523> `asm movzx 0x00, %r12
14:30:16 <HackEso> 0: 4c 0f b6 24 25 00 00 00 00 movzbq 0x0,%r12
14:30:28 <ais523> that one probably isn't optimized, to be fair
14:30:40 <ais523> oh, I forgot the $
14:30:42 <wib_jonas> for a long nop, I'd also suggest prefetcht2 0, which is 8 bytes long
14:30:43 <ais523> so it segfaults :-)
14:30:48 <ais523> `asm movq $0x00, %r12
14:30:49 <HackEso> 0: 49 c7 c4 00 00 00 00 mov $0x0,%r12
14:30:52 <wib_jonas> and can be 9 byte if you add a redundant REX prefix
14:31:01 <ais523> `asm movzxbq $0x00, %r12
14:31:02 <HackEso> ​/tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: no such instruction: `movzxbq $0x00,%r12' \ /tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: no such instruction: `movzxbq $0x00,%r12'
14:31:13 <ais523> movzx doesn't allow an immediate, right
14:31:24 <ais523> `asm movzbq $0x00, %r12
14:31:25 <HackEso> ​/tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: operand type mismatch for `movzb' \ /tmp/asm.s: Assembler messages: \ /tmp/asm.s:1: Error: operand size mismatch for `movzb'
14:31:29 <cpressey> hi Lykaina
14:31:33 <wib_jonas> ais523: r12 is callee-saved, that's why it segfaults
14:31:37 <ais523> yes, it helps if you get the instruction name right, but not enough ;-)
14:31:45 <ais523> wib_jonas: no, I dereferenced NULL, that's why it segfaults
14:31:49 <wib_jonas> oh
14:32:14 <ais523> I find the "numbers are memory addresses by default" pattern pretty unintuitive
14:32:49 <wib_jonas> I wonder if you could also use a two-byte short jump as a nop of between 2 and 120something bytes long
14:33:31 <wib_jonas> of course that's also not always applicable, it works best if you have no other jump in the 16-byte block
14:33:52 <wib_jonas> or something like that, I'm not sure how all that works
14:35:29 <ais523> is there an unconditional two-byte jump?
14:35:47 <ais523> `asm jmp 0x8
14:35:49 <HackEso> 0: e9 00 00 00 00 jmpq 0x5
14:35:55 <ais523> `asm jmp $0x8
14:35:56 <HackEso> 0: e9 00 00 00 00 jmp 0x5
14:36:08 <ais523> `asm jmp a; .align 8; a: nop
14:36:10 <HackEso> 0: eb 06 jmp 8 <a> \ 2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) \ \ 0000000000000008 <a>: \ 8: 90 nop
14:36:14 <ais523> yes, there is
14:38:24 <wib_jonas> ...
14:39:50 <cpressey> If you search the web for static deadlock detection you get papers on statically detecting deadlock in Go, Java, C with pthreads, C#, Erlang, the Linux kernel, and a language called "SHIM"
14:40:46 <fizzie> Odd way to do that.
14:40:50 <ais523> hmm… Rust doesn't guarantee deadlock-freedom, so that would be an obvious language to try
14:40:51 <wib_jonas> there's no unconditional jump with 16-bit offset by the way, despite that there are conditional jumps with 16-bit offset, all for historical reasons
14:40:52 <fizzie> `asm jmp .+8
14:40:53 <HackEso> 0: eb 06 jmp 0x8
14:41:06 <cpressey> I think the basic idea is simple - every place you acquire a resource, check what resources you already could've acquired. Form a graph. If it's got a cycle, you've got a problem.
14:41:17 <cpressey> Something like that anyway
14:41:23 <ais523> wib_jonas: conditional and unconditional jumps normally have different rules on what offset sizes they allow, not just on x86
14:42:05 <ais523> well, that boils down to the well-known algorithm of "always take locks in a specific order"
14:42:22 <wib_jonas> the 8-bit unconditional jump comes from the original 8086, or perhaps before, yet it's still actually useful on x86_64
14:42:32 <ais523> there's a Valgrind plugin that looks for locks being taken in an inconsistent order at any point during the program lifetime, even if no actual deadlock happens
14:42:51 <wib_jonas> and sure
14:42:59 <ais523> an 8-bit unconditional jump is frequently used to implement "else", so it makes sense that it'd still be around
14:43:51 <wib_jonas> yeah, it comes from before: the z80 already had an unconditional jump with 8-bit offset
14:44:42 <ais523> on the 6502, I think unconditional jumps are 16 bits (absolute, not offset), conditional jumps are 8-bit (offset)
14:45:17 <ais523> it's a 16-bit-address processor so you don't need any more bits than that
14:48:28 <ais523> I'm reading the LLVM spec: there's a lot of behaviour that's target-specific in subtle ways, but so far I haven't seen anything that forces you to use it
15:10:12 -!- wib_jonas has quit (Remote host closed the connection).
15:32:27 <esowiki> [[Seed]] https://esolangs.org/w/index.php?diff=66263&oldid=66019 * Palaiologos * (+117)
15:33:12 <esowiki> [[User:Palaiologos]] https://esolangs.org/w/index.php?diff=66264&oldid=63560 * Palaiologos * (+69)
15:49:19 -!- arseniiv has quit (Quit: gone completely :o).
15:53:28 -!- cpressey has quit (Quit: A la prochaine.).
16:00:44 <esowiki> [[Hexar]] M https://esolangs.org/w/index.php?diff=66265&oldid=66245 * Enchant3d * (+41)
16:01:55 <esowiki> [[Hexar]] M https://esolangs.org/w/index.php?diff=66266&oldid=66265 * Enchant3d * (-20)
16:14:16 <Lykaina> effing fire drill in my building. couldn't find my keys and got locked out
16:14:46 <Lykaina> (since then, found keys after being let back in)
16:15:40 <Taneb> Fun fun fun
16:22:11 -!- imode has joined.
16:37:26 -!- Lord_of_Life_ has joined.
16:39:00 -!- Lord_of_Life has quit (Ping timeout: 258 seconds).
16:39:01 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
16:40:15 -!- sebbu has quit (Read error: Connection reset by peer).
16:41:05 -!- sebbu has joined.
17:05:54 -!- FreeFull has joined.
17:15:18 -!- Phantom_Hoover has joined.
17:17:21 -!- b_jonas has joined.
17:18:16 <b_jonas> ais523: by the way, shachaf asked for one of your esolangs in https://esolangs.org/logs/2019-09-18.html#lgd
17:19:47 <ais523> right, in MiniMAX commands have a read word and a write word so overlapping them is the only way to produce a memory location that can be both read and written
17:31:37 <b_jonas> heh
17:31:45 <b_jonas> https://twitter.com/volatile_void/status/1174015227924570119 "Little-known fact “NaN” is a recursive acronym, it stands for “Not a NaN”"
17:32:33 <ais523> I was going to say "how can an x be a not-x" but then realised that NaN isn't comparable with itself
17:32:33 <ais523> so that's cleverer than it seems
17:33:30 <b_jonas> exactly
17:33:40 <b_jonas> it's like those numbers used in bistromathic drives
17:34:34 <ais523> hmm, is it the case that NaN != NaN? or just that !(NaN == NaN)?
17:34:40 <b_jonas> both of those
17:36:48 <b_jonas> ooh
17:36:54 <b_jonas> this one you ais might be qualified to answer
17:36:58 <b_jonas> https://twitter.com/gro_tsen/status/1174039625347846144
17:37:08 <b_jonas> "Serious question: what plausible use cases exists for a “char ****p” (or more indirections)? I only once used a “char ***p” and that already seemed very contrived (and I was confused every time I re-read this code)."
17:40:12 <ais523> I'm not sure there is one
17:40:23 <ais523> the void ***** referenced in Three Star Programmer's documentation is a joke
17:41:24 <ais523> I guess a page table is sort-of like a void ****** or so with a constant but large number of *s
17:44:06 <olsner> https://github.com/boostorg/mpl/blob/develop/include/boost/mpl/assert.hpp#L222 uses a 13-star type
17:44:47 <fizzie> The standard use for char *** is when you want to pass &argv to a function that wants to muck with it.
17:45:22 <b_jonas> olsner: lol
17:45:57 <ais523> olsner: is that testing for compiler brokenness of some sort?
17:46:45 <olsner> hm, and the line above that is a typedef with 12-star pointer to pointer-to-member of the 13-star type, so that's effectively a 26-star type or something
17:46:46 <ais523> actually, no, it looks more like it's trying to come up with a type that isn't in use elsewhere in the program
17:46:57 <olsner> yeah, I think that's what they're doing
17:48:23 <shachaf> Should I write "int const x;" instead of "const int x;"?
17:48:46 <b_jonas> shachaf: it doesn't matter
17:48:56 <b_jonas> they're the same thing
17:48:56 <shachaf> Or "int const *x;", I suppose that's more relevant.
17:49:17 <shachaf> I know they have the same meaning.
17:49:39 <olsner> I always use "const int" for those, even though it requires you to change const placement when making fancier types
17:49:39 <ais523> after a code formatter taught me how to do it, I started always using *const (no whitespace) for situations where the pointer itself is const
17:49:44 <shachaf> A program without whitespace is also "the same thing" as a program with whitespace, but you can still ask questions about it.
17:49:47 <b_jonas> if you are writing code for an existing project, or your supervisor asks you to follow a certain coding style, write it in a way to match the style of that code or follow those recommedations. otherwise, write whatever.
17:50:00 <b_jonas> the same is true for int *x; versus int* x;
17:50:07 <ais523> so I prefer "const int x;", "const int *x;", etc., because that makes it clearer that it's the pointer referent that's const, not the pointer itself
17:50:35 <shachaf> ais523: The idea of "int const x;" is that it's consistent with "int *const x;"
17:51:12 <b_jonas> shachaf: sure, but these are points of coding style where even people who write good C/C++ programs don't agree, and they mostly came to the agreement that either is fine
17:51:24 <shachaf> b_jonas: What if I don't have a supervisor and I just want things to be good instead of bad?
17:51:33 <ais523> shachaf: yes, but when you move up to "int const *const x;" the pattern doesn't feel like it holds any more
17:51:35 <shachaf> I try not to write C/C++ polyglots.
17:51:38 <b_jonas> so for some stupid whitespacing or style, people might complain if it's code that they'll read, but for this one, nobody will complain unless you have to match an existing coding style
17:51:54 <ais523> isn't "C/C++" undefined behaviour?
17:52:13 <b_jonas> sure
17:52:22 <b_jonas> ok, let's say C++ programs
17:52:31 <ais523> `! c float C = 4.0; printf("%f", C/C++);
17:52:34 <HackEso> 1.250000
17:52:37 <b_jonas> and if shachaf asks about this in C programs, then I can't help much
17:52:40 <b_jonas> I don't understand C
17:52:45 <ais523> I was expecting a warning
17:53:13 <olsner> does `! c build with all the warnings on?
17:53:44 <shachaf> I don't understand C++.
17:53:52 <shachaf> I mostly understand C.
17:54:06 <shachaf> I think very few people understand C++.
17:54:35 <ais523> olsner: probably not; I actually wasn't expecting it to work at all
17:55:29 <ais523> `` printf '#include <stdio.h>\nint main(void) { float C = 4.0; printf("%f", C/C++); }' | gcc -Wall -Wextra -x c /dev/stdin
17:55:31 <HackEso> ​[01m[K/dev/stdin:[m[K In function ‘[01m[Kmain[m[K’: \ [01m[K/dev/stdin:2:40:[m[K [01;35m[Kwarning: [m[Ktoo many arguments for format [[01;35m[K-Wformat-extra-args[m[K] \ [01m[K/dev/stdin:2:55:[m[K [01;35m[Kwarning: [m[Koperation on ‘[01m[KC[m[K’ may be undefined [[01;35m[K-Wsequence-point[m[K]
17:55:53 <ais523> `` printf '#include <stdio.h>\nint main(void) { float C = 4.0; printf("%f", C/C++); }' | gcc -fno-diagnostics-color -Wall -Wextra -x c /dev/stdin
17:55:55 <HackEso> ​/dev/stdin: In function ‘main’: \ /dev/stdin:2:40: warning: too many arguments for format [-Wformat-extra-args] \ /dev/stdin:2:55: warning: operation on ‘C’ may be undefined [-Wsequence-point]
17:56:06 <shachaf> If you do it in C++ constexpr you might get useful information about UB.
17:56:17 <b_jonas> ``` set -e; gcc -fdiagnostics-color=never -Wall -O -o tmp/a.out -x c - <<< $'#include<stdio.h>\n''int main(void) { float C = 4.0; printf("%f", C/C++); return 0; }'; tmp/a.out # there is a warning
17:56:19 <HackEso> ​<stdin>: In function 'main': \ <stdin>:2:49: warning: operation on 'C' may be undefined [-Wsequence-point] \ 1.250000
17:56:25 <b_jonas> ah, you've been faster
17:56:26 <ais523> `` printf '#include <stdio.h>\nint main(void) { float C = 4.0; printf("%f", C/C++); }' | gcc -fno-diagnostics-color -Wall -Wextra -x c /dev/stdin
17:56:27 <HackEso> ​/dev/stdin: In function ‘main’: \ /dev/stdin:2:40: warning: too many arguments for format [-Wformat-extra-args] \ /dev/stdin:2:55: warning: operation on ‘C’ may be undefined [-Wsequence-point]
17:56:33 <ais523> `` printf '#include <stdio.h>\nint main(void) { float C = 4.0; printf("%%f", C/C++); }' | gcc -fno-diagnostics-color -Wall -Wextra -x c /dev/stdin
17:56:36 <HackEso> ​/dev/stdin: In function ‘main’: \ /dev/stdin:2:49: warning: operation on ‘C’ may be undefined [-Wsequence-point]
17:56:38 <ais523> there we go
17:56:49 <b_jonas> I had to look up -fdiagnostics-color=never , I didn't remember the option syntax
17:56:51 <ais523> both printf(1) and my IRC client use % as an escape symbol
17:57:00 <ais523> b_jonas: so did I, I just looked it up faster
17:57:33 <ais523> info is such a good documentation format in terms of the user experience (some of its internals are ridiculous, though)
17:57:49 <olsner> write a filter that translates color escape sequences to IRC colors
17:58:23 <shachaf> What? I hate using info.
17:59:04 <b_jonas> ais523: I don't use printf for this. I just use the $'foo' literals.
17:59:33 <b_jonas> shachaf: info as in the program, or info as in the format?
18:00:20 <b_jonas> because I think what gives the good user experience is when the docs are written in texinfo format well, which is hard to write, but when it's written that way, it compiles to multiple different formats including info, html, pdf, each of which you can read with multiple clients.
18:00:26 <b_jonas> "including"
18:00:36 <b_jonas> well, it compiles to info, html, pdf, but not much else.
18:00:53 <shachaf> I mean the program.
18:01:28 <b_jonas> shachaf: that I can understand. read one of the outputs with a different client
18:01:42 <ais523> very few other formats allow both index search (often in multiple indexes by subject) /and/ free text search /and/ have a hierarchical table of contents
18:01:53 <b_jonas> the html output produced is decent, not the one overloaded with client-side scripts that you see on the web these days
18:02:06 <ais523> I found the appropriate gcc option by typing "idiagnostics-" and a newline
18:02:13 <ais523> in about 5 seconds
18:02:16 <b_jonas> *ahem* chm
18:02:19 <olsner> but can info produce man pages?
18:02:41 <b_jonas> olsner: I don't think so, at least not in a sane way
18:02:43 <ais523> b_jonas: in chm's predecessor, .hlp, the free text search took several minutes
18:02:52 <ais523> although that was likely related to the computers at the time
18:03:36 <ais523> also, AFAIK neither .chm nor .hlp allow the whole thing to be easily read in depth-first order (whereas info does)
18:03:38 <b_jonas> is chm basically just restricted html wrapped up in a compressed file with some extra info about the table of contents?
18:03:42 <ais523> yes
18:04:10 <b_jonas> what I don't know is how you can sanely export the extra info in some easily usable format
18:04:22 <b_jonas> I can export the html
18:06:35 <b_jonas> that reminds me, there's a certain documentation format that I find somewhat annoying
18:07:20 <fizzie> Documentation in UHS format, so that you don't accidentally reveal too much to the user.
18:07:21 <b_jonas> namely when the help is embedded in the program, and you can print it by invoking it with like programname help topic, but you have to do it one node at a time, and it can be hard to find out what all the nodes are, plus you may have to iterate over multiple programs
18:07:27 <b_jonas> for some reason, version control software uses this
18:07:44 <b_jonas> it's the most annoying for subversion, which has really good user reference documentation, but tucked away this way
18:08:06 <b_jonas> you have to iterate over all svn* programs, run them with help, then with help topic, then with help topic again for topics that are two levels deep
18:08:28 <b_jonas> hg technically does it too, but it also comes with all that documentation installed as a single manpage, which negates all the drawbackzs
18:08:30 <ais523> b_jonas: "man git-commit", etc.
18:08:44 <b_jonas> ais523: yes, I'm not talking about git, only svn, hg, and fossil
18:08:49 <ais523> ah, OK
18:09:03 <b_jonas> I also don't understand why it's only version control software that do this
18:09:22 <ais523> because they're copying svn
18:09:35 <b_jonas> if only they had a command like programname help all, that would also fix the problem
18:09:53 <b_jonas> at one point I started to write a script to export all the docs from svn, but I haven't finished it
18:09:59 <fizzie> "helpfull" is a flag with a good name.
18:10:00 <b_jonas> I should do that so I can do full text searches
18:10:07 <b_jonas> fizzie: yeah, that could work too
18:10:07 <ais523> or, well, a likely reason is that VCS is particularly likely to want to bundle a large number of commands with separate behaviour into one executable
18:10:20 <b_jonas> fizzie: as long as (programname help) tells that that command exists
18:10:22 <ais523> that said, busybox does this correctly
18:11:10 <b_jonas> I'm not too familiar with busybox. I only use it when running the debian installer.
18:11:37 <ais523> it's basically one executable that implements cut-down versions of a lot of different commands
18:11:49 <ais523> to benefit from being able to share code between them
18:12:05 <ais523> basically, it's a size-optimized minimal userland
18:12:24 <b_jonas> ais523: yes, but for svn it's not even one executable, it's twenty, with zero or one or two levels deep help depending on which program it is
18:12:53 <shachaf> Somehow my system supports "man git commit", with a space.
18:12:56 <b_jonas> of course, you only need five of those twenty programs, but how would you know which five unless you can read their help?
18:13:11 <b_jonas> shachaf: yes, that's a little magic built into man
18:13:28 <shachaf> Built in? That's scow.
18:13:41 <shachaf> Anticompetitive.
18:14:16 <ais523> heh, busybox's documentation is comparable to the program itself
18:14:17 <fizzie> It should be forced to show a dialog on first use listing possible alternatives.
18:14:41 <ais523> clear is documented by busybox as "Clear screen", not even a full stop
18:14:45 <b_jonas> shachaf: try (man apt get)
18:14:54 <ais523> whereas the manual page for clear(1) is one and a half pages
18:15:18 <b_jonas> ais523: the manual is shorter because the busybox programs usually have fewer options or features than the programs that they mimic though
18:15:29 <ais523> yes
18:15:33 <ais523> busybox clear doesn't have any
18:15:40 <ais523> but then, clear(1) only has three
18:16:05 <ais523> most of it is a discussion of the history of clearing screens
18:17:18 <ais523> huh, busybox actually is a complete userland, it has things like init and crond
18:17:45 <b_jonas> ais523: yes, that's its point, you put it on a disk with a libc plus a few device files and directories, you get a full tiny userland
18:18:14 <b_jonas> it's used in debian's generated initrd so you get a small rescue system if it can't mount root for some reason
18:18:19 <ais523> also dpkg, which I guess makes sense if you're using it as a rescue system for Debian
18:18:29 <b_jonas> mind you, busybox is configurable at compile time, so which programs it has may depend on which system
18:18:34 <b_jonas> you can probably compile it to not have init
18:19:36 -!- tromp has quit (Remote host closed the connection).
18:19:47 <b_jonas> init isn't really big anyway, all the complicated parts are off-loaded to getty and login
18:21:09 <b_jonas> complicated parts like setting up the serial terminal for logins when you don't know in advance what sort of modem and terminal the remote party has
18:21:42 <b_jonas> setting environment variables from key=value entries that the user writes after their username
18:22:11 <ais523> it has mke2fs, which is a bit of a surprise and seems out of place
18:22:21 <b_jonas> printing /etc/issue and interpreting all the possible escape sequences in ity
18:22:32 <ais523> I wouldn't want a cut-down simplified program to be making my filesystems
18:22:32 <b_jonas> why?
18:22:41 <b_jonas> mke2fs is exactly what you want on a rescue system
18:22:50 <b_jonas> to be able to set up a real system, or repair a half-working one
18:22:54 <ais523> especially as ext2 is pretty old by now and it doesn't to ext3/ext4
18:23:06 <ais523> b_jonas: why would you want to reformat a disk when repairing a half-working system?
18:23:17 <b_jonas> ais523: not a whole disk, just a partition, like a boot partition
18:23:22 <ais523> especially as you're only going to have to rereformat it later using mkfs.ext4
18:23:44 <ais523> and generally if I'm trying to solve a problem, I'd expect reformatting things to make it worse, not better
18:23:48 <b_jonas> or a temporary fs to which you copy files from some cds or network
18:24:03 <ais523> fsck (which it doesn't have) would be a much more useful program to include
18:24:07 <fizzie> I think it has a getty as well.
18:24:22 <b_jonas> ais523: obviously you don't want to reformat a part of the disk from which you want to save the data
18:24:28 <fizzie> A lot of the OpenWRT userland is in busybox.
18:24:36 <b_jonas> ais523: and mkfs is a much simpler smaller program than fsck
18:24:54 <b_jonas> ais523: fsck has to know a lot of things about the file system, including handling all the invalid states that it shouldn't be in
18:25:07 <b_jonas> mkfs only has to know about valid and empty states, the rest is handled by the kernel afterwards
18:25:55 <b_jonas> ais523: as for ext2 vs ext3, you can add an ext3 journal to an existing ext2 partition afterwards with tune2fs
18:26:00 <b_jonas> with the -j option
18:26:21 <b_jonas> ext4 would be nice, but I think the mkfs required for that would be bigger
18:26:48 <fizzie> And Android uses toybox, which also has a bunch of programs: http://landley.net/toybox/status.html
18:26:55 <b_jonas> and ext2 is a good enough common denominator for when you need a scratch filesystem to store things on but don't need it to be maximally efficient, just readable and writable by most software
18:27:52 <b_jonas> ais523: even my custom dos bootfloppy has the format program to format a partition, both for this sort of temporary thing, or to bootstrap a bootable dos onto a hard disk
18:29:07 <b_jonas> of course that boot floppy is highly obsolete now
18:35:33 <b_jonas> ais523: also, at some point I ran a system with the grub-l boot loader on a different disk from the root file system. in that case, if the hard disk with the boot loader breaks down, I can repair it by creating a boot partition on the other disk, format it to either ext[23] or vfat, and installing the grub-l boot loader and config files for it there. nowadays the simpler option would be to install grub2
18:35:39 <b_jonas> of course, but imagine the same thing before grub2 was stable.
18:36:08 <b_jonas> (actually my system is still configured that way, but there is a boot file system already on the other disk, so I don't have to create it)
18:37:34 <b_jonas> I'll have to stop using grub-l when I use a hard disk larger than 2 terabyte as root disk, but not before
18:38:02 -!- ais523 has quit (Ping timeout: 240 seconds).
18:42:54 -!- ais523 has joined.
18:56:39 -!- tromp has joined.
19:01:13 -!- tromp has quit (Ping timeout: 258 seconds).
19:02:43 -!- tromp has joined.
19:07:47 -!- tromp has quit (Ping timeout: 276 seconds).
19:16:37 -!- ais523 has quit (Ping timeout: 268 seconds).
20:01:21 <b_jonas> wait what
20:01:58 <b_jonas> do you recall what I said a few days ago about Sonic and Zelda?
20:02:49 <b_jonas> it turns out that in the Banjo-Kazooie video games, the name of the player characters are Banjo and Kazooie, Kazooie being the bird and Banjo the big creature. I never suspected that. Just what kind of Nintendo game is that to have such a title?
20:06:06 -!- MrBismuth has quit (Read error: Connection reset by peer).
20:08:42 -!- Lykaina has quit (Quit: leaving).
20:32:16 -!- MrBismuth has joined.
20:53:03 -!- arseniiv has joined.
21:14:32 -!- imode has quit (Ping timeout: 276 seconds).
21:18:10 -!- tromp has joined.
21:38:07 -!- imode has joined.
22:00:01 -!- Lykaina has joined.
22:00:13 <Lykaina> hi
22:00:55 <Lykaina> this is the now-working arduino subset: http://sif.lesidhetree.com/sara/echidna/echidna-uno-doc_0003.pdf
22:14:48 -!- atslash has quit (Ping timeout: 258 seconds).
22:15:10 -!- atslash has joined.
22:22:50 -!- atslash has quit (Ping timeout: 240 seconds).
22:23:32 -!- atslash has joined.
22:31:36 <b_jonas> oh by the way
22:32:08 <b_jonas> I said earlier that at work, I finally have a windows installation where none of the software messages are localized to hungarian.
22:32:12 <b_jonas> Including office.
22:32:47 <b_jonas> Well, this almost bit me back. The result is that MS Word defaults to letter paper size, and I have to change that explicitly.
22:42:10 -!- FreeFull has quit.
22:45:56 <kmc> how much time and money is wasted annually by the fact that letter and A4 are slightly different
22:54:30 <b_jonas> kmc: probably not much money, it just bothers the sense of aesthetic of geeks like us when people zoom documents down to fit the paper
22:57:05 <b_jonas> also the form that I have to fill for sending registered mail on snailmail post is half a centimeter higher than the envelopes that you usually use as the outer layer of such mail, so if I put them together in a folder to be able to find the pair easily at the post office, the top and bottom of the form likely gets crumpled
22:58:20 <b_jonas> the post office has been using the same form for decades, they probably have a huge warehouse filled with them because they were printed in a high quantity when they didn't yet know how unpopular the internet would make snail mail
22:59:21 -!- imode2 has joined.
23:00:29 -!- imode has quit (Ping timeout: 276 seconds).
23:01:34 <b_jonas> ah no! it's not the same warehouse full, because I have two different versions, and one of them refers to a government law dated to 2012
23:01:40 <b_jonas> and a web address
23:02:17 <b_jonas> they still all have the checkbox saying package, despite that you need the other red form for packages, not this green form
23:02:26 <b_jonas> I don't understand
23:03:56 <pikhq> kmc: too much
23:04:25 <b_jonas> and I have one of the versions on two different colored paper sheets, so they probably weren't all printed together
23:04:57 <b_jonas> heck, I think I have at least three different versions, even ignoring the paper color
23:11:38 -!- olsner has quit (Ping timeout: 240 seconds).
23:24:48 -!- imode2 has quit (Remote host closed the connection).
23:27:16 -!- imode has joined.
23:33:10 -!- olsner has joined.
23:38:26 -!- olsner has quit (Ping timeout: 240 seconds).
2019-09-20
00:03:14 -!- olsner has joined.
00:13:38 -!- Phantom_Hoover has quit (Quit: Leaving).
00:31:07 -!- imode has quit (Ping timeout: 268 seconds).
00:41:54 <Lykaina> brb
00:42:01 -!- Lykaina has quit (Quit: leaving).
00:54:19 -!- Lykaina has joined.
00:54:33 <Lykaina> back
00:57:11 <Lykaina> with the arduino mega version of echidna, it doesn't have an lcd attached, but it does have ethernet...
00:57:45 <Lykaina> i connected an ethernet/sd shield to it
00:58:29 -!- heroux has quit (Ping timeout: 258 seconds).
00:59:28 -!- hppavilion[1] has joined.
00:59:28 -!- heroux has joined.
00:59:38 -!- arseniiv has quit (Ping timeout: 240 seconds).
01:06:09 -!- oerjan has joined.
02:00:13 <Lykaina> i have everything in the arduino mega2560 version of echidna that is unrelated to the ethernet. now i have to find out how ethernet works on it.
02:01:09 <Lykaina> see the arduino uno pdf for more information
02:06:50 <Lykaina> it's identical to uno 0003 from L - Z i think
02:07:06 <Lykaina> G - J are different
02:17:57 <Lykaina> i mean, G,I,J,K are different
02:19:14 -!- sebbu has quit (Ping timeout: 240 seconds).
02:21:41 -!- sebbu has joined.
02:51:58 -!- Lykaina has quit (Quit: leaving).
03:11:20 -!- Lykaina has joined.
03:12:03 <Lykaina> why did i come back on?
03:15:41 -!- Lykaina has quit (Client Quit).
04:38:34 -!- Lord_of_Life has quit (Ping timeout: 265 seconds).
04:40:22 -!- Lord_of_Life has joined.
05:02:22 -!- hppavilion[1] has quit (Remote host closed the connection).
06:02:25 -!- oerjan has quit (Quit: Nite).
06:27:09 -!- tromp has quit (Remote host closed the connection).
06:59:42 -!- tromp has joined.
07:01:31 -!- imode has joined.
07:20:57 <imode> there is no way to implement 'swap' in terms of dup, drop, roll and last.
07:21:18 <imode> :(
07:25:02 <imode> there _is_ a way to implement `roll` in terms of dup, swap, drop and last, though!
07:26:04 -!- nfd9001 has joined.
07:32:55 -!- tromp has quit (Remote host closed the connection).
07:34:08 <imode> dup, drop, swap, last, begin, end, while, 1, 0, +, -, =
07:34:21 <imode> you could even drop `=`.
07:37:33 -!- b_jonas has quit (Quit: leaving).
07:46:39 -!- tromp has joined.
07:50:28 <imode> you could also probably drop dup.
07:50:53 -!- tromp has quit (Ping timeout: 252 seconds).
08:01:49 -!- tromp has joined.
08:06:29 -!- imode has quit (Ping timeout: 276 seconds).
08:09:19 <esowiki> [[Spoon]] https://esolangs.org/w/index.php?diff=66267&oldid=56538 * Rdebath * (+615) Took a couple of minutes to copy-paste an interpreter and link to trivial BF subst
08:15:45 -!- cpressey has joined.
08:31:47 <esowiki> [[BF-RLE]] https://esolangs.org/w/index.php?diff=66268&oldid=57764 * Rdebath * (+141) Crosslinking
08:33:01 <cpressey> Good morning.
08:39:45 <cpressey> Associativity and confluence are related: (a),(b),(c) => [ (a,b),c | a,(b,c) ] => (a,b,c)
09:01:37 -!- tromp has quit (Remote host closed the connection).
09:20:50 -!- tromp has joined.
10:25:55 -!- mniip has quit (Ping timeout: 610 seconds).
11:53:52 <cpressey> https://github.com/catseye/Nested-Modal-Transducers <-- a reactive theory thing I've been working on
11:54:54 -!- cpressey has quit (Quit: Rebooting).
11:59:10 -!- cpressey has joined.
12:01:36 <int-e> reactionary theory, hmm
12:13:09 -!- nfd9001 has quit (Ping timeout: 258 seconds).
12:14:07 -!- sprocklem has quit (Ping timeout: 268 seconds).
12:56:41 -!- arseniiv has joined.
13:09:31 -!- Lykaina has joined.
13:13:10 <Lykaina> hi
13:28:11 <cpressey> hi Lykaina
13:42:50 <esowiki> [[User:InfiniteDonuts]] https://esolangs.org/w/index.php?diff=66269&oldid=65654 * InfiniteDonuts * (+5)
13:51:38 <esowiki> [[Special:Log/newusers]] create * Raito9 * New user account
14:03:53 -!- jakobrs has joined.
14:15:45 -!- mniip has joined.
14:43:58 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=66270&oldid=66219 * Raito9 * (+146) Added myself
14:45:30 <esowiki> [[Advanced Brainfuck]] M https://esolangs.org/w/index.php?diff=66271&oldid=65342 * Raito9 * (+5) Made some minor grammatical changes to sentences
14:49:03 -!- jakobrs has quit (Ping timeout: 245 seconds).
15:09:39 -!- jakobrs has joined.
15:10:12 <esowiki> [[Esolang:Sandbox]] https://esolangs.org/w/index.php?diff=66272&oldid=65844 * PaniniTheDeveloper * (+71)
15:17:47 -!- jakobrs has left.
15:51:44 <esowiki> [[Brainflop]] https://esolangs.org/w/index.php?diff=66273&oldid=66244 * InfiniteDonuts * (+775)
15:52:22 <esowiki> [[Language list]] https://esolangs.org/w/index.php?diff=66274&oldid=66246 * InfiniteDonuts * (-11) /* F */
15:53:00 <esowiki> [[Language list]] https://esolangs.org/w/index.php?diff=66275&oldid=66274 * InfiniteDonuts * (+16) /* B */
15:59:16 -!- cpressey has quit (Quit: A la prochaine.).
16:18:35 -!- imode has joined.
16:38:04 -!- Lord_of_Life_ has joined.
16:40:26 -!- Lord_of_Life has quit (Ping timeout: 240 seconds).
16:40:27 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
17:13:09 -!- FreeFull has joined.
18:23:43 -!- b_jonas has joined.
18:23:50 <b_jonas> yay!
18:24:14 <b_jonas> it's my vacation! I'm traveling to N-R W starting tomorrow morning. I still have a lot of packing and stuff to do.
18:28:45 -!- iczero has quit (Remote host closed the connection).
18:28:45 -!- BWBellairs has quit (Quit: boxmein's znc went down :().
18:29:12 -!- iczero has joined.
18:29:34 -!- BWBellairs has joined.
19:09:32 <arseniiv> hi all! What do you use to make djvu files, if any?
19:09:48 <arseniiv> b_jonas: nice weather to you
19:10:08 <b_jonas> I don't make djvu files
19:10:16 <arseniiv> today I made my first djvu ever
19:10:37 <arseniiv> and also the second, the third, and the fourth is on its way
19:11:08 <b_jonas> arseniiv: what do the files depict?
19:11:22 <arseniiv> (they’re using different modes)
19:12:14 <arseniiv> they depict a school textbook on a second foreign language
19:13:07 <arseniiv> (I mean, usual school, not university, I don’t remember what it’s called specifically)
19:13:29 <b_jonas> I should make a pdf of the Zichy Arany book. I almost have it too, I prepaired all the layout and all, I just got annoyed by the fact that either pdf wants to contain only baseline jpegs, not progressive ones, which would make the high-res pdf twice the size it should have, or this pdf writer software believes that.
19:14:12 <arseniiv> b_jonas: :( unfortunate
19:14:13 <b_jonas> what do you mean by "second foreign language"?
19:14:47 <b_jonas> this is a problem only for the high resolution scans, but I want a pdf that has the high resolution scans
19:15:16 <b_jonas> I might also make a more compressed pdf with lower quality images, but only as an alternative
19:16:24 <arseniiv> b_jonas: today in some places they study two languages, but one of them apparently more fiercely, and the other less, so this book is under 100 pages
19:17:33 <b_jonas> ah, so it's a textbook that is beginner level at the foreign language, but for older students?
19:18:22 <arseniiv> yeah I presume something like that (it’s on Deutch so I can’t say)
19:23:25 <arseniiv> don’t know if it’s useful. My school English was not bad but I wouldn’t be able to chat here with only that, I think. The university course gave me something essential, as well as reading fiction
19:25:31 <arseniiv> if I wouldn’t be lazy to deal completely with proper tense and article usage, I could even write well now
19:26:53 -!- budonyc has joined.
21:24:50 -!- budonyc has quit (Ping timeout: 240 seconds).
21:41:52 -!- budonyc has joined.
22:06:53 -!- aloril has quit (Remote host closed the connection).
22:08:57 -!- aloril has joined.
22:27:07 -!- imode has quit (Ping timeout: 245 seconds).
23:17:43 -!- budonyc has quit (Quit: Leaving).
23:23:21 -!- imode has joined.
23:33:13 -!- arseniiv has quit (Ping timeout: 252 seconds).
23:49:10 -!- FreeFull has quit.
2019-09-21
00:04:20 <esowiki> [[Mobius]] https://esolangs.org/w/index.php?diff=66276&oldid=32348 * Salpynx * (+244) /* Instructions */ Show sample instruction colours (RGB / CYMK)
00:09:27 <esowiki> [[Mobius]] M https://esolangs.org/w/index.php?diff=66277&oldid=66276 * Salpynx * (+0) correct Hz symbol
01:16:35 -!- b_jonas has quit (Quit: leaving).
01:29:44 -!- imode has quit (Ping timeout: 276 seconds).
03:06:56 -!- Lykaina has quit (Quit: leaving).
03:22:18 -!- imode has joined.
04:13:15 -!- tromp has quit (Remote host closed the connection).
04:40:10 -!- Lord_of_Life has quit (Ping timeout: 268 seconds).
04:42:30 -!- Lord_of_Life has joined.
04:44:47 -!- tromp has joined.
04:49:56 -!- tromp has quit (Ping timeout: 276 seconds).
06:15:31 -!- tromp has joined.
06:18:13 -!- imode has quit (Ping timeout: 268 seconds).
06:20:17 -!- tromp has quit (Ping timeout: 276 seconds).
06:48:33 <esowiki> [[User:Zzo38/Untitled 2]] https://esolangs.org/w/index.php?diff=66278&oldid=63016 * Zzo38 * (+536)
06:51:07 -!- tromp has joined.
06:58:56 <esowiki> [[User:Zzo38/Untitled 3]] N https://esolangs.org/w/index.php?oldid=66279 * Zzo38 * (+1465) Created page with "There is a set of scheduled subroutine calls, each on a given turn number, counting from 0 being the current turn and positive numbers are in future. On each turn, all subrout..."
07:02:24 <esowiki> [[User:Zzo38/Untitled 3]] https://esolangs.org/w/index.php?diff=66280&oldid=66279 * Zzo38 * (+774)
07:05:38 <zzo38> Maybe there should be a category on esolang wiki for non-interactive I/O.
07:11:28 <zzo38> Did you see my [[User:Zzo38/Untitled 2]] and [[User:Zzo38/Untitled 3]] esolang and also what can it be called?
07:13:53 <esowiki> [[Esolang:Sandbox]] M https://esolangs.org/w/index.php?diff=66281&oldid=66272 * A * (+30)
07:41:54 <esowiki> [[String]] https://esolangs.org/w/index.php?diff=66282&oldid=51803 * Zzo38 * (+48)
07:47:57 <esowiki> [[User:Zzo38/Untitled 3]] https://esolangs.org/w/index.php?diff=66283&oldid=66280 * Zzo38 * (+96)
07:48:33 <esowiki> [[User:Zzo38/Untitled 3]] https://esolangs.org/w/index.php?diff=66284&oldid=66283 * Zzo38 * (+65)
07:54:15 -!- Star651 has joined.
08:05:40 -!- nfd9001 has joined.
08:06:48 <esowiki> [[Talk:From INTERCAL to LOLCODE: The Esoteric Programming Story]] https://esolangs.org/w/index.php?diff=66285&oldid=35260 * Star651 * (+484) /* suggestion */
08:09:16 -!- Star651 has quit (Remote host closed the connection).
08:25:35 -!- tromp has quit (Remote host closed the connection).
08:42:27 -!- tromp has joined.
08:44:02 -!- tromp has quit (Remote host closed the connection).
08:44:51 -!- tromp has joined.
09:31:04 -!- FreeFull has joined.
10:46:55 <esowiki> [[Imperative]] N https://esolangs.org/w/index.php?oldid=66286 * A * (+650) Created page with "[[Imperative]] is a minimalist language designed to fit into the definition of an imperative language. == Definition == 1.Imperative programming Most imperative languages sup..."
10:52:52 <esowiki> [[Imperative]] M https://esolangs.org/w/index.php?diff=66287&oldid=66286 * A * (+332)
10:53:25 <esowiki> [[Imperative]] M https://esolangs.org/w/index.php?diff=66288&oldid=66287 * A * (+68)
12:45:24 <esowiki> [[UsableSeed]] N https://esolangs.org/w/index.php?oldid=66289 * Palaiologos * (+1142) Created page with "UsableSeed is a language based Seed. Programs only contain two instructions - length and random seed, separated by a space. To execute a Seed program, the seed is fed into a [..."
12:46:32 <esowiki> [[UsableSeed]] https://esolangs.org/w/index.php?diff=66290&oldid=66289 * Palaiologos * (+55)
13:03:29 -!- arseniiv has joined.
13:25:32 <esowiki> [[B****f***]] N https://esolangs.org/w/index.php?oldid=66291 * MiroslavRD * (+23) Redirected page to [[Brainfuck]]
13:54:46 <arseniiv> precious pseudo-PG-13 redirects
13:55:59 <arseniiv> as if people aren’t satisfied with the various obfuscations and abbreviations that do already exist
13:56:44 <arseniiv> who in their sane mind would want to write B****f*** instead of BF if they need a censored name
13:57:08 <arseniiv> /rant off
14:21:51 -!- tromp_ has joined.
14:25:08 -!- tromp has quit (Ping timeout: 246 seconds).
15:19:59 -!- xkapastel has joined.
15:23:20 <esowiki> [[UsableSeed]] M https://esolangs.org/w/index.php?diff=66292&oldid=66290 * Ais523 * (+4) many readers won't know what 05AB1E is; redlink it so that if a page about it is written, it'll provide that informatioin
16:41:52 -!- Lord_of_Life_ has joined.
16:42:27 -!- Lord_of_Life has quit (Ping timeout: 265 seconds).
16:44:46 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
16:49:36 <zzo38> arseniiv: The people who like to write it in long form
16:51:03 <arseniiv> zzo38: I agree this is not completely without merit, but still they could write it explicitly :P
16:52:11 <zzo38> I think it should not need to be censored, but some people like to do anyways.
17:13:13 -!- ocharles_ has joined.
17:15:41 -!- Hooloo42 has joined.
17:16:11 -!- mynery has joined.
17:20:21 -!- Effilry has joined.
17:20:42 -!- Hooloovo0 has quit (*.net *.split).
17:20:42 -!- zzo38 has quit (*.net *.split).
17:20:42 -!- FireFly has quit (*.net *.split).
17:20:43 -!- myname has quit (*.net *.split).
17:20:43 -!- haavard has quit (*.net *.split).
17:20:43 -!- ocharles has quit (*.net *.split).
17:20:52 -!- ocharles_ has changed nick to ocharles.
17:21:04 -!- mynery has changed nick to myname.
17:25:23 -!- imode has joined.
17:27:11 -!- zzo38 has joined.
17:28:10 -!- haavard has joined.
18:08:43 -!- Effilry has changed nick to FireFly.
18:13:28 -!- imode has quit (Remote host closed the connection).
18:15:57 -!- imode has joined.
19:07:34 <zzo38> Which error number from sysexits.h should be used in case of a memory allocation error?
19:14:37 -!- nfd9001 has quit (Ping timeout: 245 seconds).
19:28:18 -!- andrewtheircer has joined.
19:28:53 <andrewtheircer> hi
19:31:32 -!- andrewtheircer has changed nick to andrewtheircer_.
19:34:27 <andrewtheircer_> w
19:38:22 -!- andrewtheircer_ has quit (Remote host closed the connection).
19:39:00 -!- andrewtheircer_ has joined.
20:06:56 -!- andrewtheircer_ has quit (Remote host closed the connection).
20:10:59 -!- Sgeo__ has joined.
20:13:48 -!- Sgeo_ has quit (Ping timeout: 268 seconds).
20:14:14 -!- andrewtheircer_ has joined.
20:26:21 -!- imode has quit (Remote host closed the connection).
20:29:32 <andrewtheircer_> hi imod
20:52:45 -!- lambdabot has quit (Remote host closed the connection).
20:55:34 -!- lambdabot has joined.
21:14:47 -!- imode has joined.
21:26:00 <andrewtheircer_> ewelp
21:29:43 -!- ais523 has joined.
21:30:53 <int-e> @botsnack
21:30:53 <lambdabot> :)
21:35:26 <ais523> this is a less appropriate channel, but only slightly, so I may as well ask here too: does anyone here know of a way to do a string eval in moderl Perl without using the letter 'e'
21:35:39 <ais523> (one nice thing about asking in #esoteric rather than #perl is that you don't have to attempt to justify what you're doing)
21:37:17 <int-e> ais523: Hmm, b_jonas is the most likely person to know, and they are not here.
21:37:39 <andrewtheircer_> good afternoon
21:37:42 <int-e> (it doesn't hurt to ask, of course)
21:37:44 <andrewtheircer_> i am a nigerian programmer
21:37:53 <ais523> I agree that b_jonas would be a good person to ask
21:40:25 <int-e> ais523: I only know of eval and s///e, so I can't really help.
21:41:27 <int-e> (I suspect everything I just wrote was redundant.)
21:45:03 <andrewtheircer_> is lemonlimeskull here
21:57:45 <ais523> `! perl print qx<$^X -E $_ $_>for q<'print q[print qx<$^X -E $_ $_>for q<],chr 39,$ARGV[0],chr 39,">"'>
21:57:46 <HackEso> print qx<$^X -E $_ $_>for q<'print q[print qx<$^X -E $_ $_>for q<],chr 39,$ARGV[0],chr 39,">"'>
21:57:54 <ais523> no lowercase e :-)
21:58:18 <ais523> #perl have come up with ideas for removing the capital E too
21:58:26 -!- imode has quit (Ping timeout: 240 seconds).
22:06:04 -!- ais523 has quit (Remote host closed the connection).
22:07:16 -!- ais523 has joined.
22:08:32 <andrewtheircer_> mmm
22:20:45 -!- imode has joined.
22:26:40 -!- andrewtheircer_ has quit (Remote host closed the connection).
23:29:23 -!- ais523 has quit (Ping timeout: 246 seconds).
23:30:21 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=66293&oldid=66270 * Tetratrary * (+231) /* Introductions */
23:37:41 -!- arseniiv has quit (Ping timeout: 276 seconds).
23:41:33 -!- Cale has quit (Ping timeout: 245 seconds).
23:56:28 -!- oerjan has joined.
2019-09-22
00:00:36 <zzo38> I thought of a idea of a new conspiracy for Magic: the Gathering, which could be: Nonbasic objects with the chosen name are legendary. (You could also do this with other supertypes, such as snow and world. Which are good depends on the rest of the set, I think.)
00:01:19 -!- imode has quit (Ping timeout: 265 seconds).
00:04:25 <zzo38> (Or make it all three.)
00:09:29 <zzo38> And maybe also ongoing. The official rules currently do not do anything with ongoing except for schemes, but I think it should also suppress the similar state-based actions for Sagas and for phenomena, too.
00:09:34 -!- Cale has joined.
00:36:51 -!- Hooloo42 has quit (Quit: Temporarily refracted into a free-standing prism.).
00:39:49 -!- Hooloovo0 has joined.
01:17:30 -!- imode has joined.
01:29:43 -!- xkapastel has quit (Quit: Connection closed for inactivity).
01:45:43 -!- imode has quit (Ping timeout: 265 seconds).
02:04:13 <kmc> void setDirection() {
02:04:14 <kmc> (Clockwise == true) ? (Step++) : (Step--);
02:04:25 <kmc> is using ?: for side effects like that scow? i'm pretty sure it's scow
02:05:03 <shachaf> Seems kind of scow.
02:05:08 <pikhq> A bit. I'd prefer `Step += Clockwise ? 1 : -1;`
02:05:16 <shachaf> I was about to say that.
02:05:25 <shachaf> Except I was wodnering whether Clockwise could have other values
02:05:48 <pikhq> `Clockwise == true` implies it's of type `bool`, so it better not
02:05:49 <HackEso> ​/srv/hackeso-code/multibot_cmds/lib/limits: line 5: exec: Clockwise: not found
02:05:56 <pikhq> lol
02:05:58 <kmc> it's C++ actually
02:06:02 <kmc> so anything could be anything or do anything
02:06:19 <pikhq> Sure, but there are things that only a jerk would do.
02:06:47 <kmc> this is arduino code
02:07:02 <kmc> a lot of arduino code is written by non-programmers and is awful
02:07:09 <pikhq> Ah.
02:07:13 <kmc> this particular code doesn't seem awful, just a little weird
02:07:29 <kmc> for one, arduino libs recklessly abuse overloading
02:07:47 <kmc> like, a driver will have Foo(int, int) and Foo(int, int, int)
02:07:55 <kmc> obviously, the first means to use the I2C bus and the second to use SPI
02:08:03 <kmc> because I2C has 2 wires and SPI has 3 (or four)
02:08:05 <kmc> :P
02:08:12 <pikhq> are you fucking kidding me
02:08:23 <kmc> sadly, no
02:08:27 <pikhq> fuck
02:08:29 <kmc> this is far from universal but I've seen it
02:08:38 <kmc> I think it was even an AdaFruit example lib :/
02:09:03 <kmc> o well
02:09:54 <kmc> `addquote <ais523> (one nice thing about asking in #esoteric rather than #perl is that you don't have to attempt to justify what you're doing)
02:09:55 <HackEso> 1334) <ais523> (one nice thing about asking in #esoteric rather than #perl is that you don't have to attempt to justify what you're doing)
02:13:17 <kmc> > length "< kmc> `addquote" == length "< HackEso> 1334)"
02:13:19 <lambdabot> True
02:58:01 -!- imode has joined.
03:15:23 <esowiki> [[*]] M https://esolangs.org/w/index.php?diff=66294&oldid=66023 * Voltage2007 * (+2) minor grammatical changes
03:33:05 <esowiki> [[Joke language list]] M https://esolangs.org/w/index.php?diff=66295&oldid=64912 * Voltage2007 * (+64) /* General languages */
03:36:14 <esowiki> [[APLWSI]] https://esolangs.org/w/index.php?diff=66296&oldid=61028 * Voltage2007 * (+77) /* Example programs */
03:39:27 <esowiki> [[APLWSI]] https://esolangs.org/w/index.php?diff=66297&oldid=66296 * Voltage2007 * (-78) Made a mistake.
04:42:26 -!- Lord_of_Life has quit (Ping timeout: 240 seconds).
04:46:49 -!- Lord_of_Life has joined.
04:59:58 -!- msippel415 has joined.
05:00:01 -!- msippel415 has quit (Client Quit).
05:21:49 -!- Hooloovo0 has quit (Remote host closed the connection).
05:24:18 -!- Hooloovo0 has joined.
06:08:23 -!- oerjan has quit (Quit: Nite).
06:10:20 <esowiki> [[Special:Log/newusers]] create * TwilightSparkle * New user account
06:16:07 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=66298&oldid=66293 * TwilightSparkle * (+235)
06:19:51 <esowiki> [[1+]] M https://esolangs.org/w/index.php?diff=66299&oldid=39718 * TwilightSparkle * (+20)
06:23:34 <esowiki> [[1+]] https://esolangs.org/w/index.php?diff=66300&oldid=66299 * TwilightSparkle * (+36)
06:23:49 <esowiki> [[1+]] M https://esolangs.org/w/index.php?diff=66301&oldid=66300 * TwilightSparkle * (-7)
06:43:35 <int-e> "A startling view of life in 1984! Forbidden love! Fear! Betrayal!" - blurb for Orwell's 1984
06:47:48 <esowiki> [[1+]] https://esolangs.org/w/index.php?diff=66302&oldid=66301 * TwilightSparkle * (+47) /* Examples */
07:05:31 -!- Lord_of_Life has quit (Read error: Connection reset by peer).
07:10:34 -!- Lord_of_Life has joined.
07:15:14 <esowiki> [[4004]] N https://esolangs.org/w/index.php?oldid=66303 * A * (+1929) Created page with "[[4004]] is a simpllified Intel 4004 microprocessor architecture that does not involve ROM manipulation. == Reference == <pre> Register groups NameSize ( Bits ) Accumulat..."
07:16:47 <esowiki> [[4004]] M https://esolangs.org/w/index.php?diff=66304&oldid=66303 * A * (-300) Simplified a bit
07:31:48 <esowiki> [[4004]] M https://esolangs.org/w/index.php?diff=66305&oldid=66304 * A * (-320)
07:34:11 <esowiki> [[4004]] https://esolangs.org/w/index.php?diff=66306&oldid=66305 * A * (-85)
07:36:07 <esowiki> [[4004]] M https://esolangs.org/w/index.php?diff=66307&oldid=66306 * A * (-280)
07:37:08 <esowiki> [[4004]] https://esolangs.org/w/index.php?diff=66308&oldid=66307 * A * (-35)
07:46:14 <esowiki> [[1+]] https://esolangs.org/w/index.php?diff=66309&oldid=66302 * TwilightSparkle * (+2)
07:51:59 -!- imode has quit (Ping timeout: 246 seconds).
09:42:02 <esowiki> [[1+]] M https://esolangs.org/w/index.php?diff=66310&oldid=66309 * TwilightSparkle * (+1)
09:55:33 -!- xkapastel has joined.
11:36:32 -!- arseniiv has joined.
11:43:44 <esowiki> [[1+]] https://esolangs.org/w/index.php?diff=66311&oldid=66310 * TwilightSparkle * (+42)
13:11:42 <esowiki> [[1+]] https://esolangs.org/w/index.php?diff=66312&oldid=66311 * TwilightSparkle * (+0)
13:22:16 -!- Frater_EST has joined.
13:24:07 <esowiki> [[1+]] https://esolangs.org/w/index.php?diff=66313&oldid=66312 * TwilightSparkle * (+40) /* Examples */
14:08:16 -!- imode has joined.
14:16:08 -!- Sgeo_ has joined.
14:19:44 -!- Sgeo__ has quit (Ping timeout: 276 seconds).
14:21:41 -!- Sgeo_ has quit (Ping timeout: 276 seconds).
14:41:25 -!- Frater_EST has left.
14:52:40 -!- xkapastel has quit (Quit: Connection closed for inactivity).
14:54:47 -!- FraterEST has joined.
15:35:14 -!- sebbu has quit (Ping timeout: 240 seconds).
15:47:28 -!- sebbu has joined.
15:56:26 -!- MDude has quit (Ping timeout: 240 seconds).
16:04:43 <esowiki> [[Brainfuck]] M https://esolangs.org/w/index.php?diff=66314&oldid=66228 * Palaiologos * (+79) Add asm2bf
16:39:20 -!- Sgeo has joined.
16:42:50 -!- Lord_of_Life has quit (Ping timeout: 240 seconds).
16:47:56 -!- Lord_of_Life has joined.
17:38:26 -!- xkapastel has joined.
18:39:18 <zzo38> I think I figured out in Ghostscript it is possible with the "display" device for the C code to read and write the page raster, even before the page is finished. This can be advantageous with what I intend to do with TeXnicard (the ability to use PostScript for page layout but using TeX related stuff for text rendering; of course PostScript text rendering still works too)
20:10:08 <imode> if you have subtraction, equality to zero and AND, is it possible to construct less than and greater than.
20:10:18 <imode> I wanna say yes..
20:10:34 <imode> I can actually search for that.
20:12:40 <zzo38> Do you mean a bitwise AND? You have not given all of the information I think
20:19:23 <imode> just a logical AND.
20:19:40 <imode> sorry.
20:20:48 <imode> assume unsigned integers as well.
20:20:57 <imode> don't try to exploit overflow.
20:21:15 <zzo38> OK, but then what happen if you try to subtract a bigger number from a small number?
20:21:45 <imode> saturation, I suppose?
20:22:07 <imode> 1 + MAX == MAX in that scenario.
20:22:46 <zzo38> If the result is zero when it would otherwise be negative, then I think so.
20:23:04 <imode> interesting.
20:23:18 <imode> hmmmmm.
20:25:24 <zzo38> Actually, some time before, I thought of similar thing but I used only unindexable variables, counted loops (without early exit), and successor.
20:25:56 <imode> y'know what, assume you have the full pos/neg range.
20:26:01 <imode> -inf to +inf.
20:26:07 <imode> that's actually a lot harder.
20:26:41 <zzo38> Yes, then it is difficult, if you do not have saturation. I expect it won't be done with what you have, but, I don't know.
20:28:46 <imode> I have a feeling you could do it... the first target is less than another number.
20:29:50 <imode> you can construct multiplication and division with == 0.
21:01:04 -!- Sgeo_ has joined.
21:04:16 -!- Sgeo has quit (Ping timeout: 265 seconds).
21:25:56 <imode> I am concerned about my choice between symbolic/numeric instruction places and notation like state machines.
21:26:29 <imode> the latter seems like a more general/unopinionated equivalent to the former.
21:26:58 <imode> the concept of state machines are also much older than that of "atomized" variants of different machines.
21:28:34 <imode> the problem is one of combining them and specifying them linearly.
21:28:51 <imode> state machines have a convenient graphical notation, nonlinear.
21:29:04 <imode> but they don't have a _linear_ notation that makes things like composing machines from smaller machines convenient.
21:33:37 <imode> I guess this would be an equivalent linear notation for graphs.
21:56:13 -!- FraterEST has quit (Ping timeout: 252 seconds).
22:06:04 <esowiki> [[MineFriff]] https://esolangs.org/w/index.php?diff=66315&oldid=58059 * JonoCode9374 * (+29)
22:43:00 <zzo38> Medieval Barber {1W} Creature - Human (1/1) ;; Haste ;; {1}, {T}: Create a 1/1 Leech creature token. ;; {2}: Prevent the next 1 damage to target damageable other than ~ this turn. Any player can use this ability.
23:12:02 <zzo38> The sysexits.h does not explain EX_CONFIG very well; it just says "configuration error".
23:42:27 <esowiki> [[Deadfish]] https://esolangs.org/w/index.php?diff=66316&oldid=66212 * Voltage2007 * (+573) /* Java */ Added an interpreter
23:59:10 -!- FreeFull has quit.
2019-09-23
00:25:43 -!- ais523 has joined.
00:26:17 <ais523> zzo38: I use EX_CONFIG in cases where the program couldn't meaningfully start because a configuration file it depends on was malformed or missing required informatoin
00:27:32 <ais523> there's a more detailed explanation of sysexits.h in the BSD man page, https://man.openbsd.org/sysexits
00:27:58 <ais523> although not much more detailed
00:29:58 -!- ais523 has quit (Client Quit).
00:30:58 -!- GeekDude has joined.
00:54:05 -!- MDude has joined.
00:58:02 -!- arseniiv has quit (Ping timeout: 240 seconds).
01:32:09 -!- Sgeo__ has joined.
01:35:18 -!- Sgeo_ has quit (Ping timeout: 245 seconds).
01:41:03 -!- oerjan has joined.
01:54:22 <oerjan> <imode> y'know what, assume you have the full pos/neg range. <-- not possible in a bounded number of instructions, i think.
01:55:43 <oerjan> well, you didn't say you had looping instructions, so not possible at all.
01:57:03 <oerjan> the thing is, subtraction commutes with negating all numbers involved. so the only thing to distinguish things if you negate everything is that AND gives 1 and not -1 (i assume)
01:57:36 <oerjan> *only way
01:59:25 <oerjan> imagine if the numbers you start with are multiples of a googolplex
02:03:36 <oerjan> it will take you more than a googol operations to magnify a 1 into something of similar size - and only then do you have any chance of a distinguishing test result.
02:07:42 <oerjan> that is, if you start with numbers x, y, then every number you can construct will be of the form i*x + j*y + k (where the k comes from AND results)
02:08:05 -!- xkapastel has quit (Quit: Connection closed for inactivity).
02:08:45 <oerjan> and this will be zero exactly when i*(-x) + j*(-y) + k is, _unless_ k is divisible by gcd(x,y).
02:09:05 <oerjan> oh and nonzero
02:09:19 <oerjan> in which case it _might_ not be, if you're lucky.
02:10:23 <oerjan> and it will take you on the order of log (gcd(x,y)) operations to get a k that large.
02:32:41 -!- Lykaina has joined.
02:40:57 <imode> assume I have looping instructions.
02:41:13 <imode> including "break if == 0"
02:46:04 <Lykaina> hi
02:47:15 <Lykaina> so hard to get certain people's attention in irc. (i refer to another channel on another network)
02:52:00 <oerjan> imode: ok then you can basically do something like: construct 1 using AND, then use it to increment/decrement counters to search for x and y among all numbers.
02:52:53 <oerjan> and keeping track of which you find first and whether they're >0 or <0
02:53:36 <imode> yikes. there's no way to speed that process up? I have access to constants and everything...
02:54:15 <oerjan> i don't really think so
02:54:39 <imode> interesting... you seem so limited. :\
02:54:48 <imode> if you don't have <0 or >0.
03:13:32 -!- atslash has quit (Ping timeout: 265 seconds).
03:14:27 -!- hppavilion[1] has joined.
03:25:20 -!- atslash has joined.
03:30:32 -!- Lykaina has quit (Quit: leaving).
04:10:27 -!- imode has quit (Ping timeout: 245 seconds).
04:17:06 -!- sprocklem has joined.
04:19:59 -!- tromp_ has quit (Read error: Connection reset by peer).
04:20:50 -!- tromp has joined.
04:21:09 <esowiki> [[1+]] M https://esolangs.org/w/index.php?diff=66317&oldid=66313 * TwilightSparkle * (+2) /* Fibonacci sequence */
04:33:38 -!- imode has joined.
04:42:50 -!- Lord_of_Life has quit (Ping timeout: 240 seconds).
04:44:14 -!- tromp has quit (Ping timeout: 276 seconds).
04:44:23 -!- Lord_of_Life has joined.
04:45:35 <esowiki> [[1+]] https://esolangs.org/w/index.php?diff=66318&oldid=66317 * TwilightSparkle * (+53)
04:59:44 <esowiki> [[1+]] M https://esolangs.org/w/index.php?diff=66319&oldid=66318 * TwilightSparkle * (+45)
05:07:37 -!- tromp has joined.
05:19:06 -!- tromp has quit (Read error: Connection timed out).
05:20:01 <esowiki> [[1+]] https://esolangs.org/w/index.php?diff=66320&oldid=66319 * TwilightSparkle * (+39) /* Examples */
05:48:31 -!- tromp has joined.
06:04:32 -!- tromp has quit (Read error: Connection timed out).
06:05:56 <esowiki> [[Keg]] https://esolangs.org/w/index.php?diff=66321&oldid=66035 * JonoCode9374 * (+81) /* See also */
06:05:59 -!- oerjan has quit (Quit: Nite).
06:26:50 -!- imode has quit (Ping timeout: 240 seconds).
06:27:26 -!- tromp has joined.
06:43:11 -!- tromp has quit (Read error: Connection timed out).
06:56:04 -!- tromp has joined.
07:11:14 -!- tromp has quit (Read error: Connection reset by peer).
07:11:41 -!- tromp has joined.
07:44:11 -!- cpressey has joined.
07:53:03 <cpressey> Good morning. There was something very important I needed to tell you about all your base, but I've forgotten what it was.
08:45:44 <cpressey> I made Robin's ref impl able to run on Hugs, even the random numbers and I/O parts. I'm running the test suite on it now. It's taking... a while to finish.
08:53:44 <cpressey> 26 minutes, to be precise. (compared to about 1 minute 8 seconds when it's compiled by ghc.)
09:46:49 <esowiki> [[An Odd Rewriting System/Odd.hs]] N https://esolangs.org/w/index.php?oldid=66322 * Chris Pressey * (+1791) Add Haskell implementation of An Odd Rewriting System.
09:48:47 <esowiki> [[An Odd Rewriting System]] M https://esolangs.org/w/index.php?diff=66323&oldid=58485 * Chris Pressey * (+71) Link to Haskell implementation.
09:54:24 <esowiki> [[Talk:Deque]] N https://esolangs.org/w/index.php?oldid=66324 * YamTokTpaFa * (+186) /* Isn't this article's expression unified? */ new section
10:10:15 <cpressey> Consider a language where programs automatically loop after N steps, and on each step, N grows. Programs can modify themselves, so that they can grow on each loop.
10:11:21 <Taneb> cpressey: consider me considering
10:11:46 <cpressey> If this is the only way to loop, and if N grows by a constant additive amount, this could be TC. But if N grows by a multiplicative factor, is it?
10:11:56 <cpressey> (Is it could be TC?)
10:12:18 <cpressey> You'd need an inner loop to make it grow enough to get to the next loop.
10:13:02 <cpressey> idk, not terribly interesting by itself, but maybe it could be developed
10:13:32 <Taneb> Do you have to have enough instructions to make it to N to loop?
10:13:39 <Taneb> Or can it autopad with no-ops
10:14:11 <Taneb> (noöps)
10:14:17 <cpressey> I was thinking of having some fairly generic instruction set which could include no-ops.
10:15:48 <cpressey> It seems like N could start out "too small" as well
10:17:02 <cpressey> One could also try to make an "evil" version where N grows, but not in a way that is easy to predict
10:47:46 <cpressey> Or otherwise make it difficult to construct a no-op. In a lot of languages it's easy, in some it might be impossible, but ideally you'd want to strike some middle ground
10:51:27 -!- tromp_ has joined.
10:53:53 -!- tromp has quit (Ping timeout: 246 seconds).
10:55:53 <esowiki> [[Keg]] M https://esolangs.org/w/index.php?diff=66325&oldid=66321 * A * (+24) /* See also */ This link also includes irrelevant questions.
11:00:15 <cpressey> "A Turing-complete language that admits a quine also admits a way to build a no-op" -- I wonder if that's true?
11:00:37 <cpressey> My gut feeling is that it's probably true
11:02:59 <myname> thats a tough one
11:04:01 <myname> where is that from
11:12:37 <cpressey> Not really from anywhere, just from me thinking about how one might make a language where it's not possible to write a program that does nothing
11:16:08 -!- nfd9001 has joined.
11:52:02 -!- hppavilion[1] has quit (Ping timeout: 240 seconds).
12:08:38 <shachaf> What's a no-op?
12:09:00 <shachaf> Oh, there's a whole discussion above.
12:11:11 <shachaf> Does no-op mean a program of length n+k that computes the same thing as a program of length n?
12:15:37 <cpressey> I was using the word to mean the identity function, more or less. A program that does nothing. If you tack it on to some other program, it doesn't change the meaning of that program.
12:16:13 <cpressey> There are sort of a lot of assumptions about programs in there.
12:17:13 <shachaf> Oh, a whole program, not an instruction.
12:17:19 <shachaf> That seems easier.
12:17:48 <shachaf> But a language could easily be Turing-complete and still require programs to always print something?
12:17:58 <cpressey> I think that came from, if you don't have a no-op instruction, can you build one out of the other instructions.
12:20:05 <cpressey> Maybe. If you force the program to always output something, then you say that's Turing complete because you can reduce every program to a TM, you're kind of pushing the "no-op-ness" into the TC reduction.
12:21:12 <shachaf> Well, OK.
12:21:38 <shachaf> I'm not sure the TC reduction is such a useful way to talk about programs for other purposes.
12:24:48 <cpressey> I think that's why I started thinking about quines.
12:33:02 <cpressey> Trying to think of it another way: say you have an algebra, and it doesn't have an identity element (perhaps it's a semigroup). It's claimed that one can express any computation they like in this algebra. Could this claim be true?
12:40:52 <Taneb> How can it be said that an algebra can express a computation?
12:47:12 -!- xkapastel has joined.
12:49:09 <cpressey> That, itself, is an interesting question.
12:53:35 <cpressey> I once saw a paper that showed that the Hercules-Hydra battle could be expressed in braid theory.
12:53:39 <rain2> is there a good proof of rice theorem
12:55:15 <cpressey> rain2: My rough version of Rice's theorem is: It's undeciable to show that a Turing machine does X, because you can take that Turing machine and replace "X" with "halt" and you get the Halting Problem, which you already know is undecidable.
12:55:36 <cpressey> I know that's not the same thing as a good proof.
12:56:17 -!- sprocklem has quit (Ping timeout: 276 seconds).
12:57:09 <rain2> A rock solid proof
13:02:44 <cpressey> I'm pretty sure there's been a machine-checked proof of it in something like Lean or Coq but I have been unable to find anything with a quick web search.
13:05:58 <cpressey> https://github.com/leanprover-community/mathlib/blob/master/src/computability/halting.lean#L165
13:06:47 -!- imode has joined.
13:06:55 <cpressey> Apparently they prove the undecidability of HP based *on* Rice's theorem in that
13:08:17 <rain2> wow
13:08:48 <rain2> i'll try to understand these theorem statements
13:09:29 <shachaf> Do you like "Rice's theorem for the computable reals"?
13:10:52 <rain2> yes
13:10:54 <rain2> do you?
13:17:04 <cpressey> I think I like it.
13:21:06 <cpressey> It could be useful for thinking about infinite programs.
13:21:17 <rain2> are infinite programs superturing
13:21:33 -!- Sgeo__ has quit (Read error: Connection reset by peer).
13:22:25 <cpressey> I would say uncountably infinite programs have to count as "superturing" in some sense. Countable ones, probably not.
13:24:04 <rain2> https://cs.stackexchange.com/questions/77487/decidable-properties-of-computable-reals
13:24:10 <rain2> Rice's theorem for reals holds in every reasonable version of computable reals
13:26:32 <shachaf> rain2: Yes, I like it.
13:26:58 <shachaf> It's interesting that it's a version of Rice's theorem that holds for programs that are guaranteed to halt.
13:28:13 <shachaf> What are other things you can say about programs that you know some things about?
13:29:08 <shachaf> For example what properties of a total function are decidable given a guaranteed-to-halt program that computes it?
13:30:02 <rain2> oh interesting
13:31:03 <shachaf> Also: The computable reals are countable, but they're not computably countable.
13:31:45 <rain2> why aren't they computably countabl?
13:33:01 <cpressey> I'm a bit confused: The program that generates a computable real isn't guaranteed to halt. Quite the opposite, it has to be able to run indefinitely to compute some computable numbers, such as square roots.
13:36:24 <cpressey> Guaranteed to halt = "total" = "recursive" = R; Computable real = "computably enumerable" = "recursively enumerable" = RE; R < RE.
13:37:48 <cpressey> R ⊊ RE
13:38:16 <shachaf> cpressey: Oh, well, if you define it that way it's productive.
13:38:31 <shachaf> I was thinking you give the program a required precision and it gives you an approximation within that precision.
13:38:40 <shachaf> In which case it halts on every input.
13:39:15 <cpressey> Sure, but you can write an analogous program for uncomputable reals too.
13:39:29 <cpressey> It halts because it's a finite approximation.
13:40:01 <cpressey> Not because of some property that the real it's approximating, has.
13:40:15 * cpressey grammars
13:40:49 <shachaf> What do you mean?
13:40:57 <shachaf> You can't compute uncomputable reals.
13:41:39 <cpressey> You can write a program that asks for a precision and computes an approximation of Chaitin's omega to that precision.
13:42:13 <shachaf> You certainly can't.
13:42:25 <cpressey> You can. It has in fact been done.
13:43:10 <Taneb> I don't believe you, cpressey
13:43:18 <cpressey> OK, let me find the paper.
13:43:18 <Taneb> In fact, I believe you are mistaken here
13:43:43 <Taneb> With N bits of that constant you can solve the halting problem of programs of a size proportional to N
13:44:18 -!- arseniiv has joined.
13:44:44 <Taneb> There are Ns known to have programs of that size where it's undecidable whether they halt or not
13:45:13 <shachaf> What does it mean for it to be undecidable whether a particular program halts?
13:46:08 <shachaf> (Obviously I Agreeneb.)
13:47:12 <cpressey> Taneb: the key word is "approximation". Perhaps there is a limit to the amount of precision you can ask for.
13:47:21 <Taneb> A proof of whether it halts or not is outside ZFC (or some other axiom scheme of your choice, but that might requre a different N)
13:47:55 <Taneb> cpressey: I think the limit might be about 5
13:47:55 <cpressey> (Or rather, expect to get, when you ask for it.)
13:48:15 <shachaf> Oh, I'd call that "unprovable", not "undecidable".
13:48:44 <shachaf> But, hmm, that still doesn't make sense to me.
13:49:01 <shachaf> Surely if the program halts, you can prove that much in ZFC.
13:49:19 <shachaf> I guess you're not naming a particular program but only saying (metatheoretically?) that one exists.
13:49:49 <Taneb> There are theorems outside ZFC. We can construct a turing machine that it halts iff one such theorem is true.
13:51:15 <cpressey> I'm having trouble finding the paper but I wouldn't be surprised if 5 bits was all you could get so, OK, I withdraw any implication I might have made that you can get an arbitrary precision that you ask for in that case.
13:51:29 <cpressey> That wasn't exactly what I was trying to drive at in any case.
13:52:21 <cpressey> Any function that produces a finite approximation of anything will of course terminate always. That's not what we're talking about when we talk about computable reals. We're distinguishing them from uncomputable reals, ones that no TM can produce.
13:53:19 <shachaf> cpressey: The point is that it can produce approximations to any precision you ask.
13:53:34 <shachaf> An infinite stream of bits can be represented as a function : N -> 2 that always halts in the same way.
13:54:58 -!- ais523 has joined.
13:55:04 <cpressey> Okay. I see it differently, in a way that has nothing to do with approximations.
13:55:46 <shachaf> I don't think the way you see it really matters because however you construct the computable reals they come out the same.
13:55:49 <shachaf> How do you like representing them?
13:55:50 <ais523> cpressey: assuming you can't append to the program faster than 1 instruction per instruction, your multiplicatively growing language would probably want lots of imps to work
13:56:11 <ais523> (an imp is an instruction that adds a copy of itself to the running program; this is Core Wars terminology but could generalise to other languages)
13:56:26 <ais523> the imps are more useful than no-ops because they tend to multiply, whereas no-ops just sit there
13:57:38 <cpressey> shachaf: How do I like representing a computable real? With the Turing machine that writes it to its tape, I suppose.
13:57:58 <shachaf> Writes what?
13:58:32 <cpressey> There's a TM that writes pi to its tape, there's a TM that writes 1 to its tape, there's a TM that writes e to its tape, and so forth, for any computable real you can pick. Would you agree?
13:58:36 <ais523> <cpressey> "A Turing-complete language that admits a quine also admits a way to build a no-op" -- I wonder if that's true? ← what about a language where all commands echo when run? quining is trivial, no-ops don't exist
13:58:51 <shachaf> I don't know what you mean by writing a number to its tape, so maybe I agree.
13:59:26 -!- ais523 has quit (Client Quit).
13:59:38 -!- ais523 has joined.
14:00:08 <cpressey> Turing machines write symbols on their tapes. Suppose the alphabet of symbols is "0123456789.". Then there's a TM that writes "3.14159..." on its tape, where "..." is standing in for the rest of pi.
14:00:38 <shachaf> Oh, a decimal expansion.
14:00:41 <shachaf> No, I don't agree.
14:00:44 <cpressey> Decimal is of course not necessary, but it's the base I tend to use the most in my daily like.
14:00:52 <shachaf> No base works.
14:00:52 <cpressey> *life
14:01:14 <shachaf> Well, if you want addition to be computable.
14:01:29 <ais523> I believe you can use bases which have redundant representations
14:01:33 <ais523> e.g. binary with digits 0, 1, 2
14:01:58 <ais523> the problem with using a traditional base (say decimal) is that you might end up with a computable number that happens to be a terminating decimal but you can't prove it
14:02:03 <cpressey> I don't care about the base. I'm trying to communicate the general definition.
14:02:26 <shachaf> No base works.
14:02:44 <ais523> https://en.wikipedia.org/wiki/Richardson%27s_theorem is the relevant theorem
14:02:46 <shachaf> Well, maybe the thing ais523 said works, I'm not sure.
14:03:15 <ais523> shachaf: basically, the thing you can't do with computable reals is determine for certain whether two things that are actually equal happen to be <= or >= each other
14:03:21 <ais523> if two things are actually not equal, you can tell them apart
14:03:31 <shachaf> ais523: You can't determine for certain *anything* about computable reals.
14:03:37 <shachaf> That's the "Rice's theorem for computable reals" above.
14:03:59 <shachaf> Oh, you mean determine for certain in the weaker sense of semidecidability, never mind.
14:04:02 <ais523> shachaf: with the definitions I'm aware of, a < b is semi-decidable: it's always decidable if it happens to be true
14:04:09 <ais523> but might not be decidable if it happens to be false
14:04:13 <shachaf> Yes.
14:04:26 <shachaf> cpressey: You certainly want addition to be computable. Say I add "0.666..." and "0.333...". What should the answer be?
14:04:50 <ais523> this means that a general "base" representation of a computable real you use has to be one with semi-decidable equality, e.g. in hyperbinary, 022222… and 10000… might or might not be equal
14:04:51 <cpressey> shachaf: Did I claim computable reals can be compared to each other, or added to each other?
14:05:12 <shachaf> Maybe not, but then you're wildly deviating from anything anyone calls the computable reals.
14:05:18 <ais523> cpressey: the ability to produce a base-N expansion (for any N) implies the abilty to compare
14:05:36 <shachaf> You *can* compare decimal expansions, that's exacty the problem.
14:05:59 <ais523> e.g. in the case of pi, you need to compare to 3.1415 and 3.1416 to determine that the fourth digit after the decimal point is a 5
14:07:02 <shachaf> I guess I should ask what you mean by the reals in the first place.
14:07:22 <shachaf> Presumably you don't construct the reals in maths as decimal expansions but as Cauchy sequences or Dedekind cuts or something.
14:09:21 <shachaf> You can presumbly construct the reals as equivalence classes of decimal expansions.
14:09:32 <cpressey> ais523: How do you figure that implication? It's not so much that the TM "does produce" the expansion, as, if the TM were to run forever somehow, it "would produce" it.
14:10:11 <ais523> cpressey: suppose you have a number for which it's undecidable how it compares to 3.1415; the Turing machine won't get past three digits past the decimal point no matter how long you run it
14:10:47 <cpressey> ais523: Where did the undecidable number come from?
14:11:04 <cpressey> I thought you were talking about computable numbers
14:11:14 <ais523> cpressey: I thought we were discussing the computable reals; for any rational number there's a computable real number that's equal to it, but undecidably so
14:11:22 <ais523> by Richardson's Theorem, which I linked above
14:12:03 <cpressey> OK, as usual, my brain is too small to follow everything that is going on in one of these conversations.
14:12:36 <cpressey> Fine, I surrender. I only thought this was how computable reals were defined, because it's how I recall them being defined in Turing's original paper.
14:12:43 <cpressey> But I might be mis-remembering how he defined them.
14:13:28 <cpressey> If decimal (etc) expansions don't work, pick some expansion that does work. Does any expansion work?
14:13:46 <cpressey> If there is one, make a TM that writes all the parts of it onto its tape, "forever".
14:14:39 <shachaf> The point about 0.666... + 0.333... is that when you see the trillionth digit you might have to change your mind about the first digit.
14:14:46 <ais523> hyperbinary is the most common expansion that works
14:14:51 <shachaf> Because the answer might be either 0.999...8 or 1.000...1
14:15:05 <cpressey> shachaf: Sure, the TM might have to revise its tape, all the way back to the beginning.
14:15:10 <arseniiv> AFAIR there are several computable real definitions: weaker ones, stronger ones
14:15:14 <shachaf> Any representation of the computable reals might have to change its mind arbitrarily far in.
14:15:25 <ais523> arseniiv: that doesn't surprise me
14:15:29 <shachaf> That's why I talked about finite approximations.
14:16:04 <cpressey> I'm not interested in approximations and I don't think you need to invoke them to talk about the objects themselves.
14:16:11 <arseniiv> so some phenomena may exist only for those sufficiently weak/strong
14:16:18 <shachaf> cpressey: But Cauchy sequences are sequences of approximations.
14:16:38 <shachaf> All I'm talking about here is a particular kind of Cauchy sequence.
14:17:00 <ais523> fwiw, Wikipedia seems to agree with cpressey's definition of computable reals
14:17:23 <ais523> in the original definition by Minsky
14:17:41 <ais523> but says that that definition was since found to be flawed
14:18:08 <ais523> there's a section discussing the difference: https://en.wikipedia.org/wiki/Rounding#Table-maker's_dilemma
14:19:17 <cpressey> This is all somewhat related to something I thought of recently: Consider the computable, infinite initial GoL configurations. Some, like "infinite barberpole" or "empty space" can be simulated by a TM; others can't even though they are computable.
14:19:33 <cpressey> The latter relates to "Rice's theorem for computable reals".
14:19:37 <cpressey> There is no approximation going on here.
14:20:23 <cpressey> Er well, I should say, you could probably try to "approximately evolve" a GoL form.
14:20:24 <ais523> to me it's not obvious that a TM can't simulate all computable GoL configurations: can't it compute the value of any given cell after n steps via computing the initial state of the (2n+1)×(2n+1) neighbourhood around it and simulating that?
14:20:31 <ais523> I'm not sure on this, though
14:20:37 <cpressey> You might be even be able to get more than 5 bits of precision out of it, who knows.
14:21:11 <ais523> shachaf: re the 5 bits thing: do you know what the smallest/simplest program is for which it isn't known whether or not it halts?
14:21:22 <ais523> I guess in some mathematical formalization
14:21:32 <shachaf> ais523: BB(5) is unknown, right?
14:21:35 <ais523> we ran that competition at CGCC and I'm currently winning with a 3-byte Brachylog program
14:21:39 <shachaf> With a few candidates.
14:21:41 <ais523> shachaf: that sounds about right
14:21:43 <cpressey> ais523: Every column of the GoL playfield could be a different irrational number. Every cell needs to be evolved to the next state. The effects of all the cells propogate at the speed of light. I don't think a TM can do all that.
14:22:10 <cpressey> "different irrational number" = infinitely tall binary expansion of such, in dead/alive cells, of course
14:22:19 <ais523> cpressey: it can compute the value of any specific cell after any specific number of steps
14:22:24 <shachaf> https://en.wikipedia.org/wiki/Busy_Beaver_game#Exact_values_and_lower_bounds
14:22:25 <ais523> perhaps you're using a different definition?
14:22:55 <cpressey> ais523: Maybe I don't know what I'm talking about.
14:23:44 <shachaf> I think thinking of the reals as infinite sequences of digits is a very common computer scientist thing to do.
14:23:51 <shachaf> And I think it's really pretty wrong.
14:23:52 <ais523> it's interesting… a TM seems incapable of holding "the whole thing" in its memory at any given time, but for any concrete question you have about a particular cell and a particular time, the TM can answer it
14:24:14 <ais523> simply by computing only the relevant parts and discarding all the data it doesn't need
14:24:36 <ais523> this is due to the speed-of-light issues: in a language like RUBE you couldn't do it because data transmission can be arbitrarily fast there
14:25:01 <shachaf> In what sense is that not holding "the whole thing" in memory?
14:25:01 <shachaf> I guess because you depend on the oracle?
14:25:58 <ais523> much of the information about the state of the GoL automation is never computed
14:26:57 <shachaf> Sure, but so what? If a program computes an infinite sequence of bits, it doesn't hold "the whole thing" in memory, but it can answer questions about any particular bit.
14:27:22 <shachaf> I guess the speed of light thing makes it slightly different.
14:27:31 <shachaf> This is the same trick that Hashlife uses.
14:28:00 <cpressey> ais523: There does seem to be an inherent slowdown at least; every time you need some information about a cell you haven't computed yet, you need to simulate its entire history so that you know for sure what it is
14:28:26 <ais523> yes
14:29:00 <ais523> actually this is one of the main reasons I don't like Turing machines as the standard basis of computation
14:29:10 <ais523> they have inherent slowdowns in a weird and artificial-feeling way
14:29:39 <ais523> I prefer counter machines because they are at least consistently slow, which feels more natural than Turing machines being slow at some things and fast at others
14:31:29 <arseniiv> counter machines ftw!
14:31:41 <imode> what about queue automata?
14:31:49 <cpressey> I have a hard time believing simulating such a GoL playfield on a counter machine would not also have the same slowdown
14:32:10 <imode> TMs but without the need for data shifting.
14:32:16 <ais523> cpressey: it does, probably worse
14:32:30 <ais523> my complaints about TMs aren't that the slowdown exists, but that it's applied inconsistently
14:32:36 <cpressey> Okay
14:36:22 <cpressey> Still, say there is some expansion of a real that a TM can write to a tape. A real is computable if some TM writes its expansion to its tape "eventually". Then: if A and B are computable reals, then why is A + B not a computable real?
14:36:41 <cpressey> A + B will also be written "eventually"
14:36:56 <shachaf> What's your answer to my 0.666... + 0.333... question?
14:37:35 <cpressey> That if you have a TM computing 0.666... and a TM computing 0.333... you can make a TM that computes 0.666... + 0.333 ?
14:37:42 <shachaf> Oh, wait, you said something I didn't expect, which is that a program can change its mind and erase digits after it writes them.
14:37:51 <cpressey> I missed the final ellipsis there
14:37:59 <shachaf> I thought the output was append-only.
14:38:13 <ais523> shachaf: hmm, I think that works
14:38:14 <shachaf> If it's not then these things don't seem useful.
14:38:36 <shachaf> What does?
14:38:38 <ais523> it raises some interesting philosophical problems, though
14:38:50 <ais523> shachaf: being able to rewrite your output so far, when outputting a computable real as decimal
14:39:00 <imode> "other GoL configurations can't be computed by a TM" <-- why is this.
14:39:18 <ais523> it's like a halting tester that outputs "doesn't halt", runs the program it's testing, and if it halts, erases the "doesn't halt" and outputs "halts" instead
14:39:38 <cpressey> imode: it's apparently not true, I was wrong
14:39:55 <imode> was gonna say.
14:40:00 <shachaf> ais523: Right.
14:40:15 <shachaf> ais523: Hmm, this is a lot like call/cc.
14:40:26 <shachaf> Which makes sense becuase using call/cc you can decide anything.
14:40:31 <imode> how are counter machines > TMs.
14:41:31 <ais523> TMs effectively give you access to two stacks, where pushing on one pops the other and vice versa
14:41:36 <ais523> some problems map neatly onto that model, some don't
14:41:47 <imode> which ones don't.
14:42:11 <cpressey> I'm also not sure how to reconcile the infinite GoL playfield thing with shachaf's "Rice's theorem for the computable reals" though.
14:42:22 <shachaf> cpressey: I don't see the connection?
14:42:29 <imode> cpressey: assume you only have to consider sparse cells.
14:42:30 <ais523> a good example is string find-and-replace: on a TM that operation is fast if the replacement string is no longer than the search string, slow if it's longer
14:42:35 <cpressey> shachaf: Well the playfield is literally filled with computable reals
14:42:36 <shachaf> cpressey: To be clear, "Rice's theorem for infinite sequences of bits" doesn't hold.
14:42:47 <shachaf> Plenty of things about infinite sequences of bits are decidable, like "is the first bit 0?".
14:42:47 <imode> ais523: that makes sense, also why I like queue automata vs. TMs.
14:42:51 <ais523> actually I think it might be slow if the replacement string is shorter, too
14:43:01 <imode> yeah because you need to shift data left and right.
14:43:12 <ais523> with most models, the search-and-replace is the same speed regardless of the relation in length between the search and replacement strings
14:43:27 <imode> even with counter machines? how is that possible?
14:44:09 <ais523> with counter machines the computational complexity is pretty horrible but it's the same in both cases
14:44:10 <cpressey> shachaf: even if I define my infinite sequences of bits as being binary expansions of irrational numbers?
14:44:19 <ais523> I can't remember whether it's O(n²) or O(n³)
14:44:52 <shachaf> cpressey: You mean real numbers?
14:45:03 <shachaf> I don't actually understand what you mean.
14:45:19 <shachaf> 0.111... = 1.000..., as binary expansions.
14:45:25 <shachaf> But they're different as sequences of bits.
14:45:32 <cpressey> shachaf: Well I said "irrational numbers", I'll let you figure out if that means "real numbers"
14:45:48 <cpressey> Maybe I was talking about the irrational integers.
14:45:57 <shachaf> cpressey: I assumed you'd treat "000..." as a rational number, but now I'm not sure what you mean.
14:46:12 <shachaf> "Rice's theorem for the irrational numbers [only, not including the rationals]" also doesn't hold.
14:46:55 <ais523> shachaf: beause the undecidable cases are actually rational, you just don't know it?
14:47:40 <cpressey> shachaf: There is a number we call pi. You can write out a binary expansion of pi.
14:47:54 <cpressey> Well, not *you* you, but you know what I mean.
14:48:14 <arseniiv> oh, I was meant to say “register machines ftw”, not counter machines
14:48:25 <imode> what bothers me about counter machines is that at a glance, they seem actually practical. you don't have to construct numbers out of symbols, you just _have_ them and can do arithmetic. but in order to do anything useful, you need to construct data structures using compounding arithmetic ops and... ugh.
14:48:50 <arseniiv> I like that one can extend register machine definition so that registers hold values of any simple inductive type
14:49:03 <ais523> arseniiv: I'm not automatically opposed to register machines but think they can be awkward to define
14:49:14 <arseniiv> like binary strings instead of naturals
14:49:40 <shachaf> ais523: I'm not sure that's what I mean?
14:49:48 <ais523> shachaf: nor am I
14:49:51 <shachaf> ais523: I would say it's because the Baire space is totally disconnected.
14:50:08 <shachaf> cpressey: Yes, I agree that I can write out a binary expansion of pi.
14:50:39 <imode> is there any way to perform general computation on counter machines outside of constructing some kind of linear tape.
14:50:48 <arseniiv> (I should read on counter machines vs. register ones, I seem to forget what the difference was)
14:53:18 <cpressey> OK, well, I think I see the reconciliation now. The TM simulating the infinite GoL form, is at every step working on a finite segment of the thing.
14:53:22 <arseniiv> hm maybe I didn’t want to say “register machines…” after all. I meant a machine with type constructors and “conditional-jump destructor” as operations
14:54:50 <imode> yeah if there were infinitely active cells in some kind of pattern, the GoL wouldn't even update.
14:54:56 <arseniiv> so my flavor of Minsky machine would have an additional CLR op, corresponding to Z constructor. We can omit it because it’s the only nullary constructor, for a type with more than one nullary constructor we can’t
14:55:12 <arseniiv> s/, for a type/; for a type
14:57:11 -!- nfd9001 has quit (Ping timeout: 250 seconds).
14:57:20 <ais523> arseniiv: I take it these are recursive types? (otherwise it's hard to see how it ends up TC)
14:57:25 <arseniiv> <imode> is there any way to perform general computation on counter machines outside of constructing some kind of linear tape. => for my kind of machine for type Str = Empty | O Str | I Str, we can effectively have as many stacks of bits as we wish, I think it’s better than a tape
14:57:29 <ais523> I like that formalization
14:57:36 <arseniiv> ais523: yeah, recursive
14:57:54 <ais523> it's basically what I used to prove the subset of JavaScript which uses only the characters +[]=` as Turing-complete
14:58:11 <arseniiv> (thanks, I like it too, it seems pretty neat and concise)
14:58:27 <ais523> I'm not sure if it has a name
14:58:29 <imode> wait, as many stacks of bits... 1's and 0's, or just unary.
14:58:49 <imode> what machine are we talking about here. INC/JZDEC?
14:58:57 <arseniiv> (though it’s only concise when we have recursive types defined already; I don’t know how to define them quickly)
15:00:10 <imode> like what I mean by "general computation" is more about convenience than anything. you can build up to random access memory with a TM.
15:00:37 <imode> if you're just using a counter machine as a TM or a 2-stack PDA... what's the point.
15:00:43 <shachaf> cpressey: I don't think that's where th confusion is.
15:00:44 <imode> apart from knowing you can/speed concerns.
15:00:57 <arseniiv> imode: no, this machine would have ops [CLR, redundant], APPEND0, APPEND1, “JEMPTYCASE” which jumps to three different places in case of "", in case of s + "0" and in case of s + "1" and truncates the value to s in the last two cases
15:01:25 <shachaf> cpressey: But it's not quite clear to me. The main point I was making was to distinguish bit streams from real numbers.
15:01:50 <arseniiv> also there is an accompanying recursive function formalism which also can be extended to work with values of an arbitrary recursive type
15:02:08 <cpressey> shachaf: What properties does a real number have that a bitstream derived from that real number does not have?
15:02:20 <shachaf> cpressey: Oh, I guess I can say that I want this property: The real number is the limit of a sequence, and the sequence is what you write down.
15:02:29 <cpressey> Though, I somewhat object to "stream"
15:02:34 <shachaf> That means you can't arbitrarily change the sequence.
15:02:56 <arseniiv> https://esolangs.org/wiki/YEOOIIOOIOA is based on the rec. fun. formalism corresponding to the machine defined above
15:03:05 <shachaf> cpressey: I'm a bit confused by that question. A real number is a completely different thing from an encoding of that number.
15:03:17 <imode> arseniiv: then you're not talking about the same machine I am.
15:03:21 <shachaf> What property does a partial function have that a Turing machine that computes that function does not have?
15:04:47 <cpressey> shachaf: I've never seen a real number, and I've never seen an infinite sequence of bits either, so really, I can't say.
15:05:03 -!- sleepnap has joined.
15:05:23 <shachaf> That's fair!
15:05:27 <cpressey> I've always thought there was a certain amount of irony in the word "real" being applied to them, tbh
15:05:28 <shachaf> There are two levels of encoding here.
15:06:32 <imode> arseniiv: a counter machine on the order of INC and JZDEC.
15:06:36 <imode> that's what I'm talking about.
15:09:29 <arseniiv> <imode> if you're just using a counter machine as a TM or a 2-stack PDA... what's the point. => oh but we can use a more complicated type, like lists of lists, and index into those lists in a linear time, or maybe binary trees, and index them even more efficiently
15:10:04 <arseniiv> <imode> arseniiv: then you're not talking about the same machine I am. => yes
15:11:08 <arseniiv> imode: though IDK the usual machine you meant seems nice to me too
15:12:28 <arseniiv> not because it implements things in a simple manner, but e. g. because these machines compose nicer than TMs
15:13:13 -!- imode has quit (Ping timeout: 265 seconds).
15:13:28 <shachaf> But I still don't understand your statement.
15:13:50 <Taneb> I rarely understand anything
15:14:25 -!- xkapastel has quit (Quit: Connection closed for inactivity).
15:16:40 <arseniiv> I like thinking of a kind of computable reals where they are r: N → Q × Q where fst r(i) < snd r(i) and fst r(i) < fst r(i+1) and snd r(i) > snd r(i+1), though IIRC it’s not the strongest definition
15:19:34 <shachaf> Don't you need something to constrain the rate of convergence?
15:19:38 <arseniiv> ah, the interval lengths should also decrease geometrically
15:19:56 <arseniiv> yes, I opened the page ais523 mentioned
15:19:57 <shachaf> Sure, that works.
15:20:12 <shachaf> Which page?
15:20:16 <shachaf> Oh.
15:22:25 <shachaf> Here's a fun fact:
15:22:43 <shachaf> Did you know you can sort a list of computable reals (or infinite sequences of bits)?
15:23:41 <ais523> how do you sort an infinite sequence that starts with 1s forever, but might have a 0 somewhere down the line?
15:23:54 <ais523> oh, finite list, each element is infinite
15:24:03 <shachaf> Yes, a finite list.
15:24:19 <ais523> that's sort-of a trick question because you can output the sorted finite list, but you can't identify which element of the sorted list corresponds to which element of the original
15:24:27 <shachaf> Yes.
15:24:36 <Taneb> shachaf: I did know that! I think because you told me at some point (maybe you tweeted about it)
15:24:56 <shachaf> Until I heard of this, I thought of sorting algorithms as extracting a permutation from their input and applying it.
15:25:31 <shachaf> But here you can't extract a single bit of order information from the input and you can still sort it (extensionally, not intensionally).
15:25:48 <ais523> gravity sort is a good example of a sorting algorithm that doesn't feel like extracting a permutation
15:26:26 <shachaf> I mean comparison sorts.
15:26:48 <ais523> that isn't a comparison sort though, you need to ine
15:26:54 <shachaf> I guess strictly speaking this isn't a comparison sort. But until I heard about this I thought of sorting networks as comparison sorts.
15:26:55 <ais523> *interleave the comparisons for it to work
15:31:44 -!- nfd9001 has joined.
15:35:52 -!- imode has joined.
15:36:10 <imode> arseniiv: you mentioned that counter machines 1. compose well and 2. give you access to lists, etc.
15:36:15 <cpressey> "We shall avoid confusion by speaking more often of computable sequences than of computable numbers." - Turing 1936
15:36:18 <imode> how is that possible with only counters? some kind of arithmetic encoding?
15:38:08 <imode> it requires a large amount of memory.
15:38:35 <imode> large numbers, rather.
15:39:03 <cpressey> Looking at the paper again, I don't think I was misremembering it. He argues that some infinite sequences of 0's and 1's cannot come from any Turing machine. You can go further and put a "." in front of that and call it a "real number" if you like.
15:40:26 -!- nfd9001 has quit (Ping timeout: 240 seconds).
15:40:54 <imode> cpressey: I take it you're a finitist, or an ultra-finitist.
15:41:42 <shachaf> cpressey: I mean, certainly if you write "0." followed by any infinite sequence of bits, that names a real number.
15:41:58 <cpressey> imode: I find the concept of completed infinity rather suspect, while I find the concept of potential infinity invaluable. If you know a good label for that, please do let me know.
15:42:22 <imode> probably somewhere around finitist.
15:44:50 <cpressey> I think I'd call myself a formalist before I'd call myself a finitist. Clearly, you can manipulate strings of symbols representing propositions about large cardinals, if you like...
15:46:29 <imode> that reminds me of another reason why I don't like counter machines: they require giant numbers to get anything done.
15:47:44 <arseniiv> imode: they compose well in any case, but give access to lists only when we use a sufficiently complex recursive type for their values, unfortunately
15:47:44 <arseniiv> about composing: if we have machines A1, …, An, B that implement functions f1, …, fn, g, we can implement g ∘ (f1, …, fn) by a big machine which has all the counters of A1, …, An, B, and sequentially executes commands for A1, …, An, B with minor modifications (when Ai halts, we start A(i+1), and we copy from output registers of all Ai to input registers of B before starting it)
15:47:44 <arseniiv> I think it’s clearer than TMs as the tape corresponds to inputs and outputs not in that a straight way
15:49:33 -!- andrewtheircer_ has joined.
15:49:45 <imode> what do you mean "sufficiently complex recursive type".
15:49:51 <imode> we're just talking about positive integers here, yeah.
15:49:57 <andrewtheircer_> hi imode
15:51:55 <arseniiv> imode: for Minsky machine, yes, but when I talked about lists and indexing, I meant the extension :D
15:52:21 <imode> wasn't there a way to encode pairs arithmetically?
15:52:32 <arseniiv> yes, of course
15:52:58 <imode> pairing function.
15:53:04 <imode> that was it.
15:53:22 <imode> it requires absurdly large numbers for any suitably sized pairs.
15:53:33 <arseniiv> but as we want to not make huge numbers and long computations, the more complex type seems more natural
15:53:44 <arseniiv> exactly
15:53:58 <imode> by the by, you can do that composition easily with TMs as well.
15:54:22 <imode> I don't know if you can compose wang B-machines in the same manner because of the way you execute instructions.
15:54:34 <imode> but TMs are literally just wiring state machines up correctly.
15:54:51 <arseniiv> so say you have a type Tree = Leaf | Branch Tree Tree, you can encode with them a nice data store as well as indexes to that store, and work with all that more or less easy
15:56:04 <arseniiv> <imode> by the by, you can do that composition easily with TMs as well. => when I last thought about that, it seemed there should be much of gluing needed, isn’t that so?
15:56:18 <imode> not really. you can concatenate machines to do arbitrary things.
15:56:42 <imode> one machine's halt state feeds into another machine's start state, and you can build small atomic machines that move the tape left or right unconditionally.
15:56:51 <imode> and do stuff like add numbers, etc.
15:56:52 <arseniiv> even with multiple inputs and outputs on a tape?
15:56:59 <imode> yeah. that's not really a problem.
15:57:21 <arseniiv> say we need to shuffle them
15:57:22 -!- ais523 has quit (Quit: quit).
15:57:42 <imode> still not that much of a problem, you can build shuffling machines.
15:57:47 -!- cpressey has quit (Quit: A la prochaine.).
15:57:50 <imode> and then compose them together. it's literally just wiring.
15:58:25 <arseniiv> imode: and with counter machines, you don’t need any shuffling at all :P
15:58:35 <imode> define shuffling.
15:59:01 <imode> if you're transforming input into output, you can segment the tape into two, the former being your "read" space, the latter being your "write" space.
15:59:17 <imode> the former segment can store your input, the latter segment can store your output.
15:59:27 <imode> you can build machines to read/copy input elements to the work tape.
16:00:12 <arseniiv> IDK, they are more transparent to me
16:00:12 <arseniiv> <imode> define shuffling. => moving substrings not containing an empty symbol from one place of the tape to the other place so that order of these substrings changes, I think that’ll do
16:00:31 <imode> not a problem once you have a machine built that does just that.
16:01:05 <imode> basically "read all symbols until end of 'token' marker, copy them to the place the cursor was previously.
16:01:20 <arseniiv> of course, but we need to discover that machine first
16:01:44 <imode> it's not hard to create one...
16:01:48 <arseniiv> and it seems quite tedious to write that machine out
16:01:59 <imode> what do you mean tedious.
16:02:07 <imode> you can build it from things like search machines.
16:02:11 <arseniiv> (write out explicitly)
16:02:32 <arseniiv> I mean, it’ll take me a while, I’ll need to write search machines out too
16:02:35 <imode> "seek to read segment, seek to Nth symbol in read segment"
16:02:40 <imode> here, I have some literature for you.
16:02:51 <arseniiv> imode: thanks :D
16:03:09 <imode> np! :)
16:03:23 <imode> let's see if I can find it..
16:03:24 <arseniiv> I’m sure it’s possible and I’m almost sure it would seem natural when you saw all that, but…
16:03:47 <arseniiv> also do you think composing Markov algorithms is easy too?
16:04:27 <imode> that I experimented with. it was a little more flexible because you could always do things like define separate symbol spaces via rule prefixes.
16:04:29 <imode> https://web.stanford.edu/class/archive/cs/cs103/cs103.1132/lectures/19/Small19.pdf
16:04:34 <imode> great set of slides.
16:04:47 <arseniiv> mhm
16:05:18 <imode> goes all the way up to a reasonably usable programming language.
16:05:25 <imode> which eventually gets reduced down to a native state form.
16:05:46 <arseniiv> …eventually… ;)
16:05:51 <andrewtheircer_> what is this
16:06:57 <imode> you'd do this with a counter machine anyway.
16:07:28 <arseniiv> . o O ( even these slides say “Turing machines are hard” almost at the start )
16:08:00 -!- andrewtheircer_ has quit (Remote host closed the connection).
16:08:56 <arseniiv> imode: ah, a language compiling into them, yeah, I did that with something C-like, with constructs like `local <names> { <code> }` to declare fresh registers
16:09:00 <imode> TMs are hard because of the unweildy nature (at a glance) of state machines. it's an unstructured control graph, with cycles and everything. but as with everything, you break it down into small re-usable chunks.
16:09:00 <Taneb> As opposed to lambda calculus, which is squishy
16:09:23 <Taneb> Complete opposite end of the Moh scale
16:09:42 <Taneb> Oh, apparently it's Mohs, not Moh's
16:09:59 <imode> mo's scale.
16:12:33 <imode> arseniiv: wang's B-machines are pretty much a prelude to things like brainfuck.
16:12:41 <imode> "atomization" was the first step.
16:21:57 <imode> you need to do this in counter machines as well. really in any machine model..
16:22:12 <imode> in order to get to something halfway usable.
16:27:00 <rain2> im back\
16:31:31 -!- MDude has quit (Ping timeout: 265 seconds).
16:41:53 -!- Lord_of_Life_ has joined.
16:44:34 -!- Lord_of_Life has quit (Ping timeout: 265 seconds).
16:44:47 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
16:51:12 -!- FreeFull has joined.
16:59:12 -!- sleepnap has left.
16:59:16 <imode> machines that manipulate nonlinear media are difficult to internalize.
17:00:29 <imode> assume a TM's tape was suddenly replaced with an undirected, unlabeled graph. how would it navigate?
17:03:04 <arseniiv> imode: is there hope at all? I don’t see
17:04:12 <imode> I have no idea. you can highlight the current vertex, but there's little else you can do off the top of my head, unless you have a method of storing the path.
17:04:21 <arseniiv> despite unlabeled at the start, can we label vertices and edges as we go?
17:04:53 <arseniiv> yeah, it would be in a sense equivalent to store several paths
17:05:38 <imode> what would your condition even be.
17:05:59 <arseniiv> though as we don’t know where to go, it’s still not obvious what we could do except maybe traverse one of the connected components
17:11:11 <imode> you could say "in state X, if you're not at a vertex you've previously visited, do Y and go to state Z, otherwise go to state W."
17:11:39 <arseniiv> we could use different labels
17:11:49 <imode> you could use loops of vertices as labels.
17:11:59 <imode> and the length of those loops as differentiating labels.
17:12:23 <arseniiv> hm how would it label us any particular vertex?
17:12:56 <imode> you can construct "macro-vertices".
17:13:14 <arseniiv> are we able to tweak the graph?
17:13:19 <shachaf> Taneb: I think I did twit it. But I also learned about it from a twit.
17:14:20 <imode> tweak?
17:16:01 <arseniiv> imode: add/remove vertices or edges, for example
17:16:53 <imode> you could, yeah.
17:17:39 <arseniiv> and make loops in place of a vertex, then
17:18:23 <arseniiv> though I’m not sure at all it’s possible with only several simple operations
17:18:30 <imode> this is kind of why I think linear media is better than nonlinear media.
17:18:52 <imode> what's more universal and basic than linear tape.
17:19:35 <imode> maybe unordered collections of objects... but there's not much there.
17:21:07 <arseniiv> maybe the linear tape is as good as N or Z, for respective kinds of unboundedness
17:21:22 <arseniiv> I mean, is good for precisely same reasons
17:22:03 <imode> probably, yeah.
17:22:17 <arseniiv> and is bad too…
17:22:45 <arseniiv> hm imagine a data store indexed by hereditarily finite sets
17:23:45 -!- j-bot has joined.
17:24:07 <arseniiv> as they can be canonically ordered, it’s quite tempting
17:25:30 <arseniiv> we can go to the least element, the greatest element, or we can go to powerset or s ↦ {s}
17:25:51 <arseniiv> first two. of course, not for ∅
17:26:54 <arseniiv> could we traverse all the elements of some known set, though?..
17:27:27 <arseniiv> we stand at that set, then we go to the least element, then we have forgotten what we were to traverse
17:27:37 -!- MDude has joined.
17:28:29 <arseniiv> ah, we could go to the set not containing the least/greatest element. Then we could eat all them away sequentially
17:28:46 <arseniiv> though we won’t be able to extract what we’ve eaten
17:33:12 <esowiki> [[Semantic Brain]] M https://esolangs.org/w/index.php?diff=66326&oldid=51670 * SilverWingedSeraph * (+8) Fix my name.
17:45:28 <arseniiv> anyway yesterday I recalled values with statically checked states because of the following problem: you want to write a thing that computes some value or a more elaborate value without recomputing what was already computed and without computing what isn’t needed for the level of elaboration asked for by a callee. What syntax would be appropriate to write such a thing and not to have a headache
17:45:28 <arseniiv> the part about not computing what’s not needed can be dealt with using a lazy data structure, but the first part seems unwieldy: imagine it’s less expensive to compute f(a) from g(a) and vice versa than f and g themselves. Then if I want my premature optimization, I need to write something complex, maybe like this for an OOP language:
17:45:28 <arseniiv> class GetFG { A a; FA? fa := null; GA? ga := null; ctor(a) { this.a := a; } fun get_g() { if (ga) return ga; elif (fa) return ga := g_from_f(fa); else return ga := g(a); } /* get_f is likewise */ }
17:45:28 <arseniiv> you can see this is very clumsy
17:45:28 <arseniiv> I thought about extending coroutines with a public API like classes but it seems going nowhere too
17:45:43 <arseniiv> this is too general a question too, though
17:46:36 <arseniiv> maybe it, or some specification of it, has a name?
18:19:48 <esowiki> [[Talk:Quiney]] https://esolangs.org/w/index.php?diff=66327&oldid=46265 * KrystosTheOverlord * (+150)
19:12:32 -!- Hooloovo0 has quit (Quit: Temporarily refracted into a free-standing prism.).
19:14:50 -!- Hooloovo0 has joined.
20:30:47 -!- Phantom_Hoover has joined.
20:33:19 <imode> some guy just tried to sell me on his concatenative language and "hard won ideas of programming language design tried over decades".
20:33:55 <imode> what is it with egos.
20:42:46 <arseniiv> imode: what language, is it well-known?
20:43:03 <imode> it is not. it is not even released. one doubts that it ever will.
20:43:22 <arseniiv> is it statically typed?
20:43:25 <imode> nope.
20:43:35 <arseniiv> I approve of your decision
20:44:35 <imode> was just having a discussion with him about what I'm trying to look for in a language, and I posted some work in progress examples of mine (one I actually have a C compiler for), and he just kept calling it a tarpit and told me to "readjust my position" or something.
20:44:56 <arseniiv> there are too many dynamically typed concatenative languages, too many stacks they bear with them on us
20:45:11 <arseniiv> oh could I have a look?
20:45:38 <imode> sure, it's a previous version (prior to me moving to a queue instead of a stack for the work area).
20:46:21 <arseniiv> readjust your position, don’t use unit tests <backspace backspace>
20:46:28 <arseniiv> ah, that one! :D
20:46:45 <imode> he also said "You had everything to gain and you lost it."
20:46:53 <arseniiv> hm
20:46:54 <imode> "now you're on the losing side" or whatever.
20:47:03 <imode> like whaaaaaat the fuuuuuck.
20:47:18 <imode> who says things like that.
20:47:40 <arseniiv> there are seven sides but some people think in binary
20:47:59 <imode> gene ray save me now.
20:48:49 <imode> https://hatebin.com/dsijqhwkec the C compiler for the old version, the newest version (using expanded keywords and definitions) is here https://hatebin.com/imhzdlmjba
20:49:37 <imode> gonna be writing a C compiler for the new version in C. it's honestly really trivial and like, nothing to even get into.
20:50:45 <imode> the longer keywords get reduced to single symbols.
20:51:39 <imode> the conversation was interesting in and of itself before everything turned violent. I was trying to figure out how to make a language like this into something like a pointfree prolog.
20:54:09 <arseniiv> hm
20:54:48 <arseniiv> imode: pointfree in the usual sense, no explicit arguments? Didn’t see that prolog
20:55:07 <imode> no explicit arguments, no variables.
20:55:21 <imode> yeah, prolog requires variables.
20:55:28 <arseniiv> ah, yes, no variables too. How does it look?
20:55:36 <imode> I have no idea, to be honest.
20:56:09 <imode> I imagine it could be done by pushing symbolic variable names on to the queue/stack.
20:56:27 <imode> and then just passing those around until you hit rock bottom assertions.
20:56:41 <imode> orrrr you don't, and you error out.
20:58:32 <arseniiv> also in light of my remark about static typing now I think about if your language is typable. At least whether one can reason about stack safety / length. I don’t immediately see if `[`, `]` and control things like these can be reasoned about in a simple way
20:59:06 <arseniiv> imode: ah, I meant how its syntax should look like
20:59:17 <imode> ahh, I honestly don't know, that's what we were brainstorming about. :)
20:59:58 <imode> for things like stack/queue effects, you can annotate your source properly, and each annotation specifies part of the larger "compile-time program".
21:00:10 <imode> : factorial ( num -- ) ... ;
21:00:25 <imode> : dup ( any -- any any ) ... ;
21:00:26 <arseniiv> maybe one should draw these programs as tree pictures or like de Brujin indices, but these seem point-bound
21:00:59 <arseniiv> imode: yeah, these simple operations are typable easy, I agree
21:01:13 <imode> this way you can guard against over/underflow, as well as typing.
21:02:03 <arseniiv> I did something like that and even encoded it as Haskell heterogeneous lists with type vars instead of Nil, that is the rest of the stack we conserve
21:02:19 <imode> curry's basis for getting into combinators, IIRC, was to build logical sentences without variables.
21:05:20 <arseniiv> hm, also can I ask lambdabot or someone else to remind me a thing after some time?
21:06:00 <arseniiv> or I need to write a note so I don’t forget to think about `[` and `]`
21:06:29 <int-e> you're on your own
21:07:22 <imode> hahaha. cron job is usually good. :)
21:07:42 <int-e> Oh sure. `at` exists for such purposes.
21:07:49 <imode> fyi, `[` and `]` are 'begin an infinite loop' and 'end an infinite loop'.
21:08:07 <int-e> Delivery may be tricky unless you have local mail set up.
21:08:51 <int-e> . o O ( at midnight kill -9 - 1 )
21:09:22 <int-e> oops, there should be no space between - and 1.
21:09:47 <int-e> Ah I didn't know that `at` had a `teatime` timespec :)
21:10:17 <imode> seriously?
21:10:30 <int-e> "You may also specify midnight, noon, or teatime (4pm)"
21:10:41 <imode> beautiful.
21:12:11 <int-e> The real problem with writing notes as reminders is where to put the note that reminds you to read your notes.
21:21:16 <arseniiv> yes
21:21:57 <arseniiv> I put them on my precious desk and move them from place to place there
21:22:25 <arseniiv> also there are some notes in a phone app
21:23:58 -!- atslash has quit (Quit: This computer has gone to sleep).
21:26:31 <int-e> arseniiv: do you have categories? "not important" "not right now" "let's do this later"?
21:27:21 <arseniiv> I desire to have them but still don’t
21:27:46 <arseniiv> "not important" "not right now" "let's do this later"? => these are default
21:28:07 <int-e> . o O ( Bitcoin is a very expensive religion. )
21:35:42 <arseniiv> analyst and catalyst walk into a bar
21:48:26 -!- grumble has quit (Quit: Whose thought XML was a good idea in the first place?).
21:49:55 <fizzie> I saw a scientology shop in town yesterday.
21:50:02 -!- grumble has joined.
21:50:08 <fizzie> For some reason the phrase "expensive religion" brought it to mind.
21:50:31 <fizzie> They would've had a free video on Dianetics to view.
22:09:27 <int-e> Ah "free".
22:10:20 <kmc> i wrote a shell script that generates markdown
22:10:28 <kmc> fizzie: there's one just up the street from me
22:10:48 <kmc> and the main one in SF is rather fancy https://www.scientology-sanfrancisco.org/inside-our-church/
22:10:50 <int-e> "We waste NN minutes of your time but we also make you feel like it was a gift so now you a) owe us and b) have to justify spending NN minutes of your time on our ideas"
22:10:56 <kmc> I see them in the subway sometimes marketing their "free stress test"
22:11:05 <kmc> bitch I don't need a stress test I already know I'm stressed
22:11:13 <fizzie> GCC sources have .md files, but they're actually "machine description" files rather than markdown files, but GitHub still attempts to render them as markdown.
22:11:20 <int-e> kmc: Seeing scientology called a church is so unreal :)
22:11:22 <kmc> i see a lot more jehova's witnesses though
22:11:29 <kmc> int-e: eh...
22:11:39 <fizzie> I assume the London one was a much less fancy, although obviously I only saw the front.
22:11:45 <kmc> many churches are a bit nutty
22:11:52 <kmc> the only difference between a religion and a cult is popularity
22:11:55 <int-e> kmc: They tried that in Germany too. The courts looked at them and said, no, you're not a church. And that was it. :)
22:12:08 <kmc> sure, cults tend to be abusive, but a lot of things generally recognized as religions are also abusive
22:12:23 <int-e> kmc: It's just another difference between the US and here.
22:12:32 <kmc> well, your government is more willing to draw the line
22:12:35 <kmc> it's still an arbitrary line
22:12:47 <kmc> freedom of religion is strong in the USA
22:12:50 <kmc> for good or for ill
22:13:02 <kmc> I really like the satanists, because they troll the fundamentalist christians
22:13:32 <kmc> if a public school has a christian club they'll try to set up a satanism club
22:13:41 <fizzie> https://goo.gl/maps/xUPRwEjfkpdei2v69 I guess that's pretty fancy.
22:13:43 <kmc> when some fundies put a 10 commandments sculpture on the courthouse lawn, the satanists responded with a huge statue of Baphomet
22:14:09 <kmc> fizzie: have you watched the British sitcom "Peep Show"?
22:14:19 <fizzie> They've got a different fancier place that's the actual church, that's just a "life improvement center".
22:14:36 <kmc> it might be the funniest tv show i've ever seen. certainly in the top few
22:14:47 <kmc> anywhere, there's a whole episode where one of the characters joins the "New Wellness Center"
22:14:47 <fizzie> No.
22:16:37 <kmc> "It's based on the seven sacred truths from the golden tablets found in the asteroid which crashed in Siberia in 1911. It's a really great book. You'd love the chapter on orgones. Orgones are the invisible molecules of universal life energy which govern our moods and our actions. Negatives orgones are the source of all the problems in the world."
22:16:42 <kmc> "And you believe that?"
22:16:44 <kmc> "Well, how do you explain all the problems in the world?"
22:16:47 <kmc> "I mean, I couldn't just There are so many historical and economic factors—"
22:16:49 <kmc> "Exactly! You haven't got a clue."
22:18:04 <kmc> the Bay Area is still a leading exporter of cults
22:18:10 <kmc> People's Temple being the most famous one
22:18:25 <kmc> but more recently we have the Berkeley Rationalists
22:18:42 <kmc> and OneTaste which is a sort of startup sex cult / yuppie lifestyle brand
22:21:05 <kmc> fun fact: People's Temple ran a ham radio station at Jonestown, which they used to communicate with the organization back in SF, and they would also acknowledge contacts with whoever was on the airwaves
22:21:39 <kmc> it was a prized contact because people collect countries and there were not many stations in Guyana at that time (probably still the case)
22:21:47 -!- MDude has quit (Ping timeout: 276 seconds).
22:21:56 <kmc> http://hamgallery.com/qsl/country/Guyana/wb6mid3_b.jpg https://jonestown.sdsu.edu/wp-content/uploads/2013/07/fccDieckman.jpg
22:23:30 <kmc> 1978 was a crazy year for San Francisco
22:24:19 <kmc> 918 people died in Jonestown, many of whom had family and friends in San Francisco, including our congressional representative (who also just happened to be a vocal critic of the CIA)
22:25:14 <kmc> then 9 days later, the mayor and a city supervisor (the first openly gay elected official in california history) were assassinated by another city supervisor
22:25:36 <shachaf> kmc: The original motivation was for RAII-like things.
22:25:50 <kmc> the only assassination of a major US city mayor ever, i believe
22:25:53 <shachaf> kmc: Python's "with" takes effect for a nested scope, but often you'd want it to take effect for a scope instead.
22:26:00 <shachaf> I mean for the rest of the scope.
22:26:07 <shachaf> { with(lock)`; ... }
22:26:08 <kmc> then riots over the verdict of that trial
22:27:01 <kmc> shachaf: sure
22:27:03 <kmc> makes sense
22:27:08 <kmc> that's kind of like defer
22:27:09 <kmc> isn't it
22:29:27 <shachaf> Sure, defer is for the second part.
22:29:45 <shachaf> I think it's reasonable to acquire a lock and release it at the end of a scope.
22:30:01 <shachaf> I just think the RAII approach where you need an object for it is kind of silly.
22:31:50 <kmc> perhaps
22:32:04 <kmc> but it's a case of getting a feature for free from another feature (destructors for types with actual content)
22:36:10 <fizzie> Did you intentionally swap channels, or unintentionally?
22:36:32 <fizzie> I spent a while going up the backscroll looking for where that was coming from.
22:40:37 -!- Sgeo has joined.
22:46:16 <int-e> there are other channels?
22:46:30 <int-e> fungot: what shall we do about this blasphemy?
22:46:30 <fungot> int-e: still many evils remained: and, if this were done, my whole duty in this respect he sometimes reminds us of the violent ebbs and flows of public feeling, it seems, however, is what nobody will dispute. the king performs a sacrifice: but the entrails are fnord and from the necessity of watchful preparation and powerful establishment." but still, as far as i am concerned in the public service. he never can show that even u
22:46:42 <shachaf> fizzie: It seemed more ontopic here?
22:46:58 <int-e> ^style
22:46:58 <fungot> Available: agora alice c64 ct darwin discworld enron europarl ff7 fisher fungot homestuck ic irc iwcs jargon lovecraft nethack oots pa qwantz sms speeches* ss wp ukparl youtube
22:47:04 <int-e> ^style speeches
22:47:04 <fungot> Selected style: speeches (misc. speeches from Project Gutenberg)
22:47:05 <fizzie> It probably was.
22:47:10 <int-e> mm
22:47:26 <fizzie> I don't think I have a list of those speeches anymore.
22:47:28 <imode> fungot: how do we squash the nonbelievers.
22:47:28 <fungot> imode: ladies and gentlemen,--you receive me with so much good has not been refuted by my honourable friend. he calls upon us to raise that united cry which has so excellent a writer would not cease to write. in the next parliament. but, if the country has to pay two millions, it will never apply itself sufficiently to works of that kind deserves our fullest recognition. i recognise to the full the responsibility for it.
22:48:00 <imode> sounds complicated and expensive.
22:56:38 -!- FreeFull has quit.
22:59:09 <kmc> i wanna conquer the world, give all the idiots a brand new religion
23:00:52 <int-e> kmc: will that limit climate change?
23:01:07 <int-e> (I almost wrote "avert" but it's too late for that)
23:02:04 <kmc> who knows
23:20:34 <arseniiv> it’s like pendulum
23:21:12 <arseniiv> or a cat
23:26:02 -!- arseniiv has quit (Ping timeout: 246 seconds).
23:36:42 -!- budonyc has joined.
23:39:07 <imode> still have no idea why dup, drop, swap and last are "universal" for queue automata.
23:39:34 <imode> I guess it makes sense.
23:40:05 <imode> dup creates information, drop removes information, swap reorders information, last shifts information around.
23:40:17 <shachaf> What's last?
23:40:31 <imode> take an element from the rear of the queue and bring it to the front.
23:40:43 <shachaf> Oh, I missed the word "queue".
23:40:43 <imode> 1 2 3 last -> 3 1 2
23:41:20 <shachaf> What's "universal" for stack automata?
23:41:44 <imode> that I am unsure of. probably pick and roll, I guess?
23:41:52 <imode> not really stack ops..
23:42:08 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
23:42:31 <shachaf> I wonder how this compares to S and K, which also duplicate and delete.
23:42:45 <imode> that's what I'm trying to figure out.
23:42:50 <shachaf> B C K W is more directly a duplicate/delete, thing, I guess.
23:42:54 <imode> S is kind of a compound operation.
23:43:07 <shachaf> C is like swap, K is like drop, W, is like dup
23:43:25 <imode> ..._interesting_.
23:44:55 <imode> you may only need dup, drop and swap, now that I think about it. `last` is for convenience.
23:45:10 <imode> rolling the queue can just be : roll dup drop ;
23:45:34 <imode> _provided_ you don't dequeue the top symbol.
23:46:01 <imode> if you do, then you need to do... : roll swap last last swap last ;
23:46:43 <imode> 3 2 1 -> 1 2 3 -> 3 1 2 -> 2 3 1 -> 1 3 2 -> 2 1 3
23:47:22 <kmc> roll puff puff swap
23:49:27 <imode> 'last' is kind of a hack, though. I can build a queue machine that will do it in linear time.
23:58:59 -!- oerjan has joined.
2019-09-24
00:29:30 -!- MDude has joined.
00:42:11 -!- budonyc has quit (Quit: Leaving).
00:55:47 -!- Lykaina has joined.
02:07:21 <imode> https://pressron.wordpress.com/2016/08/30/what-we-talk-about-when-we-talk-about-computation/
02:08:30 <imode> this post is interesting, because it presents a dichotomy that I've been struggling with.
02:08:40 <imode> that of models of programming vs. models of computation.
02:14:07 -!- lf94 has joined.
02:14:13 <imode> Modal the language is a model of programming, while the underlying machine model is a model of computation.
02:15:10 <imode> the split between the two is pretty clear; a model of programming requires a validator, compiler or other machinery to function properly prior to performing computations, while a model of computation doesn't.
02:16:20 <imode> I don't like models of programming because there's always something to be simplified. some underlying detail that can be exposed, judged and eliminated if found redundant.
02:16:33 <imode> you can _build_ models of programming on top of models of computation.
02:17:20 <imode> so it's a matter of finding just the right match.
02:35:31 -!- Lykaina has quit (Quit: leaving).
03:44:41 -!- imode has quit (Ping timeout: 246 seconds).
03:57:13 -!- sprocklem has joined.
04:06:25 <esowiki> [[1+]] https://esolangs.org/w/index.php?diff=66328&oldid=66320 * TwilightSparkle * (+87)
04:43:17 -!- Lord_of_Life has quit (Ping timeout: 265 seconds).
04:47:02 -!- Lord_of_Life has joined.
04:53:46 -!- rodgort has quit (Quit: Leaving).
05:01:19 -!- rodgort has joined.
05:08:42 -!- atslash has joined.
05:17:01 -!- atslash has quit (Quit: Leaving).
05:19:28 -!- MrBismuth has quit (Ping timeout: 245 seconds).
05:21:06 -!- atslash has joined.
05:25:45 -!- MrBismuth has joined.
05:29:43 <esowiki> [[1+]] https://esolangs.org/w/index.php?diff=66329&oldid=66328 * TwilightSparkle * (+147)
05:43:40 <esowiki> [[1+]] M https://esolangs.org/w/index.php?diff=66330&oldid=66329 * TwilightSparkle * (+102) /* Turing-Completeness */
05:49:44 -!- JonoCode9374 has joined.
05:51:34 -!- JonoCode9374 has quit (Remote host closed the connection).
05:56:07 -!- oerjan has quit (Quit: Nite).
08:03:24 -!- cpressey has joined.
08:08:57 <cpressey> Good morning. Interesting conversation here yesterday, but largely a tangent and I never returned to the thing that started it, which was:
08:09:05 <cpressey> <shachaf> It's interesting that it's a version of Rice's theorem that holds for programs that are guaranteed to halt.
08:09:49 <cpressey> Rice's theorem states that all nontrivial properties of the RE sets are undeciable. There are gobs and gobs of nontrivial properties of recursive functions that are decidable.
08:12:59 <cpressey> Rice's theorem doesn't say anything about sets other than SE sets, and neither, as far as I can tell, does "Rice's theorem for the computable reals".
08:13:07 <cpressey> s/SE/RE/
08:13:37 <cpressey> Nor would I expect "Rice's theorem for the computable reals" to say anything about sets other than the RE sets, because the computable reals are an RE set.
08:43:47 -!- j-bot has quit (Ping timeout: 245 seconds).
08:43:51 -!- HackEso has quit (Remote host closed the connection).
08:43:58 -!- HackEso has joined.
11:08:43 <shachaf> cpressey: No, I certainly wasn't suggesting that it's a direct consequence of Rice's theorem.
11:10:05 <shachaf> Rice's theorem is a connectness theorem, and so is "Rice's theorem for the computable reals".
11:14:45 <shachaf> Actually I'm not sure what you're saying here.
11:15:23 <cpressey> I'm saying "Rice's theorem for the computable reals" is not " a version of Rice's theorem that holds for programs that are guaranteed to halt."
11:16:02 <cpressey> Rice's theorem is a statement about the RE sets. So is "Rice's theorem for the computable reals".
11:17:35 <cpressey> They don't say anything useful when you apply them to a more specific set, like R.
11:18:52 <shachaf> By "a version of", I mean "it makes the same statement about a different thing".
11:19:19 <cpressey> The computable reals are an RE set.
11:19:32 <cpressey> It's not an essentially different thing.
11:19:55 <shachaf> Wait, what do you mean? Of course it is.
11:20:01 <cpressey> Explain how.
11:20:09 <cpressey> No, wait.
11:20:12 <cpressey> This is the tangent.
11:20:26 <cpressey> This has nothing to do with machines that always halt.
11:20:43 <cpressey> You don't have a version of Rice's theorem that says something about machines that always halt.
11:21:03 <shachaf> A version of Rice's theorem that holds for [a special set of] programs that are guaranteed to halt.
11:21:16 <shachaf> Or equivalence classes thereof.
11:21:32 <cpressey> In brief, what does this theorem say?
11:21:40 <shachaf> Which one?
11:21:48 <cpressey> "A version of Rice's theorem that holds for [a special set of] programs that are guaranteed to halt."
11:22:07 <shachaf> I think I was just talking about Rice's theorem for the computable reals at that time.
11:22:18 <cpressey> What does this theorem you refer to, say?
11:22:23 <shachaf> A computable real is a program : Q+ -> Q
11:22:53 <shachaf> Such that two computable reals that converge to the same value are considered equivalent.
11:23:25 <shachaf> "Rice's theorem for the computable reals" says that, given a computable real, no nontrivial property of the real number it represents is decidable.
11:24:00 <cpressey> "The real number it represents" is not a guaranteed-to-halt function.
11:24:20 <shachaf> What? Functions don't halt.
11:24:23 <Taneb> shachaf: that statement doesn't feel quite right
11:24:32 <shachaf> And real numbers aren't functions.
11:24:43 <cpressey> "The real number it represents" is not a guaranteed-to-halt program. <--- better?
11:24:51 <shachaf> No, real numbers aren't programs either.
11:25:09 <cpressey> You literally just said they were.
11:25:13 <cpressey> shachaf | A computable real is a program : Q+ -> Q
11:25:35 <shachaf> OK, that's probably the thing Taneb was objecting to.
11:25:42 <cpressey> I'm on the cusp of concluding you're arguing in bad faith.
11:25:55 <shachaf> Yikes. Let me try to be more precise.
11:26:12 <tromp_> in what sense is a program from Q+ to Q a real?
11:26:40 <Taneb> Given a series of approximations, find a closer approximation?
11:26:45 <shachaf> A computable real is a special kind of real number.
11:27:23 <shachaf> A "program representing a computable real" -- which I should have a shorter name for -- is a program that can approximate it to any precision you ask for.
11:28:10 <tromp_> then what is the Q+ ?
11:28:18 <shachaf> Positive rationals.
11:28:29 <cpressey> We can know a lot more about that program, that we can know about the computable real that it approximates finite approximations of. You seem to be conflating these two objects.
11:28:37 <cpressey> s/that/than/
11:29:11 <shachaf> Yes, the theorem is definitely about properties of the real represented by the program, not the program itself.
11:29:19 <shachaf> This is also the case with the regular Rice's theorem.
11:30:39 <shachaf> If r is a computable real, it has a bunch of programs representing it. Say f is one. For any positive rational error bound e, |f(e) - r| < e
11:30:58 <Taneb> "If P is a function from the computable reals to booleans, then P is either trivial or undecidable", is this a correct statement of the theorem?
11:31:35 <shachaf> Sure.
11:31:43 <shachaf> (Where I guess "undecidable" means "uncomputable".)
11:32:06 <shachaf> Hmm, I should be more careful since I'm trying to be precise.
11:32:10 <cpressey> shachaf: For "This is also the case with the regular Rice's theorem", could i ask you to actually restate "the theorem is definitely about properties of the real represented by the program, not the program itself" in terms of regular Rice's theorem.
11:32:42 -!- j-bot has joined.
11:33:07 <shachaf> Taneb: A function takes an argument which is a computer program. It can decide plenty of those things about those programs. If we insist that it returns the same value for the same computabler real, whatever program we use to represent it, then it's uncomputable.
11:33:26 <tromp_> i wld agree with that
11:33:34 <Taneb> Yes, I agree with that too
11:33:36 <tromp_> we cannot decide if a computable real is positive
11:34:18 <Taneb> We cannot decide programatically in general, certainly
11:34:47 <Taneb> We can fairly easily decide whether 4, which is a computable real, is positive or not
11:36:40 -!- xkapastel has joined.
11:36:43 <shachaf> cpressey: The regular Rice's theorem says the same thing.
11:36:57 <shachaf> cpressey: https://en.wikipedia.org/wiki/Rice%27s_theorem calls it "semantic properties"
11:38:16 <cpressey> shachaf: So what does any of this have to do with always-halting programs?
11:38:41 <shachaf> Only that representatives of computable reals always halt.
11:39:08 <shachaf> I think I phrased it in that particular way as a leadup to something else which maybe I didn't say.
11:39:10 <cpressey> What does Rice's theorem tell you about these representatives?
11:39:20 <Taneb> Absolutely nothing
11:39:27 <cpressey> Taneb: I agree.
11:39:53 <cpressey> Which is why I find "It's interesting that it's a version of Rice's theorem that holds for programs that are guaranteed to halt." so misleading.
11:41:24 <Taneb> The programs representing computable reals must halt by any reasonable definition
11:41:36 <Taneb> (or be productive, but that doesn't really work with TMs)
11:41:38 <shachaf> "it's a version of" doesn't mean "it's a consequence of"
11:42:08 <cpressey> "It's a version of" means it can be stated as a seperate theorem. Can you state it?
11:42:38 <cpressey> I'd love to hear this version of Rice's theorem that says interesting things about programs that are guaranteed to halt.
11:42:43 <Taneb> Rice's theorem for computable reals?
11:42:50 <Taneb> It's been stated multiple times in the past half hour
11:43:06 <cpressey> Rice's theorem for the representatives of computable reals.
11:43:20 <Taneb> No such thing, just like there's no Rice's theorem for Turing machines
11:43:39 <cpressey> Taneb: I suppose it's too much to hope to hear shachaf agree that there's no such thing?
11:44:20 <shachaf> I feel like Taneb is mostly in completely agreement with me here.
11:44:44 <shachaf> At least I feel like I'm in complete agreement with Taneb.
11:44:48 <Taneb> shachaf: certainly in the broad strokes
11:45:03 <shachaf> Taneb: Every last detail, no exceptions!
11:45:31 <cpressey> Okay, well. Is the nature of my objection still unclear?
11:45:43 <shachaf> cpressey: If we call the regular one "Rice's theorem for partial functions", then we can call this one "Rice's theorem for the computable reals".
11:46:13 <shachaf> In which case, sure, "Rice's theorem for Turing machines" and "Rice's theorem for representatives of computable reals" don't exist?
11:46:18 <cpressey> shachaf: I don't care what you call it, I don't care about connectedness, I'm trying to say it has no bearing on always-halting programs.
11:46:33 <shachaf> This seems like a silly distinction to make, because Rice's theorem is about both Turing machines and partial functions.
11:47:12 <shachaf> OK, I really don't understand what you're saying. Representatives of computable reals are a special set of programs that always halt.
11:47:25 <cpressey> Yes, I know.
11:47:55 <shachaf> This theorem says, given one of these programs, what can you decide about the thing it represents?
11:48:02 <shachaf> Or rather it says you can't decide anything.
11:48:45 <shachaf> I feel like you must be reading something more into what I said before but I'm not sure what.
11:49:12 <cpressey> I guess I'm pretty bad at explaining what I'm objecting to.
11:49:19 <shachaf> Representatives of computable reals are programs that always halt, and this theorem has a bearing on them. That seems clear and uninteresting so it's probably not what you mean.
11:50:25 <cpressey> I guess it must not be.
11:51:48 <cpressey> Suppose I have a program, call it P.
11:51:56 <shachaf> There's a separate question that I had the other day, which is: Given a Turing machine that's guaranteed to halt, what properties are decidable about the function it represents?
11:52:08 <cpressey> Suppose P is known to always halt. But suppose that I don't know what P is supposed to do.
11:52:17 <shachaf> But that question had nothing to do with the reals.
11:52:56 <cpressey> And also nothing to do with Rice's theorem.
11:53:29 <cpressey> Lots and lots of nontrivial properties are decidable for a machine that's guaranteed to halt.
11:53:47 <cpressey> "Does it accept '123'?" Well, just run it and see?
11:54:13 <cpressey> I certainly didn't have the impression you thought of this as a "separate question".
11:54:39 <cpressey> <shachaf> It's interesting that it's a version of Rice's theorem that holds for programs that are guaranteed to halt.
11:54:45 <cpressey> <shachaf> What are other things you can say about programs that you know some things about?
11:54:51 <cpressey> <shachaf> For example what properties of a total function are decidable given a guaranteed-to-halt program that computes it?
11:57:15 <shachaf> Yes, those are separate questions.
11:57:46 <shachaf> What I was thinking when I said that was: We know Rice's theorem, which is about Turing machines we don't know anything about. But what about the large universe of possible theorems about what's decidable if we know some things?
11:58:05 <tromp_> properties to that can decided by finite support
11:58:23 <tromp_> (remove "to")
11:58:51 <shachaf> Yes, that sounds right.
12:00:32 <shachaf> `olist 1181
12:00:33 <HackEso> olist 1181: shachaf oerjan Sgeo FireFly boily nortti b_jonas
12:00:37 <cpressey> Okay, my confusion was regarding how closely-related you were proposing those statements to be.
12:02:06 <cpressey> Or questions, rather
12:02:22 <shachaf> This computable real theorem is certainly not about all Turing machines that always halt. And it's not about them representing the same kind of thing, either.
12:02:57 <shachaf> So a few offhands sentences 24 hours ago were written confusingly.
12:03:03 <shachaf> But I don't think that's bad faith.
12:07:47 <cpressey> So you and Taneb both used the word "productive", and I suspect that's how I think of computable reals -- and definitely not as being represented by halting approximation functions -- which probably attributes to some of the confusion too.
12:08:12 <cpressey> Oh, you'll object to "halting function" again now won't you
12:08:56 <shachaf> I wasn't going to, but if you're being precise, I don't think a function can halt or not halt (though a partial function can be defined or not defined at a point).
12:09:17 <cpressey> Well, I can't call them "total functions" because the total functional programming people decided that includes things that map things to bottom
12:09:37 <shachaf> What? No they haven't.
12:11:12 <cpressey> That was kind of supposed to be a joke.
12:11:22 <shachaf> Ah.
12:11:34 <shachaf> Anyway, I don't think there's a big distinction between the "productive" representation and the one I used, except Turing machines aren't usually very good at expressing productivity.
12:12:07 <shachaf> I want to add one important distinction, which is that a "productive" machine can't go back and change its mind an unbounded time after it's outputted something.
12:12:52 <cpressey> I was at no point considering an unretractable output tape - just the regular tape of a TM. That's how I learned the definition of computable number, that's all.
12:12:58 <shachaf> I think you permitted that with your decimal expansion representation the other day, and it doesn't work.
12:13:21 <shachaf> If your tape is completely retractable, then you can't get any information at all about the real number in any finite amount of time.
12:13:27 <shachaf> That seems pretty bad.
12:14:16 <cpressey> That's what they call "uncomputable", yes. But at the same time, you don't have to have a strong guarantee about when and where a cell of the tape will never be overwritten.
12:14:36 <cpressey> Just that it will eventually not be overwritten again.
12:14:56 <cpressey> "Revised" might be a better word even.
12:15:50 <shachaf> I want the computable real to give me definite information about the real in finite time. I think that's a pretty reasonable request of a program.
12:15:51 <cpressey> As I said yesterday: this is basically Turing's original formulation; apparently it's subtly wrong?
12:16:14 <cpressey> Finite, but not necessarily known beforehand how much.
12:16:22 <shachaf> Well, it's wrong in the sense that it doesn't agree with the modern definition, and it's not very useful.
12:20:32 <shachaf> It's easy enough to fix it to work: You just insist that you can't rewrite the number "too much".
12:20:59 <shachaf> In particular, when you write the nth bit, you can't change the number you've already written by more than 2^-n.
12:22:45 <cpressey> Yes, I don't disagree with this.
12:22:52 <cpressey> Something like this.
12:23:43 <cpressey> Maybe you could say, Every finite prefix of a computable real is computable in finite time.
12:24:10 <cpressey> That leads into having a halting approximation program.
12:25:33 <shachaf> Well, reals don't have a unique prefix, is what I'm trying to say in the first place.
12:26:39 <cpressey> If you can't eventually nail down the first digit of a computable real, then it's not computable.
12:26:52 <shachaf> What's the first digit of 0.333... + 0.666...?
12:27:30 <shachaf> Oh, "eventually". That doesn't sound very computable to me, if it's not bounded.
12:28:22 <cpressey> But you're okay with "productive".
12:28:36 <cpressey> To me they're not different?
12:29:10 <shachaf> I'm OK with "productive" but not "a productive stream of digits".
12:30:03 <shachaf> Exactly because you can't always nail down even the first digit.
12:31:50 <cpressey> The sum of 0.333... + 0.666... is 0.(3,6)(3,6)(3,6)..., so the first digit to the right of the decimal point is (3,6).
12:32:42 <shachaf> What's that?
12:35:16 <cpressey> You wouldn't like it. It's got something to do with a productive stream of digits.
12:36:17 <cpressey> What is 0.333... if not a productive stream of digits? And you're asking me to *add* these objects which you apparently do not accept.
12:36:44 <shachaf> Yes, I'm bringing up this object to show the problem with the stream of digits representation.
12:36:59 <shachaf> But maybe you're still talking about the version that supports rewrites, in which case it works fine.
12:38:35 <cpressey> I don't have any problem with 0.333... + 0.666... = 0.999..., for what it's worth.
12:39:25 <esowiki> [[1+]] M https://esolangs.org/w/index.php?diff=66331&oldid=66330 * TwilightSparkle * (+2)
12:40:10 <cpressey> Is the fact that 1.000... and 0.9999... represent the same number, an actual problem?
12:40:38 <cpressey> 0.(3,6)(3,6)(3,6)... can represent that number too, as far as I can see?
12:41:49 <cpressey> For 1.111... - 0.111... I might nail down the first few digits as 1.000... but regardless of my choice of which to nail down, it's the same number?
12:43:11 <shachaf> I don't understand your notation.
12:43:39 <shachaf> The problem is that if the trillionth digit is a 7, you might have to go back and change the 0. to a 1..
12:58:10 <cpressey> Sure, so maybe you can't nail it down until you've passed the trillionth digit. But there is some point at which you can nail it down. That's what I mean by "eventually". If there is no such point, then it's not computable.
12:59:28 <shachaf> But you don't know what that point is.
12:59:37 <shachaf> That's what I want out of "computable".
12:59:49 <shachaf> (And also the standard definition.)
13:00:16 <shachaf> (I should be more careful with saying things like that parenthetical.)
13:00:38 <cpressey> But if it's a computable real, you know that the point exists, at some finite time after you start. Thus: Every finite prefix of a computable real is computable in finite time.
13:01:40 <shachaf> Is 0.9 a prefix of 1.001?
13:01:49 <shachaf> Oh, I misread.
13:10:38 <cpressey> Anyway that's why I don't have a problem with writing digits to a TM's tape. You get the 1st one in finite time, you get the 2nd one in finite time, and so forth. Maybe this isn't the best way, maybe it's what you and/or Taneb mean by "TMs are bad at that", but I don't see how it's invalid.
13:11:08 <Taneb> You can't report when you have a digit
13:15:52 -!- arseniiv has joined.
13:16:15 <cpressey> I'm fine with that, and also I'm fine with, if you do want such a report, you can use some other representation.
13:40:58 <arseniiv> imode: re. models of computation vs. models of programming: an interesting thing though I’m not sure this is how it is?
13:51:56 <lf94> arseniiv: why do you think that?
13:52:19 <lf94> I think there is a clear distinction, and if we were to program in assembly, our model of programming directly maps to the model of computation
13:54:01 <arseniiv> lf94: I haven’t read to the end yet
13:59:05 <shachaf> cpressey: This is the distinction between "Cauchy sequences" (normally used for the reals) and "quickly-converging Cauchy sequences" (normally used for the computable reals).
13:59:54 <shachaf> I think by "TMs are bad at that" Taneb just meant that there's no standard mechanism for TMs to produce intermediate output. But you can make one up easily enough.
14:00:13 <shachaf> Anyway quickly-converging Cauchy sequences have a guaranteed rate of convergence, which makes them useful for computation.
14:02:45 <arseniiv> re. that post: hm clearly Minsky machines compute (partial) functions N^m → N^n. These functions of course aren’t that sophisticated but… I don’t see a clear border
14:06:02 <arseniiv> still that distinction has some merit
14:12:36 <arseniiv> > All those representations pass Bauer’s first condition — they are directly useful for simulating computations — but they differ widely with respect to the second test, namely the complexity of deciding the language of the representation. => aah
14:12:37 <lambdabot> <hint>:1:38: error: lexical error at character 's'
14:12:52 <arseniiv> oops I did it again
14:24:45 -!- Sgeo_ has joined.
14:28:07 -!- Sgeo has quit (Ping timeout: 265 seconds).
14:29:28 -!- sprocklem has quit (Ping timeout: 245 seconds).
14:33:47 -!- arseniiv_ has joined.
14:36:02 -!- arseniiv has quit (Ping timeout: 240 seconds).
14:56:24 -!- xkapastel has quit (Quit: Connection closed for inactivity).
15:17:09 -!- imode has joined.
15:31:35 <imode> arseniiv_: re: that classification, yeah it's incredibly useful. it allows us to actually classify different formal systems.
15:31:56 <imode> in a more productive way than just feeling around.
15:33:32 <lf94> imode: could you modify modal so I can pipe content to it
15:33:45 <lf94> I would like to write my modal code in vim, and then pipe this content to modal
15:34:04 <lf94> I guess I can just call it...
15:34:11 <imode> lf94: sure, I can do that.
15:34:25 <lf94> Also I don't think the clear command works
15:34:38 <lf94> IMO clear command is very important actually.
15:34:50 <lf94> You can dynamically re-arrange statements to your benefit
15:34:57 <lf94> (As in, clear command should be a fundamental importance)
15:35:10 <imode> the clear command works. it just resets everything to defaults.
15:35:24 <imode> line 407.
15:35:24 <lf94> I tried it the other day ... maybe it was on your telnet interpreter...
15:35:31 <lf94> ok :)
15:36:01 <imode> I'll add a command switch to just evaluate a file.
15:38:18 <imode> or just give you an alternative interpreter.
15:38:40 <lf94> you should add a switch for interpreter mode
15:38:46 <lf94> otherwise, pipe mode
15:38:47 <lf94> :D
15:39:07 <imode> bear in mind, this language/interpreter is not being worked on.
15:42:00 <lf94> it doesn't need to be :)
15:42:30 <lf94> This is very exploratory for me
15:45:05 <imode> https://hatebin.com/wljbtaonwn here you are.
15:45:22 <imode> just run it the same as normal. it'll evaluate your file and exit.
15:45:33 <imode> along with printing out the time taken.
15:45:58 <imode> to test, just run it with a file containing 1 + 2
15:45:59 <imode> or something.
15:50:55 <imode> modal is a bad language because it's unpredictable and masks the underlying model of computation while relying heavily on it for its reduction semantics.
15:54:43 <imode> lf94: what I was working on _after_ modal is a combinatory interpreter using some of the same evaluation tactics as modal, i.e using a queue.
15:55:15 <imode> combinatory logic is confusing even to me, though. not because the underlying model is confusing, but after a certain point, things just look like a mess.
15:55:28 <imode> that was about the time I swapped to more machine models.
15:57:23 -!- cpressey has quit (Quit: A la prochaine.).
16:03:26 <lf94> "it's unpredictable"
16:03:45 <imode> eh, that was a misspeaking. its evaluation method is unconventional.
16:03:49 <lf94> I think it can be made predictable
16:04:01 <lf94> using certain patterns or maybe modifying the interpreter behavior a tad
16:05:36 <imode> a better method imho is to keep the _concept_ of term rewriting around, but look at the base model of computation a little more closely.
16:06:19 <imode> this interpreter is juggling two associative arrays, one of which is totally cleared every time a reduction takes place and is only needed for the internal mechanics of reduction. it is also juggling a queue that holds the entire expression.
16:07:14 <imode> dropping the reduction semantics just gives you a queue automaton that behaves a lot like a traditional Forth if you add the right operators other than dup, swap, drop, namely 'last'.
16:08:49 <imode> the next question is.. is this the right level of abstraction. we've traded something reasonably elegant for a machine model, with instructions executing sequentially, etc.
16:09:49 <imode> and better yet, is this the right machine model.
16:12:19 <lf94> I was thinking maybe assembly with a more modern macro system would be the best.
16:13:06 <lf94> performant and maintainable code
16:13:25 <lf94> and you can write a simple interpreter if you keep to a subset of a popular ISA
16:13:53 <lf94> and then you can write in this assembly language forever
16:14:22 <lf94> and then you can build more powerful tools on top of this
16:18:12 <imode> yeah. if you telnet into imode.tech on port 1024, you can see something I've been working on.
16:18:43 <imode> it's a forth-like concatenative language based around queue automata.
16:43:00 -!- Lord_of_Life_ has joined.
16:45:44 -!- Lord_of_Life has quit (Ping timeout: 268 seconds).
16:45:52 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
16:55:05 -!- FreeFull has joined.
17:01:57 -!- Phantom_Hoover has joined.
17:05:11 -!- arseniiv_ has changed nick to arseniiv.
18:03:39 -!- LKoen has joined.
18:34:57 <lf94> imode: read that article you sent me yesterday. very interestign.
18:35:28 <lf94> Only further makes me think, why are we not working from machine models
18:36:34 <lf94> I guess it really _does_ prevent us from higher order thinking
18:37:08 <lf94> like a register move: ld a, b is /similar/ to a = b; but it's also vastly different
18:37:24 <lf94> a = b, a and b are very abstract, whereas ld a, b; these are concrete
18:39:31 -!- sprocklem has joined.
18:41:16 <lf94> I think this is why stack based languages are appealing
18:45:58 <lf94> (the stack provides a way to have arbitrary variables)
18:54:46 <lf94> I'm seeing that you can write a forth interpreter/compiler in such a way that it can re-arrange the postfix to become prefix
18:54:49 <lf94> + 1 2 vs 1 2 +
19:03:28 <arseniiv> yeah one needs to read RTL instead of LTR and reverse arguments of all ops
19:04:30 <arseniiv> though we can read LTR and use a stack of incomplete applications
19:11:36 <lf94> I'm just saying we can have a forth where we read LTR
19:35:05 -!- andrewtheircer_ has joined.
19:35:41 <andrewtheircer_> hi
19:37:16 <arseniiv> lf94: of course
19:37:34 <arseniiv> andrewtheircer_: hi
19:37:40 <andrewtheircer_> sup
19:37:46 <andrewtheircer_> new eso projects?
19:51:59 <imode> lf94: a more pure form imo of forth-like langs is ones where a queue is used. because of the universal nature of queue automata (they're turing complete), you can theoretically pack everything from main memory to a call stack onto a single work area.
19:52:14 <lf94> yes
19:53:22 <imode> whether it's a suitable machine model is something I'm investigating.
19:54:33 <lf94> why wouldnt it be
19:54:51 <imode> I'm a sucker for minimalism.
19:55:34 <imode> as far as I can tell, the only queue manipulation primitives required for a model like mine are duplicate, swap, drop and an operator I'm calling 'last'.
19:55:54 <imode> this plus control flow structures and comparisons.
19:56:47 -!- sprocklem has quit (Ping timeout: 265 seconds).
19:56:51 <imode> 'last' seems to be a dirty hack as well. it takes something from the end of the queue and pushes it to the start.
19:57:03 <lf94> imode call it peek
19:57:09 <lf94> oh
19:57:17 <imode> 3 2 1 last -> 1 3 2
19:57:21 <lf94> imode: if your queue is circular...
19:57:26 <lf94> call it rotate
19:57:36 <lf94> or shift
19:57:39 <imode> it's less of a naming thing and more of an issue with semantics.
19:58:09 <lf94> that's just like a bitwise shift though
19:58:16 <lf94> that would be a right-shift
19:58:32 <lf94> left-shift would go the other way
19:58:36 <lf94> 2 1 3
19:58:54 <imode> 'last' can be implemented in a traditional queue automaton pretty easily: all you have to do is roll through the queue, keeping track of the last logical symbol you encountered.
19:58:55 <lf94> I think shifting should be a primitive and is definitely not a hack
19:59:18 <imode> it takes linear time and uses the state of the automata's FSM to hold that last logical symbol.
19:59:32 <andrewtheircer_> what's this about
19:59:37 <lf94> why not use a linked list
20:00:00 <imode> why use one, the interface is the same.
20:10:56 <arseniiv> BTW is there a page with computational automata hierarchy? It could be useful for someone
20:11:40 <arseniiv> I’d call imode’s one a half-deque automaton
20:12:50 <andrewtheircer_> automata
20:13:03 <arseniiv> we have pop/push at the front and pop from the back, though one can factor dup, drop, swap and last through different set of operations
20:13:25 <arseniiv> andrewtheircer_: plural of “automaton” :)
20:13:35 <andrewtheircer_> i was saying
20:13:38 <andrewtheircer_> automata is the topic
20:13:39 <andrewtheircer_> nice
20:13:43 <andrewtheircer_> i hope we can get to CAs
20:13:54 <andrewtheircer_> 'cos i have made a metaphor out of them
20:14:41 <arseniiv> there was a discussion of CAs a day earlier
20:15:09 <arseniiv> though there wasn’t much and it wasn’t the topic itself
20:19:32 <imode> arseniiv: I'd call it a queue automaton with a built-in.
20:20:01 <imode> it's easy to construct a machine that performs 'last'. it just takes N*M time.
20:48:37 -!- arseniiv_ has joined.
20:51:37 -!- arseniiv has quit (Ping timeout: 250 seconds).
20:54:20 -!- arseniiv_ has changed nick to arseniiv.
20:59:20 -!- andrewtheircer_ has changed nick to andrewthediscord.
20:59:25 -!- andrewthediscord has changed nick to andrewtheircer.
21:10:12 -!- andrewtheircer has quit (Remote host closed the connection).
21:25:09 -!- Sgeo__ has joined.
21:28:47 -!- Sgeo_ has quit (Ping timeout: 268 seconds).
21:32:12 -!- Lykaina has joined.
21:35:26 <arseniiv> imode: in your pythonic C compiler, I saw both s.d and s->d, though you probably saw that already
21:35:43 <arseniiv> compiler-to-C, I mean
21:36:23 <arseniiv> ah, never mind
21:36:42 <imode> yup, the stack is a local.
21:36:58 <arseniiv> I missed that there are *s in functions where s->... etc.
21:37:00 <arseniiv> my bad
21:37:26 <arseniiv> `:` is hard to type
21:37:26 <HackEso> ​/srv/hackeso-code/multibot_cmds/lib/limits: line 5: exec: :`: not found
21:37:37 <arseniiv> eh
21:38:04 <arseniiv> today I’m dancing on bots’ legs
21:39:33 <arseniiv> and `?` and `;` are too even if we take `[…]` as primitive instead of `[` and `]` separately
21:40:20 <arseniiv> though it’s obvious it’s me alone who wanted to type this language :D
21:42:39 <arseniiv> I mean, for what I know, there’s no sense to encode the fact that `[` and `]` have to be balanced and `?` and `;` should only occur inside `[…]`, in their types
21:43:29 <arseniiv> I don’t know if it’s even possible, and as a theoretical interest I’d be glad to see how if it is
21:44:35 <arseniiv> and disregarding these syntactic constraints and `:` all of it is of course typable easily
21:45:30 <arseniiv> if conservatively
21:46:38 -!- Sgeo_ has joined.
21:46:40 <imode> something I have been mulling about in the back of my mind is a graph rewriting language.
21:46:43 <arseniiv> e. g. we could allow inside `[…]` a code that grows the stack, but we better disallow that
21:46:57 -!- Lykaina has quit (Quit: leaving).
21:47:11 <arseniiv> imode: not like Eoderdrome or what it’s called?
21:47:26 <arseniiv> ah, https://esolangs.org/wiki/Eodermdrome
21:48:03 <arseniiv> ah′, it has a fixed initial state
21:48:23 <arseniiv> probably not what you think
21:49:10 <imode> nah, more flexible.
21:49:19 <arseniiv> I thought so
21:49:37 -!- Sgeo__ has quit (Ping timeout: 245 seconds).
21:49:54 <arseniiv> imode: also am I right this compiler generates a code for `:` without bound checking?
21:50:05 <imode> you are correct.
21:51:49 <arseniiv> aren’t you afraid somebody will write an OS in this language and make an error using `:`? ::D
21:52:12 <imode> if someone chooses this language to write an OS in, I'll be too shocked to consider the security issues. :P
21:52:34 <arseniiv> hm I personally am afraid of C programs maybe now
21:52:47 * arseniiv segfaulted
21:52:56 <imode> gg.
21:53:20 <imode> the graph rewriting language would rewrite undirected, unlabeled graphs.
21:54:59 <imode> rules are of the form a1 a2, a3 a4, ..., aN aM -> b1 b2, b3 b4, ... bN bM;
21:54:59 <arseniiv> hm it’s occurred to me now someone could do something with hypergraphs too
21:55:04 <fizzie> Sounds like Eodermdrome.
21:55:12 <imode> it isn't.
21:56:00 <imode> you essentially try to match the graph bit by bit on the left hand side, remove all matched items, and then construct a new subgraph on the right hand side.
21:56:21 <arseniiv> how should it connect to the old parts?
21:56:23 <imode> here's an explosion: A B -> A B A
21:56:29 <imode> err.
21:56:36 <imode> A B -> A B, B A
21:57:06 <imode> that'd just be an infinite loop because the graphs are undirected.
21:57:27 <imode> if you do A B -> A B, B C, C A, you'll generate an ever-expanding loop of vertices.
21:57:37 <imode> any variables on the RHS are autogenerated vertices.
21:57:50 <imode> any variables that are unused, rather. sorry, cooking dinner.
21:57:54 <fizzie> Then it's an unlabeled multigraph?
21:58:12 <imode> no, just an unlabeled graph. multiple edges aren't allowed.
21:58:42 <fizzie> Oh, I didn't read the adjustment to "explosion".
21:59:08 <arseniiv> <imode> if you do A B -> A B, B C, C A, you'll generate an ever-expanding loop of vertices. => not a simple loop though. It would look like some foam
21:59:24 <imode> it would, because it'd match nondeterministically.
21:59:57 <imode> it'd be a bunch of loops. small ones to large ones.
22:00:33 <imode> in order to make anything actually useful, you need to build two things: labels and directed edges.
22:00:43 <arseniiv> it almost tempts me to analyze how their lengths would be distributed but I don’t know asymptotic methods
22:01:35 <imode> you can abstract high enough until you can build things like lists and sequential statements. you can construct finite state machines.
22:01:38 <imode> and a tape.
22:01:59 <imode> sky's the limit after that, tbh.
22:02:14 <arseniiv> <imode> and a tape. => it was obvious in hindsight :D
22:02:29 <fizzie> Anyway, it *still* sounds quite Eodermdrome-y, disregarding the input/output aspects. But maybe the devil's in the details then.
22:02:36 <imode> you can build, for example, a lot of RDF stuff.
22:02:53 <imode> fizzie: it's pretty far from eodermdrome because I can construct arbitrary graphs.
22:03:37 <imode> you can reconstruct SPARQL using the language.
22:04:50 <imode> one thing I dislike about this approach is 1. there's no clear method on storing a graph (many approaches, not all of them ideal), and 2. the rewrite mechanism involves some behind-the-scenes work.
22:07:20 <imode> there's no machinery that directly correlates to a graph rewrite language. string rewriting and turing machines/queue machines are pretty much hot swappable.
22:08:18 <arseniiv> labeled metavertices and oriented metaedges are an interesting problem, it’s not immediately obvious how to construct them for abstraction not to break when matching them
22:10:05 <arseniiv> (also for the sake of fun I’d consider hyperedges. They don’t seem to make things much easier nor much harder)
22:10:18 <arseniiv> (I mean, as a primitive)
22:12:01 <arseniiv> I see a metavertex as a core which encodes its label and has e. g. a special vertex to which “edge hubs” are connected
22:12:05 <arseniiv> hm no
22:12:58 <arseniiv> maybe we should delineate parts encoding different things by several graphs not occuring in any other place
22:14:50 <arseniiv> like K_n are not hard to match but K_n ⊂ K_(n+1)
22:15:42 <arseniiv> K_m,n promise more, K_(m+1),n seems not to be a subgraph of K_m,(n+1) if m ≠ n?
22:18:14 <int-e> hmm what if you allow n = 0
22:18:48 <int-e> (which has the odd property that K_(m+1),n doesn't have any vertice with degree m+1)
22:19:04 <int-e> vertex
22:22:57 <arseniiv> yes we should pick m, n large enough
22:29:47 -!- sprocklem has joined.
22:30:47 <imode> there's a lot of issues imo with this kind of rewriting scheme, which is why I've strayed away from it.
22:31:01 <imode> a lot of times in rewrite languages it's hard to get your code to _not_ do something.
22:31:09 -!- Sgeo__ has joined.
22:31:23 <arseniiv> at first let’s encode a vertex labeled n ∈ N as A—(B—)^n where A, B are nice graphs and A has one special vertex and B has two, to link them; and encode an edge → as —C—D—, with former conventions
22:31:24 <int-e> enter conditional or constrained rewriting
22:31:56 <arseniiv> then we need to enforce constraints on A, B, C, D to not allow accidental matches
22:32:55 <arseniiv> maybe we need to add “buffer vertices” connecting to a vertex and all the edges incident to it
22:33:34 <arseniiv> or maybe they could connect closely
22:34:12 -!- Sgeo_ has quit (Ping timeout: 245 seconds).
22:34:30 <arseniiv> is it a good idea?
22:36:42 <imode> I think the whole thing is a bad idea. I keep coming back to it to see if it's a good one, but every addition is just compensating for something.
22:37:03 <arseniiv> maybe we need to add “buffer vertices” connecting to a vertex and all the edges incident to it => I mean “connecting to a metavertex and all metaedges…”
22:39:09 <arseniiv> it certainly seems to not be too effective regarding its implementation nor implementation of something in it
22:39:32 <arseniiv> to be not too*
22:39:55 <imode> linear media is always gonna win out vs. any kind of graph or tree structure.
22:40:32 <arseniiv> hm I wonder now how about undirected trees
22:41:20 <arseniiv> but maybe with a fixed finite set of labels
22:42:28 <arseniiv> oh we could simulate a tape of directed trees
22:42:56 <arseniiv> encode*
22:43:44 <arseniiv> couldn’t simulate if subtree patterns aren’t allowed
22:44:08 <esowiki> [[Byter]] M https://esolangs.org/w/index.php?diff=66332&oldid=49879 * PaniniTheDeveloper * (+1)
22:47:14 -!- lambdabot has quit (Remote host closed the connection).
22:50:00 -!- lambdabot has joined.
23:09:40 <imode> maybe I should just use a tape instead of a queue.
23:10:32 -!- Phantom_Hoover has quit (Ping timeout: 246 seconds).
23:11:16 <imode> 'last' is just "move the tape to the left" anyway.
23:11:33 <imode> hm.
23:12:51 -!- FreeFull has quit.
23:13:58 <int-e> use two stacks (a rubber tape)
23:14:07 <imode> rubber tape?
23:14:19 <int-e> you know, stretchable
23:14:26 <int-e> flexible
23:14:45 <imode> ah, that you can just arbitrarily insert under the cursor vs. moving everything over?
23:14:51 <int-e> yes
23:14:56 <imode> yeah I was thinking about that...
23:26:30 -!- LKoen has quit (Remote host closed the connection).
23:27:25 <arseniiv> hm you can use ror and rol (one of them is last) and banish pick, as you can decrement the index and shift it further until it’s zero
23:28:07 <arseniiv> though you’ll need to shift an additional copy of the unchanged index to return back
23:29:18 <arseniiv> imode: ^ if that’s of any use
23:29:56 <arseniiv> one of them is last => s/is/formerly known as
23:30:11 <imode> you know, it's funny.
23:30:52 <imode> https://hatebin.com/ysmcogarab
23:31:00 <imode> pretty much what I did. lol.
23:32:05 <arseniiv> hm seems pretty long
23:32:56 <arseniiv> though I don’t remember all the primitives, what they are this time?
23:33:30 <imode> dup, drop, swap, last, begin ([), repeat (]), if/while (?)...
23:34:12 <arseniiv> ah I mis-eyed or something, then
23:34:21 <arseniiv> there are definitions at the top
23:34:37 <imode> yup!
23:36:57 <arseniiv> (hm is sswap really swapping two top values and then getting two from the bottom? why is it useful?)
23:38:24 <arseniiv> I think I greatly misunderstand now, but maybe I’ll get it soon
23:39:42 <imode> sswap behaves like forth's swap.
23:40:08 <imode> swap grabs the top two values, then enqueues both of them but swapped.
23:40:15 <arseniiv> aaaah
23:40:20 <imode> so grabbing the last two values means they're pushed to the front of the queue again.
23:40:30 <imode> 1 2 3 sswap -> 2 1 3
23:40:42 <imode> vs. 1 2 3 swap -> 3 2 1
23:40:49 <arseniiv> and 1 2 dup -> 2 2 1?
23:41:47 <arseniiv> I was thinking today why you call it a queue automaton and didn’t even consider I should reinterpret what swap and dup are doing here
23:42:49 <imode> 1 2 dup -> 1 2 1
23:42:58 <imode> you could also interpret it as 1 2 dup -> 2 1 1
23:43:08 <arseniiv> what how
23:43:22 <arseniiv> hm
23:43:26 <imode> examine the top of the queue (leftmost item)
23:43:35 <imode> enqueue a copy of it.
23:43:37 <arseniiv> I didn’t read “1 2 3 sswap -> 2 1 3” properly
23:43:52 <arseniiv> I thought you take from the right end
23:43:56 <imode> ahh, sorry.
23:44:02 <imode> my convention is always from the left.
23:44:16 <arseniiv> I should have declare mine too
23:44:24 <arseniiv> declared*
23:44:51 <arseniiv> now I think it would go smoothly
23:47:05 <imode> telnet into imode.tech, port 1024 to access a REPL.
23:47:51 -!- LKoen has joined.
23:48:05 <imode> what's interesting is that you can define `factorial` as `: factorial range product ;`
23:51:43 -!- oerjan has joined.
23:56:22 -!- LKoen has quit (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”).
2019-09-25
00:05:04 <arseniiv> hm I tried to abuse PuTTY for telnet to no result
00:18:07 <imode> my REPL hung up on you?
00:19:11 <arseniiv> I get a terminal window which closes almost instantly
00:19:41 <imode> that's... weird.
00:19:50 <imode> maybe try netcat instead.
00:21:02 <arseniiv> oh now I get ::> but then a dialog box tells me “connection closed by remote host”
00:21:22 <imode> ...
00:21:25 <imode> bizzare.
00:21:50 <imode> no errors on my end.
00:26:37 <imode> usually I'd see "broken pipe" or something.
00:34:11 <imode> a tape with an insertion feature that can be implemented as a constant time operation is starting to look better than a queue.
00:34:29 <imode> can be implemented internally as a circular buffer that can expand on either end.
00:36:10 <arseniiv> anyway maybe later I’ll run your old interpreter code if it’s not too old yet
00:37:24 <imode> arseniiv: https://hatebin.com/usnmammjft in case you want to run the REPL locally, sorry it's not working remotely.
00:38:54 <arseniiv> imode: thanks once more!
00:39:54 <imode> np.
00:54:07 <arseniiv> imode: roll won’t work for a singleton queue but last presumably will, so…
00:54:08 <imode> something I take issue with as well is the concept of "atomization" in the style of bohm. structured languages need validation (matching beginning/ending loops, etc.) while unstructured needs minimal validation (checking that all jumps are within memory bounds).
00:54:16 <imode> arseniiv: singleton queue?
00:54:23 <imode> a queue with a single element?
00:54:28 <arseniiv> precisely
00:54:36 <imode> yeah...
00:54:47 <imode> you can do : roll dup drop ;
00:55:03 <arseniiv> but wouldn’t you make roll a primitive?
00:55:17 <arseniiv> considering that circular buffer thing
00:55:18 <imode> why not, when you can define it?
00:55:27 <imode> ah yeah if I was using a tape, I'd just have left and right.
00:56:21 <imode> roll would be 'right' and last would be 'left'.
00:56:38 <imode> operands would just look left or right.
00:57:30 <arseniiv> argwards and reswards :D
00:57:43 <imode> if you were to add two numbers together, for example, it'd "consume" them and insert the result under the cursor. internally, if you wanted to compile this down to something that didn't have insertion/deletion capabilities, you could implement shifting the tape left or right.
00:59:10 <arseniiv> <imode> you can do : roll dup drop ; => neat! I haven’t checked immediately
00:59:46 <imode> because I implemented 'dup' to just examine the head of the queue.
01:00:15 <imode> i.e 1 2 dup -> 1 2 1, vs. 1 2 dup -> 2 1 1
01:00:40 <imode> if you implemented it to be destructive, you'd do something like : roll dup last drop ;
01:00:40 <arseniiv> it makes sense as you take arguments from the left… or right, I take from the right
01:01:01 <arseniiv> ah, you mean that distinction
01:01:29 <imode> yeah. it's either "look at the head of the queue, see what its value is, enqueue a copy of it without dequeueing it."
01:01:38 <imode> or "dequeue an element, enqueue two of that element".
01:01:48 <imode> if you use the former, it's just : roll dup drop ;
01:02:02 <imode> if it's the latter, it's : roll dup last drop ;
01:02:06 <arseniiv> if I had realized queue programming is so much more fun that stack one some time ago
01:02:39 <imode> honestly this is more like tape-based programming with insertion and deletion under the cursor.
01:02:43 <arseniiv> alas I remember writing two or three half-finished stack concatenative language implementations
01:02:45 <imode> but it _is_ hella fun.
01:02:57 <imode> same... I used to be a stack evangelist.
01:03:07 <imode> I can't justify the juggling and arbitrary stack primitives.
01:03:18 <arseniiv> imode: now the tape, yes, it’s still fun and it even acquires additional charm
01:03:34 <imode> I had a sketch of a language that was essentially built in two parts.
01:04:02 <imode> the underlying state machine description of an operation/machine, and the macro language for stitching together machines.
01:04:23 <imode> I never got to a place where I was happy with it.
01:04:45 <imode> the macro language looked a lot like forth.
01:05:26 <imode> if you placed down a machine, and it was identified to have "anchor points", any machines you placed after that would be "glued" to those anchor points in sequence.
01:06:26 <imode> so 1 2 + if 4 5 + ; 6 7 + would reduce to an actual state graph.
01:07:28 <arseniiv> hm I just had a non-minimalistic idea: if one is to go with a circular tape to the end, for every operation F there could be a dual operation F* taking each of its arguments from the other end and placing its results likewise, and if you define F, F* is defined automatically as the elementwise * of its body
01:07:38 <imode> 1 -> 2 -> + -> if/1 -> 4 -> 5 -> + -> ; if/2 -> 6 -> 7 -> + -> halt
01:07:50 <imode> arseniiv: _exactly_.
01:08:31 <arseniiv> and I still haven’t read the last posts
01:08:32 <imode> would definitely want a circular tape. for no other reason than it's confusing when considering boundary conditions.
01:09:03 <imode> a bounded tape is just a circular tape with markers.
01:10:38 <imode> you _could_ implement a two or one-way infinite tape, though.
01:10:59 <imode> just insert a blank.
01:11:59 <arseniiv> why did we need an infinite tape yet?
01:12:12 <imode> TMs traditionally have an infinite tape.
01:12:24 <imode> i.e you can keep going in a direction and you have the memory you need.
01:12:52 <imode> so if your goal is to reach the end of the universe and put a bit there, you can build a machine that does that... but it won't halt.
01:12:55 <arseniiv> ah, there is a plan to fit a TM in this setting?
01:13:08 <imode> well, what you're slowly drilling down to _is_ a turing machine.
01:13:16 <int-e> /if/ you want to be Turing-complete, you need an infinite number of states (configurations)... the unbounded tape is how TMs achieve that.
01:14:38 <imode> the difference here is we're just talking about things built as extensions to TMs.
01:14:45 <arseniiv> imode: I don’t want to end up with TM! :P I’m happy with a circular tape with a thing between two cells working on it, it’s better than a marked cell
01:15:35 <imode> well, what's a circular tape but a bounded/unbounded tape that has markers signifying where to seek when you wrap around.
01:16:20 <arseniiv> of course there is an isomorphism
01:16:29 <imode> if your tape looks like [ 1 2 3 4 >5< ], and you move right, you can seek all the way back to [ and move right once.
01:16:45 <arseniiv> hm or how is it called when one bounded tape corresponds to a class of unbounded tapes
01:17:09 <arseniiv> I agree, of course
01:17:24 <imode> point is there's always a way to "drill down".
01:17:40 <imode> any operation can be reduced to its appropriate state graph.
01:17:56 <arseniiv> though I like the circular presentation, it implies left/right are O(1)
01:18:13 <imode> exactly. you can "stop" at a certain set of operations and present them as constant time.
01:18:17 <arseniiv> on TM they are linear on our tape length
01:18:18 <imode> and impement them as primitives.
01:19:20 <arseniiv> what could I say :)
01:20:32 <imode> the only issue I have is the command representation as it stands. this queue language is really just some macros that could reduce to a state graph.
01:21:06 <arseniiv> I’ll go sleep of circular tapes of nonstandard lengths flying through ℵ₁ parallel universes
01:21:18 <imode> hahaha, dream well man.
01:22:08 -!- arseniiv has quit (Quit: gone completely :o).
01:26:50 -!- imode has quit (Ping timeout: 240 seconds).
01:34:07 <oerjan> `icode ℵ₁
01:34:08 <HackEso> ​[U+2135 ALEF SYMBOL] [U+2081 SUBSCRIPT ONE]
02:10:08 -!- Phantom_Hoover has joined.
02:13:40 -!- Sgeo_ has joined.
02:16:42 -!- Sgeo__ has quit (Ping timeout: 245 seconds).
02:17:38 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
02:43:31 -!- imode has joined.
03:51:03 -!- Sgeo has joined.
03:53:38 -!- Sgeo_ has quit (Ping timeout: 240 seconds).
04:09:46 -!- Lykaina has joined.
04:44:35 -!- Lord_of_Life has quit (Ping timeout: 265 seconds).
04:47:40 -!- Lord_of_Life has joined.
04:54:35 <esowiki> [[1+]] M https://esolangs.org/w/index.php?diff=66333&oldid=66331 * TwilightSparkle * (+6) /* Examples */ Hash index starts from 0!!
05:10:51 <esowiki> [[1+]] https://esolangs.org/w/index.php?diff=66334&oldid=66333 * TwilightSparkle * (+149) /* Turing-Completeness */
05:12:04 <esowiki> [[1+]] https://esolangs.org/w/index.php?diff=66335&oldid=66334 * TwilightSparkle * (+53) /* Turing-Completeness */
05:19:29 -!- Sgeo has quit (Ping timeout: 276 seconds).
05:20:28 <esowiki> [[1+]] https://esolangs.org/w/index.php?diff=66336&oldid=66335 * TwilightSparkle * (+34) /* Turing-Completeness */
05:25:53 -!- Lykaina has quit (Quit: leaving).
05:31:53 -!- Frater_EST has joined.
06:00:25 -!- oerjan has quit (Quit: Nite).
06:39:01 -!- Sgeo has joined.
07:05:23 -!- Lord_of_Life has quit (Read error: Connection reset by peer).
07:10:46 -!- Lord_of_Life has joined.
07:42:02 -!- imode has quit (Ping timeout: 268 seconds).
07:45:45 -!- LKoen has joined.
07:50:20 -!- LKoen has quit (Remote host closed the connection).
07:51:20 -!- LKoen has joined.
08:18:01 -!- cpressey has joined.
08:27:47 -!- MrBismuth has quit (Read error: Connection reset by peer).
08:31:36 -!- Phantom_Hoover has joined.
08:38:25 -!- LKoen has quit (Remote host closed the connection).
08:40:37 -!- LKoen has joined.
08:42:19 -!- LKoen has quit (Remote host closed the connection).
08:44:52 -!- LKoen has joined.
08:56:57 -!- LKoen has quit (Remote host closed the connection).
09:03:22 -!- LKoen has joined.
09:25:39 <int-e> Hah: "As long as theoretical computer scientists can’t even prove basic conjectures like P≠NP or P≠PSPACE [...]"
09:26:02 <int-e> (from Q8 at https://www.scottaaronson.com/blog/?p=4317)
09:27:41 <myname> i once witnessed someone trying to explain to somebody who really didn't get it why P is a subset of PSPACE
09:27:46 <myname> quite hillarious
09:28:43 <int-e> intuitively this is easy... a P algorithm can only touch a polynomial amount of memory (tape, whatever).
09:29:02 <int-e> Making it formal is probably quite tedious.
09:29:03 <myname> yeah, it is easy
09:29:54 <int-e> (Especially if your model of computation is *not* Turing Machines but something closer to reality like RAM machines)
09:32:00 <int-e> Whose name is attached to NSPACE(f(x)) = DSPACE(f(x)^2)?
09:32:14 <cpressey> idk, I've always seen RAM machines as just hiding (a polynomial number of) head movements
09:33:09 <int-e> cpressey: Well personally I find P too coarse; exponents matter in practice.
09:33:47 <Taneb> There's the old joke that theory is more important than practice, except in practice
09:35:28 <int-e> Savitch (I meant \subseteq instead of =... I kind of forgot to go back and change it.)
09:38:12 <cpressey> What's all this about quantum supremacy now. Oh gosh. Scott Aaronson. I'm not sure I want to read this.
09:39:09 <myname> Taneb: i once was told a piece of conversation like "so, how are your studies different from mine" "well, we are doing more theorie: runtime analysis, proofs, ..." "if you proove something, it isn't theory anymore"
09:40:25 <cpressey> I suppose debunking quantum hype is a noble calling, but so is not caring about it.
09:40:42 <int-e> cpressey: But he does care now.
09:40:42 <Taneb> cpressey: that article is neither
09:41:21 <cpressey> >_> I should stop trying to make jokes.
09:42:08 <int-e> Sorry, I didn't observe any joke when I collapsed your sentence.
09:47:25 <int-e> `unidecode ☰𝌁𝌃
09:47:26 <HackEso> ​[U+2630 TRIGRAM FOR HEAVEN] [U+1D301 DIGRAM FOR HEAVENLY EARTH] [U+1D303 DIGRAM FOR EARTHLY HEAVEN]
09:55:06 <fizzie> Is there also a trigram for just plain earth?
09:58:20 <int-e> ski: ^^ question for you ;-)
10:10:27 <Taneb> `unidecode ☷
10:10:27 <HackEso> ​[U+2637 TRIGRAM FOR EARTH]
10:20:21 <fizzie> I saw those at home, but at work they're just boxes. :/
10:20:26 <fizzie> Must be missing some fonts.
10:41:17 -!- Frater_EST has quit (Ping timeout: 245 seconds).
10:41:44 -!- LKoen has quit (Remote host closed the connection).
10:46:14 -!- LKoen has joined.
10:50:54 -!- LKoen has quit (Ping timeout: 246 seconds).
11:21:11 <esowiki> [[Byter]] M https://esolangs.org/w/index.php?diff=66337&oldid=66332 * PaniniTheDeveloper * (+0)
11:46:03 -!- Phantom_Hoover has quit (Ping timeout: 265 seconds).
12:38:37 <ski> int-e : also ⌜𝌅⌝ (and apparently also ⌜𝌀⌝ ?)
12:38:54 <int-e> `unidecode 𝌅𝌀
12:38:55 <HackEso> ​[U+1D305 DIGRAM FOR EARTH] [U+1D300 MONOGRAM FOR EARTH]
12:39:39 <ski> "usually associated with human (Chinese ren), rather than earth" (the latter one)
12:41:56 <ski> int-e : i was pondering the other day, using these (mono|di|tri|tetra|hexa)-grams as pixels (sortof), wondering why the internal ordering was inconsistent among them, and trying to make some sense of the associations of different meanings to the bits/trits
12:42:41 <ski> (perhaps the I Ching would explain some of it ?)
12:43:35 <ski> (in particular the internal ordering of the hexagrams is strange)
12:44:28 * ski glances at fizzie
12:49:40 -!- sebbu has quit (Quit: reboot).
12:50:46 <int-e> ski: hmm it embeds a fancy complementation operation (mirror image, except when the symbol is vertically symmetric; in that case, the boolean complement is taken instead)
12:50:47 * ski just realized what int-e meant by
12:50:53 <ski> <int-e> ski: Now does that mean that shift-o (for example) can produce any of A, B, H or I?
13:15:39 <esowiki> [[Pie]] N https://esolangs.org/w/index.php?oldid=66338 * InfiniteDonuts * (+327) Created page with "==Introduction== <b>Pie</b> is an 2-dimensional esoteric programming language created by [[User:InfiniteDonuts]] that is sort of a [[Befunge]]/[[PATH]] hybrid. Like Befunge, i..."
13:16:48 <esowiki> [[User:InfiniteDonuts]] https://esolangs.org/w/index.php?diff=66339&oldid=66269 * InfiniteDonuts * (+68)
13:21:28 <esowiki> [[Pie]] https://esolangs.org/w/index.php?diff=66340&oldid=66338 * InfiniteDonuts * (+176)
13:23:50 <myname> the github link results in a 404
13:26:02 <int-e> InfiniteDonuts doesn’t have any public repositories yet.
13:26:10 <int-e> this may be why
13:28:10 <myname> well
13:33:35 <esowiki> [[Pie]] https://esolangs.org/w/index.php?diff=66341&oldid=66340 * InfiniteDonuts * (+5)
13:41:39 <int-e> ski: https://en.wikipedia.org/wiki/King_Wen_sequence somewhat explains the duality (but there's also a lot of mystification surrounding all this)
13:47:27 <cpressey> I wonder about compiling Scheme to Javascript using CPS. JS has poor TCO support so you'd want to make a trampoline. But would you construct a custom trampoline for each program? It sounds like a neat approach regardless of the practical benefits it may or may not have.
13:51:16 <cpressey> I remember borrowing "Compiling with Continuations" from the library years & years ago. I remember liking it but I never got too deep and I don't remember any of the content specifically.
13:53:28 -!- Frater_EST has joined.
13:54:24 <cpressey> I think there's usually an assumption there that you'll be compiling to a machine language that has conventional jumps, though. Compiling to another high-level language with functions (and closures, even), but not TCO, would be putting a different twist on it.
13:55:06 <int-e> there's always for (;;) { switch (foo) { ... } }
13:55:20 <cpressey> Yeah, that's what I meant by "trampoline".
13:55:44 <int-e> or stuff like while (next != NULL) { next = (*next)(); }
13:57:50 <cpressey> Great. I now want to write a Scheme compiler that compiles to trampolined code, as if I don't already have enough on my todo list.
13:58:08 -!- Frater_EST has quit (Ping timeout: 246 seconds).
13:58:15 <cpressey> Thanks, personal interests! You're really helpful sometimes.
13:58:31 -!- Frater_EST has joined.
14:04:50 -!- Frater_EST has quit (Ping timeout: 240 seconds).
14:06:36 -!- Frater_EST has joined.
14:06:44 <esowiki> [[Language list]] https://esolangs.org/w/index.php?diff=66342&oldid=66275 * InfiniteDonuts * (+10) /* P */
14:11:01 -!- Sgeo_ has joined.
14:13:57 -!- Sgeo has quit (Ping timeout: 268 seconds).
14:24:55 -!- Frater_EST has left.
14:31:46 -!- arseniiv has joined.
14:33:03 <arseniiv> hi hi
14:34:28 <cpressey> hi arseniiv
14:37:03 <arseniiv> I thought up a monoid thinking about types for stack operations. Though I already knew how to encode them with heterogeneous lists, I think a monoid looks more operationally usable. Or at least it looks neat in case we’re concerned only with stack under/overflow and not types of its elements;
14:38:45 <esowiki> [[L]] https://esolangs.org/w/index.php?diff=66343&oldid=53989 * InfiniteDonuts * (+100) /* Hello World */
14:39:57 <esowiki> [[L]] https://esolangs.org/w/index.php?diff=66344&oldid=66343 * InfiniteDonuts * (+77)
14:41:09 <arseniiv> in generic case, it’s a free monoid on t⁺, t⁻ for all types t, factored by t⁺t⁻ = e; in the simplest it’s a free monoid on +, − factored by +− = e. Now the last one looks almost like integers but with a quirk, so I thought maybe we need to name these things numbers too. Here, all balanced strings of + and − equal to e and we end up with a unique presentation of each element as −^m +^n
14:41:36 <arseniiv> in stack op terms it means m elements are popped and then n are pushed
14:41:53 <arseniiv> we can’t pop from empty stack so −+ is not e
14:42:27 <arseniiv> likewise with the general version, and we even may generalize to deques
14:43:55 <arseniiv> as two ends of a deque are basically independent from this perspective if we don’t know its length
14:43:56 <esowiki> [[Pie]] https://esolangs.org/w/index.php?diff=66345&oldid=66341 * InfiniteDonuts * (+87)
14:44:53 -!- imode has joined.
14:45:05 <arseniiv> now, we could do something like this with checking well-placedness of [ and ] but ? and ; would get in the way
14:45:11 <arseniiv> himode
14:47:13 <arseniiv> . o O ( now I propose calling those +−-things plumbers as the stack may be viewed as a tube )
14:48:36 -!- Frater_EST has joined.
14:49:07 <imode> allo arseniiv.
14:51:09 <shachaf> whoa, if you link with -fno-plt, ld will turn statically linked calls from indirect jumps to direct jumps.
14:55:09 -!- Frater_EST has quit (Remote host closed the connection).
14:55:42 <esowiki> [[Special:Log/newusers]] create * Lewis * New user account
14:58:06 <ski> int-e, ty
14:58:36 <ski> arseniiv : hm, reminds me of some kind of bra-ket description of something with regexen ?
14:58:52 <arseniiv> (BTW how old is trampoline idea)
14:59:18 <ski> perhaps you could find some mention in some Scheme paper
14:59:31 <arseniiv> ski: it reminded me about something QM too, creation and annihilation operators should work that way too IIRC
15:01:53 <ski> arseniiv : <https://web.archive.org/web/20180726144531/http://library.readscheme.org/> might have some relevant paper about it
15:02:22 <ski> er, sorry
15:02:31 <ski> cpressey : that ^ was for you
15:05:01 <imode> are you still working with that C compiler?
15:06:21 <cpressey> ski: thanks!
15:07:11 <imode> arseniiv: the thing I don't like about my current language is [ and ]. it kind of fails the model of computation check because [ and ] have to be balanced for the underlying logic to work.
15:08:33 <imode> which means that a PDA or counter machine is required to validate the language.
15:09:28 * ski supposes it was possibly both for arseniiv and cpressey ..
15:12:30 <myname> I fail to see how pie is notably different from befunge except it being underspecified
15:15:11 <cpressey> arseniiv: http://www.cs.indiana.edu/hyplan/dfried/ts.ps talks a bit about the history. As I understand it, the idea is old but appears in slightly different forms and doesn't get the name "trampoline" until about 1995.
15:17:30 * ski supposes cpressey got that link off <library.readscheme.org> :)
15:17:59 <cpressey> Indirectly, yes (The paper was listed there but wasn't archived; I had to search to find a copy of it)
15:18:09 * ski nods
15:18:14 <ski> too bad the domain expired
15:19:45 <arseniiv> <imode> arseniiv: the thing I don't like about my current language is [ and ]. it kind of fails the model of computation check because [ and ] have to be balanced for the underlying logic to work. => right. That they stand in the way of typing the program is almost the same thing here
15:20:32 <arseniiv> cpressey: thanks! (hmm I need a postscript viewer…)
15:21:02 <ski> arseniiv : perhaps `gv' ?
15:21:45 <ski> (someone mentioned `zathura' and `okular' too. and i think `evince' can do it ?)
15:22:02 * ski . o O ( `xpdf' )
15:23:10 <imode> I don't think there's a real solution to that problem. apart from manual jumps. I still think there needs to be a linear notation for state machines.
15:23:52 <cpressey> I'm on Ubuntu; `evince` can view .ps directly, and there is also `ps2pdf`
15:25:29 <cpressey> (apparently `ps2pdf` is part of `ghostscript`)
15:27:44 <cpressey> arseniiv, imode: fwiw, the last few concatenative languages I've designed have not had nesting or names, sort-of for the same reasons you mention. I've been calling them "purely concatenative" for that reason. They're not very nice to program in though.
15:28:19 <imode> cpressey: mine doesn't have nesting. [ and ] form an infinite loop.
15:28:31 <imode> it's a control flow construct more than anything.
15:32:02 -!- GeekDude has quit (Ping timeout: 240 seconds).
15:36:21 * ski usually uses `gv'
15:37:38 * ski idly ponders mapping concatenative to categorical
15:38:28 <arseniiv> yay I converted that ps
15:38:53 * ski idly ponders how to convert PDF to PS
15:39:02 <arseniiv> now I can uninstall ghostscript mwahaha
15:39:38 <imode> any structured control flow requires an external validator, so I guess it fits under a model of programming rather one of computation. unstructured, state-driven or pattern-based control flow are the only candidates for a model of computation.
15:42:13 <imode> why are array languages classified under "unstructured", I wonder.
15:42:49 <ski> where ?
15:43:08 <imode> wikipedia
15:43:27 <imode> https://en.wikipedia.org/wiki/Non-structured_programming <-- right-hand sidebar, right under "Non-structured".
15:43:45 <imode> I mean I guess APL has a goto statement, doesn't it?
15:43:55 <ski> maybe they mean "structured" in the sense of the "structured programming" paradigm ?
15:44:05 <imode> more than likely, yeah.
15:44:14 <imode> which APL fits under.
15:44:24 <ski> hm, looks that way
15:44:30 <imode> never liked array languages. they're complicated to implement.
15:44:38 <ski> NESL ?
15:44:46 <imode> NESL?
15:44:48 <ski> yes
15:44:55 <imode> whazzat.
15:45:00 <ski> <https://en.wikipedia.org/wiki/NESL>
15:45:13 <ski> "Nested data parallelism"
15:45:50 <imode> are you saying this isn't complicated to implement?
15:46:37 <imode> or that this fits the definition of an array language.
15:47:16 -!- GeekDude has joined.
15:56:00 <ski> hm, perhaps rather that it is complicated to implement
15:56:16 <ski> (and mayeb fits the definition, not sure ?)
15:57:52 <cpressey> ok well TIL there's a very close correspondence between CPS and A-Normal Form. (I knew of ANF previously but didn't see the connection to CPS at all.)
15:58:00 <imode> probably. I've seen people touting APL and K, etc. as "languages with the smallest implementations", but when your implementations are obfuscated and optimized for size rather than simplicity, it's a moot damn point.
15:58:22 -!- cpressey has quit (Quit: A la prochaine.).
16:01:28 <imode> array languages _are_ interesting, though. while they do have control flow operations, a lot of code I see doesn't even have any of them.
16:01:41 <imode> it's all operations on data.
16:03:13 <imode> they're hella messy, though..
16:05:50 * ski . o O ( <https://en.wikipedia.org/wiki/SAC_programming_language> )
16:10:38 <imode> unstructured control flow is hard to compose without sophisticated tooling, though. for example, creating a state machine that enters either a 'true' or 'false' state upon some comparison operation is fine, but composing two machines means identifying where the "anchor" points are for that given machine and attaching two subsequent machines accordingly.
16:14:10 <imode> stitching together state machines is also complex because you need names for duplicate/intermediary states as well...
16:20:32 <imode> if you used a line numbering approach, it could work. you still need some machinery to stitch together arbitrary code snippets, though.
16:23:07 * ski . o O ( ⌜10 PRINT "VOOB ";␤20 GOTO 10⌝ )
16:25:11 -!- grumble has quit (Quit: And this chaos, it defies imagination).
16:29:48 -!- grumble has joined.
16:32:01 -!- sebbu has joined.
16:43:43 -!- Sgeo has joined.
16:43:44 -!- Lord_of_Life_ has joined.
16:44:37 -!- Sgeo_ has quit (Ping timeout: 240 seconds).
16:46:37 -!- Lord_of_Life has quit (Ping timeout: 240 seconds).
16:46:38 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
17:10:52 <imode> arseniiv: you could probably get away with not validating [ and ] if you mean [ to be "push a symbol to the tape representing the current instruction pointer" and ] to be "jump to the instruction pointer represented on the tape".
17:12:22 <imode> though "conditional/unconditional break" would be difficult at that point, because you have to jump to an unspecified address..
17:15:03 <imode> you know what I didn't think of, though. relative addressing.
17:23:17 -!- FreeFull has joined.
17:25:36 <arseniiv> imode: `[ ] ? ;` are not so hard to validate as to represent as something typeful
17:26:29 <imode> they aren't hard to validate, no. but because they require validation, they don't meet my requirement anymore.
17:27:13 <arseniiv> oh, also it occurred to me as I drifted off that your new implementation of `pick` now can take any nonnegative integer index. Even if it’s too big, we’ll just wrap around several times and that’s it
17:27:35 <imode> exactly. :)
17:28:12 <arseniiv> <imode> but because they require validation, they don't meet my requirement anymore. => yeah. I meant from my typing perspective
17:28:18 <imode> ahh.
17:30:15 <arseniiv> of course that’s why compilers don’t use typing as the only kind of static information, but still I’ll be glad to unify them for cases as simple as this
17:32:15 <arseniiv> anyway it looks too philosophical. There is a constructive approach: program a validator which takes word at a time and then try to encode that as types; this is how I ended up with that +− monoid
17:32:34 <imode> this whole thing is largely philosophical lol
17:32:35 <arseniiv> previously I thought of those types as m → n where m, n : N
17:33:27 <arseniiv> but in this form they have no easy law of composing (f: m → n, g: m′ → n′, f ∘ g: ???); and the monoid representation has, it’s just a concatenation
17:34:08 <ski> "vertical composition" ?
17:34:17 <ski> (or is it "horizontal" ?)
17:34:22 * ski can never recall ..
17:34:49 <arseniiv> −+ ∘ −−+ = −(+−)−+ = −−+
17:35:31 <arseniiv> ski: don’t remember either
17:36:12 <arseniiv> though maybe the notation is too cryptic, here f: m → n means f pops m values and then pushes n values
17:36:19 <arseniiv> (or dequeues and enqueues)
17:36:41 <ski> oh
17:37:36 * ski idly wonders whether there's a name for monoids with left- and right- inverses like that
17:38:46 <arseniiv> FTR I was going to ask about that too
17:38:59 <arseniiv> maybe someone knows
17:39:45 <arseniiv> they seem to be in a sense halfway to a free group
17:44:16 <ski> yea, first i was going to suggest free group, to you :)
17:44:39 <ski> (until i saw "we can’t pop from empty stack so −+ is not e")
17:44:57 * ski idly recalls talking to someone doing random walks in groups
18:04:06 <arseniiv> also we can define “multiplication” as can be done on (N, +) and (Z, +), by considering all [anti]endomorphisms. Here, they seem to form a group ≅ Z, so this “multiplication” is not that good; anyway “multiplying” by n would mean replacing each ± by ±^n if n ≥ 0, or by ∓^n if n ≤ 0. This makes not a lot of sense for applications of that monoid here, though
18:08:14 <ski> would that be a group action ?
18:08:18 <imode> now that I'm thinking of it, I don't think there's any model of computation that _doesn't_ require some validation of the code prior to execution other than perhaps cellular automata.
18:12:15 <rain2> depends how you set things up
18:12:33 <rain2> CA source code is binary strings and CA valid source code is binary strings
18:12:45 <rain2> lisp source code is ascii text and valid lisp source code is well balanced brackets
18:13:08 <rain2> but you could say, CA source code is ascii text and the only valid CA inputs are ones only using the 0 and 1 symbols
18:13:48 <imode> not really the case, here. state machines need to be stored in some format in some place, and that format needs to be some form of a state table.
18:14:15 <imode> brainfuck and my language are stored as linear text sequences, but only valid sequences contain matched brackets.
18:15:03 <imode> CAs are literally just "here's some data, with some regions linked together in some topological fashion, and data exists in those regions, and depending on what data is next to what, data in certain regions changes".
18:15:56 <rain2> I disagree completely
18:16:11 <imode> feel free to, I guess.
18:17:35 <arseniiv> ski: if I’m correct it would be a monoid action as (Z, ⋅) is what acts in this case, not (Z, +): m×(n×a) = (mn)a
18:19:04 <arseniiv> (and not (m+n)a)
18:24:29 -!- MDude has quit (Ping timeout: 246 seconds).
18:25:14 <ski> mhm
18:49:49 <shachaf> `asm label: nop; nop; addr32; jmp label
18:49:49 <HackEso> 0: 90 nop \ 1: 90 nop \ 2: 67 eb fb addr32 jmp 0 <label>
18:50:00 <shachaf> Is that just a no-op prefix byte?
18:50:20 <shachaf> `asm addr32; jmp 0
18:50:21 <HackEso> 0: 67 e9 00 00 00 00 addr32 jmpq 0x6
18:57:08 -!- Phantom_Hoover has joined.
19:28:02 <ski> is that Z80, or what ?
19:28:17 <shachaf> x86-64
19:29:02 <ski> instruction word size didn't look that large
19:29:19 <ski> hm
19:29:21 <shachaf> What do you mean?
19:30:11 <ski> a single byte for `nop' ?
19:30:39 <shachaf> Why not?
19:31:03 <ski> oh, `67 eb' was the instruction, not just `67'
19:31:30 <shachaf> 67 is the addr32 prefix which I think doesn't do anything.
19:31:45 * ski talked to someone today who claimed that reading x86 opcodes in octal made more sense
19:31:56 <imode> supposedly.
19:31:57 <shachaf> ld inserts it when it wants a 6-byte immediate jump instruction.
19:32:03 <shachaf> ski: I've claimed that in this channel several times.
19:32:16 <ski> oh, must've missed that, then
19:32:22 * ski doesn't really do x86
19:32:27 <shachaf> I mean, I also heard the claim from someone else originally.
19:32:56 <shachaf> The main reason, I think, is that x86 has eight registers, which are encoded with one octal digit.
19:33:07 <ski> oic
19:33:59 <shachaf> So e.g. "xchg %eax,REG" is encoded as 0220 | REG
19:35:59 <shachaf> The registers are numbered eax ecx edx ebx esp ebp esi edi
19:36:12 <shachaf> `asm .byte 0220, 0221, 0222, 0223
19:36:13 <HackEso> 0: 90 nop \ 1: 91 xchg %eax,%ecx \ 2: 92 xchg %eax,%edx \ 3: 93 xchg %eax,%ebx
19:36:58 <shachaf> Also there are some bytes that are encoded in 2-3-3 pieces.
19:38:00 <ski> mmh
19:38:23 <shachaf> "mov REGX, REGY" can be encoded as "0x8b 03YX"
19:38:33 <shachaf> `asm .byte 0x8b, 0301
19:38:34 <HackEso> 0: 8b c1 mov %ecx,%eax
19:38:37 <shachaf> `asm .byte 0x89, 0310
19:38:38 <HackEso> 0: 89 c8 mov %ecx,%eax
19:38:46 <shachaf> (The encoding is redundant so it can be encoded two ways.)
19:41:14 -!- shapr has joined.
19:41:35 <shachaf> `relcome shapr
19:41:37 <HackEso> shapr: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: <https://esolangs.org/>. (For the other kind of esoterica, try #esoteric on EFnet or DALnet.)
19:41:41 <shapr> howdy shachaf
19:42:13 <shapr> just dropping by to check out this place
19:42:20 * shapr goes back to writing useful code
19:42:21 -!- shapr has left ("ERC (IRC client for Emacs 26.3)").
19:43:46 <imode> as opposed to useless code.
19:48:27 <imode> are any esolangs based on logic programming?
19:49:31 <shachaf> all logic languages hth
19:49:45 <imode> hah.
19:49:51 <imode> prolog is an esolang to you, then?
19:51:53 <shachaf> I think so?
19:52:09 <shachaf> It's about seeing what sorts of things you can do under bizarre constraints.
19:53:05 <imode> I'm caught between wanting a language to perform computations in, vs. a language that you can describe things in.
19:59:31 <arseniiv> <shachaf> I think so? => I agree too
20:00:39 <arseniiv> a small embedded Hoare disjunct engine may be useful, but a full-blown language? hello cuts
20:01:01 <imode> the latter seems to be a good thing to implement in the former, I guess.
20:01:28 <shachaf> I also think C++ is an esolang.
20:01:34 <shachaf> Though C isn't.
20:26:18 -!- hppavilion[1] has joined.
20:31:44 <ski> and Io ?
20:37:37 -!- hppavilion[2] has joined.
20:39:59 -!- hppavilion[1] has quit (Ping timeout: 268 seconds).
20:43:47 <imode> I think I should just be happy with what I've done. if I reduce any further, I hit the bottom, dealing with jumps and addresses, and if not that, state graphs the size of russia.
20:45:59 <shachaf> Which Io?
20:46:01 <imode> pay no mind to the fact that it's essentially a brainfuck clone with the conditional branching split from the unconditional branching.
20:46:15 <shachaf> I should be fair and call Prolog a "research language" rather than an "esoteric language".
20:46:20 <shachaf> Though the difference is hard to pinpoint.
20:46:35 <imode> companies actually use prolog, though.
20:47:09 <shachaf> They also actually use C++.
20:47:22 <imode> what's your point.
20:48:05 <shachaf> C++ is an esoteric language and not a research language.
20:48:14 <imode> define esoteric, I guess.
20:48:15 <shachaf> I guess Prolog is probably both, but more the latter?
20:48:48 <imode> if it's "intended for or likely to be understood by only a small number of people with a specialized knowledge or interest."... no, C++ is not esoteric.
20:48:52 <imode> neither is Prolog.
20:49:26 <shachaf> I think C++ is esoteric because it introduces artificial constraints that make things difficult, and people have a fun time solving puzzles within those constraints.
20:50:13 <imode> yeah, I'd disagree. C++ makes a lot of things easy. and some things hard. and it's hardly fun solving puzzles with it.
20:50:24 <imode> it's "Java but I can't use Java".
20:50:35 <imode> or insert managed language here, I guess.
20:50:44 <shachaf> I'm not saying it's always fun, but I think the original motivation is fun rather than practical.
20:50:54 <imode> not really.
20:51:06 <imode> if you examine the history, it was definitely designed to be practical.
20:51:26 <imode> it went from being practical to being practically comical, though.
20:52:13 <shachaf> Hmm, I don't think people would design C++ templates the way they are to be practical.
20:52:29 <shachaf> They would design better metaprogramming schemes if they weren't artifically constraining themselves.
20:52:51 <imode> such as.
20:53:02 <shachaf> Hmm, anything else?
20:53:52 <ski> @where Io
20:53:52 <lambdabot> Raphael L. Levien's language with continuations as fundamental structure, described in his paper "Io: a new programming notation" (1989-09-10) at <http://dl.acm.org/citation.cfm?id=70931.70934> and
20:53:52 <lambdabot> in chapter 2 of Raphael A. Finkel's book `APLD', implementations `Amalthea',`Ganymede' - (perhaps you were looking for `@wiki Introduction to IO' ?)
20:54:30 <shachaf> Oh, that Io.
20:54:40 <shachaf> It seems very similar to the thing I was talking about?
20:55:14 <shachaf> There's no way a person trying to design metaprogramming from scratch would end up with SFINAE and recursive template expansion rather than if statements and for loops.
20:55:27 <shachaf> It's just absurd, come on.
20:55:46 <imode> you'd be surprised at how bad some people's ideas can be.
20:56:09 <shachaf> I think it's a matter of extremely local optimizatin.
20:56:25 <imode> like, like it or not, someone came up with the idea of template metaprogramming.
20:56:34 <shachaf> C++ compiler people introduce templates for a very limited use, for generics. They add SFINAE as an afterthough.
20:56:37 <shachaf> t
20:56:37 <imode> it wasn't an artificial constraint, the idea was just crappy. :P
20:56:56 <shachaf> Then C++ programmers find out you can do ridiculous things with it to accomplish simple metaprogramming tasks.
20:57:37 <shachaf> Rather than introduce a better facility for metaprogramming, compiler people add more and more template ridiculousness (giving the people more of what they're using, rather than what they need).
20:58:24 <imode> bear in mind this is also a standard we're talking about. with multiple companies spearheading it.
20:58:51 <shachaf> Anyway writing in C++ templates is as esoteric an experience as any esolang.
20:59:50 <imode> yeah, I'll give you that...
21:08:03 -!- LKoen has joined.
21:20:37 -!- Sgeo_ has joined.
21:23:47 -!- Sgeo has quit (Ping timeout: 245 seconds).
21:29:37 -!- hppavilion[2] has quit (Ping timeout: 245 seconds).
21:50:53 -!- hppavilion[1] has joined.
22:30:55 <shachaf> `asm .byte 0x67, 0x67; jmp 0
22:30:56 <HackEso> 0: 67 67 e9 00 00 00 00 addr32 addr32 jmpq 0x7
22:31:14 -!- hppavilion[1] has quit (Ping timeout: 240 seconds).
22:37:00 <lf94> Is this good forth code? https://gist.github.com/jzakiya/4544459
22:37:12 <shachaf> `asm .byte 0x67; movq %rcx, (%rax)
22:37:13 <HackEso> 0: 67 48 89 08 mov %rcx,(%eax)
22:41:49 <imode> lf94: it's reasonable forth code. reasonably factored.
22:41:55 <imode> some words are larger than I'd like.
22:42:06 <lf94> jeez
22:42:11 <lf94> if this is "good" forth code
22:42:14 <lf94> I dont like forth at all.
22:42:38 <lf94> assembly looks nicer than this
22:42:48 <imode> honestly, it's not that good.
22:43:08 <imode> it's passable. but again, large words mean shortcuts.
22:43:21 <imode> not a lot of things are defined for reuse here.
22:44:33 <shachaf> Is there a common version of Turing machines that lets you add or delete cells?
22:44:47 <shachaf> If you think of a Turing machine as being made of two stacks that's a natural operation.
22:44:53 <shachaf> I mean, of its tape.
22:45:27 <imode> queue machines allow you to do that trivially.
22:46:28 <shachaf> So do stack machines.
22:58:18 <imode> 2stack machines. 1 > 2. :P
22:59:43 <imode> there's some questions on stackexchange about insertion and deletion operators but they all boil down to "they can be simulated by TMs".
23:01:03 <shachaf> I guess that's fair enough.
23:01:14 <shachaf> Obviously all these things can simulate each other.
23:02:06 <imode> pretty much anything like this involves "what compound operations can I make constant time".
23:18:39 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
23:20:47 -!- FreeFull has quit.
23:31:31 <arseniiv> hm any ideas about safe metaprogramming? I think I haven’t yet seen a language with a good one (for my tastes), I heard TemplateHaskell extension isn’t good enough? At least it has quoting and well-typed(?) syntax presentation?..
23:34:42 <shachaf> What kind of safety are you into?
23:34:52 <arseniiv> I mean, macro interoperability is probably a concern even there. Do we need a formalized extended languages for checking if several macros wouldn’t work together? Does it need a knowledge of semantics? (probably expressed in terms of semantics of some core language)
23:35:08 <arseniiv> shachaf: I don’t know
23:35:51 <arseniiv> also what concerns me are extensions for helping compiler with optimization, like again Haskell’s rewrite rules
23:36:29 <shachaf> It seems to me that some kinds of "safety" are less important for metaprogramming, because "runtime" failures manifest at compiletime.
23:40:55 <arseniiv> IIRC now they aren’t checked at all, it seems unsafe. There should be a way to make more optimizations and by users not as expirienced as the writers of GHC. But this will demand some checking of soundness which needs explicit proofs about semantics of the code and it’s impossible all such proofs would be inferrable automatically so there should be a friendly interface to a programmer to tell that their optimization is sound with no
23:40:55 <arseniiv> hundreds of statements
23:41:41 <arseniiv> <shachaf> It seems to me that some kinds of "safety" are less important for metaprogramming, because "runtime" failures manifest at compiletime. => yeah, it’s better when we have some guarantees about will the code compile or not and how long will it take
23:42:09 <shachaf> I think code generation isn't such a bad way of doing some types of metaprogramming.
23:43:15 <arseniiv> like `makeLenses` in Haskell, right
23:43:40 <shachaf> In this case I meant literally printing strings that the compiler parses.
23:44:02 <shachaf> It's not ideal but it's probably better than a lot of things.
23:44:03 <arseniiv> ah, not via well-typed syntax trees?
23:44:24 <shachaf> Those seem OK too.
23:44:41 <imode> give me string substitution or give me death.
23:46:02 <int-e> imode: "death" is much less effort to type
23:46:17 <imode> so be it.
23:46:25 <arseniiv> `? substitution
23:46:26 <HackEso> substitution? ¯\(°​_o)/¯
23:46:30 <arseniiv> `? string
23:46:31 <HackEso> string? ¯\(°​_o)/¯
23:46:37 <arseniiv> alas
23:46:54 <int-e> `quote rope
23:46:55 <HackEso> 118) <Phantom_Hoover> OK, so is conspiring to conspire to commit a crime a crime? <cpressey> Let's all get together and talk about defacing public property sometime \ 132) <alise> "Europe is the national anthem of the Republic of Kosovo." <cpressey> alise: I <cpressey> I was going to say something then your last line floored me \ 212) <quintopia> who is guido van rossum <olsner> you could say he's a man who grew a beard but acquired none of the associa
23:47:36 <int-e> `quote 212
23:47:36 <HackEso> 212) <quintopia> who is guido van rossum <olsner> you could say he's a man who grew a beard but acquired none of the associated good properties
23:49:49 <arseniiv> like `makeLenses` in Haskell => BTW that’s almost the only macro I used there, and just for a couple of times. Yet
23:51:34 <Sgeo_> I need to get this out of my system somewhere. FUCK THE FUCKING ANTI-VAXXERS
23:52:31 <imode> what sparked that.
23:53:22 <Sgeo_> Someone I knew IRL being all anti-vaxxy. With kids. And her claiming that one of them is vaccine injured. And her also posting one of those things equating autism with deadly diseases
23:53:52 <arseniiv> (((((
23:54:21 <imode> you're right to be angry, then.
23:57:35 <kmc> that's shitty
23:57:38 <kmc> i hate those people
23:57:51 <kmc> i hope her kids can get vaccinated against her will
23:57:53 <kmc> it's possible some places
23:58:53 <shachaf> vaccines are tg
23:59:04 <imode> tg?
23:59:09 <shachaf> too good
23:59:30 * kmc is tg
23:59:40 <shachaf> `? tg
23:59:41 <HackEso> TG is short for Turing-Gödel, the highest possible level of difficulty for a multiplayer game. At this level, it's undecidable whether you can manage to halt before losing or not.
23:59:50 <kmc> I lost
2019-09-26
00:00:03 <Sgeo_> kmc, I'm also somewhat concerned about how she would treat an autistic kid.
00:00:26 <imode> considering she'd rather have a dead kid than an autistic one (for the sake of that absurd argument), yeah.
00:00:46 <arseniiv> I’ll say even, in some places, general vaccines like flu ones are prepared diluted by various unscientific crap below the standardized concentration, and it’s especially sad when people having an access to perfectly normal and tested ones are being jerks in public
00:01:01 <arseniiv> diluted with*
00:01:11 <kmc> i'm maybe having a kid and i'm terrified they'll turn out to be autistic -- not the 'awkward and into trains' kind, that's great, but full on nonverbal screaming all the time forever :|
00:01:23 <kmc> I can see why people want someone to blame for that
00:01:55 <Sgeo_> I don't think she thinks vaccines prevent anything. I mentioned Smallpox, she goes "Maybe it was renamed like polio"
00:02:09 <kmc> you can't argue with anti-vaxxers
00:02:12 <kmc> they are impervious to logic
00:02:32 <kmc> even if her kid dies of preventable disease she'll blame someone else somehow
00:02:45 <imode> what makes otherwise reasonable people behave unreasonably.
00:02:56 <imode> fear.
00:02:58 <Sgeo_> I assume at least one of her kids was vaccinated at least...
00:03:07 <imode> she was probably vaccinated.
00:03:37 <Sgeo_> AFK
00:03:52 <imode> just gave him new material lmao.
00:04:45 <j4cbo> I’m awkward and into trains
00:05:47 <j4cbo> thinking about training across the country this winter but it’d be like $1k so ugh
00:05:59 <kmc> that's a long-ass way
00:06:08 <kmc> i took a train from texas to los angeles and that was great
00:06:10 <kmc> but that alone was 40 hours
00:06:15 <kmc> this is a fuckin big country
00:06:35 <arseniiv> need to invent a co-alarm-clock to kick myself to sleep earlier, any ideas?
00:07:35 <j4cbo> also need to figure out how to get home from whitefish
00:13:23 <arseniiv> yesterday when I was trying to sleep at last, I thought I need to say to you all what nice people you are
00:13:31 <arseniiv> it’s never too much
00:13:44 <kmc> <3
00:13:50 <imode> you're nice, too.
00:14:00 <kmc> arseniiv: https://slatestarcodex.com/2018/07/10/melatonin-much-more-than-you-wanted-to-know/ ?
00:14:33 <arseniiv> this channel combines many nice things
00:14:38 <arseniiv> kmc: imode: ty!
00:14:46 <kmc> it's a cool place
00:14:49 <kmc> i'm glad i came back
00:15:10 <shachaf> `randquote kmc
00:15:11 <HackEso> 796) <kmc> typed racket: anyone using a model m keyboard
00:15:17 <shachaf> higan
00:15:33 <kmc> lol
00:15:34 <kmc> hi shachaf
00:15:35 <kmc> how are you?
00:17:12 <shachaf> just got back to ca
00:17:16 <shachaf> it's way too hot here tdnh
00:17:27 <kmc> yes
00:17:28 <kmc> where were you?
00:17:34 <shachaf> new york
00:17:47 <kmc> was it hot there?
00:17:48 <shachaf> should i move to ny twh
00:17:59 <shachaf> somewhat, but less so than here
00:44:54 <arseniiv> I guess I’ll need to get used to f.lux. It’s somewhat weird still
00:45:25 <arseniiv> very reddish this time. As it should. But
00:54:50 -!- arseniiv has quit (Ping timeout: 240 seconds).
01:01:53 <LKoen> kmc: it's 3am and instead of going to bed I just spent a looot of time reading a long article about circadian rythms and melatonin
01:02:33 <shachaf> kmc: it's tg when you spend a few days in new york and your sleep gets shifted by a few days
01:02:39 <shachaf> and you fall asleep and wake up early
01:03:10 <kmc> LKoen: that's slatestarcodex for you
01:03:16 <kmc> LKoen: bit ironic eh
01:03:24 <kmc> `addquote <LKoen> kmc: it's 3am and instead of going to bed I just spent a looot of time reading a long article about circadian rythms and melatonin
01:03:26 <HackEso> 1335) <LKoen> kmc: it's 3am and instead of going to bed I just spent a looot of time reading a long article about circadian rythms and melatonin
01:05:36 -!- Cale has quit (Read error: Connection reset by peer).
01:07:16 -!- Cale has joined.
01:07:20 <int-e> LKoen: at least you didn't play civilization until 5am
01:07:29 <int-e> though I suppose you can still do that now
01:07:58 <LKoen> no, I really can't
01:08:09 <LKoen> don't underestimate my ignorance of video games
01:09:37 <LKoen> I played zelda ocarina of time when I was a kid, and got stuck in the first dungeon
01:09:56 <LKoen> which is supposed to be kind of a tutorial of what's a dungeon
01:10:10 <int-e> LKoen: Who says you have to be good at video games in order to play them.
01:10:16 <LKoen> I even couldn't finish pokemon
01:10:21 <int-e> LKoen: especially when the alternative is to get some sleep ;)
01:10:55 <int-e> LKoen: but I was actually hinting at me reading that same article right now
01:11:17 <LKoen> oh, yes
01:11:25 <LKoen> I'm a bit too sleepy to get subtle hints
01:13:49 <LKoen> good night
01:17:05 -!- imode has quit (Ping timeout: 265 seconds).
01:24:32 -!- LKoen has quit (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”).
01:59:04 -!- imode has joined.
02:30:27 <ski> @tell LKoen next thing you'll know, you'll be saying "nychthemeron", left and right
02:30:27 <lambdabot> Consider it noted.
02:31:16 * ski has a Model M, from 1986, with "Reactor Physics" burnt into the plastic, fwiw ..
03:43:05 <imode> well.
03:43:12 <imode> tried my hand at implementing that graph rewriting language.
03:43:40 <imode> it's... working, I guess.
04:01:37 <imode> it's far too complicated an interpreter for what it is.
04:03:42 <imode> need to fix a bug where the matcher is binding two variables to the same vertex twice, rathe than skipping over visited vertices.
04:27:39 * ski . o O ( "Programming Languages" <http://strlen.com/programming-languages/>,"Language Design Overview" <http://strlen.com/language-design-overview/>, by Wouter van Oortmerssen )
04:31:14 <int-e> who?
04:33:20 <int-e> (that is quite an impressive list though)
04:33:38 -!- Cale has quit (Ping timeout: 245 seconds).
04:46:51 -!- Lord_of_Life has quit (Ping timeout: 265 seconds).
04:48:43 -!- Lord_of_Life has joined.
04:49:12 -!- Cale has joined.
05:28:54 -!- inhahe_ has joined.
06:24:46 -!- inhahe has joined.
06:24:50 -!- inhahe_ has quit (Ping timeout: 240 seconds).
06:43:03 <imode> funny. P'' has 4 instructions, two of which are ( and ). the only instructions for tape control are move the tape to the right, and change the symbol of the currently selected tape cell, then move left.
06:43:12 <imode> sounds a lot like my language.
06:44:43 <imode> mainly the automatic shifting to the left. if you squint (and ignore the need for resizing), it looks like a queue..
06:48:11 <imode> I can't find anything on the intended behavior of brainfuck with unbalanced parens, nor P''.
06:50:22 <imode> probably because it, y'know... doesn't exist.
06:56:52 -!- imode has quit (Ping timeout: 265 seconds).
07:27:43 -!- Frater_EST has joined.
07:36:05 -!- FraterEST has joined.
07:36:42 -!- Frater_EST has quit (Ping timeout: 245 seconds).
07:41:18 -!- Frater_EST has joined.
07:43:31 -!- FraterEST has quit (Ping timeout: 268 seconds).
07:51:03 -!- FraterEST has joined.
07:53:47 -!- Frater_EST has quit (Ping timeout: 245 seconds).
08:10:38 -!- cpressey has joined.
09:05:18 <rain2> https://www.youtube.com/watch?v=5TFDG-y-EHs
09:10:04 <int-e> rain2: you're late!
10:18:45 -!- LKoen has joined.
10:29:51 -!- arseniiv has joined.
10:48:25 <cpressey> 'Entail' is to 'envelop' as 'detail' is to 'develop'
10:51:11 <int-e> what's a velop?
10:55:54 <fizzie> int-e: A velociraptor without the cirapto.
10:56:06 <fizzie> ..uh, I mean, without the cirator.
10:56:16 <fizzie> Letters are hard.
10:57:22 <int-e> ꙩ is squishy.
10:57:46 <fizzie> I was going to write a thing to run a gRPC session over a SSH pipe (not with port forwarding, just on top of the stdin/stdout streams of a SSH session), would gsrsphc be a good name, or should I just call it grpsshc?
11:01:16 <int-e> "g* secure remote s procedure hell call"
11:02:15 <fizzie> That sounds appropriate.
11:12:33 <FireFly> 'university' is to 1 as 'diversity' is to 2
11:12:39 <FireFly> (well, almost)
12:06:39 -!- FraterEST has quit (Ping timeout: 264 seconds).
12:14:25 -!- user24 has joined.
12:19:06 -!- LKoen has quit (Remote host closed the connection).
12:23:15 -!- LKoen has joined.
12:39:11 <cpressey> And, since it was pointed out that "tail-recursive" is a misnomer (because it also applies to functions that aren't recursive), I propose "tail-cursive" in its stead.
12:40:25 <myname> is "tail_cursive_" tail-cursive?
13:07:50 <FireFly> in markdown, sure
13:10:47 -!- user24 has quit (Quit: Leaving).
13:28:06 -!- LKoen has quit (Remote host closed the connection).
13:37:00 -!- LKoen has joined.
13:46:56 -!- LKoen has quit (Remote host closed the connection).
13:47:17 -!- LKoen has joined.
13:56:28 -!- Lykaina has joined.
13:57:03 <Taneb> A crypto crossword is where they give you the hash of all the answers
13:58:34 -!- LKoen has quit (Remote host closed the connection).
13:58:42 <Lykaina> okay...
14:00:22 <Taneb> (as opposed to a cryptic crossword)
14:00:58 <Lykaina> which is a simple substitution cipher
14:02:29 <Lykaina> i remember doing the cryptics in the paper when i was in high school
14:02:59 <Lykaina> (i had time and a good newspaper then)
14:14:12 <Lykaina> didn't know about the Holy Etaoin Shrdlu then, though. that makes it easier.
14:17:13 -!- LKoen has joined.
14:21:57 -!- LKoen has quit (Ping timeout: 240 seconds).
14:35:08 <arseniiv> I forgot what my claims on the next password of the month were :′(
14:35:34 <arseniiv> ah I remember now
14:35:44 <arseniiv> hehehe
14:46:40 -!- imode has joined.
15:05:41 -!- Sgeo has joined.
15:08:45 -!- Sgeo_ has quit (Ping timeout: 268 seconds).
15:59:24 -!- cpressey has quit (Quit: This is not a quit message.).
16:44:32 -!- Lord_of_Life_ has joined.
16:48:14 -!- Lord_of_Life has quit (Ping timeout: 276 seconds).
16:48:15 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
16:50:17 -!- imode has quit (Ping timeout: 240 seconds).
16:52:58 -!- sprocklem has quit (Ping timeout: 268 seconds).
16:59:05 -!- Lykaina has quit (Quit: leaving).
17:12:56 -!- zzo38 has quit (Ping timeout: 276 seconds).
17:29:54 -!- sprocklem has joined.
17:33:54 -!- LKoen has joined.
17:39:06 -!- imode has joined.
18:07:44 -!- sprocklem has quit (Ping timeout: 265 seconds).
18:17:44 -!- FreeFull has joined.
18:46:46 -!- sprocklem has joined.
18:53:20 -!- QazNotQuaz has joined.
19:10:20 <kmc> good morning
19:11:04 <rain2> hey kmc good morning
19:12:30 <olsner> does sed count as an esolang?
19:13:10 <kmc> i don't think so
19:13:16 <kmc> regexes make a lot of sense
19:13:24 <kmc> but i guess it can do other things
19:13:25 <rain2> yes it does
19:14:11 <olsner> I think it's mostly not an esolang, but perhaps it could've counted as one if it was freshly invented and not in widespread use
19:14:59 -!- QazNotQuaz has quit (Ping timeout: 260 seconds).
19:18:01 -!- QazNotQuaz has joined.
19:18:26 -!- imode has quit (Ping timeout: 240 seconds).
19:20:19 <QazNotQuaz> is there anything particular i need to do if i want to make a derivative of one of the languages on the wiki?
19:20:35 <fizzie> The language might not count as an esolanguage, but arguably the "serious" sed programs count as esoprograms.
19:21:21 <fizzie> I was writing a Befunge-93 interpreter in sed at one point, though I think I never finished it.
19:21:29 -!- imode has joined.
19:22:14 <olsner> 2D languages sounds a bit messy to interpret in sed
19:22:20 <fizzie> It looks sort of semi-complete, it's got a playfield representation and moving-around functions.
19:23:14 <fizzie> Befunge-93 has a fixed-size playfield, which makes it a little easier.
19:23:54 <fizzie> Here's a representative sample: http://ix.io/1X4N
19:24:04 <olsner> are there something like 2D regexps? I had some vague idea about making ascii games in a sed dialect using something like that
19:24:14 <fizzie> It's the bit that takes the current IP and uses it to fetch the next instruction.
19:24:19 -!- LKoen has quit (Remote host closed the connection).
19:24:37 -!- LKoen has joined.
19:25:10 <fizzie> (All the numbers were in binary, unary might've been simpler.)
19:26:18 <QazNotQuaz> unary sounds painfully space-inefficient though, id think
19:27:37 <fizzie> Well, these specific numbers never go higher than 80, it's not too bad.
19:28:29 <QazNotQuaz> isn't that the whole width of your befunge-93 field?
19:28:43 -!- ineiros_ has joined.
19:32:58 -!- ineiros has quit (Ping timeout: 245 seconds).
19:41:48 -!- QazNotQuaz has quit (Remote host closed the connection).
19:45:05 <rain2> How to define equality of lambda terms?
19:51:15 <imode> you can't.
19:53:03 -!- arseniiv has quit (Ping timeout: 250 seconds).
19:55:33 -!- LKoen_ has joined.
19:57:29 <rain2> wrong
19:58:20 <j4cbo> structural equality is about the only meaningful option
19:58:28 <j4cbo> you can’t tell if they’ll produce the same results
19:58:53 -!- LKoen has quit (Ping timeout: 246 seconds).
20:00:03 -!- sprocklem has quit (Ping timeout: 264 seconds).
20:00:48 <kmc> at least if you want equality to be decidable.
20:02:02 <rain2> it shouldn't be decidable
20:03:14 <imode> you have a choice between structural and semantic equality, the latter of which is not decidable.
20:05:23 <j4cbo> strcmp or zalgo
20:06:32 <kmc> lol
20:06:37 <kmc> well not quite strcmp :P
20:06:54 <kmc> you have to keep track of an alpha-conversion as you go
20:15:47 <kmc> unless it's using de bruijn indices
20:15:53 <kmc> good shit
21:08:30 -!- imode has quit (Ping timeout: 265 seconds).
21:27:10 <shachaf> de bruijn indices are good for everything except anything
21:30:49 <int-e> de Buijn indices are great for syntactical comparison of lambda terms, and as a starting point for evaluation by a Krivine style machine.
21:31:13 <shachaf> de bruijn indices are great
21:31:14 <int-e> So that's two concrete use cases.
21:31:20 <shachaf> i'm a fan
21:31:33 <int-e> Ah did I drop the 'r' while captializing (properly!)...
21:31:40 <int-e> That was not intended.
21:32:30 <int-e> shachaf: Btw, do you like this? https://www.sinfest.net/view.php?date=2019-09-24
21:33:24 <shachaf> Is this that?
21:34:14 <int-e> To my mind that is close enough to this to conflate the two in both contexts.
21:34:54 <int-e> (Join me in my war on quotation marks!)
21:49:08 -!- sprocklem has joined.
21:55:51 -!- LKoen_ has quit (Remote host closed the connection).
21:56:10 -!- LKoen has joined.
22:03:00 <shachaf> `5
22:03:01 <HackEso> 1/2:988) <kmc> healthy immune system is a wonderful thing, you gotta take advantage <kmc> sometimes i eat food off the ground just to keep mine on its toes \ 108) <CakeProphet> how does a "DNA computer" work. <CakeProphet> von neumann machines? <Phantom_Hoover> CakeProphet, that's boring in the context of DNA. <Phantom_Hoover> It's just stealing the universe's work and passing it off as our own. \ 395) <Gregor> I have a WRT120N <fizzie> Gregor: The W
22:03:26 <shachaf> `n
22:03:27 <HackEso> 2/2:RT160NL has 40 units more of... stuff. Plus an L. \ 787) <Phantom__Hoover> the scene: it is a warm summer's day in scotland, although one obscured by cloud and the fact that it is september \ 611) <CakeProphet> but yeah the caliphates expanded their empire by conquering people and then forcing them to either convert to Islam or die. [...] <oerjan> i thought it was sort of, convert to islam or pay extra taxes, but i guess it varied a lot.
22:27:03 <shachaf> kmc: higan
22:27:11 <shachaf> Ted Chiang's new book is TG
22:27:51 <int-e> Turing-Gödel?
22:27:58 <shachaf> that's right
22:28:25 <int-e> scifi, specfi, hmm, which is it?
22:28:52 <shachaf> What are those?
22:29:46 <kmc> i bought a copy
22:29:52 <kmc> as an anniversary gift for my wife
22:29:55 <kmc> but i'll probably read it too
22:30:00 <kmc> this is Exhalation?
22:33:21 <shachaf> yes
22:34:34 -!- LKoen has quit (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”).
22:41:23 <shachaf> int-e: you can read the titular story at http://www.lightspeedmagazine.com/fiction/exhalation/
22:41:34 <shachaf> it's good
22:42:11 <shachaf> then you can tell me whether it's scissor fiction or spectacle fiction
22:46:20 <int-e> where's the tl;dr
22:46:48 <shachaf> tg;dr
22:47:37 <int-e> I can't read this now... I'll hate it no matter what's in there.
22:49:02 <int-e> `quote negativity
22:49:03 <shachaf> hmm
22:49:03 <HackEso> No output.
22:49:31 <shachaf> here's a v. short story in that book: https://www.nature.com/articles/436150a
22:56:11 <kmc> the titular story is so good
22:56:19 <kmc> it was in his previous book
22:56:23 <kmc> but i guess a lot of this book is new
22:56:25 <shachaf> I don't think so?
22:56:29 <kmc> hm
22:56:34 <kmc> well i know i read it before this one came out
22:56:35 <kmc> anyway
22:57:05 <shachaf> the one-word summary is ragebcl
22:57:25 <shachaf> I guess that's not much of a spoiler.
22:57:39 <kmc> o_O
22:57:52 <shachaf> But I like the way it's presented.
23:00:53 <int-e> fungot: do you believe in free will?
23:00:54 <fungot> int-e: well, ladies and gentlemen were assembled there. he knows that he belongs to a nation revolutionary as nature, powerful as freedom, ardent as the saltpetre which she has been herself, i believe, by a curious fnord, there has been, a real alliance between the two countries; there will be noise, and fnord, and they were forced to endure robespierre.
23:02:22 <shachaf> ^style
23:02:22 <fungot> Available: agora alice c64 ct darwin discworld enron europarl ff7 fisher fungot homestuck ic irc iwcs jargon lovecraft nethack oots pa qwantz sms speeches* ss wp ukparl youtube
23:02:31 <shachaf> ^style ukparl
23:02:31 <fungot> Selected style: ukparl (UK Parliament debates from brexit referendum to late 2018)
23:02:42 <shachaf> fungot: order! order!
23:02:42 <fungot> shachaf: on a more serious point, my hon. and learned friend the member for central ayrshire, to withdraw, the timetable the government are
23:03:12 <shachaf> fungot: order!
23:03:12 <fungot> shachaf: the it changes the government are at. that is the point, did the scottish parliament, which is currently the only other member. knowing the hon. member the leave of the house,
23:06:20 -!- FreeFull has quit.
23:07:07 <shachaf> my right honourable and learned friend, fungot
23:07:08 <fungot> shachaf: and the situation that, much energy and many months, and in fnord the hospital opened. the group is
23:09:26 <int-e> Hmm, what did happen in UKParl the last two days...
23:10:02 <int-e> (Besides "a lot"... The house of commons was in session for 19h total.)
23:11:34 <int-e> Oh and what's the significance of people standing behind the white line during a session?
23:12:38 <shachaf> What white line?
23:13:08 <shachaf> http://www.explore-parliament.net/nssMovies/09/0928/0928_.htm ?
23:13:43 <int-e> yeah
23:14:25 <int-e> so members of the press may be beyond the line, for example?
23:14:32 <int-e> "strangers"
23:30:32 <int-e> hah. "members of opposing parties should always be two sword lengths apart"
2019-09-27
00:13:00 -!- imode has joined.
00:16:47 <int-e> . o O ( Cloud computing is like shitting in a glass house. )
00:25:28 -!- oerjan has joined.
01:39:27 <tswett[m]> So, I'm implementing Langton's Loops in Golly.
01:39:31 <tswett[m]> This might be very pointless.
01:40:05 <tswett[m]> It's pretty exciting, because as I keep implementing new parts of the CA, the pattern fails in new, exciting ways.
01:40:37 <int-e> . o O ( Langton's gelly )
01:42:03 <tswett[m]> Right now, the organism successfully extends 6 times, but when it tries to turn, the arm potentiates and just stays potentiated.
01:42:17 <tswett[m]> A potentiated arm, after extending, fails to generate more sheath.
01:42:45 <tswett[m]> This causes... uh, I can't quite tell what's going on.
01:43:40 <tswett[m]> But it results in the organism's wire retracting and vanishing.
01:43:53 <tswett[m]> So essentially, when it tries to turn and then extend, it just bleeds out instead.
01:48:24 <kmc> F
01:48:30 <imode> doesn't golly have langton's loops already.
01:48:36 <tswett[m]> Yeah, it does.
01:48:48 <tswett[m]> But I want to create a modded version of LL.
01:48:56 <imode> neat!
01:48:57 <tswett[m]> And in order to create a modded version, I have to create the original.
01:49:13 <tswett[m]> ...or I could just use the existing implementation of the original. That would also work.
01:49:18 <tswett[m]> But I don't really understand how the original works.
01:49:26 <tswett[m]> So in order to understand it, I'm re-implementing it.
01:49:58 <int-e> re-implementing the loop is the new re-inventing the wheel
01:51:03 <tswett[m]> Literally! Hot damn.
01:51:40 <tswett[m]> Anyway, now I'm at the point where the arm can extend and turn, thereby creating essentially all of the daughter loop.
01:52:48 <tswett[m]> The problem is that the arm then fails to penetrate itself; it turns into an open dead end instead.
01:53:17 <tswett[m]> And the whole thing essentially bleeds out again.
02:05:37 <esowiki> [[Talk:JR]] N https://esolangs.org/w/index.php?oldid=66346 * YamTokTpaFa * (+255) /* Categorizing to Category:brainfuck derivatives */ new section
02:08:09 <esowiki> [[Rebmu]] https://esolangs.org/w/index.php?diff=66347&oldid=39284 * YamTokTpaFa * (+55) wait, wrong category.
02:08:48 -!- Sgeo has quit (Read error: Connection reset by peer).
02:19:39 <tswett[m]> Man, this is exciting!
02:19:55 <tswett[m]> Now the original organism can create a complete daughter organism.
02:20:00 <tswett[m]> However, the daughter is sterile and the mother dies.
02:21:11 <kmc> sad story
02:22:16 <oerjan> somehow this reminds me of Sgeo's norn experiments
02:22:27 <oerjan> `? sgeo
02:22:28 <HackEso> Sgeo is a language nomad. (Not to be confused with a language monad.) He invented Metaplace sex, thus killing it within a month. He was Doctor Mengele in his previous life, as evidenced by his norn experiments.
02:29:48 <imode> norn?
02:33:13 -!- Sgeo has joined.
02:33:15 <tswett[m]> Norns are the species the player controls in the Creatures series of video games.
02:33:20 <tswett[m]> Hey HackEso, do you know what a norn is?
02:33:22 <tswett[m]> `? norn
02:33:23 <HackEso> norn? ¯\(°​_o)/¯
02:37:11 <tswett[m]> Boom, I've finished implementing the reproductive process! Sort of.
02:37:31 <tswett[m]> The original organism is capable of creating a daughter, which creates another daughter, and so on ad infinitum.
02:37:35 <tswett[m]> However, the mother still dies after reproducing.
02:38:04 -!- QazNotQuaz has joined.
02:38:27 <tswett[m]> Hey, you're not Quas.
02:38:28 <tswett[m]> I don't think.
02:38:56 <QazNotQuaz> oh is there a user here who goes by quas?
02:39:01 <QazNotQuaz> spelled with an s?
02:40:20 <tswett[m]> I don't know if they're here. Or if they were ever here, for that matter.
02:40:25 <tswett[m]> But they're known as Quas_NaArt.
02:41:02 <oerjan> how confusing. mind if we call you Bruce?
02:42:14 <QazNotQuaz> huh. ive always been distinctly Qaz, never used an s
02:42:41 <QazNotQuaz> and i mean sure though i'd be curious as to why you chose that name in particular
02:44:28 <oerjan> it's traditional
02:45:16 <QazNotQuaz> ah i see
02:45:25 <QazNotQuaz> *bows in traditional*
02:45:46 <oerjan> https://www.youtube.com/watch?v=XxyzIC4hQvg
02:46:28 <oerjan> oh
02:46:40 <oerjan> the link is only audio
02:47:08 <QazNotQuaz> the link is broken entirely for me
02:48:01 <oerjan> figures
02:48:20 <oerjan> anyway, it's the monty python bruce sketch
02:48:37 <QazNotQuaz> i regret to admit im not familiar with it
02:49:26 <tswett[m]> Boop, now both the mother and the daughter survive, but the mother is non-fertile.
02:54:55 <QazNotQuaz> anyone here know if theres anything important i need to do if i intend to make a derivative of a particular language or do i just kinda do it and make a wiki page
02:58:02 -!- sebbu has quit (Ping timeout: 240 seconds).
02:58:45 -!- sebbu has joined.
03:11:38 <tswett[m]> Pretty much just do it.
03:11:39 <tswett[m]> I wonder if I'm still an admin on the esolang wiki.
03:11:54 <tswett[m]> If I am, I'm pretty sure I don't remember my password.
03:12:26 <kmc> just do it! be bold! move fast and break things! you're the man now, dog!
03:18:18 <j4cbo> our every move is the new tradition
03:19:28 <QazNotQuaz> (y)
03:20:34 <kmc> ++
03:20:39 <QazNotQuaz> im wanting to expand on suzy and update it n stuff cus it seems really neat but could use revision
03:32:44 <tswett[m]> By the way, I bought a book. The title is "Nauka czytania z historyjkami."
03:32:51 <tswett[m]> It's kind of hard to read because it's in Polish.
03:34:33 <QazNotQuaz> ppfff
03:35:17 <QazNotQuaz> are you intending to learn polish with it ??
03:44:33 <tswett[m]> I already know some Polish; I'm gonna use this to improve my knowledge a bit.
03:45:07 <tswett[m]> Oh, say, I finished. :D
03:45:19 <tswett[m]> My Langton's Loops clone is fully working.
03:45:37 <tswett[m]> Man, the LL rule is full of hacks.
03:49:06 -!- sprocklem has quit (Ping timeout: 268 seconds).
03:50:49 <QazNotQuaz> conglaturation
03:59:51 -!- sprocklem has joined.
04:03:26 -!- Frater_EST has joined.
04:23:46 <kmc> congrats tswett[m]
04:24:23 <imode> gratz bud.
04:30:42 -!- FraterEST has joined.
04:32:57 -!- Frater_EST has quit (Ping timeout: 245 seconds).
04:38:55 -!- inhahe has quit.
04:39:12 -!- FraterEST has quit (Ping timeout: 245 seconds).
04:39:37 -!- Frater_EST has joined.
04:46:42 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
04:50:18 -!- Lord_of_Life has joined.
05:29:10 -!- Frater_EST has left.
05:38:28 -!- hppavilion[1] has joined.
05:52:56 -!- hppavilion[1] has quit (Ping timeout: 240 seconds).
05:53:36 -!- imode has quit (Ping timeout: 240 seconds).
06:17:12 -!- oerjan has quit (Quit: Nite).
06:20:33 -!- tromp_ has quit (Read error: Connection reset by peer).
06:20:54 -!- tromp has joined.
07:22:36 <esowiki> [[Pie]] M https://esolangs.org/w/index.php?diff=66348&oldid=66345 * YamTokTpaFa * (+0)
07:37:38 -!- QazNotQuaz has quit (Remote host closed the connection).
08:32:48 <esowiki> [[S.I.L.O.S]] https://esolangs.org/w/index.php?diff=66349&oldid=53559 * YamTokTpaFa * (+24)
08:40:33 -!- cpressey has joined.
09:52:28 <esowiki> [[1+]] M https://esolangs.org/w/index.php?diff=66350&oldid=66336 * TwilightSparkle * (+2) /* Cat Program (EOF returns 0) */
10:25:32 -!- arseniiv has joined.
11:15:38 -!- LKoen has joined.
11:17:42 -!- LKoen has quit (Remote host closed the connection).
11:18:47 -!- LKoen has joined.
11:27:22 <esowiki> [[1+]] https://esolangs.org/w/index.php?diff=66351&oldid=66350 * TwilightSparkle * (+57) /* Turing-Completeness */
11:39:51 <arseniiv> <imode> it's... working, I guess. => ah I seem to have skipped that, not logreading yesterday
12:24:31 -!- Lykaina has joined.
12:31:14 -!- arseniiv has quit (Ping timeout: 240 seconds).
12:40:03 -!- LKoen has quit (Remote host closed the connection).
12:46:03 -!- LKoen has joined.
13:14:39 <myname> i would really like a moba style programming game
13:36:15 -!- arseniiv has joined.
14:07:38 -!- Sgeo_ has joined.
14:10:26 -!- Sgeo has quit (Ping timeout: 240 seconds).
14:12:12 -!- Sgeo__ has joined.
14:12:41 -!- sebbu has quit (Ping timeout: 265 seconds).
14:15:02 -!- Sgeo_ has quit (Ping timeout: 245 seconds).
14:16:36 -!- xkapastel has joined.
15:12:40 -!- Cale has quit (Ping timeout: 264 seconds).
15:32:29 -!- Cale has joined.
15:52:45 -!- sebbu has joined.
15:54:57 -!- LKoen_ has joined.
15:57:35 -!- cpressey has quit (Quit: A la prochaine/).
15:58:13 -!- LKoen has quit (Ping timeout: 252 seconds).
16:10:33 <arseniiv> how do you think, teaching what of these in schools is more useful: (i) expansion of (sin x)³ in terms of sin and cos or (ii) presentation of (a sin x + b cos x) as A cos(x + B)? I think the second on its own is way more useful but I can’t remember well if I was taught that one
16:11:01 <arseniiv> oh, in (i) I meant sin 3x
16:11:16 -!- imode has joined.
16:12:37 <arseniiv> also I think it’s a cosine that should be named sine, and vice versa
16:13:31 <imode> I like how at one point I was laughed for suggesting "readable, structured assembly language/opcodes", and now WASM exists.
16:13:36 <imode> fuck the haters.
16:13:54 <imode> makes brainfuck's control flow not look terrible.
16:25:48 <arseniiv> <imode> makes brainfuck's control flow not look terrible. => I don’t follow how exactly (not that I thought it looks terrible either)
16:28:07 <imode> to clarify, neither BF's nor WASM's control flow looks horrible. just that WASM follows BF's (and my language) conventions of structured control flow rather than arbitrary control flow.
16:33:21 <imode> you would _have_ to interpret WASM by either doing the jump-to-matching-bracket routine, or some kind of compilation technique to resolve the jumps.
16:45:14 -!- imode has quit (Read error: Connection reset by peer).
16:45:35 -!- imode has joined.
16:47:42 -!- Lord_of_Life_ has joined.
16:48:49 -!- FreeFull has joined.
16:49:17 -!- Lord_of_Life has quit (Ping timeout: 276 seconds).
16:50:38 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
17:06:16 -!- imode has quit (Ping timeout: 240 seconds).
17:06:20 -!- xkapastel has quit (Quit: Connection closed for inactivity).
17:12:50 -!- imode has joined.
17:19:37 <kmc> shachaf: did you play Untitled Goose Game yet
17:24:39 -!- LKoen_ has quit (Remote host closed the connection).
17:25:24 <shachaf> kmc: yes
17:26:10 <lf94> imode i was thinking the other day/night
17:26:20 <lf94> about C, and about C-like languages...
17:26:45 <lf94> I think...I think "the work" required to make the abstractions, is forever required.
17:27:01 <lf94> assembly is like working with little cogs and pulleys and things
17:27:16 <lf94> this is why forth is not too useful either
17:27:40 <imode> why is forth not useful?
17:27:42 <kmc> shachaf: do you like it?
17:27:49 <fizzie> `forth ." I'm useful!"
17:27:50 <HackEso> I'm useful!
17:27:57 <lf94> imode it is useful, but it's held back.
17:28:04 <imode> by?
17:28:10 <lf94> sorry, when it comes to this type of talk...I'm bad with words.
17:28:21 <arseniiv> <imode> you would _have_ to interpret WASM by either doing the jump-to-matching-bracket routine, or some kind of compilation technique to resolve the jumps. => ah
17:28:37 <imode> 's all good.
17:28:57 <lf94> It's held back by the fact it pushes in the wrong direction, that it extends *one aspect* of assembly
17:29:05 <lf94> I see now that using purely the stack is a mistake.
17:29:10 <lf94> To be effective, you have to use all the parts.
17:29:29 <lf94> And this is why things like C are super useful.
17:29:31 <shachaf> kmc: it's p. cute
17:29:35 <imode> define all the parts.
17:29:50 <lf94> registers, stack, memory
17:29:57 <lf94> memory/heap
17:30:00 <kmc> shachaf: yes
17:30:02 <kmc> it is charming
17:30:07 <kmc> it cheers me up when i'm feeling down
17:30:09 <imode> you don't need registers, but you _do_ need memory.
17:30:14 <kmc> he who makes a goose of himself gets rid of the pain of being a man
17:30:23 <arseniiv> at least I, for a practical language, think of it as a pretty normal thing. Why should a low-level language have unstructured control flow, not all low levels are that low so to be able to execute on a sufficiently simple hardware
17:30:28 <lf94> You DO need registers imode. Otherwise your code is super ineffecient.
17:30:38 <imode> in what way?
17:30:44 <lf94> imode, look, you can _easily_ add two 64-bit integers.
17:30:49 <lf94> with 1 instruction.
17:30:53 <lf94> Why would you give this up?
17:30:59 <lf94> It's simple, to the point, efficient.
17:31:07 <imode> is this an argument against stack machines? because lmao.
17:31:07 <shachaf> I'm not sure it's particularly good as a game, though?
17:31:17 <rain2> lf94 there will be multiple different programming languages
17:31:25 <lf94> imode I'm not sure what I'm arguing. I'm just saying what's on my mind.
17:31:47 <imode> I think your issue is with stack machines, because you're thinking that multiple stack ops are slower than a single register op.
17:32:04 <imode> in which case... plenty of literature in favor of stack ops.
17:32:11 <imode> and also in favor of register ops.
17:32:24 <lf94> The point is
17:32:32 <lf94> Some things are better than others in contexts.
17:32:34 <lf94> So: use both.
17:32:42 <rain2> ok
17:32:46 <imode> sure, nothing stops you from using registers.
17:33:04 <lf94> C is nice because it handles using the stack and registers
17:33:11 <imode> not really.
17:33:20 <imode> purely depends on your calling conventions.
17:33:25 <arseniiv> <lf94> I see now that using purely the stack is a mistake. => btw a typed concatenative stack language may abstain from using any runtime stacks and store intermediate values in registers: after typing, it’ll be clear what goes where and how long what lives
17:33:33 <imode> ^ that too.
17:34:23 <arseniiv> <kmc> he who makes a goose of himself gets rid of the pain of being a man => looks deep
17:34:54 <arseniiv> oh is it a rephrasing of something, maybe I hadn’t heard the original, but anyway
17:34:59 <rain2> very good
17:36:23 <imode> forth isn't about the raw ops, by the by, lf94.
17:36:38 <imode> if you wanted to write assembly for a stack machine, by all means, do it.
17:36:42 <lf94> Isn't it about simplicity, composition, etc+
17:36:47 <rain2> I like forth but i cannot program in it
17:36:59 <imode> correct. which is more about the structure of the REPL and the code.
17:37:02 <imode> rather than the underlying machinery.
17:37:05 <imode> people kinda get lost in that.
17:37:07 <kmc> arseniiv: the original is s/goose/beast/
17:37:18 <lf94> that sha256 code I linked the other day - that was in no way simple.
17:37:19 <arseniiv> BTW I think now maybe I’m in part interested how much you could extend a concatenative syntax and still call it that, concatenative
17:37:19 <kmc> and is a samuel johnson quote https://www.samueljohnson.com/depressi.html
17:37:39 <imode> that was in no way simple, you're right. would you say that the equivalent C is as simple?
17:37:39 <lf94> It could've been way simpler, had it been able to use non-stack ... mechanisms...
17:37:41 <arseniiv> kmc: ah. I thought it could be “fool” but beast has its merit
17:37:45 <kmc> arseniiv: which is also known as the epigraph of Fear and Loathing in Las Vegas
17:37:45 <lf94> imode: yes!!
17:37:52 <imode> does an equivalent C version exist?
17:37:55 <lf94> of course!
17:38:00 <lf94> sha256 is widely implemented
17:38:01 <imode> for that specific piece of code.
17:38:10 <lf94> yep
17:38:11 <kmc> it's one of my favorite quotes
17:38:15 <imode> no, I mean is there a _direct translation_ of the semantics of that Forth code to C.
17:38:16 <kmc> it explains a lot of human behavior, really
17:38:17 <imode> and can you find it.
17:38:35 <kmc> from excessive drinking to the thing where people dress up as puppies and play with each other
17:38:56 <kmc> (which is somewhere on the border between super kinky and adorably wholesome)
17:39:11 <rain2> What do you think about forth as a compiler target?
17:39:14 <lf94> imode: https://github.com/amosnier/sha-2/blob/master/sha-256.c
17:39:16 <lf94> imode: no
17:39:30 <lf94> imode: this code is about 130ish lines
17:39:39 <lf94> the forth was 300
17:39:48 <imode> can you re-link the forth version?
17:40:00 <imode> just for completeness.
17:40:09 <lf94> https://gist.github.com/jzakiya/4544459
17:40:25 <arseniiv> hm also I’m fixed on typing, but the thing imode said ^ too can be of course done by a simple “dummy interpretation” where we store in the stack register indices instead of actual values, it’s equivalent but it looks simpler than words about typechecking
17:40:33 <imode> lines 1 through 83 are comments.
17:40:42 <arseniiv> s/said ^ too/said ^ at too
17:41:38 <imode> lines 319 onward are part of the overall driver program that takes a file and hashes it.
17:41:45 <lf94> yeah
17:41:53 <imode> sorry, but you're comparing a small portion of a program to an actual program.
17:42:02 <lf94> ok, so it's about 200 lines
17:42:11 <lf94> also: lines are not everything
17:42:12 <imode> less, if you remove comments.
17:42:18 <imode> you're right. they aren't.
17:42:26 <lf94> it really depends how many instructions this all compiles to.
17:42:27 <imode> so why did you bring it up.
17:42:48 <lf94> because I messed up.
17:42:50 <lf94> :)
17:42:52 <imode> 's all good.
17:43:11 <shachaf> kmc: I like some of the animations, like the smug way the goose carries things in its beak.
17:43:22 <lf94> I want someone to show me *GOOD* forth code
17:43:24 <imode> also.
17:43:33 <imode> the C code only deals with big endian.
17:43:37 <imode> the Forth code deals with both.
17:43:45 <shachaf> I should be that smug about something.
17:44:04 <imode> the test harness for the C version is 238 lines.
17:44:18 <kmc> shachaf: yes
17:44:25 <kmc> shachaf: I think it's weird that you can't eat things or fly
17:44:45 <imode> lf94: https://www.forth.com/starting-forth/12-forth-code-example/
17:45:07 <imode> here you go.
17:45:35 <imode> it's small, but it is neat.
17:46:12 <arseniiv> kmc: yes it boils down to that we in a sense live in stories and can at the same time synthesize them, and maybe to that in some sense our working mind is flat (that one is my pet allegory, and that’s opposed to being hierarchical)
17:46:32 <imode> in fact all of that book is full of good stuff, you should probably read it.
17:46:50 <kmc> arseniiv: hm
17:47:05 <kmc> i'm not sure i know what you mean by the mind being flat
17:47:25 <arseniiv> <lf94> I want someone to show me *GOOD* forth code => I want that with respect to postscript <backspace> <backspace>
17:48:07 <kmc> https://archive.org/details/ataribooks-forth-on-the-atari-learning-by-using
17:48:12 <kmc> linking this for the cover art
17:48:22 <arseniiv> kmc: yes it shows my metaphors are too convoluted :D that one never to this time helped anyone
17:48:29 <imode> jesus I forgot about that.
17:48:58 <imode> I guess they really are keyboard warriors.
17:49:24 <imode> also, lf94, if you're worried about performance, Forth has been driving space missions and critical systems for decades now.
17:49:41 <lf94> with what interpreter / compiler?
17:49:54 <arseniiv> what a cover art indeed
17:50:09 <imode> https://www.forth.com/resources/space-applications/
17:50:10 <imode> here you are.
17:50:24 <imode> most native hardware, some not.
17:50:50 <kmc> shachaf: I was also a bit disappointed that nothing happens once you get the picnic supplies together
17:50:56 <imode> bear in mind, Forth interpreters aren't really "interpreters" in the larger sense. they use threaded code, which isn't exactly equivalent to a traditional interpreter (one that simulates instruction fetching + decoding).
17:51:41 <imode> https://en.wikipedia.org/wiki/Threaded_code
17:51:47 <imode> not multithreading, threaded.
17:51:50 -!- Lykaina has quit (Remote host closed the connection).
17:53:45 <imode> I have doubts on anybody who can say Forth is not performant to be on par with C or better in some situations.
17:55:37 <imode> though honestly the whole Forth ecosystem is arcane. there's little good documentation on how to implement a Forth from scratch apart from guessing. you have to link together some dots and do some research.
17:56:12 <arseniiv> kmc: oh, I forgot I didn’t elaborate about flatness. It should mean that in a sense all hierarchical things we manipulate do have a base in our long- or short-term memory, but the size of the working memory is too small for that. Hm, and with this formulation it becomes orthogonal to that thing about stories I said at the start
17:56:18 <imode> but I guess that's a good thing, because people seem to jump to the "I've implemented Forth therefore I know Forth" conclusion.
17:56:37 <imode> lf94: don't get caught in that. implement a language you'll actually enjoy writing in.
17:57:05 <imode> https://www.sifflez.org/lectures/ASE/C3.pdf some slides if you ignore that advice.
17:57:19 <lf94> imode: I'm reading this classical forth link you sent still
17:57:24 <lf94> I'm not sure I'm convinced...
17:57:34 <arseniiv> we can’t hold a sufficiently convincing model in the working memory only
17:57:39 <kmc> arseniiv: I think the quote also explains the appeal of silly behavior generally
17:57:40 <lf94> : " ( -- addr ) [CHAR] " WORD DUP C@ 1+ ALLOT ;
17:57:49 <lf94> This is to insert a string into a dictionary....
17:57:53 <kmc> like, we are conditioned so hard that everything must be according to a purpose, a plan
17:58:12 <kmc> doing something pointless for the hell of it (like esoprogramming) is liberating
17:58:14 <imode> correct. do you understand what each of those words does?
17:58:15 <kmc> the pointlesser the better
17:58:21 <kmc> this is what I love about ham radio in the Internet age
17:58:27 <kmc> it's 90% pointless
17:58:35 <kmc> there are those who get it and those who don't
17:59:13 <lf94> imode: I don't, but it seems crazy...
17:59:25 <imode> [CHAR] IMO has a misleading name.
17:59:35 <lf94> array of characters?
17:59:44 <imode> no.
18:00:07 <lf94> address?
18:00:38 <imode> https://www.complang.tuwien.ac.at/forth/gforth/Docs-html/Displaying-characters-and-strings.html two behaviors of that word.
18:01:34 <arseniiv> kmc: yeah, silly things are fun (it is fun things that are silly <backspace>)
18:01:41 <imode> http://lars.nocrew.org/forth2012/xchar/BracketCHAR.html probably a better reference, I don't like the formatting on that one.
18:04:45 <imode> pretty much just consumes the next token it sees.
18:04:54 <imode> and pushes it to the stack.
18:07:06 <arseniiv> low-level forth procedures scare me slightly
18:07:16 <imode> the worst part? it's all arcane.
18:07:30 <imode> like, you have to go to the ends of the damn earth to actually see the definitions/semantics of a particular word.
18:07:39 <imode> which I mean, whatever.
18:08:15 <imode> http://forth-standard.org speak and ye shall receive, wow.
18:09:09 <imode> http://forth-standard.org/standard/core/BracketCHAR same stuff, though.
18:13:33 <imode> ah. no.
18:14:28 <imode> lf94: this basically just parses a string and pushes the address of that string to the stack, which is picked up by MATERIAL to define a new word in the dictionary.
18:15:14 <imode> with the corresponding material weight.
18:17:20 <imode> brb.
18:19:31 -!- LKoen has joined.
18:22:05 -!- imode has quit (Ping timeout: 265 seconds).
18:28:33 <arseniiv> . o O ( arcane programming languages )
18:28:45 <arseniiv> hm are there also esoteric data description languages
18:29:55 <arseniiv> or esoteric languages of logic. Err, no, these are esoteric almost by default
18:30:04 -!- tromp_ has joined.
18:31:02 -!- imode has joined.
18:32:02 <imode> honestly, the shortcomings of Forth's words and dealing with linear data structures are why I'm choosing to use a queue/bidirectional tape vs. a stack.
18:32:59 <imode> with Forth, storing a string means finding some memory, popping the string into memory and then grabbing the address of the first character and putting it on the stack.
18:33:36 <imode> whereas with my language, the whole string can be stored in the queue/on the tape.
18:33:56 -!- tromp has quit (Ping timeout: 276 seconds).
18:34:25 <imode> so instead of going through the motions to parse a string from the source and then pop it into memory, you can just call something like `parse`.
18:34:44 <imode> and it'll throw it into the queue, which can then be used by other words that deal with linear structures.
18:34:53 <imode> imo this composes a lot better.
18:36:02 -!- sprocklem has quit (Ping timeout: 240 seconds).
18:36:32 <imode> so lf94: while I think that Forth is a step in the right direction, I kind of agree with you that Forth as defined doesn't compose well and forces you to push some of the underlying machinery into your word choices. which, fine, it makes you think harder about how to do things, but it also gives the air of mysticism in some way.
18:36:56 <imode> you see the ending syntax, but you look back and see the mess of machinery required to accomplish that syntax
18:37:40 <imode> ditching restricted RPN (using only a stack) is the first step, tbh.
18:40:00 <imode> an example of where a queue/tape beats a stack + memory: you can define labels, types, etc. in-line and seek to them. meaning I can say "push label X, roll, push label Y, roll" and now, any time I want to recall the values after each of those labels, all I have to do is seek to the labels, move forward by one element and duplicate it/shift it to the working area.
18:40:35 <imode> no need for an external memory.
18:42:15 -!- sprocklem has joined.
18:44:54 <imode> I also think that Forth's focus on tokens rather than individual characters sets people up for odd syntax.
18:49:01 <imode> in my view you should be able to run code that transforms the source on demand. any time an "immediate" macro is discovered, you're dropped into a mode where your source is your program snippet's input.
18:49:19 <imode> which Forth _does_, but the core words are weird.
18:58:47 -!- imode has quit (Ping timeout: 245 seconds).
19:02:22 -!- LKoen_ has joined.
19:05:35 -!- LKoen has quit (Ping timeout: 246 seconds).
19:14:27 -!- arseniiv has quit (Ping timeout: 264 seconds).
19:21:25 -!- imode has joined.
19:24:01 -!- arseniiv has joined.
19:31:21 <kmc> shachaf: <(...) redirection is tg
19:31:45 <shachaf> @quote eat.a.comment
19:31:45 <lambdabot> SamB_XP says: I once saw it eat a comment (:[{- Help! -}])
19:38:35 <kmc> :_:
19:38:51 <imode> '(:$$:$,#) <-- this macro could define something that looks ahead by one character in the source, calls a builtin # function that consumes a character from the source and outputs its numeric value. so 'H'e'l'l'o',' 'w'o'r'l'd,0 pushes the string "Hello, world" + a 0 to the queue.
19:39:29 <imode> afk.
19:39:31 -!- imode has quit (Quit: Leaving).
19:42:47 -!- zzo38 has joined.
19:55:58 -!- LKoen has joined.
20:00:23 -!- LKoen_ has quit (Ping timeout: 276 seconds).
20:05:46 -!- xkapastel has joined.
20:18:00 <zzo38> I copied a file on a floppy disk today to transfer to another computer. I put the same file on each of two disks in order in case one is wrong, but then I tried, and both seem damaged. However, by just using "cat /dev/sdc > recover.1" I was able to recover the data, and it looks like the contents of the file is intact, at least.
20:27:32 <zzo38> Do you know why?
20:44:14 <zzo38> I found that 7-Zip is capable of recovering the file from one of the disks, even though the driver in Linux cannot.
20:49:59 -!- Sgeo__ has quit (Ping timeout: 265 seconds).
21:09:56 -!- arseniiv has quit (Ping timeout: 276 seconds).
22:14:34 -!- LKoen has quit (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”).
22:53:18 -!- MDude has joined.
23:12:29 <shachaf> I'm trying to figure out what you can do using "prisms" as described in _Anxiety is the Dizziness of Freedom_.
23:13:24 <shachaf> The way a prism works is: When you activate a prism, it flashes a red light or a blue light. Then you can use it to communicate to a version of the prism in a universe where it flashed the other color.
23:17:12 <zzo38> OK
23:17:27 <shachaf> Can you use these to solve NP problems?
23:20:03 <zzo38> I don't know.
23:22:20 <zzo38> But that isn't much information about it, such as, some of the details of it working
23:23:15 <shachaf> What part is unclear?
23:23:29 <kmc> what can you communicate
23:23:36 <shachaf> Some of it isn't specified in the story but I can only think of one reasonable way to make it work.
23:23:53 <shachaf> Octets -- in the case of the story, up to some fixed number.
23:23:55 <shachaf> Say 1GB.
23:24:05 <shachaf> You have a chat interface or something.
23:24:28 <kmc> is this ted chiang?
23:24:35 <shachaf> Yes.
23:43:27 -!- xkapastel has quit (Quit: Connection closed for inactivity).
2019-09-28
00:18:10 -!- hakatashi1 has joined.
00:18:37 -!- hakatashi has quit (Read error: Connection reset by peer).
00:19:09 <shachaf> OK, I have a solution to NP.
00:22:15 <zzo38> What solution is that?
00:22:53 <shachaf> You have f : 2^k -> 2 and you're looking for x such that f(x) = 1
00:23:05 <shachaf> You have k prisms.
00:23:32 <shachaf> You activate prisms until you've either activated k, or seen a blue light, and then you stop.
00:24:25 <shachaf> Then you have a partial bit string, where each R corresponds to 0, B corresponds to 1, and the rest of the bits are unknown.
00:25:18 <shachaf> You ask your B prism what the rest of the bits are, and then you pass that information on to each of your R prisms, along with your known bits.
00:25:44 <shachaf> Now you have a full bit string and you can test f on it. If f(x) = 1, you tell all your prisms you find a solution, and then they pass it on to their prisms, and so on.
00:26:09 <shachaf> There are 2^k/2 worlds that just got a B, 2^k/4 worlds that got RB, and so on.
00:39:42 -!- sprocklem has quit (Read error: Connection reset by peer).
00:41:14 -!- sprocklem has joined.
00:44:59 <fizzie> I guess I don't understand the premise. If you stop activating prisms at the first blue flash, wouldn't you only have (for n=4) only the five worlds that saw the sequences B, RB, RRB, RRRB and RRRR?
00:47:22 <fizzie> Oh, I guess it doesn't work that way, because all those other worlds must have a different single-B world to talk to.
00:47:31 <fizzie> Weird stuff, though.
00:49:19 <shachaf> Right. I think that if you split yourself once into A and B, and then B activates a prism to split into C and D, there must be two copies of A as well.
00:49:30 <shachaf> One connected to C and one connected to D.
00:49:55 <kmc> hm
00:49:55 <shachaf> So if you just indiscriminately activate k prisms, you get 2^(2^k-1) worlds, or something.
00:50:07 <kmc> because A can talk to the original who can talk to B who can talk to C and D?
00:50:09 <kmc> hm
00:50:14 <kmc> it's confusing
00:50:19 <kmc> can you implement this?
00:50:41 <shachaf> What do you mean, original?
00:51:09 <shachaf> Say you take this action: You activate prism 1 and, if it flashes red, you activate prism 2.
00:51:27 <shachaf> If it flashes blue, you type "What color did prism 2 flash?" into it.
00:52:22 <fizzie> The way I was thinking about it, after the split to C and D, they both still have that first prism, which can't both talk to A, so there must be A_C and A_D.
00:52:37 <shachaf> Right.
00:52:48 <shachaf> I think that's the only reasonable answer.
00:53:02 <shachaf> Effectively A is part of B's universe, so when B splits, A must split too.
00:56:20 -!- oerjan has joined.
01:13:32 <fizzie> So it's not really a directed binary tree of worlds where each of the non-leaf node represents a prism activation in the past, but rather it's an undirected tree of worlds, and every time any node activates a prism, you make a copy of the entire tree and link the (now two) prism-activating worlds together with an edge that represents what that prism connects.
01:38:34 <esowiki> [[Resource]] N https://esolangs.org/w/index.php?oldid=66352 * A * (+286) Created page with "[[Resource]] ([Re]stricted [source]) is a [[queue]]-based [[Esoteric programming language|EPL]] created with restricted source challenges in mind. It currently sucks at these..."
01:42:52 <fizzie> I think it's also always a connected subgraph of Q_n (where n is the total number of prism activations that have happened in the multiverse) with all the vertices but only some of the edges. And since you're arranged for there to be n activations overall, the standard n-bit string labels of Q_n will probably be the n-bit inputs of your f.
01:42:57 <fizzie> I've convinced myself that works. Can you buy these prisms on Amazon?
01:43:32 <zzo38> Can you invent a esolang based on this?
01:44:22 <fizzie> Sounds like you should be able to.
01:44:26 <kmc> i need some diagrams
01:44:31 <kmc> and yeah
01:44:34 <kmc> it sounds like a fun esolang
01:44:40 <kmc> or an esolib for some other language
01:45:04 <fizzie> (Got to sleep now.)
01:45:16 <esowiki> [[Resource]] M https://esolangs.org/w/index.php?diff=66353&oldid=66352 * A * (+683)
01:45:29 <kmc> 'night fizzie
01:45:43 <kmc> shachaf: smells like a continuation / monad, maybe
01:45:55 <kmc> i mean, you can probably implement this evaluation model using one of those
01:47:15 -!- Sgeo has joined.
01:56:58 <esowiki> [[Resource]] M https://esolangs.org/w/index.php?diff=66354&oldid=66353 * A * (+589)
01:59:29 <esowiki> [[Resource]] M https://esolangs.org/w/index.php?diff=66355&oldid=66354 * A * (+36) I have to be busy for a while
01:59:59 <esowiki> [[Resource]] M https://esolangs.org/w/index.php?diff=66356&oldid=66355 * A * (+85) /* Instructions */
02:08:08 <zzo38> Yes, maybe, you can try to do in Haskell, to see if it work
02:09:09 <kmc> imo implement it with fork() and pipes
02:09:41 <kmc> like that thing i did in a past life
02:11:27 <kmc> shachaf: oh, did you read _Recursion_ by Blake Crouch
02:11:56 <kmc> highly recommend
02:13:40 <kmc> forgot if i already recommended it
02:13:52 <shachaf> have not read it or heard of it
02:14:07 <shachaf> did you play the puzzle game Recursed
02:15:27 <kmc> no
02:17:24 <kmc> what's it like
02:18:29 <shachaf> recursive
02:18:42 <shachaf> you can jump into boxes that contain copies of rooms and so on
02:44:16 -!- rodgort has quit (Ping timeout: 265 seconds).
02:45:08 -!- rodgort has joined.
02:49:22 -!- Lykaina has joined.
03:20:53 <esowiki> [[Resource]] M https://esolangs.org/w/index.php?diff=66357&oldid=66356 * A * (+52)
03:32:30 <esowiki> [[Resource]] M https://esolangs.org/w/index.php?diff=66358&oldid=66357 * A * (+51) /* Implementation */ Okay
03:34:03 <esowiki> [[Language list]] M https://esolangs.org/w/index.php?diff=66359&oldid=66342 * A * (+15) /* C */ Add the relatively interesting language
03:50:52 -!- zzo38 has quit (Ping timeout: 245 seconds).
03:54:04 -!- zzo38 has joined.
03:54:56 -!- xkapastel has joined.
03:57:21 <zzo38> On Monday when I played GURPS game, I used the word "wabe", which was used by Lewis Carroll before, isn't it?
04:27:52 <oerjan> 'twas brillig, and the slithy toves did gyre and gimble in the wabe
04:28:47 <oerjan> wow i spelled that correctly
04:30:18 <zzo38> I think what they said is that "wabe" refers to the grass plot around a sundial, and this is the way it was used in the GURPS game.
04:30:29 <shachaf> `grWp wabe
04:30:30 <HackEso> eol:EOL stands for End Of Lawn. It's often found past the wabe. oerjan requests your presence there immediately.
04:47:27 -!- QazNotQuaz has joined.
04:47:57 -!- Lord_of_Life has quit (Ping timeout: 240 seconds).
04:51:03 -!- Lord_of_Life has joined.
04:57:15 <zzo38> I wrote unreferenced footnotes, recursive footnotes, footnotes that themself have footnotes, footnote references without a corresponding footnote, footnotes numbered in unusual ways, and then there is footnote 2 on session 19; what other stuff with the footnotes would there be?
05:07:16 -!- QazNotQuaz has quit (Remote host closed the connection).
05:12:42 <esowiki> [[Resource]] M https://esolangs.org/w/index.php?diff=66360&oldid=66358 * A * (+652) /* DISCHARM THE B.O.M.B.! */
05:15:01 <esowiki> [[Resource]] M https://esolangs.org/w/index.php?diff=66361&oldid=66360 * A * (+378) /* Useful Instructions (I am not sure whether they are useful in restricted source contests though) */
05:17:49 <esowiki> [[Resource]] M https://esolangs.org/w/index.php?diff=66362&oldid=66361 * A * (+39) /* Useful Instructions (I am not sure whether they are useful in restricted source contests though) */
05:38:41 <kmc> `cat bin/grWp
05:38:42 <HackEso> grwp -i "$@"
05:38:49 <kmc> `cat bin/grwp
05:38:50 <HackEso> ​#! /bin/bash \ cd wisdom; shopt -s dotglob; grep -R "$@" -- *
05:39:12 <kmc> `` ls wisdom | paste
05:39:13 <HackEso> https://hack.esolangs.org/tmp/paste/paste.7592
05:39:26 <kmc> `` /bin/ls wisdom | paste
05:39:27 <HackEso> https://hack.esolangs.org/tmp/paste/paste.12817
05:39:41 <kmc> that's a lot of wisdom
05:40:45 <kmc> `` cat "wisdom/$(/bin/ls wisdom | shuf | head -n 1)"
05:40:46 <HackEso> augur took no cakes, but he's a linguist.
05:40:48 <kmc> `` cat "wisdom/$(/bin/ls wisdom | shuf | head -n 1)"
05:40:49 <HackEso> Nothing happens.
05:40:51 <kmc> `` cat "wisdom/$(/bin/ls wisdom | shuf | head -n 1)"
05:40:51 <HackEso> Everything's better with `mk.
05:41:30 <kmc> `` w="$(/bin/ls wisdom | shuf | head -n 1)"; echo -n "$w: "; cat wisdom/"$w"
05:41:31 <HackEso> ​🐐: 🐐 <(Unicode goat laments your inability to render Unicode goat.)
05:41:34 <kmc> `` w="$(/bin/ls wisdom | shuf | head -n 1)"; echo -n "$w: "; cat wisdom/"$w"
05:41:35 <HackEso> wisdom.pdf: Nicely formatted classical wisdoms and quotes book at https://www.dropbox.com/s/fyhqyvy3i8oh25m/wisdom.pdf
05:41:39 <kmc> `` w="$(/bin/ls wisdom | shuf | head -n 1)"; echo -n "$w: "; cat wisdom/"$w"
05:41:40 <HackEso> roborosewater: RoboRosewater is generating random Magic: the Gathering cards, see https://mobile.twitter.com/roborosewater
05:42:35 <shachaf> `w
05:42:35 <HackEso> baba//BABA IS ¯\(°​_o)/¯
05:42:42 <shachaf> `5 w
05:42:44 <HackEso> 1/2:synergy//Synergy is when the whole is greater than the sum of its parts. A possible future Uncontrolled Synergy Scenario is a looming existential threat to humanity. \ orin//orin is oren's evil twin, stalking him from the other side of the international date line. \ england//England is a conspiracy of cartographers. \ comedogenic//comedogenic is something that causes comedy when applied to the skin, e.g. an accelerated cream pie in parabolic
05:42:46 <shachaf> `n
05:42:46 <HackEso> 2/2:motion. \ cuisine//Cuisine is the posh cousin of cooking.
05:43:05 <kmc> `` paste < bin/w
05:43:06 <HackEso> https://hack.esolangs.org/tmp/paste/paste.22039
05:43:13 <kmc> `` paste < bin/wisdom
05:43:13 <HackEso> https://hack.esolangs.org/tmp/paste/paste.20622
05:43:39 <kmc> bot
05:43:42 <kmc> `` w="$(/bin/ls wisdom | shuf | head -n 1)"; echo -n "$w: "; cat wisdom/"$w"
05:43:42 <HackEso> smileyiese: smileyieses is the plural of smiley.
05:44:59 <kmc> `w mushroom
05:44:59 <HackEso> mushroom//A mushroom is a fungus that grows above ground, especially after rain.
05:45:01 <shachaf> `cbt w
05:45:02 <HackEso> wisdom "$@"
05:45:04 <shachaf> `cbt wisdom
05:45:06 <HackEso> ​#!/bin/sh \ f=$(find wisdom -ipath "wisdom/*$1*" -type f -print0 | shuf --random-source=/dev/urandom -z -n1); if [ -n "$f" ]; then echo -n "${f#wisdom/}//"; cat "$f"; else echo "That's not wise."; fi | rnooodl
05:45:14 <kmc> `cbt bin/cbt
05:45:15 <HackEso> cat: bin/bin/cbt: No such file or directory
05:45:22 <kmc> `cbt cbt
05:45:22 <HackEso> cat bin/"$1"
05:45:33 <kmc> some p. fancy aliases here
05:45:40 <kmc> `` ls bin | paste
05:45:41 <HackEso> https://hack.esolangs.org/tmp/paste/paste.25458
05:46:08 <kmc> `` wc -l bin/* | sort -nr | paste
05:46:10 <HackEso> https://hack.esolangs.org/tmp/paste/paste.18402
05:46:32 <kmc> `` wc -c bin/* | sort -nr | paste
05:46:33 <HackEso> https://hack.esolangs.org/tmp/paste/paste.19174
05:46:50 <kmc> `file bin/udcli
05:46:51 <HackEso> bin/udcli: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, for GNU/Linux 2.6.26, BuildID[sha1]=de5daa4389e466f31e31fde064e80be5907986ba, stripped
05:47:03 <kmc> `` file bin/* | paste
05:47:06 <HackEso> https://hack.esolangs.org/tmp/paste/paste.6883
05:47:39 <kmc> `` file bin/* | cut -d: -f2- | sort | uniq -c | sort
05:47:41 <HackEso> ​ 11 ASCII text \ 12 POSIX shell script, ASCII text executable \ 12 POSIX shell script, ASCII text executable \ 13 ASCII text \ 13 ASCII text \ 14 POSIX shell script, ASCII text executable \ 15 ASCII text \ 1 a /bin/dash script, ASCII te
05:47:41 <kmc> `` file bin/* | cut -d: -f2- | sort | uniq -c | sort -nr | paste
05:47:43 <esowiki> [[Resource]] M https://esolangs.org/w/index.php?diff=66363&oldid=66362 * A * (+214) /* Explanation */
05:47:44 <HackEso> https://hack.esolangs.org/tmp/paste/paste.25767
05:47:51 <kmc> lol
05:48:29 <kmc> a momentary diversion on the road to the grave
05:48:38 * kmc hugs HackEso
05:48:38 <shachaf> `dobg udcli
05:48:40 <HackEso> 4426:2014-02-09 <km̈c> mv udcli bin/ && chmod +x bin/udcli
05:49:43 <oerjan> `doag udcli
05:49:45 <HackEso> 4426:2014-02-09 <km̈c> mv udcli bin/ && chmod +x bin/udcli \ 4425:2014-02-09 <km̈c> fetch http://ugcs.net/~keegan/drop/udcli
05:50:27 <kmc> so weird
05:50:29 <kmc> being alive
05:50:35 <kmc> time passing, etc
05:50:59 <kmc> when did i first set foot in this channel?
05:51:07 <kmc> 2009?
05:51:16 <pikhq> The passing of time confuses and infuriates me.
05:51:23 <kmc> not sure if it was because of shachaf or cheater
05:51:40 <esowiki> [[Resource]] M https://esolangs.org/w/index.php?diff=66364&oldid=66363 * A * (+50) No comments though. :(
06:03:56 -!- xkapastel has quit (Quit: Connection closed for inactivity).
06:35:54 -!- oerjan has quit (Quit: Nite).
06:40:49 <esowiki> [[Resource]] M https://esolangs.org/w/index.php?diff=66365&oldid=66364 * A * (-19) /* Useful Instructions (I am not sure whether they are useful in restricted source contests though) */
06:42:27 <esowiki> [[Resource]] M https://esolangs.org/w/index.php?diff=66366&oldid=66365 * A * (+22) /* Salary program */
06:42:55 <esowiki> [[Resource]] M https://esolangs.org/w/index.php?diff=66367&oldid=66366 * A * (+0) /* Salary program */
06:46:57 <esowiki> [[Resource]] M https://esolangs.org/w/index.php?diff=66368&oldid=66367 * A * (+0) /* Salary program */
06:55:17 <esowiki> [[Resource]] M https://esolangs.org/w/index.php?diff=66369&oldid=66368 * A * (+0) /* Salary program */
07:53:52 <esowiki> [[Resource]] M https://esolangs.org/w/index.php?diff=66370&oldid=66369 * A * (+59)
08:28:20 <rain2> hello
08:28:35 <rain2> let us define x = y to mean that for all contexts C, C[x] halts iff C[y] halts
08:28:48 <rain2> what do you think about this?
08:29:18 <rain2> it could be used for a notion of observational equality or to differentiate between expressions in a programming language
08:42:25 -!- MDead has joined.
08:44:50 -!- MDude has quit (Ping timeout: 265 seconds).
08:44:54 -!- MDude has joined.
08:45:06 <esowiki> [[Talk:Woefully]] https://esolangs.org/w/index.php?diff=66371&oldid=52059 * Kritixilithos * (+1545) turing-completeness?
08:47:17 -!- MDead has quit (Ping timeout: 240 seconds).
09:27:11 -!- xkapastel has joined.
09:30:36 -!- Sgeo_ has joined.
09:34:08 -!- Sgeo has quit (Ping timeout: 265 seconds).
10:01:08 <int-e> rain2: In lambda calculus that's "observational equivalence wrt normal forms" (or whatever your precise notion of "halting" is)
10:03:11 <int-e> `? rpm
10:03:12 <HackEso> rpm? ¯\(°​_o)/¯
10:03:45 <int-e> `learn RPM is short for "rapid piece movement", a phenomenon often seen in bullet chess.
10:03:47 <HackEso> Learned 'rpm': RPM is short for "rapid piece movement", a phenomenon often seen in bullet chess.
10:08:53 <int-e> rain2: I don't know who first studied this kind of things. Böhm is a strong candidate, but far from the only one.
10:09:12 <rain2> OK
10:10:07 -!- APic has quit (Ping timeout: 268 seconds).
10:32:38 -!- APic has joined.
11:28:49 <esowiki> [[Mice in a maze]] https://esolangs.org/w/index.php?diff=66372&oldid=58069 * TwilightSparkle * (+179) Infinite Loop
11:29:49 <esowiki> [[Mice in a maze]] M https://esolangs.org/w/index.php?diff=66373&oldid=66372 * TwilightSparkle * (+30) /* Infinite Loop */
12:16:47 -!- arseniiv has joined.
12:27:58 <esowiki> [[Resource]] https://esolangs.org/w/index.php?diff=66374&oldid=66370 * A * (+97) /* DISCHARM THE B.O.M.B.! */ I am glad that this works
12:46:53 -!- xkapastel has quit (Quit: Connection closed for inactivity).
13:38:37 -!- Sgeo__ has joined.
13:42:15 -!- Sgeo_ has quit (Ping timeout: 268 seconds).
13:53:25 <esowiki> [[BF instruction minimalization]] https://esolangs.org/w/index.php?diff=66375&oldid=62527 * TonyBrown148 * (+637) /* TonyBrown148's attempt */ 3 command
13:54:10 <esowiki> [[BF instruction minimalization]] M https://esolangs.org/w/index.php?diff=66376&oldid=66375 * TonyBrown148 * (-1) /* TonyBrown148's attempt */
13:57:30 <esowiki> [[Resource]] https://esolangs.org/w/index.php?diff=66377&oldid=66374 * A * (-2) /* DISCHARM THE B.O.M.B.! */
13:59:49 <esowiki> [[BF instruction minimalization]] M https://esolangs.org/w/index.php?diff=66378&oldid=66376 * A * (-540) /* Iamcalledbob's attempt */
14:00:35 <esowiki> [[BF instruction minimalization]] M https://esolangs.org/w/index.php?diff=66379&oldid=66378 * A * (+540) Undo revision 66378 by [[Special:Contributions/A|A]] ([[User talk:A|talk]])
14:00:49 <esowiki> [[BF instruction minimalization]] https://esolangs.org/w/index.php?diff=66380&oldid=66379 * A * (-540) Undo revision 66379 by [[Special:Contributions/A|A]] ([[User talk:A|talk]])
14:01:20 <esowiki> [[BF instruction minimalization]] M https://esolangs.org/w/index.php?diff=66381&oldid=66380 * A * (+540) Undo revision 66380 by [[Special:Contributions/A|A]] ([[User talk:A|talk]])
14:01:35 <esowiki> [[BF instruction minimalization]] https://esolangs.org/w/index.php?diff=66382&oldid=66381 * TonyBrown148 * (+239) /* TonyBrown148's attempt */ 2 command
14:06:05 <esowiki> [[Resource]] https://esolangs.org/w/index.php?diff=66383&oldid=66377 * A * (+71) Oh no, what will they say?
14:08:39 <esowiki> [[Resource]] M https://esolangs.org/w/index.php?diff=66384&oldid=66383 * A * (-1) /* Implementation */ This happenedddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
14:41:21 <esowiki> [[Resource]] https://esolangs.org/w/index.php?diff=66385&oldid=66384 * A * (+0) /* Useful Instructions (I am not sure whether they are useful in restricted source contests though) */ Opposite!
15:17:14 -!- MDude has quit (Ping timeout: 240 seconds).
15:36:02 -!- APic has quit (Ping timeout: 240 seconds).
15:36:28 -!- APic has joined.
16:00:42 -!- xkapastel has joined.
16:27:57 -!- APic has quit (Ping timeout: 245 seconds).
16:31:50 -!- APic has joined.
16:32:37 -!- Sgeo_ has joined.
16:35:36 -!- Sgeo__ has quit (Ping timeout: 240 seconds).
16:44:21 <izabera> hey
16:44:34 <izabera> someone here wrote a terminal emulator i think
16:45:12 <izabera> was it oerjan?
16:45:39 * FireFly wonders if there's an actual question hidden behind the statement
16:47:15 -!- Lord_of_Life_ has joined.
16:50:02 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
16:50:08 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
16:50:48 <izabera> i'm writing a thingy
16:51:03 <izabera> that needs some special escape sequences
16:51:28 <izabera> and i've been reading https://invisible-island.net/xterm/ctlseqs/ctlseqs.html for a while without finding what i can use for my custom sequences
16:54:34 <FireFly> I think you could use OSC in theory
16:55:20 <FireFly> There's a ##tty which has some knowledgeable folks, I'd think LeoNerd would know since they have a fair buncha terminal emulation experience (both on the terminal emulator side and the application side)
16:56:57 <FireFly> There's also other space for more extravagant custom CSI-prefixed escape seqs I think, in the grammar for them that ECMA-48 specifies
16:57:32 <FireFly> (ECMA-48 also has an ANSI and an ISO/IEC name, but apart from being easier to remember, it's also helpful that ECMA releases their pdfs for free so you can just google it and grab the spec)
16:58:30 <FireFly> There is a grammar for escape seqs starting with CSI that is basically.. CSI followed by intermediate bytes followed by parameter bytes followed by a terminating byte.. and I think most of the space where you add intermediate bytes is unoccupied/unused
16:58:37 <zzo38> What special escape sequences do you need?
16:58:47 <FireFly> ^ also wondering that, because it sounds interesting :)
16:59:54 <FireFly> oh whoops, it's parameter then intermediate then final byte
17:00:25 <FireFly> http://xen.firefly.nu/up/2019-09-28_190010.png (from ECMA-48)
17:01:10 <FireFly> I think most escape seqs are either using no intermediate byte, or just a '?', but there's more room for other more exotic intermediate byte values, or extending it to more than one byte..
17:01:57 <FireFly> (they express bytes funnily, but really e.g. 07/14 is just 0x7E, etc in that excerpt)
17:02:58 <izabera> thanks FireFly!
17:03:21 <izabera> i had little success in the past asking in ##tty
17:04:25 <zzo38> Is it acceptable to put two question marks instead of just one?
17:05:12 <shachaf> I know someone who wrote a terminal emulator, but isn't in this channel.
17:05:28 <shachaf> I had a bunch of ideas of what I'd like a terminal emulator to be like and I was considering writing it.
17:05:38 <shachaf> It'd be more a combination terminal emulator/shell, probably.
17:05:39 <FireFly> zzo38: yes
17:05:50 <FireFly> shachaf: I'm curious (I've had ideas along these lines)
17:07:12 <shachaf> Hmm, I don't remember the details anymore. I could find old chat logs where I talked about them probably.
17:07:38 <shachaf> I think each command should be able to run independently, with its own output stream/pty.
17:07:58 <FireFly> okay, this sounds a lot like thoughts I've had :p
17:08:02 <shachaf> And the shell/terminal emulator interface should be much richer than a text interface.
17:08:04 <FireFly> like scarily similar
17:08:34 <shachaf> The terminal emulator should just automatically "time" every command and remember a bunch of information about it, which you can get through the UI.
17:09:34 <shachaf> Golly.
17:09:59 <shachaf> A thing I use a lot right now is ^Z/fg.
17:10:13 <FireFly> job control is sweet
17:10:24 <shachaf> Instead of that I'd like to just keep an old command running and type into a prompt underneath it which will have its own pty.
17:10:29 -!- APic has quit (Ping timeout: 276 seconds).
17:10:34 <FireFly> *nod*
17:10:43 <izabera> so i have this idea
17:10:45 <shachaf> I'd like each command to have its own searchable output buffer, rather than piping things into less.
17:10:58 <izabera> my program is a shell manager thingy
17:11:47 <shachaf> FireFly: Since your program is identical to mine in every respect, you should implement it so I don't have to, twh
17:12:24 <shachaf> I was kind of going to do this, but first I needed to write my own UI library, so I started doing that, but then I wanted to make my own programming language for it.
17:12:29 <shachaf> You know, the usual story.
17:13:33 -!- APic has joined.
17:13:42 <FireFly> https://pbs.twimg.com/media/DJXrLg2XoAAJcfd?format=png&name=medium here's an old random mockup of some of my thoughts (the point here isn't really the visual bits of the UI, but more having a command-line interface (as opposed to a "your terminal is a gird of character cells") where each job gets its own usual-character-grid output block (for compat reasons and whatnot if nothing else, because I wouldn't
17:13:42 <FireFly> want to reinvent everything here)
17:14:32 <shachaf> FireFly: Also have you seen mzero's old project plush?
17:14:37 <FireFly> nope
17:14:48 <shachaf> https://github.com/mzero/plush
17:15:15 <shachaf> It's not quite the thing I want but it might be the closest someone has made.
17:15:19 <FireFly> w*nod*
17:15:24 <FireFly> -w
17:16:37 <shachaf> I went to a talk about it and he talked about all the things I'm sure you've thought of too, like how ridiculous it is to press enter a bunch of times to fill the screen with prompts so you can see where a command started when you scroll up.
17:16:58 <FireFly> *nod*
17:17:23 <shachaf> Anyway I don't want a web UI, obviously.
17:17:30 <FireFly> sure
17:18:41 <zzo38> Can the terminal emulator determine the process ID of the foreground process?
17:18:44 <FireFly> The way I thought about my interface, it should have worked with (existing) TUI apps as well (like htop, vim etc)
17:18:46 <shachaf> Anyway, I agree, each command should probably get its own TTY grid interface, but there's no reason for the shell to limit itself that way.
17:19:11 <FireFly> zzo38: I'm pretty sure it couldn't typically in a terminal emulator today
17:19:13 <shachaf> Instead the shell should probably be exposed as an API that the TTY can call.
17:20:14 <shachaf> I agree that it should work with things like htop and vim. For those uses it could just start a full pty (and maybe have a pool of them that it reuses -- I looked into this a bit and it's kind of a mess).
17:20:21 <FireFly> The way I imagined it was to add a few extra escape sequences (in a way that they should be possible for existing terminal emulators to just silently ignore, if they have spec-compliant escape seq parsers) to annotate the stream of data from the shell with some extra in-band metadata
17:20:45 <FireFly> and the most critical bit would be to somehow encode in-band which job (or process or whatever) is producing a certain segment of output
17:20:49 <shachaf> I feel like the shell should just totally break compatibility. It's not compatible with any other terminals, and why should it be?
17:20:57 <shachaf> In-band signaling is scow anyway.
17:21:01 <FireFly> fair
17:21:14 <shachaf> If you want you can use the fancy shell API to implement a simple text-based mode like normal shells.
17:21:40 <FireFly> I don't think I'd do separate pty's per se
17:21:42 <FireFly> maybe
17:21:45 <shachaf> Anyway presumably when you start vim you want it to take over the entire window by default, but you also want to be able to get a prompt, *without* suspending vim.
17:21:47 <FireFly> I don't really know.. heh
17:22:08 <shachaf> One thing that I do a lot is: Edit a program in my editor; ^Z and run the program; fg
17:22:14 <FireFly> yeah, same here
17:22:20 <shachaf> Except if the program is a long-running process, I'm stuck outside of my editor.
17:22:34 <shachaf> It's silly. I don't actually want to suspend the editor, I just want a shell prompt.
17:22:42 <FireFly> well you could ^Z and bg the long-running job, and then fg vim :P
17:22:46 <FireFly> but I get what you mean
17:22:48 <shachaf> (Which is "associated" with the editor in some way, not the same window.)
17:22:58 <shachaf> Sure, but say I'm timing the long-running job or something.
17:23:12 <FireFly> *nod*
17:23:27 <shachaf> Or say I want to look at the code while I type text into an interactive program.
17:23:48 <shachaf> It's just that ^Z/fg isn't really what I want almost all the time. I just want better multiplexing in my terminal.
17:23:50 <FireFly> I would definitely want to be able to run multiple TUI programs at once, and just switch which one I'm sending input to as the 'foreground'
17:23:56 <FireFly> right
17:24:19 <FireFly> anyway, I'm unlikely to actually implement my thoughts, but heh, they're fun to ponder
17:24:23 <shachaf> I also want all the other things like scrolling/searching the output of just one command.
17:24:36 <shachaf> It seems like a pretty basic desideratum in 2019.
17:24:49 <FireFly> mm
17:26:38 <shachaf> plush also shows a list of files on the side of the terminal so you don't have to run ls all the time.
17:26:46 <shachaf> Seems like there are a lot of things like that that you can do.
17:27:48 <FireFly> mm, I'm not sure I'd want to do all of them, but *nod*
17:28:53 <FireFly> I think the thing about the in-band escape seqs that I wanted to do was like... minimal (or small) changes to the shell (at least the way I imagined it) that could let the terminal emulator to a lot more with how it manages and presents output (enabling all these things with separate output blocks for separate jobs and stuff)
17:29:36 <shachaf> I guess that's possible? I think escaping the legacy of VT-100 is a worthy goal.
17:29:38 <FireFly> whereas now it's a bit of a deadlock because there's only so much you can do if you *only* create a new innovative terminal emulator, or *only* a new innovative shell (and you want to remain compatible with existing applications)
17:30:23 <FireFly> I think there's been a number of "actually let's just reinvent everything and cut off existing programs entirely" attempts, but they all seem to fail quickly because there's just too much software out there that's useful that you wouldn't want to reinvent
17:30:40 <FireFly> well, I guess it depends on who you are. I guess say, Microsoft can reinvent all the things with powershell, because they're a big corp and stuff
17:30:50 <FireFly> but I couldn't realistically do that myself
17:30:59 <zzo38> It look like foreground process groups can be figured out at least
17:31:06 <FireFly> oh hm, huh
17:31:07 <shachaf> FireFly: All I'm replacing is the shell, though.
17:31:15 <FireFly> shachaf: *nod*
17:31:29 <shachaf> Programs running in the shell still get a standard pty and a semi-standard terminal emulator.
17:31:36 <FireFly> I just mean that there's several steps to this, and whilst I like the ideal of taking it all the way, I don't think it's practical
17:31:58 <FireFly> I guess we end up on slightly different points along the scale of "today" to "ideal future terminal emulator", but that's fine
17:32:10 <FireFly> shachaf: *nodnod*
17:32:18 <FireFly> yeah, that's sort of the approach I'm thinking too
17:32:29 <shachaf> I think the shell needs to be replaced anyway.
17:33:06 <shachaf> I don't want anything near the complexity of bash.
17:33:17 <FireFly> sure
17:33:36 <shachaf> Shell scripting is probably a bad idea anyway.
17:33:54 <FireFly> a lot of the things that the shell would have been traditionally responsible for (like line editing) I'd like to move to the terminal emulator anyway
17:34:12 <shachaf> Right.
17:34:52 <FireFly> hmm
17:35:04 <shachaf> I don't want to say upfront that the interface between the terminal and the shell is made of escape sequences. I think it can be much richer than what that realistically allows for and it's silly to bound it upfront like that.
17:35:22 <FireFly> maybe I should try to write a simple prototype proof-of-concept shell of what I have in mind
17:35:30 <FireFly> shachaf: that's totally fair
17:35:41 <zzo38> My own ideas of terminal emulator is much like xterm, although a few features are different, such as SVG and HTML screen dumps are not built-in but rather you can configure external programs to execute when those escape codes are received. If you push the break key then it can use tcgetattr() to emulate it.
17:36:09 <FireFly> there's plenty of stuff about escape seqs (and terminals today) that's just bonkers and terrible
17:36:16 * FireFly grumbles about how keystrokes are encoded
17:36:26 <shachaf> Obviously that's all nonsense.
17:36:41 <shachaf> I'd eventually like to move away from TUI programs in general.
17:36:46 <FireFly> *nod*
17:36:52 <FireFly> I have complicated thoughts
17:37:03 <FireFly> I agree in principle
17:37:13 <zzo38> A few new escape codes might be added, such as UTCE character encoding selection, application keyboard mode for the escape key, save states with optional passwords (for security), etc
17:39:00 <zzo38> (Also the ability to select character sets which include characters not in Unicode. This only works if the font supports it, though.)
17:39:40 <shachaf> CP437 is obviously the only thing my terminal supports.
17:40:45 <FireFly> "b) If the first bit combination of the parameter string is in the range 03/12 to 03/15, the parameter string is available for private (or experimental) use. Its format and meaning are not defined by this Standard."
17:40:50 <FireFly> hm
17:41:30 <FireFly> izabera: anyway, digression aside, I think ECMA-48 section 5.4 is what I'd look at for figuring out sensible custom-escape-seq options :P
17:41:35 <zzo38> If the terminal emulator is only for PC, then it can be sense to support only CP437, although one problem with that is that escape codes can interfere unless you have a command to indicate that a character should be interpreted as a graphic rather than control.
17:49:18 <zzo38> Another thing that tcgetattr() could be used for is to figure out what response to give to DECREQTPARM. When connecting to a remote service that might have optional fancy animations or whatever, reporting a lower baud rate could be used as a hint to disable some of the fancy animations.
17:59:57 <zzo38> Possibly a save state command I mentioned before is not needed, since I have another idea.
18:01:00 <zzo38> There can be one escape code which, the first time will save the state and later uses will restore the state; you can include it in your shell prompt. A user command (on a menu or a keyboard combination) can discard the saved state in case you wish to enter a command to permanently change the state.
18:13:42 <shachaf> FireFly: You should totally work on this with me, when I do it.
18:13:54 <FireFly> maybe :o
18:13:59 <shachaf> Which will probably be never? But it might instead be sometime.
18:14:26 <zzo38> Another feature (although not a new control code) is you can program a different mouse cursor shape for when the program has requested mouse events.
18:14:43 <shachaf> I want to set up a good way to write cross-platform GUI programs.
18:16:16 <zzo38> Depending on the program, there is ways, such as SDL
18:18:08 <shachaf> Well, I'm OK with writing my own bindings for X11 and Win32 and whatever.
18:18:28 <shachaf> I feel like the bulk of the work is in making a good UI library.
18:18:37 <shachaf> Even if it's not extremely general.
18:21:45 <zzo38> Can you use Xaw?
18:27:21 <shachaf> No, I want it to be good.
18:27:27 <shachaf> And also portable.
18:32:17 <zzo38> I think that it is not that bad (although, it isn't portable unless you also have a portable X server), although some features it lacks such as displaying the underlined letters to indicate which keys to push
18:40:02 <shachaf> That is the only missing feature, true.
19:02:03 -!- imode has joined.
19:02:14 <imode> new laptop, new me.
19:02:58 <shachaf> `? imode
19:02:59 <HackEso> imode is an Innovative Multicomponent Drug Designer, afflicted by a severe case of the UPPERs.
19:03:28 <imode> LOL.
19:03:33 <imode> I was not aware I had a page.
19:03:53 <imode> or, what would you call that... a quote?
19:04:01 <shachaf> `dowg imode
19:04:08 <HackEso> 11145:2017-08-03 <boil̈y> le/rn imode//imode is an Innovative Multicomponent Drug Designer, afflicted by a severe case of the UPPERs.
19:04:29 <FireFly> I spoke with someone in another channel with the nick inode, the other day
19:04:35 <FireFly> it confused me for a li'l...
19:04:40 <imode> hah.
19:15:03 <arseniiv> BTW has someone here used sound change appliers in a while?
19:15:15 <arseniiv> (hi :D)
19:15:22 <imode> allo. o/
19:18:36 <FireFly> sound change appliers?
19:20:46 <arseniiv> FireFly: basically they take a description of phonetic/phonological rules and apply them to a list of words
19:21:44 <arseniiv> some go for more, there could be dialects sharing some rules and then having each own newer rules, and there are many other features one or the other implements
19:22:13 <FireFly> o
19:23:44 <arseniiv> when conlanging, it can be a hand, though often people say that if you want a naturalistic result, this would be a hard task, as just phonetic changes aren’t enough and there would be many exceptions due to other processes
19:24:01 <arseniiv> a while ago I played with ASCA a bit
19:26:41 <zzo38> Do you know much about Old English, and what sound changes there are?
19:30:47 -!- kspalaiologos has joined.
19:35:19 <kspalaiologos> Hi. Have you guys ever worked on compression of "obese" esolangs?
19:35:27 <kspalaiologos> I'm already trying to figure it out.
19:35:27 <imode> "obese"?
19:35:39 <kspalaiologos> By obese I mean the literal code pottery
19:35:41 <kspalaiologos> like Malbolge
19:35:58 <kspalaiologos> I've had some luck with compressing my malbolge with a burrows-wheeler based compression algo
19:36:06 <kspalaiologos> but I don't feel satisfied enough
19:36:10 <imode> you mean literally compressing the size of the source?
19:36:15 <kspalaiologos> sure
19:36:23 <kspalaiologos> It's too big for any resonable scale tbh
19:36:37 <kspalaiologos> currently my assembler produces 3MB-200MB malbolge programs
19:36:47 <kspalaiologos> the 2048 test program created around 74MB of Malbolge
19:36:57 <kspalaiologos> so the size is pretty much unsalvageable and I can't do anything about it
19:37:19 <kspalaiologos> so the size is pretty much unsalvageable and I can't do anything about it (in terms of organic code shortening, of course)
19:37:37 <imode> I think that's the point of malbolge, to be so large it's nearly incomprehensible.
19:38:09 <kspalaiologos> possibly yes, but I think it would be nice to distribute malbolge programs in smaller form
19:38:31 <kspalaiologos> so one could put it in volume limited areas, then decompress it in an unlimited place
19:38:36 <kspalaiologos> and run it afterwards
19:38:47 <imode> are you assembling _to_ malbolge or assembling malbolge to executables.
19:39:07 <kspalaiologos> I'm assembling to malbolge
19:39:33 <kspalaiologos> from many existing reasons I can't really improve my assembler, but I'm working on it
19:40:19 <imode> are you just generating macro instructions literally.
19:40:40 <kspalaiologos> umm, no
19:40:50 <kspalaiologos> It's impossible to do that
19:41:04 <imode> you didn't get what I said. you're writing some form of assembly, right.
19:41:10 <imode> and you're compiling that down to malbolge.
19:41:22 <kspalaiologos> It's a program that transpiles an assembly-like language into malbolge
19:41:26 <kspalaiologos> an example program:
19:41:33 <imode> okay. so each instruction corresponds to some snippet of malbolge, right.
19:41:52 <kspalaiologos> https://pastebin.com/raw/mnpHXvVp
19:42:08 <kspalaiologos> It's impossible for an instruction to correspond 1:1 to malbolge snippet
19:42:19 <kspalaiologos> because of immutable nop cycles and all the other crazy stuff
19:42:42 <imode> how is that possible.
19:43:00 <kspalaiologos> well. Malbolge encrypts each instruction after it's ran
19:43:12 <kspalaiologos> and the encryption key is dependant of position of command in the source file
19:43:44 <kspalaiologos> to run it once again
19:43:50 <kspalaiologos> e.g. make an immutable instruction
19:43:58 <kspalaiologos> you need to produce different code for different position in file
19:44:03 <kspalaiologos> and the code might differ severely.
19:44:11 <imode> okay, but you have some _template_.
19:44:15 <imode> right.
19:44:27 <kspalaiologos> strictly speaking, kind of
19:44:41 <imode> okay. so you have larger-scale structures in your assembly.
19:44:44 <imode> things like loops.
19:44:50 <imode> initializations of memory, etc.
19:44:57 <kspalaiologos> no indirect loops
19:45:05 <imode> you have large scale structures.
19:45:06 <kspalaiologos> you have to make loops out of comparasion instruction, a jump and a label
19:45:10 <imode> replace those with smaller templates.
19:45:16 <imode> yeah, that's what assembly is.
19:45:16 <kspalaiologos> have you programmed with x86 Assembly?
19:45:27 <imode> yes.
19:45:34 <kspalaiologos> well, then you probably understand
19:45:38 <kspalaiologos> me and my idea
19:45:47 <imode> I've built my own ISAs, yes, I understand.
19:45:49 <kspalaiologos> of making the assembler as low level as possible, because I won't write it by hand
19:46:19 <kspalaiologos> I've already worked on gluing together C to Brainfuck compiler and now I'm having fun with bits and pieces of malbolge
19:46:57 <kspalaiologos> it's probably worth noting that C was a quite bit broad subset
19:47:02 <kspalaiologos> but it's as capable as C
19:47:45 <imode> you're not really getting it, so I'll explain it verbosely: if you have a template for a single instruction (i.e, you see the instruction, then you output a snippet of malbolge with the relevant places filled in), and if you have multiple instructions that make up a larger construct (like a loop, etc.), you can replace the generated sequence of templates with a single template that performs the
19:47:47 <imode> loop.
19:48:19 <kspalaiologos> umm
19:48:23 <kspalaiologos> yes, you'
19:48:32 <kspalaiologos> re right, but I'm not implementing higher level structures
19:48:51 <imode> you're not going to be writing loops in your assembly?
19:48:51 <kspalaiologos> (on the assembly level, of course)
19:48:59 <imode> the point is you're generating them.
19:49:00 <kspalaiologos> indirect, broad loops, nope
19:49:01 <imode> so.
19:49:06 <imode> it still applies.
19:49:18 <kspalaiologos> I think you are correct
19:49:25 <kspalaiologos> but, Malbolge is making this idea harder
19:49:28 <imode> you take 'whatever: add r1, r2, r3; cmp; jnz whatever;'
19:49:34 <imode> and you say "well, that's just a loop"
19:49:36 <kspalaiologos> because if I wanted to create a specific loop construct
19:49:42 <kspalaiologos> I had to write microcode for it
19:49:52 <kspalaiologos> and this would be a really, really, really (x99) hard task
19:50:00 <kspalaiologos> (or rather, a microcode generator)
19:50:25 <kspalaiologos> I'm looking for a lowest common denominator right now
19:50:29 <zzo38> I have used 6502, MMIX, and Glulx, but not the assembly for Malbolge.
19:50:35 <imode> well, you pretty much have two options.
19:51:05 <imode> group together larger scale assembly instructions into smaller templates.
19:51:11 <imode> resulting in smaller snippets of malbolge.
19:51:29 <imode> or compress the whole source using a lossless compression algorithm, and then unpack it incrementally at runtime.
19:51:29 <kspalaiologos> or?
19:51:45 <kspalaiologos> I prefer the second one tho, because the first one is going to take insane amount of time
19:51:49 <kspalaiologos> and I'm probably going to turn insane
19:52:04 <imode> I'd ask why bother, but then I realized what channel I was talking to.
19:52:09 <imode> or talking in, rather.
19:52:45 <kspalaiologos> so
19:52:54 <kspalaiologos> do I have to derive my own algo
19:53:05 <kspalaiologos> or there is something that would suffice
19:53:10 <zzo38> Maybe if you add enough instruction that can result smaller Malbolge codes, then you can.
19:53:19 <kspalaiologos> I've already managed to get 47 megabytes to one megabyte
19:53:25 <kspalaiologos> but it's still too much
19:53:50 <imode> someone built a brainfuck to malbolge compiler, I think you can build an assembler.
19:53:56 <kspalaiologos> zzo38 If i write microcode generator for complex instructions, I will going to turn insane
19:54:03 <kspalaiologos> imode really?
19:54:08 <kspalaiologos> I've seen just the theoretical explanations
19:54:22 <imode> iirc...
19:54:50 <kspalaiologos> well, it's not going to be the most efficient route ever made
19:55:02 <kspalaiologos> C hello world -> 1.5MB of brainfuck -> ???MB of Malbolge
19:55:17 <kspalaiologos> but it seems quite easy, lol
19:55:42 <kspalaiologos> I'll stick to my malbolge assembly idea, because I can port my pseudoC compiler to it
19:58:01 <kspalaiologos> I'm thinking
19:58:07 <kspalaiologos> why shouldn't I made a harvester program
19:58:13 <kspalaiologos> and generate a few random malbolge assembly programs
19:58:26 <kspalaiologos> and the harvester program would generate a dictionary of most used symbols
19:58:40 <kspalaiologos> and then go ahead with a dictionary compression, but with the dictionary built into the decompressor
20:01:11 <imode> <arseniiv> at least I, for a practical language, think of it as a pretty normal thing. Why should a low-level language have unstructured control flow, not all low levels are that low so to be able to execute on a sufficiently simple hardware <-- I really agree with this now. I didn't used to.
20:01:38 <imode> structured control flow is _not_ hard to implement properly and speedily.
20:01:51 <imode> you can even use a jump cache based on the current instruction pointer.
20:03:27 -!- kspalaiologos has quit (Remote host closed the connection).
20:05:44 <imode> one thing I don't like, however, is the idea that break is not required. rather, breaking (and conditional breaking) makes it so you don't have to duplicate code.
20:08:01 <imode> I have to wonder what would change if brainfuck's loops were changed so that the conditional check happened at the end of a loop.
20:08:57 <imode> so instead of while(...) { ... }, you'd have do { ... } while(...)
20:09:50 <FireFly> I believe that's been studied before
20:10:09 <FireFly> I think that'd change quite a lot, since you can't easily do conditionals anymore (since each loop runs at least once)
20:10:32 <imode> interesting.
20:10:35 <shachaf> The other day I realized that if (...) is a loop that executes at most once, and do { ... } while (...) is a loop that executes at least once.
20:10:56 <shachaf> while (...) { ... } is a loop that executed any number of times, and { ... } is a loop that executes exactly once.
20:11:25 <FireFly> APLs use the view of booleans as 0 or 1 in a similar manner to that, sometimes
20:11:32 <imode> makes sense as to why while (...) { ... } is considered universal. I remember teaching someone how to build things like "and" statements.
20:11:44 <imode> using only while loops, acting in lieu of if statements.
20:11:52 <FireFly> e.g. you can express a "filter" operation in terms of a "take n copies of" operation if the predicate produces 0 or 1 for false or true
20:12:04 <arseniiv> <zzo38> Do you know much about Old English, and what sound changes there are? => no, unfortunately
20:12:12 <FireFly> taking 0 copies of something omits it, and taking 1 copies of something passes it through to the result (including it)
20:12:27 <imode> that's interesting.
20:12:32 <FireFly> [ 1 1 0 1 0 1 # 'abcdef'
20:12:33 <j-bot> FireFly: abdf
20:13:53 <FireFly> [ (#~ >&4) i.10 NB. produce the list [0..9], then filter on the predicate >&4, i.e. "is greater than 4"
20:13:54 <j-bot> FireFly: 5 6 7 8 9
20:13:57 <imode> does APL _require_ control flow structures?
20:14:08 <imode> J included.
20:14:24 <imode> or can all programs be expressed in terms of array transformations.
20:14:35 <FireFly> It doesn't require traditional control flow structures
20:15:56 <FireFly> there's a reasonably common pattern in J that's something like f^:predicate^:_ (where ^: repeats the application of a function, so e.g. f^:3 is the same as f compose f compose f)
20:16:21 <imode> what are the _minimal_ primitives that J has.
20:16:52 <FireFly> because f^:0 is identity, f^:1 executes it once. if you then raise that to infinity, you can essentially express a while loop
20:16:57 <FireFly> imode: dunno :o
20:17:09 <imode> that'd be fascinating to know.
20:17:15 <FireFly> I'd look toward K probably, beacuse in my mind it's much more toward the minimalistic side of things
20:17:23 <FireFly> I don't know if K has traditional control structures?
20:17:34 <imode> minimalist in terms of primitives or minimalist in terms of size?
20:17:41 <FireFly> in terms of having a few primitives
20:17:45 <FireFly> s/a //
20:17:50 <imode> interesting.
20:17:52 <FireFly> and avoiding redundancy
20:17:59 <FireFly> (J has plenty of redundancy and convenience features)
20:18:06 <imode> array languages seem hard to implement.
20:18:10 <FireFly> http://kparc.com/k.txt
20:18:14 <FireFly> I don't think so
20:18:23 <FireFly> well, in what sense?
20:18:46 <imode> just a lot of moving parts.
20:19:05 <imode> from parsing to actual interpretation.
20:19:35 <FireFly> I think in many ways a lot easier than other paradigms (very simple syntax, often just needs a lexer.. although often very context-dependent and intertwined with execution, tbf)
20:20:53 <FireFly> there's the http://nsl.com/papers/origins.htm which is a bit classic, and admittedly perhaps not super representative, but always fun (a minimal proto-J which implements a few select verbs and stuff, and no error handling)
20:22:17 <FireFly> https://github.com/JohnEarnest/ok/blob/d6d3ee4bbb550a806895ffb92fbe76321dc7552e/oK.js implements a K variant in about 1000 lines of JS, and that's AFAIK pretty feature-complete
20:23:13 <FireFly> I don't know if it's necessarily harder, or if it's just a bit different and requires some pondering how things fit together
20:25:24 <imode> that C snippet is so obfuscated I can't even read it.
20:25:28 -!- asdfbot has quit (Ping timeout: 245 seconds).
20:25:45 <imode> why would you bother doing that.
20:25:51 <imode> you don't get points for being terse.
20:26:29 -!- moony has quit (Quit: Bye!).
20:26:34 <shachaf> The argument is that this is just the way that's natural to write C, if your mind works in the way that it does if you write APL.
20:26:44 <imode> yeah, fuck that.
20:26:46 <shachaf> If that's true, it seems maybe worthwhile to get your mind working that way.
20:26:48 <FireFly> I wouldn't write it that way :P
20:27:01 <shachaf> `? FireFly
20:27:02 <HackEso> FireFly was a short-running but well-loved sci-fi TV series released in 2003, starring Nathan Fillion and directed and written by Joss Whedon. It's also a room whose gimmick is that it gets darker as you kill the enemies.
20:27:06 <FireFly> (unless I golf)
20:27:09 -!- Bowserinator has quit (Quit: Blame iczero something happened).
20:27:11 <imode> forth is comprehensible, that is a mess.
20:27:20 <shachaf> FireFly is not Arthur Whitney.
20:27:27 <FireFly> this is correct
20:27:30 <imode> given. :P
20:27:32 <shachaf> One time I deciphered most of that implementation of J with someone.
20:27:42 <shachaf> But there were still a couple of mysterious things left.
20:27:57 <FireFly> imode: APLs can be quite comprehensible I think
20:28:03 <FireFly> hmm
20:28:14 <FireFly> (but I'm not arguing for writing C that way)
20:28:50 -!- moony has joined.
20:29:42 -!- Bowserinator has joined.
20:30:06 <imode> anything can be written comprehensibly.
20:30:16 <imode> the key is documentation.
20:31:17 <FireFly> mm, with J the vocab page is quite handy: https://www.jsoftware.com/help/dictionary/vocabul.htm
20:31:30 <imode> the only reason why that C snippet is incomprehensible is because it lacks any human-readable documentation. and code is documentation.
20:31:51 <FireFly> *nod*
20:32:57 <shachaf> I think APLy people would disagree with you.
20:33:07 <shachaf> I'm looking for some document I read that talks about this, but I can't find it.
20:33:31 <shachaf> I found http://coding-is-like-cooking.info/2013/09/an-introduction-to-array-languages/ which talks about Whitney writing an editor in K.
20:34:42 -!- imode1 has joined.
20:35:10 <FireFly> http://kparc.com/edit.k ?
20:35:52 <imode1> if they disagree with me, shachaf, then they disagree with iverson.
20:36:02 <shachaf> Hmm, it's http://kparc.com/$/edit.k
20:36:48 <imode1> notation as a tool of thought pretty much said "let the notation serve as your documentation".
20:36:58 <imode1> executable notation == code.
20:37:32 -!- imode has quit (Ping timeout: 245 seconds).
20:37:37 -!- imode1 has changed nick to imode.
20:37:43 -!- iczero has quit (Quit: rip).
20:38:04 -!- iczero has joined.
20:40:27 <shachaf> Well, whoever wrote that post I linked to seems to be completely indoctrinated with nonsense.
20:45:02 <imode> despite my language looking like ass (this, for example, is a directly compiled 5 factorial: ,$5,$0\$$\$[:$,$0=~?:$,$1\$\$$-$].
20:45:32 <imode> the language you're _intended_ to use (which rides on top of it) emphasizes readability.
20:48:25 <FireFly> I think the J for expressing factorial of 5 (without using the built-in verb for it, duh) is pretty readable
20:48:32 <FireFly> I guess it's a matter of having gotten used to it
20:48:48 <imode> I imagine it is, yeah. by the by, I'm not arguing against array language readability.
20:48:54 <FireFly> sure
20:49:03 <FireFly> (I also think it looks like line-noise without being used to it)
20:49:13 <imode> lol. trying to adjust to writing in line noise.
20:49:41 <FireFly> [ */1+i.5
20:49:42 <j-bot> FireFly: 120
20:53:46 <imode> my bad, that was only.. _partially, a factorial function. here's the real deal: ,$5,$0\$$\$[:$,$0=~$?:$,$1\$\$$-$].[\$$\$:$,$0=$~$?*$].
20:54:41 <imode> it's comprised of two parts, one part generates a range of numbers from N on down to 1, and the other computes the product of that range.
20:54:53 <imode> the 'range' part is ,$0\$$\$[:$,$0=~$?:$,$1\$\$$-$].
20:55:05 <imode> and the 'product' part is [\$$\$:$,$0=$~$?*$].
21:08:01 <FireFly> ah
21:14:38 -!- arseniiv has quit (Ping timeout: 246 seconds).
21:17:38 <imode> unmangled, it looks like https://hatebin.com/ldolvvfofb
21:17:52 <imode> which is much more readable.
21:19:56 <imode> one sec..
21:19:57 -!- imode has quit (Quit: WeeChat 2.6).
21:20:52 -!- imode has joined.
21:39:34 <esowiki> [[Special:Log/newusers]] create * Vulture001 * New user account
21:40:31 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=66386&oldid=66298 * Vulture001 * (+97)
21:41:45 -!- imode has quit (Quit: WeeChat 2.6).
21:42:15 <esowiki> [[Special:Log/upload]] upload * Vulture001 * uploaded "[[File:Cz logo.png]]"
21:42:28 <esowiki> [[User:Vulture001]] N https://esolangs.org/w/index.php?oldid=66388 * Vulture001 * (+51) Created page with "[[file:cz logo.png|130px|]]<br> esoteric programmer"
21:42:39 <esowiki> [[User:Vulture001]] https://esolangs.org/w/index.php?diff=66389&oldid=66388 * Vulture001 * (-3)
21:57:22 <esowiki> [[Crazy]] N https://esolangs.org/w/index.php?oldid=66390 * Vulture001 * (+985) Created crazy language
22:05:35 -!- iovoid has quit (Ping timeout: 250 seconds).
22:05:39 -!- voidio has joined.
22:05:53 -!- moony has quit (Ping timeout: 252 seconds).
22:07:07 -!- moony has joined.
22:17:19 -!- LKoen has joined.
22:28:31 -!- LKoen has quit (Remote host closed the connection).
22:33:07 -!- LKoen has joined.
22:41:32 -!- LKoen has quit (Remote host closed the connection).
22:41:57 -!- voidio has changed nick to iovoid.
22:43:24 -!- LKoen has joined.
22:48:01 -!- LKoen has quit (Remote host closed the connection).
22:49:37 -!- LKoen has joined.
22:56:12 -!- imode has joined.
23:09:36 <zzo38> I found the "tap code", which uses 1/3 for both C and K, but maybe the code for K should be 2/6 instead.
23:20:50 -!- MDude has joined.
23:30:18 -!- hppavilion[1] has joined.
23:45:00 -!- b_jonas has joined.
23:46:19 <pikhq> https://www.unicode.org/L2/L2019/19025-terminals-prop.pdf was accepted for inclusion in future Unicode. Sweet.
23:46:21 <b_jonas> ais523: re string eval in perl without the letter e => hmm, I'll have to get back to this when I'm less tired. I just got home from vacation. you might want to look in those old obfuscations that are made of only ascii punctuation, space and newline. at least some of them cheat by using backticks to spawn something, but maybe there's some other.
23:46:29 <pikhq> Finally, PETSCII will actually have a Unicode mapping.
23:46:50 <b_jonas> there's probably a less cheating way (not necessarily easier, just less cheating), but I don't have it in mind now
23:47:14 <pikhq> (also, hey, more useful semigraphics)
23:50:16 -!- MDude has quit (Ping timeout: 240 seconds).
23:50:51 <b_jonas> you can eval stuff like $x = q(print 2+3,"\n"); $s = "(?{$x})"; use re "eval"; /$s/
23:51:15 <b_jonas> it would be possible to remove the e from the use re "eval" but really ugly
23:51:34 <b_jonas> and you'd almost certainly need an E for a BEGIN then
23:52:09 <b_jonas> hmm wait, maybe we can just BEGIN { $^H = ... } to have that effect, in which case it wouldn't be ugly
23:52:13 <b_jonas> I don't know how use re is implemented
23:54:56 <b_jonas> ais523: you can also write the code into a named file and then eval its contents with do
23:59:33 <b_jonas> `perl -e $i = 'for(1..7){print$_**2," "}'; BEGIN { $^H |= 0x200000; } $s="(?{$i})"; /$s/; # ais523
23:59:33 <HackEso> 1 4 9 16 25 36 49
23:59:37 <b_jonas> yup, that works
2019-09-29
00:00:02 <zzo38> I think Unicode is terrible, especially for terminal emulation. (For searching many different documents, Unicode is OK, but Duocode (as described on this IRC before) might be better.) I made up my own code, which includes PETSCII, and also some stuff that is not included in that proposal.
00:00:37 <zzo38> All narrow characters, and the common wide characters, can be represented by a 16-bit code, so that it can be used with 16-bit fonts.
00:01:14 <b_jonas> there are almost certainly other ways that I forget
00:01:31 <zzo38> And you do not need the tables as large and messy as Unicode to calculate the width of a string.
00:02:07 <zzo38> (If there are no control codes, then it is simply the sum of the widths of the individual bytes that make up the string.)
00:02:27 <pikhq> It may be better, but Unicode does have the advantage of handling most people's use cases while being a generally agreed-upon solution.
00:03:02 <pikhq> (I also don't know exactly how useful your code system is, as a lot of the complexity in Unicode is a hard requirement from the languages it supports)
00:03:39 <zzo38> It is useful for a different purpose than Unicode.
00:04:14 <zzo38> Also, even with Unicode, the support for complex scripts and so on is something that I think should be part of the font metrics rather than the character encoding.
00:04:26 <b_jonas> the $^H variable is examined by the compiler, and the relevant values are saved in the opcode tree when compiling the /$s/ thing, which is why you have to set it before that's compiled, that's why we have the BEGIN block.
00:05:22 <b_jonas> `perl -e $i = 'for(1..7){print$_**2," "}'; no utf8 $^H |= 0x200000; $s="(?{$i})"; /$s/; # ais523: and here's how you can do it without a capital E
00:05:23 <HackEso> 1 4 9 16 25 36 49
00:06:02 <b_jonas> the argument to no is evaluated at BEGIN time, we're using the no statement for that side effect only
00:07:52 <b_jonas> imode: "if you have subtraction, equality to zero and AND, is it possible to construct less than and greater than." => yes. check the sign bits of both operands of a subtraction and the sign bit of the result. the three sign bits determine the result of both unsigned less than and signed less than. not the most convenient, but works.
00:08:02 -!- xkapastel has quit (Quit: Connection closed for inactivity).
00:08:27 <esowiki> [[Hello world program in esoteric languages]] https://esolangs.org/w/index.php?diff=66391&oldid=66234 * Vulture001 * (+75)
00:08:28 <b_jonas> ... oh, it's a logical and. you're screwed.
00:11:18 <zzo38> I think that you cannot really have one character set good for all purposes; Unicode tried that and just made it worse in many ways, although there are also some things Unicode is good for, so it isn't entirely bad.
00:19:44 <kmc> hello friends
00:20:08 -!- cocof has joined.
00:20:20 <cocof> during weekend most people do not use freenode?
00:21:58 <b_jonas> "<ais523> I prefer counter machines because they are at least consistently slow" wow
00:25:09 <imode> allo kmc.
00:25:20 <imode> cocof: dunno, it seems active on weekends.
00:26:03 <cocof> wheat’s not the only food whose proteins are degraded into opioid peptides. beer.
00:26:14 <cocof> i tried biology no one there.
00:26:27 <imode> why are you here.
00:26:33 <cocof> I am
00:26:46 <cocof> its like saying why are you?
00:26:54 <cocof> i am here.
00:27:07 <cocof> why does not change this fact.
00:27:36 <kmc> I'm here always
00:27:44 <imode> kmc is eternal.
00:27:49 <kmc> yes
00:28:16 <kmc> fungot: did you see somebody bioengineered E. coli to produce psilocybin
00:28:16 <fungot> kmc: will the hon. member of this house, at the passing of the bill, labour has a different local authority,
00:28:38 <cocof> i know fields of such mushrooms :)
00:28:48 <cocof> as to e coli no.
00:30:07 <kmc> I would like to find such mushrooms
00:30:15 <cocof> I can send you.
00:30:23 <kmc> in the post?m
00:30:27 <kmc> no thanks
00:30:27 <cocof> ye
00:30:33 <kmc> I don't do drugs deals over IRC.
00:30:57 <cocof> how does e coli makes it?
00:30:59 <kmc> ~especially not in a publicly logged channel
00:31:03 <kmc> I dunno
00:31:09 <kmc> genetic engineering
00:31:30 <kmc> https://www.ncbi.nlm.nih.gov/pubmed/31550507/
00:31:51 <cocof> dont worry i can send to imode if you scared to receive :)
00:32:02 <imode> nah.
00:32:03 <cocof> i can literally collect a lot.
00:32:50 <cocof> there was interesting article about magnets, how they can be used to change blood ph.
00:33:27 -!- atslash has quit (Ping timeout: 268 seconds).
00:34:12 <cocof> claims to kills anaerobic infections.
00:34:34 <imode> swallow an iron pellet and stand next to a strong magnet.
00:34:49 <imode> we'll see if you're cured.
00:35:01 <cocof> water molecule is affected by magnets
00:35:27 <imode> crankery detected.
00:36:45 <cocof> why?\
00:36:50 <cocof> just cause you too lazy?
00:39:02 <cocof> Physics shows that chemicals change weight under the influence of magnetic fields; so does water. More hydroxyl (OH-) ions are created to form calcium bicarbonate and other alkaline molecules. It is these molecules that help reduce acidity.
00:41:32 <b_jonas> "<shachaf> B C K W is more directly a duplicate/delete, thing, I guess." => can you explain why that is enough to make that base universal directly, without reducing them to SKI?
00:41:33 <imode> why did you come here.
00:47:46 <imode> b_jonas: B is application, C is parameter reversal (reordering), K is deletion, and W is duplication. you can perform the same reductions that you would in the lambda calculus.
00:48:42 <imode> http://www.cs.ox.ac.uk/people/samson.abramsky/pcpt.pdf
00:48:58 <imode> remove W, and it's no longer universal.
00:49:42 <b_jonas> imode: yes, I know it's no longer universal without W: the mockingbird book explains that
00:50:10 <b_jonas> hmm... or does it only explain why it's not universal without K?
00:53:19 <b_jonas> imode: hmm yes, those slides seem relevant
00:54:13 <cocof> i came here to ask, is it possible to program in a same way as you ride a bike?
00:54:20 <cocof> even if software is complex.
00:54:54 <cocof> simply sit and start writing.
00:54:55 <b_jonas> so basically if you want to eliminate a lambda from the head, then first you duplicate the parameter as many times with W as you need or drop it with K, and then inside the W-thing, you use BCI to build it?
00:55:01 <b_jonas> might work
00:55:07 <b_jonas> thanks for the link
00:55:21 <b_jonas> this could come useful the next time I make such a silly mistake as Amycus ...
00:59:51 <esowiki> [[Crazy]] https://esolangs.org/w/index.php?diff=66392&oldid=66390 * Vulture001 * (+1274) Added 99 bottles
01:00:47 <imode> no problem.
01:04:41 <esowiki> [[Combinatory logic]] https://esolangs.org/w/index.php?diff=66393&oldid=57586 * B jonas * (+166) /* External resources */
01:04:51 <b_jonas> let's put the link there so I can find it easier later
01:07:27 <b_jonas> "<imode> why are array languages classified under "unstructured", I wonder." => because old APL used to have goto and indirect goto, but no if-block or while-block statements
01:10:25 <b_jonas> "<imode> are any esolangs based on logic programming?" => just the one, Brachylog
01:11:49 <b_jonas> "<imode> companies actually use prolog, though." => CS companies use things that are way worse than prolog, believe me. if you ever work in one of them, you never trust any software ever.
01:16:47 <b_jonas> "<arseniiv> yesterday when I was trying to sleep at last, I thought I need to say to you all what nice people you are" => ah yes, I leave for a week and how much difference it makes
01:21:50 <b_jonas> "<QazNotQuaz> is there anything particular i need to do if i want to make a derivative of one of the languages on the wiki?" => yes. don't derive from brainfuck or any brainfuck-derivative.
01:22:44 -!- tromp has joined.
01:25:08 -!- tromp_ has quit (Ping timeout: 276 seconds).
01:29:19 -!- LKoen has quit (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”).
01:33:31 <b_jonas> ``` random-card norn # "<tswett[m]> Hey HackEso, do you know what a norn is?"
01:33:32 <HackEso> Norn's Annex \ 3(w/p)(w/p) \ Artifact \ ({(w/p)} can be paid with either {W} or 2 life.) \ Creatures can't attack you or a planeswalker you control unless their controller pays {(w/p)} for each of those creatures. \ NPH-R
01:34:02 <b_jonas> a named character on New Phyrexia
01:36:05 <b_jonas> also an unrelated named character in Nethack, a quest leader
01:38:00 -!- cocof has left.
01:44:16 <b_jonas> shachaf: hmm, another weird hypothetical time travel mechanism
01:46:19 <b_jonas> "<izabera> someone here wrote a terminal emulator i think" => I fixed a bug in one, does that count?
01:46:37 <b_jonas> or rather, I tracked down what causes the bug, which was the hard part. I didn't write the patch to fix it.
01:48:28 <Sgeo_> Also a species of creature in the Creatures series. I suspect that's where tswett[m] knows norn from
01:48:57 <Sgeo_> Oh tswett[m] said that already
01:49:38 <pikhq> Terminals are pretty tricky to implement.
01:50:16 -!- xkapastel has joined.
01:52:12 -!- FreeFull has quit.
02:12:22 -!- oerjan has joined.
02:16:46 <oerjan> <izabera> was it oerjan? <-- no.
02:17:47 * pikhq waves
02:18:36 * b_jonas waves to everyone
02:21:18 <int-e> oerjan feigns innocence... but of what...
02:21:42 <int-e> Ah.
02:23:00 <int-e> Terminal emulators could be zzo38 territory.
02:23:07 <pikhq> Possibly.
02:24:24 <int-e> (But zzo doesn't have a monopoly on weirdly low level, seemingly ancient technology)
02:32:17 -!- hppavilion[1] has quit (Ping timeout: 240 seconds).
02:33:59 * oerjan makes waves ~~~~~~~~~~~~
02:37:58 -!- lambdabot has quit (Remote host closed the connection).
02:38:22 -!- int-e has quit (Remote host closed the connection).
02:40:42 -!- lambdabot has joined.
02:42:47 -!- int-e has joined.
02:46:15 <int-e> ∿∿∿
02:53:20 <oerjan> `icode ∿∿∿
02:53:20 <HackEso> ​[U+223F SINE WAVE] [U+223F SINE WAVE] [U+223F SINE WAVE]
02:54:41 <int-e> it looks pretty good in the logs
02:55:09 <int-e> (and it's even in the fixed terminal font. it just doesn't look quite as nice)
04:16:45 <Sgeo_> No cosine wave?
04:24:29 <int-e> Sgeo_: apparently not. Must be an oversight. There seem to be no half waves either?
04:25:21 <int-e> Unicode is not very orthogonal (literally, in this case)
04:25:53 <int-e> (at least as far as orthogonality of functions is a literal rather than an abstract concept)
04:26:05 <oerjan> `wisdom orthog
04:26:07 <HackEso> That's not wise.
04:48:26 -!- Lord_of_Life has quit (Ping timeout: 240 seconds).
04:51:19 -!- Lord_of_Life has joined.
04:51:42 <shachaf> b_jonas: No, I don't have a precise idea of why BCKW works.
04:51:45 <shachaf> b_jonas: But I'd like to know.
05:04:12 <tswett[m]> I seem to remember that abstraction elimination is pretty easy with BCKW.
05:04:20 <tswett[m]> Let me try to remember how it goes.
05:07:33 <tswett[m]> \x.x is WK and \x.E is KE. So the only hard part is what \x.Ex(Fx) is.
05:08:39 <imode> the U combinator probably would be a better case study.
05:09:20 <imode> w.r.t "why is this combinator system universal"
05:11:57 <tswett[m]> Of course, \x.Ex(Fx) is W (\x.\y.Ex(Fy)), and \y.Ex(Fy) is B(Ex)F, and \x.B(Ex)F is \x.BBExF, which is \x.C(BBE)Fx, which is C(BBE)F.
05:11:59 <tswett[m]> And there you have it.
05:22:10 <int-e> How about BCKS
05:24:49 <int-e> That covers the four cases for \x.EF directly (x free/not free in E; x free/not free in F).
05:26:00 <int-e> `? drone
05:26:01 <HackEso> Drones are tools used to perform certain criminal actions that were not possible in ancient times.
05:26:11 <int-e> `? drone sex
05:26:13 <HackEso> Drone sex has never been observed in the wild; in fact it's rare to see drones in their natural habitat because they are extremely shy. Experiments with drones in captivity have only resulted in broken drones, and a rotor stuck in the ceiling. We are still looking for a biological explanation for the ever increasing drone population.
05:26:58 <int-e> (I just saw Friday's xkcd)
05:38:13 <Sgeo_> Ugh have to go write a bug telling someone they misread the equations in a spec. Although the spec's English language explanation is itself wrong.
05:39:46 <zzo38> In what spec?
05:40:16 <Sgeo_> X3D
05:40:33 <Sgeo_> https://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/lighting.html#Lightingon
05:41:32 <Sgeo_> The English text claims that diffuseColor modulates the texture. But for RGB and RGBA textures, I_D_rgb, the diffuseColor, isn't used
05:45:50 <int-e> Sgeo_: the text also claims that T_M modulates A_T and that's not reflected in the table either?
05:46:23 <int-e> (for Intensity+Alpha and RGBA)
05:53:34 <Sgeo_> The English in the (older) VRML spec seems to match the table http://gun.teipir.gr/VRML-amgem/spec/part1/nodesRef.html#ImageTexture
05:54:03 -!- oerjan has quit (Quit: Nite).
05:54:58 <int-e> TIL: replace, modulate, it's all the same :)
05:56:04 <int-e> (what I'm really wondering though is which of the two matches the intent of the specification... the text or the table)
05:57:21 <int-e> But I suppose that in practice, the table is more likely to be used in an implementation.
05:58:31 <zzo38> You should complain to whoever wrote the specification, then, since there is something wrong with the specification.
06:01:05 <Sgeo_> int-e, one implementation is matching the English text, writing up a bug report now, and another matches the table but doesn't bother attempting to determine if an image is RGB or intensity so assumes RGB
06:01:50 <Sgeo_> Instead providing an extra field not in the spec for the X3D author to say "Yeah, this is an intensity, not RGB"
06:03:20 <shachaf> I was saying before that K and W correspond directly to delete and duplicate.
06:03:29 <shachaf> And C corresponds to swap.
06:04:30 <shachaf> Which is like starting with a substructural logic and adding contraction and weakening and exchange.
06:05:04 <shachaf> And B presumably corresponds to some kind of modus ponens/composition/cut/whatever?
06:08:55 <int-e> B is (function) composition.
06:09:18 <int-e> So, yeah, logically a cut.
06:10:42 <int-e> Anyway, to me BMN = S(KM)N and CMN = SM(KN) are linear variants of S.
06:10:44 <shachaf> Right.
06:10:57 <shachaf> S certainly does double or triple duty.
06:12:07 <int-e> S is perfectly natural if you approach things from a perspective of abstraction elimination.
06:13:45 <int-e> And B and C are natural from the same point of view if you have a linear formalism.
06:14:38 <shachaf> I agree that S is natural.
06:33:47 <b_jonas> Sgeo_: isn't the sign wave there as a symbol for alternating current, like in the printed text of power supplies?
06:34:37 -!- imode has quit (Ping timeout: 245 seconds).
06:41:06 <int-e> this problem could be solved with a "mirror next character" modifier
07:03:05 -!- xkapastel has quit (Quit: Connection closed for inactivity).
08:46:29 <b_jonas> `? seal
08:46:30 <HackEso> seal? ¯\(°​_o)/¯
08:47:20 <b_jonas> seal is an abbreviation of sea lion.
09:29:53 -!- FreeFull has joined.
09:46:22 -!- sftp has quit (Excess Flood).
09:46:46 -!- sftp has joined.
10:41:37 -!- xkapastel has joined.
10:53:16 -!- kspalaiologos has joined.
10:58:12 -!- sftp has quit (Max SendQ exceeded).
10:58:36 -!- sftp has joined.
10:59:54 -!- atslash has joined.
11:31:29 -!- arseniiv has joined.
12:28:36 <fizzie> There will be a (hopefully short) fungot outage, doing hardware.
12:28:37 <fungot> fizzie: he has the better cakes, i may, from september, we have the time, to the hon. and learned friend the minister for the work he is doing to make sure that i have the very important bilateral relationship.
12:28:48 -!- fungot has quit (Quit: Coyote finally caught me).
12:29:57 -!- APic has quit (Ping timeout: 240 seconds).
12:31:02 <kspalaiologos> I've got (theoretically) my Malbolge interpreter in Malbolge up and running
12:31:27 <kspalaiologos> the problem is, it hogged all of my system memory, turned swapping, ate half of my disk quota and then I killed it
12:31:50 <kspalaiologos> and it's 50MB big
12:38:02 <int-e> kspalaiologos: using https://esolangs.org/wiki/Malbolge_Unshackled ?
12:38:51 <int-e> (Malbolge itself should never grow that big. I'd say can't but of course an implementation could be stupid about it...)
12:39:09 <kspalaiologos> yeah, I am using Malbolge Unshackled
12:39:22 <kspalaiologos> just a simplification to make it more understandable
12:40:08 -!- kpspalaiologos has joined.
12:40:24 <kspalaiologos> I'm switching clients
12:40:29 -!- kspalaiologos has quit (Remote host closed the connection).
12:40:43 -!- kpspalaiologos has quit (Client Quit).
12:41:03 -!- kspalaiologos has joined.
12:42:01 <kspalaiologos> continuing, I'm using dynamic rotation width interpreter
12:42:22 <kspalaiologos> I thought about going with fixed-width 20-big rotation interpreter
12:42:44 <kspalaiologos> but I don't really think it will do something about it.
12:53:28 -!- APic has joined.
13:43:05 -!- xkapastel has quit (Quit: Connection closed for inactivity).
14:17:36 <esowiki> [[Resource]] https://esolangs.org/w/index.php?diff=66394&oldid=66385 * A * (+48) /* Useful Instructions (I am not sure whether they are useful in restricted source contests though) */
14:42:28 -!- imode has joined.
15:18:17 -!- APic has quit (Ping timeout: 240 seconds).
15:25:43 <imode> I wonder. it's possible to process incredibly large datasets using streaming to avoid holding the whole set in memory at a particular point, but I wonder if the same is true for code.
15:26:26 <imode> if I was only allowed to hold 64 instructions in memory at a given point, but my whole program was much, much larger, I couldn't really "stream" it.
15:26:54 <imode> streaming kind of implies a linear traversal from the start to the end of a dataset, but control flow isn't linear.
15:27:29 <imode> so I wonder what a language like brainfuck would look like if you couldn't "jump back", per se.
15:27:47 <imode> once you've read and executed an instruction, it's gone.
15:31:10 <kspalaiologos> there would be no way to make a loop
15:31:16 <kspalaiologos> unles you come up with some clever idea
15:31:48 <imode> you can create a loop _if_ your language has access to the instruction stream and can enqueue instructions.
15:31:59 <kspalaiologos> that's actually a clever idea
15:32:13 <imode> basically inject instructions to be executed later on.
15:32:14 <kspalaiologos> but have you got any "working" example?
15:32:17 <kspalaiologos> I believe that
15:32:22 <imode> kinda, I guess? Modal does this.
15:32:26 <kspalaiologos> you cant make a conditional loop
15:32:30 <kspalaiologos> even if you can inject instructions
15:32:44 <FireFly> well, conditionally inject an instruction :P
15:32:45 <kspalaiologos> it hardly depends on isa tho, because the brainfuck-based one would have no chance of this happening
15:32:49 <imode> https://git.imode.tech https://imode.tech/projects/modal.html
15:33:06 <imode> this language does term rewriitng by placing the whole expression in a queue.
15:33:18 <imode> s/rewriiitng/rewriting
15:33:35 <tswett[m]> Sounds just a little bit like ///.
15:33:36 <tswett[m]> Y'know, rather than BCKW or SKI, I like BCIKSW.
15:33:47 <imode> pretty much what FireFly said, just conditionally inject some instructions.
15:34:26 <kspalaiologos> this language would require having a command
15:34:33 <kspalaiologos> to skip chunk of N instruction forward
15:34:43 <kspalaiologos> *s
15:34:55 <imode> yeah, you could probably use delimiters to mark the sections.
15:36:02 <kspalaiologos> it's perfectly doable
15:36:06 <kspalaiologos> I like it alot
15:36:19 -!- APic has joined.
15:36:43 <kspalaiologos> but
15:36:49 <kspalaiologos> you could insert just one instruction at the time
15:37:06 <kspalaiologos> unless you have a instruction buffer
15:37:16 <kspalaiologos> to store the instructions untill you issue a run command
15:38:03 <imode> hrm.
15:38:23 <kspalaiologos> to minimally represent such machine, I'd use something subleq-like
15:38:39 <kspalaiologos> but, you have to use harvard architecture then
15:38:57 <kspalaiologos> so another instruction has to be added, possibly a memory poke
15:39:18 <kspalaiologos> and the subleq would need to be tweaked too, to change it to an conditional insert operation
15:39:30 <kspalaiologos> (instead of an impossible jump)
15:39:44 <imode> Iiii don't think you need to add another instruction memory. the point is you have a single instruction memory, a finite buffer to hold linear reads through the instruction memory, and you're only allowed to read the instruction memory _once_. assume main memory can't hold the entire contents of the instruction memory, either.
15:40:04 <kspalaiologos> it's defeat of purpose I suppose
15:40:16 <imode> you seem to give up a lot.
15:40:39 <kspalaiologos> i'm not giving up
15:40:44 <kspalaiologos> why make your life easier, when you can make it harder
15:40:49 <imode> attaboy.
15:41:12 <imode> I think the issue would be conditional instruction insertion, yeah.
15:41:34 <kspalaiologos> I first thought of this idea as of physical processor
15:41:38 <imode> if your execution unit held, say, 32 instructions.
15:41:57 <imode> you could load branches and larger portions in pieces and execute them incrementally.
15:42:03 <kspalaiologos> yup
15:42:09 <kspalaiologos> that's the good solution for me
15:42:20 <imode> but at that point you'd literally just be emulating paging from disk.
15:42:37 <kspalaiologos> continuing with the cpu, it would have a bus transferring instructions and 32-byte buffer
15:42:49 <kspalaiologos> when you send a store instruction it adds a character to the buffer
15:43:07 <kspalaiologos> the cpu interprets zero as a nop, so you flush the buffer to cpu pipeline by padding out the buffer with N bytes
15:43:23 <imode> yeah, which corresponds to a run of 0's.
15:43:27 <imode> in the instruction memory.
15:43:40 <imode> I think you can treat the head of the buffer as the "fetch area", too.
15:43:44 <kspalaiologos> yeah
15:43:56 <imode> meaning if an instruction hits the head of the buffer (address N for memory size N+1).
15:44:02 <imode> you execute it.
15:44:23 <imode> that sends the appropriate signals to the control unit, and you can treat the whole buffer as a register area I guess?
15:44:23 <kspalaiologos> that seems like a good idea to eliminate the flush instruction
15:44:39 <kspalaiologos> it would make things really sticky though
15:45:02 <imode> you could probably just add a flush instruction. I don't know if you'd need it, though.
15:45:08 <kspalaiologos> it's not needed
15:45:14 <kspalaiologos> I've been talking about the register area
15:45:36 <kspalaiologos> it would resemble befunge alot
15:45:57 <kspalaiologos> so the cpu would get pumped, say, 10x10 "2d array" of data
15:46:00 <imode> meaning, code size and such. if I was concerned about instruction memory sizes, I'd want to reduce the amount of times I needed to add nops.
15:46:22 <imode> 32 bytes of all zeroes is expensive.
15:46:27 <kspalaiologos> and it would get executed in von Neumann architecture style in a huge playground
15:46:34 <kspalaiologos> so you could add a flush instruction, why not
15:46:52 <kspalaiologos> but, looking forward
15:47:21 <kspalaiologos> it may get impractical as heck as a whole idea
15:47:32 <imode> I dunno. it seems pretty practical.
15:47:42 <imode> linear reads for certain devices are incredibly fast.
15:47:46 <imode> while random seeks aren't.
15:47:58 <kspalaiologos> I'm talking about the way you program it
15:48:03 <imode> aha.
15:48:05 <kspalaiologos> it seems a bit tough to get something big up and running
15:48:11 <imode> yeah... you'd definitely need some kind of delimiter.
15:48:13 <kspalaiologos> it would be quite performant
15:48:47 <imode> i.e some kind of ?(...) instruction format that enqueues the stuff between the parens/delimiters if, say, the current memory cell is != 0.
15:49:33 <imode> hm.
15:49:51 <kspalaiologos> this seems right
15:50:23 <imode> actually.
15:50:50 <imode> it could both enqueue the stuff inside the delimiters, as well as another ? and a copy of the body.
15:50:59 <imode> so ?(...) -> ...?(...)
15:51:06 <imode> this is how you'd form loops.
15:51:13 <kspalaiologos> so you'd make a do...while
15:51:19 <imode> nah this is just while
15:51:19 <kspalaiologos> i think it's not a good idea
15:51:25 -!- fungot has joined.
15:51:34 <imode> say you have ?(1,2+)
15:51:47 <imode> and the condition for ? is true.
15:51:58 <imode> then you'd enqueue 1,2+?(1,2+)
15:51:58 <kspalaiologos> so if stack has 1 on top, push 1, push 2 and sum it
15:52:06 <kspalaiologos> so stack has 3 at the top
15:52:13 <imode> yup.
15:52:17 <kspalaiologos> but at the first one, you'd first put 3 at the top
15:52:24 <kspalaiologos> then check is the value truthy
15:52:31 <kspalaiologos> it is, so execute the block again
15:52:38 <kspalaiologos> so you have a 3 and a 3 on stack?
15:52:48 <imode> yeah. and this would keep going on.
15:52:54 <kspalaiologos> for how long?
15:53:00 <imode> I mean, forever.
15:53:03 <kspalaiologos> until you have a truthy value?
15:53:10 <kspalaiologos> so well, forever
15:53:20 <imode> 1 ?(1) is an infinite loop.
15:53:22 <kspalaiologos> it doesn't seem quite right
15:53:28 <imode> because you first push 1.
15:53:30 <kspalaiologos> so ?(1) is infinite loop too?
15:53:34 <kspalaiologos> brb, excuse me
15:53:36 <imode> no, because your stack is empty.
15:54:31 <imode> you first push 1, then you pop the stack and check if it was 0 or not. if it was truthy, enqueue 1?(1). if it was falsy, just dequeue everything between delimiters.
15:55:09 <imode> so your stack alternates between empty and 1, and your instruction queue alternates between ?(1) and 1?(1)
15:55:42 <imode> huh.
15:55:54 <imode> that's actually really interesting.
15:56:59 <kspalaiologos> I get it now
15:57:02 <kspalaiologos> but if you had
15:57:06 <imode> to make an 'if' statement, you could do <condition> ?(<body> <falsy>)
15:57:14 <kspalaiologos> a tape instead of a stack, proper movement and the incrementation
15:57:17 <kspalaiologos> you have literally brainfuck
15:57:28 <kspalaiologos> the if statement is condition[body[-]]
15:57:40 <imode> 1, 2 < ?(1, 2+ 0)
15:57:56 <kspalaiologos> but, doesn't it lose it's linearity?
15:58:01 <kspalaiologos> you have to store the loop buffer somewhere
15:58:14 <imode> that'd get turned into 1, 2 + 0 ?(1, 2+ 0)
15:58:14 <kspalaiologos> that is at least as big as a loop
15:58:36 <kspalaiologos> and the nested ifs/loops would kill the processor because of amount of cache required
15:58:44 <imode> remember, we are _always_ reading from the instruction cache.
15:58:52 <imode> unless we tell the processor not to.
15:58:56 <kspalaiologos> hm
15:59:03 <imode> and yeah you'd need a buffer large enough to hold the loop in question.
15:59:05 <kspalaiologos> so the cache would have to be really big
15:59:07 <imode> and other stuff.
15:59:11 <kspalaiologos> to do something measurable
15:59:14 <imode> well, no, you could always load it in pieces.
15:59:23 <kspalaiologos> inpractical imo
15:59:35 <imode> 32 bytes would be enough. you could just conditionally "switch on" or "switch off" the read.
15:59:45 <kspalaiologos> yeah
15:59:51 <kspalaiologos> but imagine you had for example
16:00:03 <kspalaiologos> a condition checking is there enough memory to run progra
16:00:04 <kspalaiologos> m
16:00:12 <kspalaiologos> yes > go ahead, no > bail out
16:00:14 <imode> why would you need that, you can always ensure there is.
16:00:19 <kspalaiologos> illustration
16:00:23 <kspalaiologos> i cant come up with better example
16:00:40 <kspalaiologos> you have to put the program code inside the if clause, because if you placed it behind it
16:00:47 <kspalaiologos> there would be no way to exit the program in "no" case
16:00:53 <kspalaiologos> so there would exist some breaks in pages
16:00:56 <imode> so assume there's a large loop with a small conditional.
16:01:07 <imode> 1?(...), for example.
16:01:11 <kspalaiologos> yeah
16:01:44 <imode> there are ways to break up a larger loop into multiple smaller loops by essentially chaining together constructed if statements.
16:03:02 <imode> all you have to do is pass a condition from the start of the loop to each of the pieces, which will in turn pass the condition down to each of the pieces after it.
16:03:11 <imode> all the way until you reach the condition again.
16:03:40 <imode> there may even be a shorter way to do this using nesting.
16:03:49 <kspalaiologos> I've been talking about nesting
16:03:58 <kspalaiologos> but yeah
16:04:03 <kspalaiologos> I think it's a gamechanger
16:04:07 <imode> right. this applies to any loop regardless of nesting depth.
16:05:38 <kspalaiologos> I can't really think in that matter
16:51:13 <imode> while loops with conditionals require duplication of their conditions.
16:51:29 -!- Lord_of_Life has quit (Ping timeout: 268 seconds).
16:51:34 -!- Lord_of_Life_ has joined.
16:51:50 <imode> ,10:,0=~?(,1-:,0=~) here's a counter from 10 to 0.
16:52:57 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
16:58:33 <imode> https://hatebin.com/cemkjeaqfw
16:58:38 <imode> a sample execution trace.
16:59:30 <imode> whoops, minor error. fixed: https://hatebin.com/yqtkiqoaqo
17:00:57 <imode> I don't think there's a way to do this _without_ duplication of the conditional.
17:02:50 <imode> if/else if/else chains are also possible.
17:06:33 <imode> what's interesting is that do-while loops are kinda cool in this spec..
17:06:48 <imode> literally just 1?(<body> <condition>)
17:07:34 <imode> you can probably get rid of ? as well, just using the beginning delimiter ( as ?, much like brainfuck does.
17:09:18 <imode> this.. also kinda weirdly mirrors how brainfuck's while loops work... huh.
17:10:17 <imode> that's interesting.
17:11:24 <imode> that means there's some interpreter of brainfuck that could only read once from its instruction memory, provided it has a circular buffer to hold instructions.
17:11:46 <imode> and that all loops are partitioned to fit in that circular buffer.
17:14:08 <imode> 'break', in this scheme, can't exist. because loop bodies are unpacked or discarded, with no end delimiter to seek to.
17:15:16 -!- Sgeo__ has joined.
17:16:44 <imode> almost more elegant..
17:16:57 <imode> no need for an instruction pointer if you accept an instruction stream.
17:17:11 <imode> and no need to rewind if you just enqueue your instructions over and over again.
17:18:02 -!- Sgeo_ has quit (Ping timeout: 240 seconds).
17:18:25 <imode> you pay in code size, though.
17:18:48 <imode> mainly duplicated conditionals for while loops. if statements and do-while loops are pretty good, though.
17:20:27 <imode> this is interesting regarding things like character input. the instruction stream could very well be a keyboard.
17:22:35 <imode> what's also interesting is the idea of turning the read on or off. you can calculate ahead of time how much instruction memory is required for a particular program
17:24:56 -!- sftp has quit (Excess Flood).
17:25:51 <imode> while I don't think you'd gain anything (other than fast linear read performance) from this scheme, it is interesting because if you take away the idea of the instruction memory being always present, 'break' et. al. is not an option.
17:27:23 -!- sftp has joined.
17:29:11 <imode> _unless_ you include the end delimiter.
17:31:40 <kspalaiologos> it mirrors brainfuck loops
17:31:49 <imode> right. hence the above.
17:31:54 <kspalaiologos> because you purposely started with brainfuck ISA
17:32:03 <imode> not really, no.
17:32:10 <kspalaiologos> I've pointed it out before
17:32:21 <imode> didn't start out with it, no. it's a stack machine.
17:32:37 <kspalaiologos> "you have literally brainfuck", "the if statement is condition[body[-]]"
17:32:52 <kspalaiologos> yup, we started out with stack machine
17:33:15 <kspalaiologos> but the model a bit persisted
17:33:29 <imode> you can't really have anything besides brainfuck-style loops in this case, though. 'break' is impossible to formulate without a large amount of code.
17:33:30 -!- kspalaiologos has quit (Quit: Leaving).
17:33:54 <imode> he's annoying.
18:04:45 <b_jonas> fungot, have they solved the Brexit situation while I was aware?
18:04:45 <fungot> b_jonas: what does apply do its magic?" choices are " fnord" without finding anything wrong with that.
18:08:31 <Sgeo__> "To get specification conform lighting calculations set the diffuseColor to 1 1 1."
18:08:33 <Sgeo__> asdfkjhaskljfhakwehriusrhwiwu3erw
18:13:59 <Sgeo__> https://github.com/create3000/x_ite/issues/50
18:20:59 -!- sftp has quit (Excess Flood).
18:21:27 -!- sftp has joined.
18:47:45 <zzo38> Do you like the story I wrote (and also the footnotes) and have a comment of it?
18:49:21 <zzo38> Are you going to set up a NNTP for esolang? If you do not want to, I can do according to your request, but I would recommend that you do on the domain name for esolang
18:52:03 <b_jonas> which story? is this another chapter of that fantasy role-playing game with the homunculus wizard apprentice who isn't actually a homunculus but more like a mindflayer or something?
19:05:24 <zzo38> You may be confusing with an earlier one, which is not the one I mean, if you mean what I think you mean.
19:05:35 <zzo38> Rather, I mean the one starting at: http://zzo38computer.org/gurpsgame/1.ui/wiki?name=Session+1
19:06:39 <zzo38> (Session 24 is the last chapter so far.)
19:08:50 <zzo38> (And I never wrote about a homunculus wizard apprentice, I think)
19:09:45 <b_jonas> I know, he was never a homunculus, I just assumed that he's a homunculus for some reason
19:10:12 <zzo38> OK
19:10:18 <b_jonas> probably because homunculuses sometimes serve as a wizard apprentice
19:10:31 <b_jonas> or maybe wizard's servant rather
19:13:23 <zzo38> (I don't know if possibly a Frequently Asked Questions section should be added, maybe, since, some people have some questions. Anyone who has the question, put it in so that we know what the question is.)
19:17:00 <zzo38> Did you see any part of this story I linked now?
19:23:19 <b_jonas> I had seen some parts earlier, but not the recent chapters
19:25:04 <zzo38> OK. Do you have comments of it? (whether the earlier or the recent ones)
19:25:34 <b_jonas> no
19:25:48 <zzo38> OK
19:26:47 <b_jonas> also, as for characters, I've seen a restaurant menu sign, printed in somewhat large size on a fixed sign (rather than a movable paper menu), where "fi" in words like "fish" were replaced by a crossed out box
19:28:06 <zzo38> Badly implemented ligaturing, I suppose
19:28:18 <zzo38> (maybe)
19:28:33 <b_jonas> yep
19:29:12 <b_jonas> but this is the first time I saw it in print, rather than on computer screen
19:30:44 <zzo38> Ligaturing should be implemented in the font metric file (for arbitrary sequences of characters) only, and if trying to implement a font with compatible metrics, they would have to ensure all of the ligatures are also implemented, or else to make the glyphs in a way that a kern will work just as well.
19:31:11 <b_jonas> also, after this vacation I had, if anyone tries to claim that "SS" is still the uppercase of "ß" in any real sense, I won't believe them. I've seen lots of different signs using "ß" in all-uppercase text.
19:37:24 <zzo38> OK
19:54:37 <b_jonas> other random observations from vacation. in the Dortmund hbf station, the S-Bahn station has platforms on both sides of the S-Bahn, it opens doors on both sides, but people are directed to enter the train on one side and leave on the other side.
19:55:01 <b_jonas> this is an interesting arrangement for a high throughput train station that I'd never seen before. I like it.
20:25:31 <esowiki> [[ACIDIC]] M https://esolangs.org/w/index.php?diff=66395&oldid=44458 * Voltage2007 * (-2) /* Commands */ Grammatical errors
20:27:25 <esowiki> [[ACIDIC]] M https://esolangs.org/w/index.php?diff=66396&oldid=66395 * Voltage2007 * (+11) /* Examples */ Fixed spacing
20:28:38 <esowiki> [[ACIDIC]] M https://esolangs.org/w/index.php?diff=66397&oldid=66396 * Voltage2007 * (+0)
21:19:14 -!- arseniiv has quit (Ping timeout: 240 seconds).
21:25:29 <imode> https://hatebin.com/qizljpgdlm
21:26:07 <imode> conditional breaks add a lot.
21:26:20 -!- heroux has quit (Ping timeout: 276 seconds).
21:27:31 -!- heroux has joined.
21:35:31 -!- heroux has quit (Read error: Connection reset by peer).
21:40:33 -!- heroux has joined.
21:50:23 -!- heroux has quit (Read error: Connection reset by peer).
21:51:01 -!- heroux has joined.
21:53:19 -!- Lykaina has quit (Quit: leaving).
21:58:15 -!- heroux has quit (Read error: Connection reset by peer).
21:58:25 -!- heroux has joined.
21:58:27 <zzo38> Some people are discussing parsers on comp.lang.postscript, and I think I might have started it.
21:58:39 <b_jonas> nice
22:15:36 -!- heroux has quit (Read error: Connection reset by peer).
22:16:49 -!- heroux has joined.
22:18:15 -!- heroux has quit (Read error: Connection reset by peer).
22:21:47 -!- heroux has joined.
22:22:35 -!- heroux has quit (Read error: Connection reset by peer).
22:26:48 -!- heroux has joined.
22:42:45 -!- heroux has quit (Read error: Connection reset by peer).
22:43:12 -!- heroux has joined.
22:46:04 <Sgeo__> Is this rude or am I managing to not let my annoyedness show?
22:46:05 <Sgeo__> "Am I understanding correctly that X_ITE's behavior is an intentional deviation from the spec? I wonder if there could be an option or some code to enable closer conformance to the spec (although I understand there might be performance problems determining how many channels an image actually has), or at least some documentation on intentional deviations from spec.
22:46:05 <Sgeo__> "
23:13:47 <esowiki> [[Emojicode]] N https://esolangs.org/w/index.php?oldid=66398 * MiroslavRD * (+19) Redirected page to [[Emoji]]
23:17:14 <esowiki> [[Sashleyfuck]] M https://esolangs.org/w/index.php?diff=66399&oldid=66226 * MiroslavRD * (-16)
23:17:50 <esowiki> [[Hello world program in esoteric languages]] M https://esolangs.org/w/index.php?diff=66400&oldid=66391 * MiroslavRD * (+215)
23:29:54 <esowiki> [[Sashleyfuck]] M https://esolangs.org/w/index.php?diff=66401&oldid=66399 * MiroslavRD * (+58)
23:30:58 <esowiki> [[Sashleyfuck]] M https://esolangs.org/w/index.php?diff=66402&oldid=66401 * MiroslavRD * (+13)
23:31:29 <zzo38> I think that is fine, although I do not know the answer of the quoted question.
23:34:57 -!- heroux has quit (Read error: Connection reset by peer).
23:35:32 -!- heroux has joined.
23:40:02 <Sgeo__> I mean, it makes sense that what X_ITE does is much better than what the spec says to do. But it's still against spec
23:40:19 <Sgeo__> (X_ITE uses diffuseColor regardless of if the texture is RGB or grayscale)
23:41:02 <zzo38> I do think it should be documented, and a compatibility mode would be good, I think, but I don't maintain that software.
23:41:22 -!- heroux has quit (Read error: Connection reset by peer).
23:46:27 -!- heroux has joined.
2019-09-30
00:00:51 -!- heroux has quit (Read error: Connection reset by peer).
00:01:16 -!- heroux has joined.
00:06:09 -!- heroux has quit (Read error: Connection reset by peer).
00:06:21 -!- heroux has joined.
00:15:26 <imode> fraglets are weird.
00:25:08 -!- Sgeo_ has joined.
00:27:56 -!- Sgeo__ has quit (Ping timeout: 240 seconds).
00:31:35 -!- heroux has quit (Ping timeout: 276 seconds).
00:32:30 -!- heroux has joined.
00:53:41 <imode> separating the description of computations and the actual computations is what separates declarative from imperative.
00:56:09 -!- Sgeo__ has joined.
00:59:32 -!- Sgeo_ has quit (Ping timeout: 276 seconds).
01:02:30 -!- heroux has quit (Read error: Connection reset by peer).
01:03:06 -!- heroux has joined.
01:05:22 -!- heroux has quit (Read error: Connection reset by peer).
01:08:07 -!- heroux has joined.
01:09:52 -!- Lykaina has joined.
01:25:36 -!- imode has quit (Ping timeout: 240 seconds).
01:28:51 -!- FreeFull has quit.
01:29:04 -!- MDude has joined.
01:33:25 -!- heroux has quit (Read error: Connection reset by peer).
01:33:40 -!- heroux has joined.
02:24:22 -!- heroux has quit (Read error: Connection reset by peer).
02:24:37 -!- heroux has joined.
02:33:54 <zzo38> Now a Hamster archive is available of the story I linked to earlier, in case you want to download the entire story. (I also wrote a shell script to export it automatically.)
02:34:26 -!- heroux has quit (Read error: Connection reset by peer).
02:34:37 -!- heroux has joined.
02:39:38 -!- heroux has quit (Read error: Connection reset by peer).
02:39:53 -!- heroux has joined.
02:43:43 -!- imode has joined.
02:59:00 -!- heroux has quit (Read error: Connection reset by peer).
02:59:35 -!- heroux has joined.
03:01:44 -!- heroux has quit (Read error: Connection reset by peer).
03:04:34 -!- heroux has joined.
03:06:38 -!- heroux has quit (Read error: Connection reset by peer).
03:09:35 -!- heroux has joined.
03:24:04 -!- Sgeo_ has joined.
03:27:07 -!- Sgeo__ has quit (Ping timeout: 245 seconds).
03:45:00 -!- heroux has quit (Read error: Connection reset by peer).
03:45:12 -!- heroux has joined.
03:52:26 -!- moony has quit (Ping timeout: 240 seconds).
03:53:28 -!- moony has joined.
04:20:23 -!- imode has quit (Ping timeout: 276 seconds).
04:23:04 -!- heroux has quit (Read error: Connection reset by peer).
04:28:08 -!- heroux has joined.
04:47:07 -!- heroux has quit (Ping timeout: 245 seconds).
04:51:17 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
04:51:22 -!- heroux has joined.
04:54:06 -!- Lord_of_Life has joined.
04:59:32 -!- heroux has quit (Read error: Connection reset by peer).
04:59:46 -!- heroux has joined.
05:06:43 -!- imode has joined.
05:39:02 -!- heroux has quit (Write error: Connection reset by peer).
05:39:26 -!- heroux has joined.
05:47:59 -!- heroux has quit (Read error: Connection reset by peer).
05:53:03 -!- heroux has joined.
05:57:22 -!- heroux has quit (Read error: Connection reset by peer).
05:58:04 -!- heroux has joined.
06:42:35 -!- LKoen has joined.
06:47:26 <esowiki> [[Hello world program in esoteric languages]] M https://esolangs.org/w/index.php?diff=66403&oldid=66400 * JonoCode9374 * (+5) Fixed alphabetical order and made language header a link (wrapped it in [[]])
06:50:01 <esowiki> [[Hello world program in esoteric languages]] https://esolangs.org/w/index.php?diff=66404&oldid=66403 * JonoCode9374 * (+57) Added new Keg variant (8 bytes SBCS)
07:20:50 -!- imode has quit (Ping timeout: 240 seconds).
07:25:25 -!- b_jonas has quit (Quit: leaving).
08:30:49 -!- LKoen_ has joined.
08:33:53 -!- LKoen has quit (Ping timeout: 246 seconds).
08:34:07 -!- LKoen_ has quit (Remote host closed the connection).
08:37:23 -!- kspalaiologos has joined.
08:37:50 <kspalaiologos> Hi
09:00:25 -!- cpressey has joined.
09:41:56 -!- LKoen has joined.
10:20:10 -!- LKoen has quit (Remote host closed the connection).
10:21:10 -!- Sgeo__ has joined.
10:24:02 -!- Sgeo_ has quit (Ping timeout: 240 seconds).
11:21:28 -!- ArthurStrong has joined.
11:23:10 -!- arseniiv has joined.
12:35:11 -!- Sgeo_ has joined.
12:37:57 -!- Sgeo__ has quit (Ping timeout: 240 seconds).
12:48:37 -!- kspalaiologos has quit (Ping timeout: 265 seconds).
12:54:49 -!- xkapastel has joined.
12:56:56 -!- LKoen_ has joined.
13:01:48 -!- kspalaiologos has joined.
13:03:40 -!- kspalaiologos has quit (Client Quit).
13:03:59 -!- kspalaiologos has joined.
13:38:40 -!- PaniniTheDevelop has joined.
13:39:20 <PaniniTheDevelop> finally i connected to irc
13:40:12 <APic> Congratulations
13:45:51 -!- PaniniTheDevelop has changed nick to PaniniTheDev.
13:57:12 <esowiki> [[EmojiCoder]] https://esolangs.org/w/index.php?diff=66405&oldid=45403 * Dtuser1337 * (+24)
13:58:00 <esowiki> [[EmojiCoder]] https://esolangs.org/w/index.php?diff=66406&oldid=66405 * Dtuser1337 * (+17)
14:39:16 -!- kritixilithos has joined.
14:41:27 <kritixilithos> computational class question: how would a language be classified if it's between two classes? eg: posix regex, it can match the context sensitive wordword but can't match the context-free a^nb^n
14:45:42 -!- LKoen_ has quit (Remote host closed the connection).
14:46:16 -!- Sgeo__ has joined.
14:49:12 -!- Sgeo_ has quit (Ping timeout: 245 seconds).
14:53:36 <PaniniTheDev> wtf
14:53:44 -!- PaniniTheDev has left.
15:05:01 -!- kspalaiologos has quit (Quit: Leaving).
15:29:33 <cpressey> kritixilithos: It's entirely possible that, between any two classes, there is another class, but it might not have an established name; in which case, describing it in words (like you just did) might be the best you can do (and is totally fine to do in any case)
15:36:22 -!- kspalaiologos has joined.
15:38:05 <shachaf> I don't think there's any class between the two classes {} and {a}
15:38:38 <Taneb> shachaf: what about semi-{a}
15:38:55 <shachaf> what's that twh
15:39:39 <Taneb> It can recognize a but sometimes can't recognize ¬a
15:42:31 -!- imode has joined.
15:46:11 -!- ArthurStrong has quit (Quit: leaving).
15:46:26 <kritixilithos> cpressey: ah, thanks
15:47:16 -!- Sgeo has joined.
15:50:21 -!- Sgeo__ has quit (Ping timeout: 265 seconds).
15:57:48 -!- cpressey has quit (Quit: A la prochaine.).
16:22:14 -!- kritixilithos has quit (Quit: :q).
16:35:25 <arseniiv> I’d also say that the first class shouldn’t be called “context-sensitive” because it’s not the entire context-sensitive languages class; as it contains (the entire) context-free languages class. So that should be a class I’d even not call an inbetween one, it’s more interesting class, but kritixilithos is left
16:47:26 -!- xkapastel has quit (Quit: Connection closed for inactivity).
16:49:04 -!- kpspalaiologos has joined.
16:49:08 -!- kpspalaiologos has quit (Read error: Connection reset by peer).
16:50:33 <kspalaiologos> I just realised how many "famous people in esolang community" are there
16:50:54 -!- Lord_of_Life_ has joined.
16:51:53 <imode> lotta people have a lotta langs.
16:53:05 -!- Lord_of_Life has quit (Ping timeout: 276 seconds).
16:53:48 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
16:56:17 <kspalaiologos> tfw the only measurable thing I made in esolangs is json formatter webservice in brainfuck
16:56:19 -!- FreeFull has joined.
16:56:26 <kspalaiologos> C compiler targeting brainfuck, and thats pretty much it
16:56:30 <kspalaiologos> and a few assemblers
16:56:59 <imode> keep at it.
16:57:04 <kspalaiologos> I'd really like to discover some nice and creative esolangs, but the spam at wiki, my gosh
16:57:20 <kmc> i made a strange little lang that was implemented by some other people, and ended up in a published paper or two
16:57:32 <kmc> but it wasn't particularly designed to be eso-
16:57:39 <kspalaiologos> can you tell me the name tho?
16:57:51 <kmc> more of a very simple proof of concept of something
16:57:53 <kmc> also not original
16:57:55 <kmc> http://esolangs.org/wiki/Qoppa
16:58:23 <kmc> i've done a bunch of other esoprogramming, e.g. http://mainisusuallyafunction.blogspot.com/2014/02/x86-is-turing-complete-with-no-registers.html
16:58:30 <kspalaiologos> it sounds really close to my langauge's equivalent of sh*t
16:58:35 <kspalaiologos> no offense tho
16:58:39 <kspalaiologos> (by the name)
16:59:13 <kmc> ok
16:59:24 <kmc> fine by me
16:59:48 <kspalaiologos> I've seen ShaFuck on the wiki
16:59:52 <kspalaiologos> unfortunately it's biased
16:59:59 <kspalaiologos> and it's so simple to write programs in it
17:00:46 <imode> define biased.
17:00:53 <kspalaiologos> has a loophole
17:01:00 <kspalaiologos> that can be exploited to eaisly write programs in it
17:01:07 <kspalaiologos> in a way that author didn't intend to
17:01:25 <kspalaiologos> (just to clarify, the author wanted the language to be insane to program)
17:03:42 <kspalaiologos> I just thought about something quite interesting
17:04:07 <kspalaiologos> slashes (///) without regexps, but with some form of brainfuck in place instead of them
17:04:27 <kspalaiologos> that would process the string and pass it forward
17:04:44 <kspalaiologos> the input would have to be pre-supplied by prepending the program with it
17:04:56 <kspalaiologos> and the output would be performed just at the end
17:08:17 <fizzie> Well, there's just that one ShaFuck "vulnerability", which is easy to fix and arguably not even part of the spec.
17:14:29 <shachaf> What's the vulnerability?
17:21:25 -!- Sgeo_ has joined.
17:24:12 -!- Sgeo has quit (Ping timeout: 245 seconds).
17:26:28 -!- sleepnap has joined.
17:27:48 <arseniiv> <kspalaiologos> I just realised how many "famous people in esolang community" are there => IIRC alas FALSE author isn’t here. FALSE doesn’t seem that outstanding or/and famous but it just doesn’t go from my mind when I think about famous esolanging stuff
17:28:28 <kspalaiologos> but we have mr. Pressey
17:28:35 <kspalaiologos> mr. Tromp
17:28:49 <kspalaiologos> who made BLC, one of my most loved esolangs
17:44:53 <arseniiv> ah, I’ve seen BLC, minimalistic
17:53:18 -!- gitlogger has joined.
17:53:33 <kspalaiologos> I wouldnt call it minimalistic
17:53:38 <kspalaiologos> I mean
17:53:46 <kspalaiologos> it really depends on how we define minimalistic
17:53:57 <kspalaiologos> programs in BLC are really small and that's the main reason I like this language
17:54:06 <kspalaiologos> even the smallest program carries a lot of entropy with itself
17:54:07 -!- gitlogger has quit (Remote host closed the connection).
17:54:36 <imode> the implementation is complicated, though.
17:55:00 -!- gitlogger has joined.
17:55:02 <kspalaiologos> yeah, I can't deny that
18:04:24 <kspalaiologos> Honestly, I can't find a good use for my "amazing" idea
18:04:36 <imode> which is?
18:05:12 <kspalaiologos> I'm talking about the idea I presented someone earlier
18:05:21 <kspalaiologos> of the substitution based language
18:07:56 <imode> interesting, mind recapping.
18:14:06 -!- LKoen has joined.
18:14:38 -!- b_jonas has joined.
18:14:56 <b_jonas> hello all
18:15:22 <b_jonas> `welcome PaniniTheDev
18:15:23 <HackEso> PaniniTheDev: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: <https://esolangs.org/>. (For the other kind of esoterica, try #esoteric on EFnet or DALnet.)
18:15:34 <b_jonas> Yeah, you know that already, you came from the Wiki.
18:16:02 <imode> o/
18:17:49 <fizzie> shachaf: The spec disallows comments, but the implementation doesn't actually check for comments in code that's not executed, so essentially you just have to brute-force out some string that hashes to "+>[...junk...]<" and use that block to represent a +. Plus a few extra details (like making > into >>, and making sure there are no []s in that junk).
18:18:22 <fizzie> "Comments" being any byte that's not +-<>.,[]
18:20:13 <b_jonas> kspalaiologos, kmc: IMO creating a few good esolang-related things is a much better way to contribute than creating a hundred worthless pages on the wiki about supposed languages like our village in Norway does
18:20:57 <b_jonas> there are probably only two people who have created more than one really interesting esolangs that are different from each other
18:21:43 <b_jonas> and unless you can come up with something really revolutionary, creating new esolangs isn't the best thing to do. I value it much higher if you use existing esolangs, or just use non-eso programming languages in interesting ways
18:21:50 <b_jonas> as in obfuscated programming
18:22:07 <shachaf> fizzie: Oh, that sounds like a bug in the implementation.
18:22:14 <shachaf> Which I guess is why you called in a vulnerability.
18:24:39 <kmc> i mean, it's fine either way
18:24:53 <kmc> I like to hang out here because it's a set of cool people discussing interesting things
18:25:02 <kmc> I don't feel a great urge to contribute to the esolangs per se
18:25:14 <kmc> I do have a few ideas tho
18:25:23 -!- pikhq has quit (Ping timeout: 276 seconds).
18:26:13 <imode> honestly esolangs to me are just new ideas in programming language theory that haven't been taken to their potential yet.
18:26:19 <kmc> some are
18:26:39 <b_jonas> kspalaiologos: "slashes (///) without regexps" um, but slashes already doesn't have regexps. it only searches for fixed strings, as in grep -F
18:30:06 <esowiki> [[Tom Murphy VII]] https://esolangs.org/w/index.php?diff=66407&oldid=56755 * B jonas * (+78) link UM-32
18:30:33 <kmc> one is a concatencative language for signal processing
18:30:39 <kmc> i mean it's probably been done
18:31:06 <b_jonas> kmc: the great thing is that esolangs mean different things to different people, which is why there are so many different ones with different interesting properties
18:32:50 <b_jonas> kmc: re x86 without using registers => interesting, I don't remember having seen that one. the one with MOV only, and the one with no instructions, those I do remember, as well as tom7's ABC
18:33:47 <imode> brachylog is interesting if a little obtuse.
18:34:29 <imode> I wonder what the most "minimal" logic language is. prolog is hard to write on a single line and its implementation is complex.
18:36:54 <b_jonas> imode: I think for a golf language, it may make sense to have prolog-like backtracking, but not general prolog-like unification. I'm not saying this would be easy to implement, just that it may help golfing.
18:37:28 <b_jonas> but as for your specific question, I don't know what counts as enough to qualify something a "logic language"
18:37:34 <imode> golfing is an interesting orthogonal goal. my further goal is writing prolog as I write sentences.
18:37:43 -!- LKoen has quit (Remote host closed the connection).
18:38:00 <imode> "this thing relates to that thing, that thing relates to this other thing, what is this other thing."
18:39:00 <b_jonas> kmc: interesting, why did you not make that implement brainfuck with mod 256 wraparound like it's the most common?
18:41:02 <b_jonas> hmm, Shakespeare predates Chef?
18:41:49 <imode> prolog without variables.. hm.
18:43:54 <b_jonas> imode: no no, I imagine it would have mutable variables, and you'd have both non-backtracking and backtracking versions. what I mean is that it wouldn't have the recursive structural unification, nor even just unassigned variables and function arguments that can be either input and output using them and A=B statements that can assign in either direction
18:44:09 <imode> didn't tie that statement to your's, was just musing.
18:44:22 <kmc> b_jonas: i think that would have been harder?
18:44:25 <b_jonas> and I don't think it would be like prolog at all
18:44:58 <b_jonas> kmc: it's hard to implement, but a golfing language doesn't have to be easy to implement, it has to give you all the tricky tools instead
18:45:08 <imode> I want to be able to pose questions to my machine and have it answer them. I want to be able to describe and query relations between the things I declare.
18:45:14 <kmc> b_jonas: I was doing a minimum proof of concept about x86 being turing complete with no registers
18:45:20 <imode> sans variables.. which is difficult.
18:45:33 <kmc> I don't really care if it's convenient for writing code
18:46:12 <b_jonas> kmc: sure, but you apparently have extra code in the implementation so that when a cell becomes decreased to -1 then it changes it to 0, and when it becomes 256 it changes it to 255
18:46:22 <imode> https://en.wikipedia.org/wiki/Constraint_Handling_Rules
18:46:27 <b_jonas> it seems like you'd just have to change the constants there so it changes -1 to 255 and 256 to 0 insteaed
18:46:28 <imode> interesting.
18:46:43 <b_jonas> so it'd be like a trivial change, it wouldn't make the implementation any more difficult
18:46:47 <kmc> b_jonas: hm i think you're right
18:46:50 <kmc> it's been a long time
18:46:56 <kmc> so i'm not sure why i did it that way
18:47:04 <b_jonas> oh wait
18:47:07 <b_jonas> no, you're right
18:47:31 <kmc> also I'm not sure how this post got hundreds of comments about curing herpes with herbs
18:47:32 <b_jonas> the problem is that at every < and > statement, you have to do a self-modifying code that modifies both the head address in both increase and decrease statement
18:47:51 <kmc> b_jonas: oh also i can't have conditionals
18:47:56 <b_jonas> if you made it wrap around, you'd need five such modifications instead of three, so it's complicated
18:47:59 <kmc> but there's still probably a way
18:48:08 <kmc> i could make a subroutine that does it in some bitwise way for example
18:48:08 <kmc> but yeha
18:48:14 <kmc> I think I just did it this way to be parsimonious
18:48:17 <b_jonas> you even say "We could implement the more typical wrap-around behavior with somewhat more code."
18:48:23 <kmc> right
18:48:25 <shachaf> my friend has been trying to talk me into learning to do fancy gpu programming
18:48:29 <b_jonas> sorry, I didn't realize that that's how the head pointer was implemented
18:48:33 <kmc> shachaf: it's fun
18:48:36 <shachaf> it's a bit like esoteric programming
18:48:42 <kmc> massively parallel, quasi-functional
18:49:29 <kmc> b_jonas: glad you found it interesting
18:49:50 <b_jonas> shachaf: the friend isn't your partner who wants you to earn more money, right?
18:50:25 <kmc> a lot of people were amused by my calling brainfuck "pretty familiar as an imperative, structured-control language"
18:50:33 <shachaf> ais523: Does Richardson's theorem actually let you produce a specific real expression (like sqrt(sin(5)) or whatever) where it's undecidable whether it's equal to 0?
18:50:49 <kmc> and "[not] super weird"
18:51:01 <shachaf> ais523: Or is it only a function, like "\x -> sqrt(sin(x))", where it' undecidable whether it's 0 everywhere?
18:51:28 <shachaf> kmc: Well, it has a simple text substitution compiler to C.
18:51:42 <kmc> b_jonas: i wrote most of the code on a flight from SFO to ICN
18:51:47 <kmc> shachaf: yeah
18:51:49 <shachaf> The weird part isn't the language primitives but what you have to do get anything done with them.
18:52:50 <b_jonas> `perl -eprint sqrt(sin(5)) # of course that doesn't prove anything, because the sin function rounds to floating-point
18:52:50 <HackEso> Can't take sqrt of -0.958924 at -e line 1.
18:53:10 <shachaf> Oh no.
18:53:24 <shachaf> In the other window I wrote sqrt(sin(3)) but I changed it to 5 because it seemed more appealing.
18:53:25 <b_jonas> `perl -euse Math::Complex; print sqrt(sin(5))
18:53:26 <HackEso> 0.979246789457662i
18:53:27 <shachaf> Joke's on me.
18:53:45 <b_jonas> shachaf: nah, taking a complex square root is completely fine in this context
18:54:10 <kmc> I was pretty pleased to figure out how to do this
18:54:17 <b_jonas> it would be worse if you tried to divide by zero, but just taking square root or log of a negative number is ok
18:54:20 <shachaf> It's not completely fine for at least the following reason: It makes me say "Oh no."
18:55:20 <kmc> "Code that self-modifies by calling read() is clearly the future of computing."
18:55:55 <b_jonas> also, I have a question
18:56:09 <b_jonas> about self-modifying code
18:56:16 <shachaf> higan mchelloface
18:56:34 <kmc> hi
18:56:57 <kmc> b_jonas: if you look at the actual code it has a lot more self modifying code
18:57:00 <kmc> to handle ,
18:57:03 <kmc> , was a pain
18:57:33 <b_jonas> normally on x86 with SMP, if you modify code on one cpu then execute it on another cpu, and want to make sure that the modified code is used, then you have to do a really elaborate synchronization dance to make sure that all the caches are flushed properly
18:58:18 <b_jonas> this doesn't happen when modifying code and then executing it on the same cpu because x86 wants to be backwards compatible with 386, which allowed such self-modifying code as long as you just do any jump/branch between them
18:59:55 <b_jonas> my question is, if you write ordinary self-modifying code in a linux-x86_64 program, and the kernel just happens to migrate the user-space thread to another cpu between your modifying code and your running it, does the kernel guarantee to do all the required synchronization dance so that your self-modifying code executes correctly?
19:00:12 <b_jonas> because if not, then I really don't see how you could ever write self-modifying code on linux-x86_64
19:00:19 <b_jonas> fizzie: ^ perhaps you can answer
19:05:59 <b_jonas> wait what? is it really undecidable in the computational sense whether a context-free grammar describes the empty language?
19:07:24 <b_jonas> no, apparently it isn't
19:11:17 -!- kspalaiologos has quit (Quit: Leaving).
19:13:51 <arseniiv> <kspalaiologos> it really depends on how we define minimalistic => agree; I meant from the syntactic side
19:14:51 <imode> https://hatebin.com/qsqfryjtfv
19:14:55 <imode> someone might have a use for this.
19:15:10 <imode> it's a language based on tuple rewriting. here's a demo of a text adventure in it.
19:25:46 <b_jonas> wow, are there really only six M:tG cards that represent a leonin skyknight directly? that seems odd
19:26:18 <b_jonas> admittedly they do appear in the flavor of some noncreature cards too
19:27:16 <b_jonas> Leonin Scimitar is a weapon used by skyhunters
19:31:32 <imode> because the tuple store is a multiset, it's possible to construct a counter machine (and I believe it's equivalent to FRACTRAN at that point). there's no other way to build a tape as far as I see, though, because you can't add tuples with generated identifiers.
19:32:13 <imode> though it's easy to add the ability to: any variables on the RHS not present on the LHS get bound to a unique identifier.
19:40:08 <arseniiv> imode: how does it operate, does it delete matched tuples or leaves them in the store?
19:41:05 -!- atslash has quit (Quit: This computer has gone to sleep).
19:41:21 <arseniiv> I hadn’t read thoroughly
19:43:16 <fizzie> b_jonas: I don't have an answer for that. Presumably serious users of self-modifying code must have considered this though.
19:45:06 <imode> arseniiv: it deletes them.
19:45:41 -!- LKoen_ has joined.
19:48:19 -!- Sgeo has joined.
19:49:52 <b_jonas> fizzie: ... serious users of self-modifying code? those exist?
19:50:01 -!- Sgeo__ has joined.
19:50:02 <arseniiv> oh! I came up with a controversial question
19:50:20 <b_jonas> do you mean like just-in-time compilers?
19:50:24 <b_jonas> oh, I get it
19:50:26 -!- Sgeo_ has quit (Ping timeout: 240 seconds).
19:50:28 <b_jonas> you must meen qemu
19:50:35 <b_jonas> qemu's just in time compiler mode
19:50:38 <b_jonas> that's what I should look at
19:50:42 <arseniiv> if I’m to pick one of Idris or Agda, is there a clear winner or should I abandon the choice instead
19:50:53 <b_jonas> hmm wait
19:50:58 <b_jonas> does that exist on x86_64 as the host?
19:53:47 -!- Sgeo has quit (Ping timeout: 276 seconds).
19:58:41 -!- LKoen_ has quit (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”).
20:26:56 -!- Sgeo__ has quit (Ping timeout: 276 seconds).
20:34:49 <b_jonas> `ftoc 375
20:34:49 <HackEso> 375.00°F = 190.56°C
20:43:40 -!- Sgeo has joined.
20:43:59 <arseniiv> 375.00°F = 190.56°C => hot in that place
20:48:30 <b_jonas> arseniiv: it's a recipe about baking fish
20:48:49 <b_jonas> still hotter than I expect, I don't bake anything over 180 deg C, but not impossibly hot
20:50:00 <arseniiv> b_jonas: yum
20:52:23 <fizzie> `recipe
20:52:24 <HackEso> nto egg salt. \ Add the shapes of flour with the corner and sugar in a large \ pan. Serve with peanut oil and almonds. Pour the cake on a bowl, stirring \ occasionally and remove from heat; cook over moderate heat, stirring constantly, \ until the meat is tender. Add the soup over the fish and \ stirring constantly; simmer together the water and mix well. Stir in the pineapple; \ water until lightly blended over and remove from pan. Add \ strands of
20:53:20 <fizzie> fungot: Do you know any recipes? Should we train you with a cookbook?
20:53:20 <fungot> fizzie: i think windos api bindings are somewhat rare female esolang programmers?' and someone replied with subject ' my wife woke up...'.
20:55:58 <b_jonas> fizzie: the recipes in `recipe are somewhat similar to the sort of text that fungot outputs, in that they don't have any long term memory to ensure that objects created in one part of the recipe are reused in another, even though that is something that it would be easy to teach a computer program to pay attention to
20:55:58 <fungot> b_jonas: i suspect firefox and konversation will randomly stop working at some startup, unrelated to research or scheme. common lisp is type ( list-all-packages) *modules* and *features*, something similar?
20:56:10 <b_jonas> yes, like that
20:56:31 <b_jonas> I'd like to contrast this to Roborosewater, which usually does a good job of keeping the whole card coherent
20:56:36 <b_jonas> `? roborosewater
20:56:36 <HackEso> RoboRosewater is generating random Magic: the Gathering cards, see https://mobile.twitter.com/roborosewater
21:13:51 -!- ais523 has joined.
21:14:53 <ais523> <shachaf> ais523: Does Richardson's theorem actually let you produce a specific real expression (like sqrt(sin(5)) or whatever) where it's undecidable whether it's equal to 0? ← if you could prove the result was undecidably equal to 0, then you could prove the result equalled 0 (if it didn't equal 0 then you'd be able to decide it by comparing to a number in between), which is a contradiction; so there are no computable real equations /known/ to be
21:14:54 <ais523> undecidable
21:15:30 <ais523> it wouldn't surprise me if the theorem allowed you to compile a particular undecidable problem into an equivalent undecidable computational real, though, but I don't know
21:16:11 <shachaf> I thought that was how you were proposing to use the theorem the other day, though I don't remember exactly.
21:16:36 <ais523> <arseniiv> if I’m to pick one of Idris or Agda, is there a clear winner or should I abandon the choice instead ← Agda is something of an outlier among machine-checkable-proof languages, it's a lot more explicit than the competition; I personally see this as an advantage but this is a matter of taste (and probably means that Agda is the slowest among all commonly used proof languages to write)
21:17:21 <ais523> I think Agda might be good for people who like theoretically pure / mathematically interesting languages, whereas Idris is better if you want to build something practically
21:18:24 <b_jonas> ais523: hi! see the logs
21:18:45 <shachaf> ais523 is already seeing the logs.
21:19:05 <b_jonas> yeah
21:19:13 <b_jonas> he generally does
21:20:18 <b_jonas> he's probably seen https://esolangs.org/logs/2019-09-29.html#lk already
21:20:45 <b_jonas> this is one of those rare cases where I can answer a technical question on #esoteric
21:20:58 <ais523> <b_jonas> there are probably only two people who have created more than one really interesting esolangs that are different from each other ← I can think of at least three, probably several more
21:21:17 <ais523> b_jonas: I saw that a while ago, just wasn't online to reply
21:21:28 <ais523> I'd found a solution to the problem by then anyway (and even posted it in-channel)
21:21:53 <b_jonas> ais523: which three? you are one of them, that's easy
21:22:09 <ais523> although, how does "no utf8" have the same semantics as BEGIN? :-D
21:22:15 <ais523> b_jonas: cpressey, obviously
21:22:27 <ais523> the first name that came to mind for the third was Keymaker
21:22:49 <ais523> I think oklopol might also have done so
21:23:08 <b_jonas> I'll look these up
21:23:18 <ais523> also Martin Ender
21:23:28 <b_jonas> ais523: it doesn't technically have exactly the same semantics, but the differences don't matter here
21:23:50 <b_jonas> it also loads a module that always exists on modern perl in the core and doesn't do much and most of it are actually perl builtins
21:24:00 <b_jonas> ones that are loaded when the interpreter is started
21:24:17 <ais523> I know what the utf8 "module" does
21:24:22 <b_jonas> you could use lots of other modules, especially if you put a do-block in the argument to ignore the result of the $^H thingy
21:24:26 <ais523> but I'm confused as to why it makes the assignment to $^H happen at compile time
21:24:34 <ais523> the `no` statement, that is
21:24:41 <ais523> ooh, I figured it out
21:24:58 <ais523> it needs to evaluate the argument to utf8 in order to work out what values to load the module with, that's clever
21:24:59 <b_jonas> ais523: the specific module is not relevant, but the use/no statement calls import/unimport at compile time, so it has to evaluate its argument, which is passed to that call, at compile time
21:25:49 <b_jonas> oh right, the utf8 module's import has another function that I totally didn't think of
21:25:53 <b_jonas> that could be confusing
21:26:00 <b_jonas> it's totally obsolete so I forgot about it
21:26:13 <b_jonas> I only thought of the public functions in it
21:26:57 <ais523> utf8::import doesn't inspect its arguments, does it?
21:27:29 <ais523> it doesn't, I just checked its source code
21:27:55 <ais523> (it feels a bit wrong to me that you can check the source code of a pragma, you expect those to be hardcoded into the compiler rather than separate files)
21:28:27 <shachaf> I wrote a UTF8 decoder but it's pretty naive.
21:28:35 <shachaf> I should write a fast one that uses a state machine.
21:28:51 <b_jonas> ais523: you can check the source of things that are hardcoded into the compiler too, and for most pragmas, the bulk of the implementation is in there, the pragma only gives an interface to them
21:29:07 <b_jonas> (bigint is an example for a pragma that isn't like that)
21:29:44 <b_jonas> but perl is ... sort of weird in how a lot of what you expect to be builtin functionality in a sane language is off-loaded to modules
21:31:23 <ais523> bigint is written in terms of overload::constant, which seems to do the real magic
21:31:40 <b_jonas> ais523: yeah
21:32:41 <ais523> it appears to in turn be implemented via assigning to %^H, which has a strong implication of compiler magic
21:33:12 <b_jonas> really? that seems unlikely because I think %^H is newer than overload::constant
21:33:35 <ais523> the implementation could have been changed to make use of the new feature
21:33:47 <b_jonas> could, but that seems unlikely
21:33:55 <b_jonas> maybe I just remember incorrectly about $^H
21:33:57 <b_jonas> um
21:33:59 <b_jonas> about %^H
21:34:03 <b_jonas> %^H is old
21:34:05 <b_jonas> no
21:34:06 <b_jonas> I mean
21:34:10 <b_jonas> $^H is old, I know that
21:34:15 -!- atslash has joined.
21:34:21 <b_jonas> maybe %^H is old too, I just think it's newer for some reason
21:35:28 <b_jonas> let me check
21:35:58 <arseniiv> ais523: thanks
21:36:21 <arseniiv> bye all, I try to fix my sleepdule
21:36:37 <ais523> fwiw, I know Agda much better than Idris (although don't know either particularly well)
21:37:47 <b_jonas> ais523: wait, are you sure that %^H is used as the magic interface how overload::constant asks the compiler how to interpret constants? isn't it just used to store some internal data for the pragma?
21:39:10 <ais523> b_jonas: when you delete all the sanity checks, the entire implementation of overload::constant becomes «$^H{$_[0]} = $_[1]; $^H |= $constants{$_[0]}; shift, shift»
21:39:23 <ais523> so it's changinig both %^H and $^H, with nothing else happening
21:39:53 <b_jonas> ok
21:40:07 <b_jonas> anyway, I was probably wrong about %^H, it's likely old
21:40:30 <b_jonas> it exists in 5.10, but I'm too lazy to check perl 5.6 now
21:41:41 -!- arseniiv has quit (Ping timeout: 276 seconds).
21:41:41 <ais523> that "shift, shift" seems really ominous for some reason, but I guess it's just an obfuscated way to return $_[1]
21:46:17 <b_jonas> wow, the demon Bozmodiklax returns! I think that's his third appearance in smbc
21:46:55 <b_jonas> it's nice when a gag-a-day comic has continuity
21:47:45 <b_jonas> well, sort of continuity
21:48:06 <b_jonas> he was much more dangerous the last time, wanting to blot out the sun and shroud Earth in a night eternal
21:55:25 <imode> move left, cursor at $x? $x previous $y?: cursor at $y. move left, cursor at $x?: $y next $x, cursor at $y. move right, cursor at $x? $x next $y?: cursor at $y. move left, cursor at $x?: $x next $y, cursor at $y.
21:55:43 <imode> autogenerating an infinite tape.
21:56:19 <imode> the sentential form is a little awkward.
21:56:44 <ais523> is that text written in English or an esolang or a literal translation from one to the other?
21:57:14 <imode> it's an esolang.
21:57:43 <imode> small syntactic variant on a language I posted about earlier, I'll re-post.
21:57:49 <imode> https://hatebin.com/qsqfryjtfv
21:59:33 <imode> this is a language based around tuple rewriting. the system state is stored as a multiset of tuples. patterns match against collections of tuples.
22:00:04 <imode> tuples are just sequences of tokens delimited by spaces.
22:00:37 <imode> tuples in a pattern are delimited by ',' or '?'.
22:01:21 <imode> if they're delimited by a ',', the constructed tuples are removed from the store. if they're delimited by a '?', they're not.
22:02:01 <imode> any variables present on the RHS that aren't on the LHS get bound to an autogenerated ID.
22:02:29 -!- b_jonas has quit (Ping timeout: 276 seconds).
22:20:56 <shachaf> `5
22:20:58 <HackEso> 1/2:1007) <fizzie> ... <fizzie> I was thinking maybe octave's fact() function is the factorial. <fizzie> octave:1> fact(20) <fizzie> Richad Stallman's pinky finger is really a USB memory stick. <fizzie> I don't think that's 20!. \ 625) <itidus22> if the halting problem was solved, as a placebo.. would it benefit people? \ 991) <kmc> in the time it takes light to travel from Hexham to Finland, I can generate almost 20 new topics for #esoteric \ 241) <o
22:21:00 <shachaf> `n
22:21:01 <HackEso> 2/2:klopol> shit would make great currency, because everyone would have it and you could literally be filthy rich \ 501) <fungot> elliott: ppl should vote clinton because obama is biracial every1 knows that dood, look at him he has been on something lately.
22:37:09 -!- Sgeo_ has joined.
22:40:02 -!- Sgeo has quit (Ping timeout: 245 seconds).
22:51:21 -!- FreeFull has quit.
22:52:32 -!- xkapastel has joined.
23:01:29 -!- ais523 has quit (Ping timeout: 265 seconds).
23:58:26 -!- oerjan has joined.
←2019-08 2019-09 2019-10→ ↑2019 ↑all