00:02:13 oh nice! 00:02:27 finallyi 00:03:12 the rust standard library now documentedly defines std::cell::UnsafeCell and std::cell::Cell with the #[repr(transparent)] attribute 00:04:20 plus also std::mem::ManuallyDrop too 00:07:14 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 but rogue doesn't have corpses, does it? how do you get objects that you can't carry? 00:10:22 In case you are already carrying too many items 00:16:32 -!- xkapastel has quit (Quit: Connection closed for inactivity). 00:22:19 `? nuff 00:22:20 Nuff is a substance extracted from fairies. Somehow no one really minds this. 00:22:56 i'd forgotten about that. 00:24:11 @seen hppavilion[1] 00:24:12 hPpa\/iLI0N[1] 00:24:16 um 00:24:39 @help seen 00:24:39 help . Ask for help for . Try 'list' for all commands 00:24:47 @help @seen 00:24:48 help . Ask for help for . Try 'list' for all commands 00:24:57 how do I tell what the spelling correction corrects it to? 00:27:21 In general or in this specific case? 00:27:41 @sean 00:27:42 Maybe you meant: slap learn keal 00:27:47 @leet foo 00:27:47 fOo 00:27:51 hm that did not work 00:28:16 shachaf: both 00:28:17 I located @leet by just doing @listmodules and a @list on any likely subjects. 00:28:32 shachaf: also where has hppavilion disappeared? 00:28:39 In this particular case it's @leet, which I already knew. 00:28:55 But I was being stubborn about the way you phrased your question or something and unhelpful for that reason. 00:29:12 So I made fizzie do unnecessary work. 00:29:14 he's the other regular besides boily who's disappeared recently 00:30:32 @leet Do you wish to make the mountains bare their head 00:30:32 dO joo \/\/I5H 7o MAk3 TH3 mOun+4iNz B4r3 +h3iR |-|eaD 00:30:45 @aeet 00:30:45 Say again? 00:30:50 @aeen 00:30:50 Say again? 00:30:58 @aeen Hm 00:30:58 h/\/\ 00:31:25 @saen Hm 00:31:26 Unknown command, try @list 00:31:40 @seea Hm 00:31:40 Maybe you meant: vera leet 00:31:43 there 00:32:52 there might be some command that's got just the wrong levenshtein neighbors to find it by such small adjustments... 00:32:52 @help leet 00:32:53 elite . Translate English to elitespeak 00:33:18 @help elite 00:33:18 elite . Translate English to elitespeak 00:33:46 @elite elite 00:33:46 31It3 00:36:39 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:36:50 I see 00:37:31 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 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 fizzie: Are you able to fix the program? 00:42:45 (or is that someone else's job?) 00:51:58 @run id "foo" 00:52:00 "foo" 00:52:08 I don't think it's anyone's actual job. But probably it's closer to being someone else's job. 00:52:21 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 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 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:02:43 int-e: I see 01:04:34 zzo38: I'm running the thing, I do occasional maintenance but usually I don't go beyond fixing broken things... 01:06:31 int-e: I think spell is broken too, by the way. 01:06:33 @spell something 01:06:34 Plugin `spell' failed with: aspell: readCreateProcessWithExitCode: runInteractiveProcess: exec: does not exist (No such file or directory) 01:07:14 (I'm not even sure what it should do, just came across it when listing things.) 01:07:52 Hmm that looks simple enough... 01:08:02 @spell somethingg 01:08:02 something somethings something's 01:08:09 Oh, so that's what it does. 01:08:25 @all-dicts 01:08:25 all-dicts ... Query all databases on dict.org 01:08:32 mm 01:10:05 wtf: nazi True = lift on >> say "Spelling nazi engaged." 01:12:26 @vera radar 01:12:27 No match for "radar". 01:17:32 @run replicate "foo" 4 01:17:37 error: 01:17:39 • Couldn't match expected type ‘Int’ with actual type ‘[Char]’ 01:17:41 • In the first argument of ‘replicate’, namely ‘"foo"’ 01:17:44 @run replicate 4 "foo" 01:17:46 ["foo","foo","foo","foo"] 01:17:47 @ru replicate 4 "foo" 01:17:49 ["foo","foo","foo","foo"] 01:17:50 @r replicate 4 "foo" 01:17:50 Maybe you meant: rc reconnect remember repoint roll run v @ ? . 01:17:56 @u replicate 4 "foo" 01:17:57 Maybe you meant: undefine undo unlambda unmtl unpf unpl unpointless unshift-topic uptime url v @ ? . 01:18:00 @n replicate 4 "foo" 01:18:00 Maybe you meant: nazi-off nazi-on nixon wn v @ ? . 01:18:02 ... 01:18:16 @list 01:18:16 What module? Try @listmodules for some ideas. 01:18:18 b_jonas: use privmsg 01:23:07 @thank 01:23:07 Maybe you meant: thank you thanks 01:23:11 @help thank 01:23:12 help . Ask for help for . Try 'list' for all commands 01:23:20 @list dummy 01:23:20 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 at least half of these are memorials of a sillier time on #haskell. 01:27:01 `thank lambdabot 01:27:02 ​/srv/hackeso-code/multibot_cmds/lib/limits: line 5: exec: thank: not found 01:27:06 `thanks lambdabot 01:27:06 Thanks, lambdabot. Thambdabot. 01:27:09 hmm 01:28:27 ^thanks lambdabot 01:28:27 Thanks, lambdabot. Thambdabot. 01:28:38 (I just like to verify that every now and then.) 01:28:54 @list quote 01:28:55 quote provides: quote remember forget ghc fortune yow arr yarr keal b52s pinky brain palomer girl19 v yhjulwwiefzojcbxybbruweejw protontorpedo nixon farber 01:29:00 `quote 01:29:01 799) 499) What is miff-muffered moof? that's a tough question [...] miff-muffered moof sounds like a setup to something, but itidus screws it up. 01:31:07 ^thanks t0st 01:31:07 Thanks, t0st. T0st. 01:31:16 `thanks t0st 01:31:17 Thanks, t0st. Th0st. 01:31:47 shocking 01:31:56 Thocking? 01:33:28 ^thanks firefox 01:33:28 Thanks, firefox. Thirefox. 01:34:30 `thanks mozilla 01:34:31 Thanks, mozilla. Thozilla. 01:40:18 -!- b_jonas has quit (Quit: leaving). 01:50:14 `unideco 5⁄2 01:50:15 ​/srv/hackeso-code/multibot_cmds/lib/limits: line 5: exec: unideco: not found 01:50:19 `unidecode 5⁄2 01:50:20 ​[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 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 [[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 [[Keg]] M https://esolangs.org/w/index.php?diff=61710&oldid=61701 * A * (+61) Fix style and add a golfing tutorial 08:49:38 [[User:JonoCode9374]] M https://esolangs.org/w/index.php?diff=61711&oldid=58350 * JonoCode9374 * (+264) Fixed a bit of spelling 08:50:42 [[(PTM)]] https://esolangs.org/w/index.php?diff=61712&oldid=52664 * RealUndefined * (+12) improve format 08:51:29 [[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 [[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 [[Keg/Golfing]] https://esolangs.org/w/index.php?diff=61715&oldid=61714 * A * (+1591) 09:07:48 [[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 [[Keg]] M https://esolangs.org/w/index.php?diff=61717&oldid=61713 * A * (+61) Add links 09:14:56 [[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:16 Hi :-) 09:25:23 -!- tromp has joined. 09:27:01 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 [[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 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 [[Keg/Golfing]] M https://esolangs.org/w/index.php?diff=61720&oldid=61719 * A * (+108) Small detail 12:36:17 [[Keg/Golfing]] M https://esolangs.org/w/index.php?diff=61721&oldid=61720 * A * (-1) grm 12:37:27 [[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 [[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 [[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 [[Keg/Golfing]] M https://esolangs.org/w/index.php?diff=61725&oldid=61724 * A * (+22) *sigh* 13:10:44 [[Talk:Keg]] N https://esolangs.org/w/index.php?oldid=61726 * A * (+411) Write an incomplete message. TODO 13:16:12 [[Talk:Keg]] https://esolangs.org/w/index.php?diff=61727&oldid=61726 * A * (+659) End my talk 13:16:59 [[Talk:Keg]] M https://esolangs.org/w/index.php?diff=61728&oldid=61727 * A * (+67) 13:18:04 [[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 [[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 [[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 [[User:JonoCode9374]] M https://esolangs.org/w/index.php?diff=61732&oldid=61731 * A * (-175) Undo all of my edits 13:58:24 [[Talk:Keg]] M https://esolangs.org/w/index.php?diff=61733&oldid=61729 * A * (+4) 14:03:02 [[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 good morning all 15:02:19 [[History (programming language)]] M https://esolangs.org/w/index.php?diff=61735&oldid=61706 * A * (-212) Simplify the commands 15:04:21 are there any esoteric DSP languages? 15:05:29 or esoteric frameworks for (possibly simulated) analog computing? 15:08:48 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 Depending on where you draw the line, I think the answer is yes to a couple of those 15:10:54 ais's Checkout, Codegolf SE's Marbelous come to mind 15:15:36 fourier transforms are too good 15:16:05 "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 Music as syntax does happen, but not generally encoded as audio -- https://esolangs.org/wiki/Fugue comes to mind. 15:17:30 Bitoven and Musical-X are in the same general area. 15:17:44 And Velato. 15:17:50 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 (not counting stuff like MIDI keyboards) 15:18:14 I saw a guy playing a MIDI clarinet once. it was pretty cool 15:18:23 instead of a reed it has a breath sensor 15:18:56 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 it is pretty much the centeripiece of their apartment 15:19:53 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 Heh. Is it a physics-based simulator or what? 15:22:54 I think some of my university coworkers were doing / had done work on simulating the physics of string instruments. 15:36:13 Today's example of context-unaware bad word filtering: "cons**cuous" & "sus**cuous". 15:38:05 scunthorpe 15:38:44 fizzie: I don't get it. 15:39:58 (except maybe that it won't catch "suspicious") 15:42:02 int-e: "spic" it's a bad word. And they used one of those filters that cares not of word boundaries. 15:42:53 lol scunthorpe 15:43:04 (Like the clbuttic "buttbuttinate" example. Except this one adds stars.) 15:44:14 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 fizzie: oh. makes sense. 15:48:46 (Also it was "sus**cious", I just messed that one up.) 15:52:45 ah ok 15:56:36 -!- _zM has joined. 15:57:14 . 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:47 `unidecode ѕ 15:58:48 ​[U+0455 CYRILLIC SMALL LETTER DZE] 15:58:52 I didn't know of that one. 16:02:20 hah apparently that particular substitution has made it into various spam mails; google reports 1460 hits. 16:03:35 (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 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 Are there lists of NNTP server software with comparisons? 17:30:54 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 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 (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 kmc: https://esolangs.org/wiki/Analogia is basically an esolang that's a specification of how analog computers work 20:46:17 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 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:47 nice 20:46:59 I mean more like a language that has DSP type of stuff as primitives 20:47:00 oh, I should check if the CLC-intercal homepage is up 20:47:06 and is designed around making, like, filter pipelines 20:47:14 as mentioned, Fugue uses a MIDI file as source code, but it's still command-based 20:47:24 nope 20:47:27 probably lost forever 20:48:25 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 most of what you do are addition, multiplication, FFT 20:48:56 did you implement Analogia? 20:49:40 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 no, and I'm not even sure it's computable 20:50:01 I think it probably is computuable, but guesses as to computational class are quite different from proofs 20:50:21 ais523: possibly stupid question: y = ∫y+y ∂x ... shouldn't the integrand be x+x? 20:50:25 ais523: have you figured out anything new about that letter permutation problem? 20:50:31 also you could just implement it numerically and accept that some pathological programs will not run properly 20:50:38 and may not run properly on an analog computer 20:50:45 int-e: they're both legal 20:50:50 but have different meanings 20:50:56 certainly you can make chaotic things using op amps that will produce wildly different results when disturbed by noise 20:51:08 there are some cool ones here, http://www.falstad.com/circuit/circuitjs.html 20:51:21 ais523: I'm wondering how you got x^2 out of that. 20:51:30 go to Circuits -> Op amp -> Chaotic circuits 20:51:44 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 you have to be able to make chaotic things if it's Turing-complete 20:52:14 int-e: oh, I see 20:52:39 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 so in practice they have finite storage 20:52:49 that's kind of my point 20:53:15 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 IIRC, y = ∫y+y ∂x would resolve to something like y = A*e**2x for some constant A, wouldn't it? 20:54:07 variable resistors are way cheaper and more reliable than variable capacitors 20:54:23 although variable capacitors look more electronicsy 20:54:41 ais523: yes, that looks more plausible (A being the initial value, so 0 isn't a good one) 20:55:18 the lack of parenthesis there still bothers me 20:55:38 ais523: ah, that was assuming x0 = 0; A = y0 * e^(-2x0) 20:55:42 it should be y = ∫(y+y)∂x and y = A*e**(2x) 20:56:01 ais523: this is true 20:56:17 but the language source code format, as you defined it, doesn't allow the former 20:56:22 I want to build a magnetic loop antenna and by far the most expensive component is a varicap 20:56:45 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 [[Analogia]] https://esolangs.org/w/index.php?diff=61736&oldid=59717 * Ais523 * (+10) fix the comment in the example 20:57:30 ais523: the @0 in the expression if y@0 ;-) 20:57:35 *is 20:58:01 [[Analogia]] https://esolangs.org/w/index.php?diff=61737&oldid=61736 * Ais523 * (-8) /* Syntax */ sigh 20:58:29 but thanks, I can follow that example now at least :) 20:58:50 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 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 so the write-up is often fairly nonsensical until someone else reads it and tells me what's wrong 20:59:44 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 ais523: yeah, it's been almost two years since I thought up Consumer Society 21:00:18 What do you think of that? 21:01:09 (In addition to the expiry events, there is also the receive data events.) 21:01:20 zzo38: and then there are arithmetic connectors and SRAM registers to transform the channel values to sound? 21:01:48 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 timbre is also probably relevant, unless you want to write chiptune 21:02:18 b_jonas: Yes. 21:02:24 that looks like a good way to define an analog piecewise-linear output, though 21:03:20 ais523: The values are amplitude only. 21:03:37 oh, and they aren't being interpolated, so you have step changes, not piecewise-linear 21:04:09 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 it's sort-of like a clicking noise but a bit more distinctive than that 21:05:17 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 hmm… the exception may be if you change the amplitude at the moment the oscillating output crosses zero 21:06:38 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 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 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 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 yes, old ones normally had frequency and amplitude envelope generators 21:08:37 and supposedly noise generators too, though I don't know what those do 21:08:39 which let you specify what function should be used for the frequency and/or amplitude over time 21:08:52 b_jonas: they're basically just random number generators, which use the random numbers directly as samples 21:09:09 the result is an approximation of white noise 21:09:15 I see 21:09:22 yeah, that could owrk 21:09:32 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 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 ais523: yeah, those would probably be the easiest 21:10:16 since they need fewer bits of state and not much electronics 21:10:31 only constant multiplication and addition 21:10:49 no, that's LCRNG 21:10:56 LFSR/LFSRNG is even simpler in hardware 21:11:01 it's just a shift register and a few xors 21:11:06 Some old computers do use LFSR for the noise channel 21:11:09 oh 21:11:15 but don't you need a longer shift register for that? 21:11:24 I somehow think that would require slightly bigger hardware 21:11:41 not really, the period's still the same as that of an LCRNG on the same register size 21:11:43 yeah, I guess it's not much of a difference 21:11:48 (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 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 rfk86 (the TI-86 port of robotfindskitten) uses a LFSR-based RNG for positioning the NKIs, for no particular reason. 21:19:40 what does it use to position the KIs? 21:20:27 ...well, there's just one (per round). But I guess the same thing, I just didn't think of that. 21:20:47 Also for picking the descriptions. 21:21:42 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 calculators seem like a bad platform for running robotfindskitten, as the executable is mostly text and not much logic 21:22:26 fwiw, I've seen people speedrun robotfindskitten, which I suspect is also missing the point of the game 21:22:44 Yes, there isn't much code. I did a simple LZ77/Huffman compression for the text. 21:23:08 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 a lot of more broken speedruns are like that 21:23:20 b_jonas: have you /played/ robotfindskitten? :-D 21:23:27 no 21:23:48 It calls itself a "zen simulation", FWIW. 21:24:03 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:06 rfk is a special case 21:24:12 ok 21:24:29 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 the hardest part about making that work would be the screen-oriented/vi-keys controls 21:25:24 (However, I think the way that the Huffman tree is stored in Glulx is rather inefficient) 21:25:26 There's an Inform port of the game. 21:25:44 ais523: In Glulx you can use a text grid window, and it supports single key input. 21:26:12 (It won't run on CheapGlk, but it will still work on GlkTerm and most other implementations) 21:26:24 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 ais523: I think I mentioned here something before. 21:27:51 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 Involving the Kraft/MacMillian inequality, I think. 21:29:59 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 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 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 Yes, I was also assuming canonical. However, I was perhaps assuming a different kind of method for meanings of codewords. 21:33:40 (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 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: 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:07 oh nice 21:37:13 how did you prove it's NP-complete? 21:37:21 clique cover problem 21:37:34 I don't know if do you want to write any programs in Glulx? 21:37:35 oh, that's not actually a proof I think, just a guess 21:37:45 because I'm not sure you can translate sufficiently arbitrary graphs 21:38:01 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 so I didn't car eto look further 21:38:10 ok, so we don't know yet if there's a polynomial solution 21:39:53 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 but I don't really know whether there's a polynomial solution or not 21:48:10 -!- aloo_shu has joined. 21:48:44 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 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:26 ais523: hmm 21:49:37 I think I've been misunderstanding something here 21:49:48 I'll have to re-read what you wrote about this probably 22:20:14 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 wow, robotfindskitten has an info file 23:27:28 also a man page, but that's less surprising 23:28:35 you can also move the robot using both vikeys and emacs-keys (emacs-keys are somewhat impractical for a roguelike…) 23:29:18 ais523: can you move them with wasd (or waxd)? numpad? 23:29:29 numpad yes, I think wasd no, but I'll try 23:30:11 Emacs keys are no more impractical for a roguelike than they are for emacs, are they? 23:30:37 WASD doesn't work 23:31:18 Do you think one-pass UI layout is practical? 23:31:21 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 ais523: nor does wordstar keys, as in ^E ^S ^X ^D right? 23:31:54 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:04 Modal UIs are so good. 23:32:06 for basic things like movement, you hold ctrl to give the command and release to return to insert mode 23:32:12 I've been adding modal UIs all over the place. 23:32:20 I guess people normally call them menus. 23:32:29 yeah, control or alt in emacs 23:32:35 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 For example, I press the printscreen key, and then I get a list of options: [w]indow, [r]oot, [s]election 23:33:15 So I don't have to remember to press alt-shift-printscreen or cmd-shift-5 or whatever people normally do. 23:33:19 (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 for this innovation i should get a nobel prize in ui design 23:33:34 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 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 emacs keys is sort of like that but with more contortion 23:34:21 b_jonas: Yes, I have played some game like that 23:34:30 shachaf: I don't use printscreen, I just use gimp to make screenshots 23:34:46 (I have found that some support the arrow keys as well, but some don't) 23:35:02 zzo38: Do you like Xlib? 23:35:04 I don't use printscreen for screenshots either; I use programs I wrote myself 23:35:33 this is because I almost always want to edit the screenshot once I take it, so I need gimp anyway 23:36:08 I once used the files in /dev that hold copies of the contents of the various virtual terminals to take screenshots 23:36:18 shachaf: Yes, I have used Xlib to write X client programs (including a screenshot program) 23:36:55 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 ais523: What files are those, and what format? 23:37:09 ais523: /dev/vcs1 and /dev/vcsa1 23:37:30 zzo38: see man 4 vcs 23:37:42 zzo38: I wanted to implement the X protocol myself, but unfortunately using Xlib is mandatory. 23:37:45 Do you like this? 23:37:47 vcs just has the bytes in it, vcsa has the attributes too 23:37:52 b_jonas: OK, I will look 23:37:56 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 shachaf: There is also xcb in case you don't like Xlib 23:38:28 But you have to use xcb if you want to use OpenGL. 23:38:36 Uh, you have to use xlib. 23:39:09 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 It's only mandatory for OpenGL. 23:39:38 But I think GPU rendering is mandatory for software nowadays. 23:39:42 sure 23:40:07 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 not necessarily GPU rendering, but at least client-side rendering, as opposed to having the X server draw graphics for you 23:40:32 zzo38: there are ioctls for that, see man console_ioctl 23:40:38 Speaking of liking this, do you like https://news.ycombinator.com/item?id=19701275 ? 23:40:41 zzo38: wait, I have an example for that 23:40:55 I often just draw graphics by the X server; it works well enough for most stuff 23:41:27 shachaf: As you can see, I already answered that question. 23:41:36 zzo38: https://www.perlmonks.com/?node_id=793690 reads the font with that ioctl 23:42:01 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 I was asking whether you liked the comment "Do you like this?". 23:42:24 Also I was asking int-e, I think. 23:42:37 I think there's also an ioctl to read the video mode and the palette 23:42:42 or something 23:43:16 I don't know how to read the cursor setting 23:44:35 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 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 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 I don't know much how SNES works, but it might do something similar 23:46:11 hmm 23:47:09 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:12 or three at least? 23:47:28 maybe it only uses two layers 23:47:31 teh game that is 23:47:34 there are various video moeds 23:47:47 probably switches too 23:48:12 seems like magic 23:48:14 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 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 ais523: yeah, that seems possible, if the rom is fast enough 23:49:08 it wouldn't surprise me if the SNES worked the same way 23:49:35 likely 23:49:59 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 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 Yes, but I don't know how it is work on SNES 23:51:17 the N64 allowed you to add extra RAM in the controller 23:51:42 rendering proportional width text into RAM purely in CPU is quite a feat though 23:51:49 this seems like an implausible UX decision, so most likely it was a combination of backwards-compatibility decisions 23:52:05 ais523: in the *controller*? wtf 23:52:26 b_jonas: yes; out of all the places to put it, I might not have guessed that one at all 23:52:52 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 PCs had the joystick port on sound cards 23:53:12 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 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 sure, but why would they have a controller connector that's fast enough to relay RAM? 23:53:35 a tilt sensor or vibrating motor wouldn't need much bandwidth 23:53:35 I thought the RAM goes in that port on the top of the N64 23:53:37 maybe both? 23:53:41 ais523: Uh, the N64 Expansion Pak was not a controller addon. 23:53:49 pikhq: oh, OK, that makes more sense 23:54:07 this one goes in the console itself https://en.wikipedia.org/wiki/Nintendo_64_accessories#Expansion_Pak_(NUS-007) 23:54:21 in a way it's a pity I misremembered, because the mismemory was pretty eso 23:54:43 The N64 used RDRAM, and the Expansion Pak plugged into a custom RDRAM slot on the console. 23:54:55 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 kind of crazy to think that thing had only 4MB of RAM out of the box 23:55:08 Because it was RDRAM, you had to pull out the RDRAM bus terminator to put it in. 23:55:36 what's the deal with RDRAM 23:56:18 what's "RDRAM"? 23:56:29 Proprietary high bandwidth but high latency bus that DDR beat out. 23:56:35 I see 23:57:31 and now we have like DDR4 or something 23:57:32 yeah but what specifically makes it different from other DRAM 23:57:35 I'm not sure what the latest is 23:57:53 the N64 had 4 MB of RAM on a 500 MB/s bus 23:57:56 lol 23:58:46 that's nice 23:59:00 though of course it depends on what the latency is 23:59:04 and how the cpu can use it 23:59:09 RDRAM used a substantially more serial bus, clocked at a higher speed. 23:59:34 The N64 had a 9 bit bus to its RAM, clocked at 500 MHz. 23:59:53 but then, it needs the high speed because the N64 has a pretty powerful graphics chipset