00:03:12 <b_jonas> the rust standard library now documentedly defines std::cell::UnsafeCell and std::cell::Cell with the #[repr(transparent)] attribute
00:04:20 <b_jonas> plus also std::mem::ManuallyDrop too
00:07:14 <zzo38> One problem with the game Rogue is that if there are objects on the ground and you can't carry it, it will not tell you what it is that you are unable to pick up.
00:09:59 <b_jonas> but rogue doesn't have corpses, does it? how do you get objects that you can't carry?
00:10:22 <zzo38> In case you are already carrying too many items
00:16:32 -!- xkapastel has quit (Quit: Connection closed for inactivity).
00:22:20 <HackEso> Nuff is a substance extracted from fairies. Somehow no one really minds this.
00:22:56 <oerjan> i'd forgotten about that.
00:24:39 <lambdabot> help <command>. Ask for help for <command>. Try 'list' for all commands
00:24:48 <lambdabot> help <command>. Ask for help for <command>. Try 'list' for all commands
00:24:57 <b_jonas> how do I tell what the spelling correction corrects it to?
00:27:21 <shachaf> In general or in this specific case?
00:28:17 <fizzie> I located @leet by just doing @listmodules and a @list on any likely subjects.
00:28:32 <b_jonas> shachaf: also where has hppavilion disappeared?
00:28:39 <shachaf> In this particular case it's @leet, which I already knew.
00:28:55 <shachaf> But I was being stubborn about the way you phrased your question or something and unhelpful for that reason.
00:29:12 <shachaf> So I made fizzie do unnecessary work.
00:29:14 <b_jonas> he's the other regular besides boily who's disappeared recently
00:30:32 <b_jonas> @leet Do you wish to make the mountains bare their head
00:30:32 <lambdabot> dO joo \/\/I5H 7o MAk3 TH3 mOun+4iNz B4r3 +h3iR |-|eaD
00:32:52 <oerjan> there might be some command that's got just the wrong levenshtein neighbors to find it by such small adjustments...
00:32:53 <lambdabot> elite <phrase>. Translate English to elitespeak
00:33:18 <lambdabot> elite <phrase>. Translate English to elitespeak
00:36:39 <fizzie> The only call to levenshteinDistance is in closests, and the only call to closests is right there in doMsg where it gets triggered directly if there's just one match. So I don't think there's a straightforward way to ask what it got mapped to.
00:37:31 <b_jonas> in buubot, a call to a function macro can take the first one word or first two word as function name, and I'm not sure how to query which one it does
00:37:44 <b_jonas> at least there you can just query the source of both of those possibilities
00:38:37 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
00:42:39 <zzo38> fizzie: Are you able to fix the program?
00:42:45 <zzo38> (or is that someone else's job?)
00:52:08 <fizzie> I don't think it's anyone's actual job. But probably it's closer to being someone else's job.
00:52:21 <fizzie> I was just reading https://github.com/lambdabot/lambdabot/blob/master/lambdabot-core/src/Lambdabot/Plugin/Core/Base.hs#L230
00:53:15 -!- tromp has joined.
00:53:27 <zzo38> OK, but who set up that instance?
00:56:48 -!- Hoolootwo has changed nick to Hooloovo0.
00:58:07 -!- tromp has quit (Ping timeout: 264 seconds).
01:01:04 <int-e> b_jonas: @seen has been disabled for ages now, because it leaks memory somehow... possibly it's not even technically a leak but just the fact that there are too many users being tracked.
01:04:34 <int-e> zzo38: I'm running the thing, I do occasional maintenance but usually I don't go beyond fixing broken things...
01:06:31 <fizzie> int-e: I think spell is broken too, by the way.
01:06:34 <lambdabot> Plugin `spell' failed with: aspell: readCreateProcessWithExitCode: runInteractiveProcess: exec: does not exist (No such file or directory)
01:07:14 <fizzie> (I'm not even sure what it should do, just came across it when listing things.)
01:07:52 <int-e> Hmm that looks simple enough...
01:08:09 <fizzie> Oh, so that's what it does.
01:08:25 <lambdabot> all-dicts ... Query all databases on dict.org
01:10:05 <int-e> wtf: nazi True = lift on >> say "Spelling nazi engaged."
01:17:39 <lambdabot> • Couldn't match expected type ‘Int’ with actual type ‘[Char]’
01:17:41 <lambdabot> • In the first argument of ‘replicate’, namely ‘"foo"’
01:17:50 <lambdabot> Maybe you meant: rc reconnect remember repoint roll run v @ ? .
01:17:57 <lambdabot> Maybe you meant: undefine undo unlambda unmtl unpf unpl unpointless unshift-topic uptime url v @ ? .
01:18:00 <lambdabot> Maybe you meant: nazi-off nazi-on nixon wn v @ ? .
01:18:16 <lambdabot> What module? Try @listmodules for some ideas.
01:18:18 <int-e> b_jonas: use privmsg
01:23:12 <lambdabot> help <command>. Ask for help for <command>. Try 'list' for all commands
01:23:20 <lambdabot> dummy provides: eval choose dummy bug id show wiki paste docs learn haskellers botsnack get-shapr shootout faq googleit hackage thanks thx thank you ping tic-tac-toe
01:26:30 <int-e> at least half of these are memorials of a sillier time on #haskell.
01:27:02 <HackEso> /srv/hackeso-code/multibot_cmds/lib/limits: line 5: exec: thank: not found
01:27:06 <HackEso> Thanks, lambdabot. Thambdabot.
01:28:27 <fungot> Thanks, lambdabot. Thambdabot.
01:28:38 <fizzie> (I just like to verify that every now and then.)
01:28:55 <lambdabot> quote provides: quote remember forget ghc fortune yow arr yarr keal b52s pinky brain palomer girl19 v yhjulwwiefzojcbxybbruweejw protontorpedo nixon farber
01:29:01 <HackEso> 799) <HackEgo> 499) <zzo38> What is miff-muffered moof? <itidus20> that's a tough question [...] <Sgeo> miff-muffered moof sounds like a setup to something, but itidus screws it up.
01:33:28 <fungot> Thanks, firefox. Thirefox.
01:34:31 <HackEso> Thanks, mozilla. Thozilla.
01:40:18 -!- b_jonas has quit (Quit: leaving).
01:50:15 <HackEso> /srv/hackeso-code/multibot_cmds/lib/limits: line 5: exec: unideco: not found
01:50:19 <orin> `unidecode 5⁄2
01:50:20 <HackEso> [U+0035 DIGIT FIVE] [U+2044 FRACTION SLASH] [U+0032 DIGIT TWO]
02:41:11 -!- tromp has joined.
02:46:07 -!- tromp has quit (Ping timeout: 264 seconds).
03:25:36 <zzo38> Are you able to tell them about my ideas about pidfd? They would still have CLONE_PIDFD too I forgot to mention, but even with what I mentioned you should have that too
03:25:39 <esowiki> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=61709&oldid=61626 * Falsaidi * (+342) Added my own introduction
04:21:32 -!- Lykaina has joined.
04:48:34 -!- oerjan has quit (Quit: Nite).
05:05:11 -!- FreeFull has quit.
06:16:53 -!- sprocklem has quit (Quit: brb).
06:26:59 -!- sprocklem has joined.
06:32:38 -!- sprocklem has quit (Read error: Connection reset by peer).
06:33:26 -!- sprocklem has joined.
06:53:32 -!- Lord_of_Life has quit (Ping timeout: 252 seconds).
06:56:04 -!- Lord_of_Life has joined.
06:57:41 -!- sprocklem has quit (Quit: brb).
06:58:20 -!- sprocklem has joined.
07:05:38 -!- tromp has joined.
07:42:58 -!- tromp has quit (Remote host closed the connection).
07:54:33 -!- tromp has joined.
08:09:47 -!- AnotherTest has joined.
08:16:31 -!- tromp has quit (Remote host closed the connection).
08:38:08 -!- tromp has joined.
08:46:54 <esowiki> [[Keg]] M https://esolangs.org/w/index.php?diff=61710&oldid=61701 * A * (+61) Fix style and add a golfing tutorial
08:49:38 <esowiki> [[User:JonoCode9374]] M https://esolangs.org/w/index.php?diff=61711&oldid=58350 * JonoCode9374 * (+264) Fixed a bit of spelling
08:50:42 <esowiki> [[(PTM)]] https://esolangs.org/w/index.php?diff=61712&oldid=52664 * RealUndefined * (+12) improve format
08:51:29 <esowiki> [[Keg]] M https://esolangs.org/w/index.php?diff=61713&oldid=61710 * JonoCode9374 * (-8) /* External Resources / Reference Implementation */ The interpreter isn't much of a WIP as i thought it was.
08:54:51 <esowiki> [[Keg/Golfing]] N https://esolangs.org/w/index.php?oldid=61714 * A * (+695) Created page with "This page tries to teach the reader how to golf programs in [[Keg]]. The official tutorial did not even mention golfing techniques. == Problem #1. Golf the [[Hello, World!]] p..."
09:05:17 <esowiki> [[Keg/Golfing]] https://esolangs.org/w/index.php?diff=61715&oldid=61714 * A * (+1591)
09:07:48 <esowiki> [[Keg/Golfing]] https://esolangs.org/w/index.php?diff=61716&oldid=61715 * A * (+151) /* Tips that don't seem to fit anywhere */
09:12:44 <esowiki> [[Keg]] M https://esolangs.org/w/index.php?diff=61717&oldid=61713 * A * (+61) Add links
09:14:56 <esowiki> [[Keg/Golfing]] M https://esolangs.org/w/index.php?diff=61718&oldid=61716 * A * (+167) /* Tips that don't seem to fit anywhere but still relate to golfing */
09:19:15 -!- tromp has quit (Remote host closed the connection).
09:25:23 -!- tromp has joined.
09:27:01 <john_metcalf> Has anyone played this C++Robots programming game? I'm looking for any robot code (or koth standings) http://www.gamerz.net/c++robots/
09:37:07 -!- tromp has quit (Remote host closed the connection).
10:05:12 -!- tromp has joined.
10:09:47 -!- tromp has quit (Ping timeout: 258 seconds).
10:58:05 <esowiki> [[Keg/Golfing]] M https://esolangs.org/w/index.php?diff=61719&oldid=61718 * JonoCode9374 * (+16) /* Problem #2. Golf the Deadfish interpreter. */ just added a little extra detail
11:53:28 -!- tromp has joined.
11:55:45 -!- Sgeo_ has quit (Read error: Connection reset by peer).
11:56:09 -!- Sgeo_ has joined.
11:57:47 -!- tromp has quit (Ping timeout: 248 seconds).
11:58:48 <int-e> free association: "Golf the Deadfish" -- "Sushi the Goldfish"
12:19:43 -!- LKoen has joined.
12:26:13 -!- 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.”).
12:27:17 -!- arseniiv has joined.
12:30:48 <esowiki> [[Keg/Golfing]] M https://esolangs.org/w/index.php?diff=61720&oldid=61719 * A * (+108) Small detail
12:36:17 <esowiki> [[Keg/Golfing]] M https://esolangs.org/w/index.php?diff=61721&oldid=61720 * A * (-1) grm
12:37:27 <esowiki> [[Keg/Golfing]] M https://esolangs.org/w/index.php?diff=61722&oldid=61721 * A * (-7) /* Problem #2. Golf the Deadfish interpreter. */
12:38:42 -!- b_jonas has joined.
12:38:50 <esowiki> [[Keg/Golfing]] M https://esolangs.org/w/index.php?diff=61723&oldid=61722 * A * (+10) Found another grm, and make the except look like normal talking
12:44:33 -!- Lykaina has left.
12:47:27 <esowiki> [[Keg/Golfing]] M https://esolangs.org/w/index.php?diff=61724&oldid=61723 * A * (+17) Fix the article that I made in a hurry
12:54:25 <esowiki> [[Keg/Golfing]] M https://esolangs.org/w/index.php?diff=61725&oldid=61724 * A * (+22) *sigh*
13:10:44 <esowiki> [[Talk:Keg]] N https://esolangs.org/w/index.php?oldid=61726 * A * (+411) Write an incomplete message. TODO
13:16:12 <esowiki> [[Talk:Keg]] https://esolangs.org/w/index.php?diff=61727&oldid=61726 * A * (+659) End my talk
13:16:59 <esowiki> [[Talk:Keg]] M https://esolangs.org/w/index.php?diff=61728&oldid=61727 * A * (+67)
13:18:04 <esowiki> [[Talk:Keg]] M https://esolangs.org/w/index.php?diff=61729&oldid=61728 * A * (-117) simplify my talk
13:34:34 -!- FreeFull has joined.
13:41:32 -!- tromp has joined.
13:42:40 <esowiki> [[User:JonoCode9374]] M https://esolangs.org/w/index.php?diff=61730&oldid=61711 * A * (+136) Post an answer (you can undo it if you dislike it.)
13:45:30 <esowiki> [[User:JonoCode9374]] M https://esolangs.org/w/index.php?diff=61731&oldid=61730 * A * (+39)
13:46:00 -!- tromp has quit (Ping timeout: 250 seconds).
13:55:34 <esowiki> [[User:JonoCode9374]] M https://esolangs.org/w/index.php?diff=61732&oldid=61731 * A * (-175) Undo all of my edits
13:58:24 <esowiki> [[Talk:Keg]] M https://esolangs.org/w/index.php?diff=61733&oldid=61729 * A * (+4)
14:03:02 <esowiki> [[Talk:Keg]] M https://esolangs.org/w/index.php?diff=61734&oldid=61733 * A * (-1024) It does not matter, though. Iteration is enough.
14:36:13 -!- tromp has joined.
14:40:27 -!- tromp has quit (Ping timeout: 248 seconds).
14:58:33 <kmc> good morning all
15:02:19 <esowiki> [[History (programming language)]] M https://esolangs.org/w/index.php?diff=61735&oldid=61706 * A * (-212) Simplify the commands
15:04:21 <kmc> are there any esoteric DSP languages?
15:05:29 <kmc> or esoteric frameworks for (possibly simulated) analog computing?
15:08:48 <kmc> programming languages where the source code is an audio file? music? where you can take the FFT of your program to get another program?
15:09:52 <FireFly> Depending on where you draw the line, I think the answer is yes to a couple of those
15:10:54 <FireFly> ais's Checkout, Codegolf SE's Marbelous come to mind
15:15:36 <kmc> fourier transforms are too good
15:16:05 <kmc> "Are you saying I can convert between time and frequency domain?" "No, Neo. I'm saying that when you're ready, you won't have to."
15:16:17 <fizzie> Music as syntax does happen, but not generally encoded as audio -- https://esolangs.org/wiki/Fugue comes to mind.
15:17:30 <fizzie> Bitoven and Musical-X are in the same general area.
15:17:50 <kmc> it would be cool if there were a language where you could play a program on an actual musical instrument, record it, and then execute it
15:18:00 <kmc> (not counting stuff like MIDI keyboards)
15:18:14 <kmc> I saw a guy playing a MIDI clarinet once. it was pretty cool
15:18:23 <kmc> instead of a reed it has a breath sensor
15:18:56 <kmc> my father in law has a huge MIDI pipe organ controller with 3 ranks of keys, a set of pedals, and stops
15:19:05 <kmc> it is pretty much the centeripiece of their apartment
15:19:53 <kmc> it's connected to some absurdly powerful computer, like a top of the line Core i7 with 128 GB of RAM, which runs Hauptwerk which is an extremely accurate pipe organ simulator
15:21:04 <fizzie> Heh. Is it a physics-based simulator or what?
15:22:54 <fizzie> I think some of my university coworkers were doing / had done work on simulating the physics of string instruments.
15:36:13 <fizzie> Today's example of context-unaware bad word filtering: "cons**cuous" & "sus**cuous".
15:38:44 <int-e> fizzie: I don't get it.
15:39:58 <int-e> (except maybe that it won't catch "suspicious")
15:42:02 <fizzie> int-e: "spic" it's a bad word. And they used one of those filters that cares not of word boundaries.
15:42:53 <kmc> lol scunthorpe
15:43:04 <fizzie> (Like the clbuttic "buttbuttinate" example. Except this one adds stars.)
15:44:14 <b_jonas> fizzie: I still don't understand why Hungary can have settlements called Csabaszabadi, Rábaszentandrás, Rábaszentmihály, and Rábaszentmiklós
15:48:44 <int-e> fizzie: oh. makes sense.
15:48:46 <fizzie> (Also it was "sus**cious", I just messed that one up.)
15:56:36 -!- _zM has joined.
15:57:14 <int-e> . o O ( ѕuѕрісіоuѕ )
15:58:17 <_zM> I created a BytePusher peogram that generates the Mandelbrot set: https://gitlab.com/0-zM/mandelbrot-bytepusher
15:58:48 <HackEso> [U+0455 CYRILLIC SMALL LETTER DZE]
15:58:52 <int-e> I didn't know of that one.
16:02:20 <int-e> hah apparently that particular substitution has made it into various spam mails; google reports 1460 hits.
16:03:35 <int-e> (for "ѕuѕрісіоuѕ")
16:18:29 -!- _zM has quit (Ping timeout: 256 seconds).
16:24:28 -!- tromp has joined.
16:28:50 -!- tromp has quit (Ping timeout: 252 seconds).
16:34:15 <b_jonas> fizzie: does it replace "spice" too?
17:18:43 -!- tromp has joined.
17:23:06 -!- tromp has quit (Ping timeout: 252 seconds).
17:29:40 <zzo38> Are there lists of NNTP server software with comparisons?
17:30:54 <zzo38> There are many different ones, written in different programming languages, with different licenses, and with different capabilities. Some use SQLite or other SQL databases, and some do not use SQL. Some connect to other servers too and some don't. Some also interact with web forums or mailing lists.
17:42:33 -!- gerzytet has quit (Read error: Connection reset by peer).
17:57:39 -!- imode has joined.
18:47:50 -!- tromp has joined.
18:51:56 -!- Lord_of_Life_ has joined.
18:52:16 -!- tromp has quit (Ping timeout: 258 seconds).
18:54:26 -!- Lord_of_Life has quit (Ping timeout: 255 seconds).
18:54:30 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
19:08:33 -!- rdococ has changed nick to spacekitten.
19:10:39 -!- spacekitten has changed nick to rdococ.
19:21:08 -!- tromp has joined.
19:33:21 -!- tromp has quit (Remote host closed the connection).
19:49:15 -!- AnotherTest has quit (Ping timeout: 248 seconds).
19:50:30 <zzo38> Do you know if any NNTP server has a command to search for articles with a specified value in the "References" header?
20:07:45 <zzo38> (This would be useful if you want to find replies to a message, since all replies to a single message have the same value for the References header.)
20:09:43 -!- tromp has joined.
20:11:56 -!- tromp has quit (Remote host closed the connection).
20:12:13 -!- tromp has joined.
20:45:34 -!- ais523 has joined.
20:45:51 <ais523> kmc: https://esolangs.org/wiki/Analogia is basically an esolang that's a specification of how analog computers work
20:46:17 <ais523> I'm not sure whether it's TC, I keep making mistakes trying to prove it TC because the set of things it can and can't do is so different from normal
20:46:38 <ais523> as for the DSP side of things, C-INTERCAL can run on (some) microcontrollers, so you could probably adapt it to DSPs fairly easily
20:46:59 <kmc> I mean more like a language that has DSP type of stuff as primitives
20:47:00 <b_jonas> oh, I should check if the CLC-intercal homepage is up
20:47:06 <kmc> and is designed around making, like, filter pipelines
20:47:14 <ais523> as mentioned, Fugue uses a MIDI file as source code, but it's still command-based
20:48:25 <ais523> kmc: well, the fast fourier transform is pretty much the only DSP primitive that isn't found on more normal processors too
20:48:35 <ais523> most of what you do are addition, multiplication, FFT
20:48:56 <kmc> did you implement Analogia?
20:49:40 <kmc> I suspect that, while computation on reals is Turing-uncomputable in general, that given sufficient continuity constraints on the equations, it becomes r.e.
20:49:43 <ais523> no, and I'm not even sure it's computable
20:50:01 <ais523> I think it probably is computuable, but guesses as to computational class are quite different from proofs
20:50:21 <int-e> ais523: possibly stupid question: y = ∫y+y ∂x ... shouldn't the integrand be x+x?
20:50:25 <b_jonas> ais523: have you figured out anything new about that letter permutation problem?
20:50:31 <kmc> also you could just implement it numerically and accept that some pathological programs will not run properly
20:50:38 <kmc> and may not run properly on an analog computer
20:50:45 <ais523> int-e: they're both legal
20:50:50 <ais523> but have different meanings
20:50:56 <kmc> certainly you can make chaotic things using op amps that will produce wildly different results when disturbed by noise
20:51:08 <kmc> there are some cool ones here, http://www.falstad.com/circuit/circuitjs.html
20:51:21 <int-e> ais523: I'm wondering how you got x^2 out of that.
20:51:30 <kmc> go to Circuits -> Op amp -> Chaotic circuits
20:51:44 <ais523> kmc: real-life analog computers aren't TC because the integrators will quickly hit implementation limits if you try to use them to store bignums, and the only possible other place you could store arbitrary data is in using arbitrarily high accuracy for the fractional component of values
20:51:44 <b_jonas> you have to be able to make chaotic things if it's Turing-complete
20:52:39 <ais523> anyway, you can't expect real-life analog computers to be able to handle arbitrarily many decimal places of accuracy, they can't be built that accurate
20:52:43 <ais523> so in practice they have finite storage
20:52:49 <kmc> that's kind of my point
20:53:15 <kmc> also, it would be fun to actually build these chaotic circuits and hook them to my scope in XY mode and use some variable resistors/capacitors so i can mess with them
20:53:48 <ais523> IIRC, y = ∫y+y ∂x would resolve to something like y = A*e**2x for some constant A, wouldn't it?
20:54:07 <ais523> variable resistors are way cheaper and more reliable than variable capacitors
20:54:23 <ais523> although variable capacitors look more electronicsy
20:54:41 <int-e> ais523: yes, that looks more plausible (A being the initial value, so 0 isn't a good one)
20:55:18 <b_jonas> the lack of parenthesis there still bothers me
20:55:38 <int-e> ais523: ah, that was assuming x0 = 0; A = y0 * e^(-2x0)
20:55:42 <b_jonas> it should be y = ∫(y+y)∂x and y = A*e**(2x)
20:56:01 <kmc> ais523: this is true
20:56:17 <b_jonas> but the language source code format, as you defined it, doesn't allow the former
20:56:22 <kmc> I want to build a magnetic loop antenna and by far the most expensive component is a varicap
20:56:45 <kmc> and depending on how much power you want to transmit, it needs a really high breakdown voltage (so vacuum dielectric is often used)
20:56:53 <esowiki> [[Analogia]] https://esolangs.org/w/index.php?diff=61736&oldid=59717 * Ais523 * (+10) fix the comment in the example
20:57:30 <int-e> ais523: the @0 in the expression if y@0 ;-)
20:58:01 <esowiki> [[Analogia]] https://esolangs.org/w/index.php?diff=61737&oldid=61736 * Ais523 * (-8) /* Syntax */ sigh
20:58:29 <int-e> but thanks, I can follow that example now at least :)
20:58:50 <zzo38> I thought to do instruction set for audio output in a computer design I was thinking of, to have one instruction for events: If there is no pending event, wait until there is. If there is a pending event, cancel that event and jump to the event handler for that event.
20:59:10 <ais523> int-e: my last few esolangs each have the property that they were thought of long in advance, and then written up just before a meeting when I was tired
20:59:23 <ais523> so the write-up is often fairly nonsensical until someone else reads it and tells me what's wrong
20:59:44 <zzo38> Each channel has a current value, new value, current duration, new duration, and expiry flag. When it expires, it sets the expiry flag and copies the new value/duration to the current value/duration; the expiry flag is then a event flag, which is cleared once the event is acknowledged.
20:59:45 <b_jonas> ais523: yeah, it's been almost two years since I thought up Consumer Society
21:00:18 <zzo38> What do you think of that?
21:01:09 <zzo38> (In addition to the expiry events, there is also the receive data events.)
21:01:20 <b_jonas> zzo38: and then there are arithmetic connectors and SRAM registers to transform the channel values to sound?
21:01:48 <ais523> zzo38: I'm not sure if piecewise-linear is enough to produce a good set of envelopes; also, are the "values" frequency or amplitude or both?
21:02:02 <ais523> timbre is also probably relevant, unless you want to write chiptune
21:02:24 <ais523> that looks like a good way to define an analog piecewise-linear output, though
21:03:20 <zzo38> ais523: The values are amplitude only.
21:03:37 <ais523> oh, and they aren't being interpolated, so you have step changes, not piecewise-linear
21:04:09 <ais523> you will need some way to sweep the values, because a sudden change in amplitude produces a step pulse, which has a very distinctive sound and one that people normally dislike using in music
21:04:27 <ais523> it's sort-of like a clicking noise but a bit more distinctive than that
21:05:17 <b_jonas> ais523: no, you'd have arithmetic connection between them, as in add, subtract, multiply, min, max, and sram registers that read every odd cycle and store a new value every even cycle, and you can get linear or polynomial or sine wave from those
21:05:21 <ais523> hmm… the exception may be if you change the amplitude at the moment the oscillating output crosses zero
21:06:38 <zzo38> The duration would ordinarily be small enough (if the instructions run at 8.82 MHz then you have 200 instruction cycles to change the value of a 44100 Hz signal; if it is faster then you will have more). Many older computers I think did not interpolate, but anyways a analog filter can also be added if needed (that is what Amiga does)
21:07:20 <ais523> zzo38: fwiw, the way practical sound cards nowadays do audio output is for the channels to use a queue of samples, specifying the voltage to output for each sample; the sound card will take a sample 44100 times per second, and the software will fill the queue back up much less frequently than that
21:07:45 <ais523> sometimes if a computer's lagging really badly, the sound card repeats the same sound over and over, which I think is because the queue is a circular buffer and if nothing refills it it therefore ends up repeating itself
21:07:55 <b_jonas> ais523: that's what new sound cards do. old ones have analog components in them, connected in a fixed manner, with parameters adjustable
21:08:16 <ais523> yes, old ones normally had frequency and amplitude envelope generators
21:08:37 <b_jonas> and supposedly noise generators too, though I don't know what those do
21:08:39 <ais523> which let you specify what function should be used for the frequency and/or amplitude over time
21:08:52 <ais523> b_jonas: they're basically just random number generators, which use the random numbers directly as samples
21:09:09 <ais523> the result is an approximation of white noise
21:09:32 <zzo38> The audio program can store stuff in the sound card's memory and make their own queue if you want to; the "receive data" events can be used to receive the data from the CPU if you want to do. You could also instead define it as having period and waveforms and stuff and implement that in the audio program instead, if you want to do.
21:09:34 <ais523> luckily you don't need a very good random number generator for that, just good enough that human ears can't spot the pattern; I think LFSRs were the common implementation
21:10:06 <b_jonas> ais523: yeah, those would probably be the easiest
21:10:16 <b_jonas> since they need fewer bits of state and not much electronics
21:10:31 <b_jonas> only constant multiplication and addition
21:10:56 <ais523> LFSR/LFSRNG is even simpler in hardware
21:11:01 <ais523> it's just a shift register and a few xors
21:11:06 <zzo38> Some old computers do use LFSR for the noise channel
21:11:15 <b_jonas> but don't you need a longer shift register for that?
21:11:24 <b_jonas> I somehow think that would require slightly bigger hardware
21:11:41 <ais523> not really, the period's still the same as that of an LCRNG on the same register size
21:11:43 <b_jonas> yeah, I guess it's not much of a difference
21:11:48 <zzo38> (With what I have, you would be able to program it to act more like old computers or newer ones, or something else that you want to do, too)
21:13:29 <ais523> hmm, apparently the version on Wikipedia has no constant term and thus the period is 1 shorter (as you have to avoid the all-zeroes state)
21:19:28 <fizzie> rfk86 (the TI-86 port of robotfindskitten) uses a LFSR-based RNG for positioning the NKIs, for no particular reason.
21:19:40 <ais523> what does it use to position the KIs?
21:20:27 <fizzie> ...well, there's just one (per round). But I guess the same thing, I just didn't think of that.
21:20:47 <fizzie> Also for picking the descriptions.
21:21:42 <fizzie> I think it's seeded by the time you spend on the splash screen, so in theory you can win every time if you can measure that accurately enough. But that'd kind of miss the point of the game.
21:22:08 <ais523> calculators seem like a bad platform for running robotfindskitten, as the executable is mostly text and not much logic
21:22:26 <ais523> fwiw, I've seen people speedrun robotfindskitten, which I suspect is also missing the point of the game
21:22:44 <fizzie> Yes, there isn't much code. I did a simple LZ77/Huffman compression for the text.
21:23:08 <b_jonas> ais523: sure, but then speedrunning can be enjoyable on its own, even if it doesn't give the original experience of the first gameplay
21:23:18 <b_jonas> a lot of more broken speedruns are like that
21:23:20 <ais523> b_jonas: have you /played/ robotfindskitten? :-D
21:23:48 <fizzie> It calls itself a "zen simulation", FWIW.
21:24:03 <ais523> there are lots of games where I'd argue that speedrunning can be enjoyable even if it misses the point of the game, most games in fact
21:24:29 <zzo38> You could also try porting to Glulx or Z-machine, which have built-in features for text compression (I wrote a assembler for Glulx, and for Z-machine there is ZAPF)
21:25:19 <ais523> the hardest part about making that work would be the screen-oriented/vi-keys controls
21:25:24 <zzo38> (However, I think the way that the Huffman tree is stored in Glulx is rather inefficient)
21:25:26 <fizzie> There's an Inform port of the game.
21:25:44 <zzo38> ais523: In Glulx you can use a text grid window, and it supports single key input.
21:26:12 <zzo38> (It won't run on CheapGlk, but it will still work on GlkTerm and most other implementations)
21:26:24 <ais523> zzo38: do you have ideas for efficient ways to store Huffman trees? I need one of those for a project I'm working on, and I have my own ideas too, but yours might be better
21:27:28 <zzo38> ais523: I think I mentioned here something before.
21:27:51 <fizzie> Looking at the readme, the Inform port doesn't compile to Glulx "because of copious use of Z-machine assembly instructions": https://github.com/DavidGriffith/rfk-inform
21:27:52 <zzo38> Involving the Kraft/MacMillian inequality, I think.
21:29:59 <zzo38> fizzie: Inform even uses an entirely different syntax for Z-machine assembly instructions than ZAP does; the names of the instructions are also different. (With Glulx, the names of the instructions are same but the syntax for operands differs in different implementations.)
21:30:09 <ais523> zzo38: my approach is sort-of the reverse of that, I store the number of codewords of each length, and that's all you need to work out the codeword themselves (assuming a canonical Huffman code; there's no reason to use a non-canonical code)
21:30:54 <ais523> then you just need to store the meanings of the codewords in some arbitrary order (e.g. length order, tiebroken by lexicographical order), and there's even scope for optimisation there because if two codewords have the same length you can swap their meanings without any loss in efficiency
21:31:16 <zzo38> Yes, I was also assuming canonical. However, I was perhaps assuming a different kind of method for meanings of codewords.
21:33:40 <zzo38> (Which is better probably depends what kind of data you are compressing; what you do is probably better for what you were thinking of.)
21:34:31 <zzo38> There is a example Glulx program with glasm syntax in esolang wiki in the article about Deadfish. (I also wrote a Z-machine implementation on Glulx with glasm.)
21:36:58 <ais523> <b_jonas> ais523: have you figured out anything new about that letter permutation problem? ← it's NP-complete but I found an approximate solution that was good enough for my purposes
21:37:13 <b_jonas> how did you prove it's NP-complete?
21:37:34 <zzo38> I don't know if do you want to write any programs in Glulx?
21:37:35 <ais523> oh, that's not actually a proof I think, just a guess
21:37:45 <ais523> because I'm not sure you can translate sufficiently arbitrary graphs
21:38:01 <ais523> but the Wikipedia article implies that clique cover is NP-complete for most types of graph, except the ones where it obviously isn't
21:38:06 <ais523> so I didn't car eto look further
21:38:10 <b_jonas> ok, so we don't know yet if there's a polynomial solution
21:39:53 <b_jonas> I thought about it only a little, and all I got was see why the simple polynomial solution doesn't actually work
21:40:30 <b_jonas> but I don't really know whether there's a polynomial solution or not
21:48:10 -!- aloo_shu has joined.
21:48:44 <ais523> b_jonas: well it's literally just the clique cover problem on the graph specified by "sequences are compatible with each other", assuming that pairwise compatbility in a group means that the whole group is compatible at once
21:48:58 <ais523> so the question boils down to what sort of graph the sequences can generate
21:49:04 -!- aloo_shu has left ("WeeChat 2.4").
21:49:37 <b_jonas> I think I've been misunderstanding something here
21:49:48 <b_jonas> I'll have to re-read what you wrote about this probably
22:20:14 <b_jonas> maybe I should learn some python3
22:25:42 -!- rodgort has quit (Quit: Leaving).
22:29:53 -!- rodgort has joined.
22:37:06 -!- tromp has quit (Remote host closed the connection).
23:00:36 -!- danieljabailey has joined.
23:26:56 <ais523> wow, robotfindskitten has an info file
23:27:28 <ais523> also a man page, but that's less surprising
23:28:35 <ais523> you can also move the robot using both vikeys and emacs-keys (emacs-keys are somewhat impractical for a roguelike…)
23:29:18 <b_jonas> ais523: can you move them with wasd (or waxd)? numpad?
23:29:29 <ais523> numpad yes, I think wasd no, but I'll try
23:30:11 <shachaf> Emacs keys are no more impractical for a roguelike than they are for emacs, are they?
23:31:18 <shachaf> Do you think one-pass UI layout is practical?
23:31:21 <ais523> shachaf: so vi has this insert mode / command mode split, in insert mode almost all keys just insert themselves literally and to leave it you press Escape to enter command mode
23:31:32 <b_jonas> ais523: nor does wordstar keys, as in ^E ^S ^X ^D right?
23:31:54 <ais523> in Emacs, instead of there being keys to toggle between the modes, you're effectively in insert mode except when holding a modifier key
23:32:06 <ais523> for basic things like movement, you hold ctrl to give the command and release to return to insert mode
23:32:12 <shachaf> I've been adding modal UIs all over the place.
23:32:20 <shachaf> I guess people normally call them menus.
23:32:29 <b_jonas> yeah, control or alt in emacs
23:32:35 <ais523> this is pretty much equally as fast as the vi method once you're used to it, and has the advantage that you can't be in the wrong mode by mistake, but it's kind-of silly if your game doesn't /have/ insert mode
23:32:48 <shachaf> For example, I press the printscreen key, and then I get a list of options: [w]indow, [r]oot, [s]election
23:33:15 <shachaf> So I don't have to remember to press alt-shift-printscreen or cmd-shift-5 or whatever people normally do.
23:33:19 <ais523> (vi has, in general, faster cursor movement and basic editing commands than emacs, but it's not because it's modal, it's just because it has a better selection of them)
23:33:27 <shachaf> for this innovation i should get a nobel prize in ui design
23:33:34 <b_jonas> ais523: I think back in the 8-bit era, there was a popular keyboard control scheme for top-view games where IIRC your left hand controls up-down movement, and the right hand left-right movement
23:33:53 <zzo38> shachaf: Yes, there are menus like that in many programs, although there are also programs having modes without menus (such as vi and ZZTQED)
23:33:56 <b_jonas> emacs keys is sort of like that but with more contortion
23:34:21 <zzo38> b_jonas: Yes, I have played some game like that
23:34:30 <b_jonas> shachaf: I don't use printscreen, I just use gimp to make screenshots
23:34:46 <zzo38> (I have found that some support the arrow keys as well, but some don't)
23:35:04 <zzo38> I don't use printscreen for screenshots either; I use programs I wrote myself
23:35:33 <b_jonas> this is because I almost always want to edit the screenshot once I take it, so I need gimp anyway
23:36:08 <ais523> I once used the files in /dev that hold copies of the contents of the various virtual terminals to take screenshots
23:36:18 <zzo38> shachaf: Yes, I have used Xlib to write X client programs (including a screenshot program)
23:36:55 <ais523> I don't think X was even running at the time, or I wouldn't have had to resort to that method
23:36:58 <zzo38> ais523: What files are those, and what format?
23:37:09 <b_jonas> ais523: /dev/vcs1 and /dev/vcsa1
23:37:42 <shachaf> zzo38: I wanted to implement the X protocol myself, but unfortunately using Xlib is mandatory.
23:37:47 <b_jonas> vcs just has the bytes in it, vcsa has the attributes too
23:37:52 <zzo38> b_jonas: OK, I will look
23:37:56 <ais523> zzo38: the format is basically the first line, followed by the second line, followed by the third line, etc., but they aren't separated with newlines, rather each line contains every character on it up to the edge of the screen, things "past the end of the line" are padded with NUL or space
23:38:05 <zzo38> shachaf: There is also xcb in case you don't like Xlib
23:38:28 <shachaf> But you have to use xcb if you want to use OpenGL.
23:39:09 <b_jonas> shachaf: how can it be mandatory? you can have a basic X client that connects to a remote X server through a tcp socket. how can the server know whether you're Xlib?
23:39:19 <shachaf> It's only mandatory for OpenGL.
23:39:38 <shachaf> But I think GPU rendering is mandatory for software nowadays.
23:40:07 <zzo38> ais523: Is it like the PC text screen format? I read that man page, and so also, how to determine the font?
23:40:16 <b_jonas> not necessarily GPU rendering, but at least client-side rendering, as opposed to having the X server draw graphics for you
23:40:32 <b_jonas> zzo38: there are ioctls for that, see man console_ioctl
23:40:38 <shachaf> Speaking of liking this, do you like https://news.ycombinator.com/item?id=19701275 ?
23:40:41 <b_jonas> zzo38: wait, I have an example for that
23:40:55 <zzo38> I often just draw graphics by the X server; it works well enough for most stuff
23:41:27 <zzo38> shachaf: As you can see, I already answered that question.
23:41:36 <b_jonas> zzo38: https://www.perlmonks.com/?node_id=793690 reads the font with that ioctl
23:42:01 <b_jonas> might not work on modern linux if it uses framebuffer console, that is, when console has the graphics card in graphics mode actually, not in VGA text mode
23:42:17 <shachaf> I was asking whether you liked the comment "Do you like this?".
23:42:24 <shachaf> Also I was asking int-e, I think.
23:42:37 <b_jonas> I think there's also an ioctl to read the video mode and the palette
23:43:16 <b_jonas> I don't know how to read the cursor setting
23:44:35 <b_jonas> stupid question. how does SNES Earthbound display text in a proportional width font? isn't that impossible in the SNES graphics hardware?
23:45:35 <b_jonas> and it's not just a few instances of text. it has a lot of in-game text, and also allows you to enter a character name and displays that with the proportional pitch font too
23:45:48 <zzo38> I don't think so. I know some programs on NES/Famicom use proportional text, and it would be done by writing the text into CHR RAM
23:45:59 <zzo38> I don't know much how SNES works, but it might do something similar
23:47:09 <b_jonas> how much RAM does that graphics chip have? can it store four separate character tables, each of 255 cells, for the four layers?
23:47:28 <b_jonas> maybe it only uses two layers
23:47:34 <b_jonas> there are various video moeds
23:48:14 <ais523> b_jonas: IIRC the NES could use CHR RAM that was stored on the cartridge (rather than the console)
23:48:23 -!- oerjan has joined.
23:48:25 <ais523> so there was no limit in the console, but the more you wanted, the more expensive the cartridge would have to be
23:48:34 <b_jonas> ais523: yeah, that seems possible, if the rom is fast enough
23:49:08 <ais523> it wouldn't surprise me if the SNES worked the same way
23:49:59 <zzo38> In NES, the console has only 2K RAM for the PPU (usually used only for the name tables, not the pattern tables), and the cartridge contains ROM or RAM for the pattern tables.
23:50:34 <b_jonas> ok, but this is the SNES, its hardware is a bit stronger
23:50:40 -!- arseniiv has quit (Ping timeout: 252 seconds).
23:50:49 <zzo38> Yes, but I don't know how it is work on SNES
23:51:17 <ais523> the N64 allowed you to add extra RAM in the controller
23:51:42 <b_jonas> rendering proportional width text into RAM purely in CPU is quite a feat though
23:51:49 <ais523> this seems like an implausible UX decision, so most likely it was a combination of backwards-compatibility decisions
23:52:05 <b_jonas> ais523: in the *controller*? wtf
23:52:26 <ais523> b_jonas: yes; out of all the places to put it, I might not have guessed that one at all
23:52:52 <ais523> my guess as to what happened is that they allowed add-ons to be placed in the controller for, e.g., rumble units and tilt sensors
23:52:57 <b_jonas> PCs had the joystick port on sound cards
23:53:12 <ais523> then when they started making games that needed additional RAM, the controller add-on slot was the most convenient place to put it
23:53:13 <pikhq> I know you could have memory cards in there, but wait, was the protocol actually fast enough to use for something other than save games?
23:53:17 <b_jonas> sure, but why would they have a controller connector that's fast enough to relay RAM?
23:53:35 <b_jonas> a tilt sensor or vibrating motor wouldn't need much bandwidth
23:53:35 <kmc> I thought the RAM goes in that port on the top of the N64
23:53:37 <kmc> maybe both?
23:53:41 <pikhq> ais523: Uh, the N64 Expansion Pak was not a controller addon.
23:53:49 <ais523> pikhq: oh, OK, that makes more sense
23:54:07 <kmc> this one goes in the console itself https://en.wikipedia.org/wiki/Nintendo_64_accessories#Expansion_Pak_(NUS-007)
23:54:21 <ais523> in a way it's a pity I misremembered, because the mismemory was pretty eso
23:54:43 <pikhq> The N64 used RDRAM, and the Expansion Pak plugged into a custom RDRAM slot on the console.
23:54:55 <b_jonas> ais523: some of the things those 8-bit consoles and games do are pretty eso, or seem like that to me anyway
23:55:07 <kmc> kind of crazy to think that thing had only 4MB of RAM out of the box
23:55:08 <pikhq> Because it was RDRAM, you had to pull out the RDRAM bus terminator to put it in.
23:55:36 <kmc> what's the deal with RDRAM
23:56:29 <pikhq> Proprietary high bandwidth but high latency bus that DDR beat out.
23:57:31 <b_jonas> and now we have like DDR4 or something
23:57:32 <kmc> yeah but what specifically makes it different from other DRAM
23:57:35 <b_jonas> I'm not sure what the latest is
23:57:53 <kmc> the N64 had 4 MB of RAM on a 500 MB/s bus
23:59:00 <b_jonas> though of course it depends on what the latency is
23:59:04 <b_jonas> and how the cpu can use it
23:59:09 <pikhq> RDRAM used a substantially more serial bus, clocked at a higher speed.
23:59:34 <pikhq> The N64 had a 9 bit bus to its RAM, clocked at 500 MHz.
23:59:53 <b_jonas> but then, it needs the high speed because the N64 has a pretty powerful graphics chipset