←2026-03-10 2026-03-11 2026-03-12→ ↑2026 ↑all
00:00:49 <esolangs> [[Ima gte. Ima dana]] https://esolangs.org/w/index.php?diff=177543&oldid=177542 * BODOKE2801e * (+141)
00:01:37 <esolangs> [[Ima gte. Ima dana/Operation table]] N https://esolangs.org/w/index.php?oldid=177544 * BODOKE2801e * (+0) Created blank page
00:17:27 -!- ais523 has joined.
00:18:09 <ais523> I implemented my gamepad typing algorithm: http://nethack4.org/pastebin/typing.html
00:19:09 <ais523> I find my most common typoes are moving in the right direction but with the wrong hand, accidental overlaps when trying to type quickly, and accidentally pressing a diagonal when I meant to press an orthogonal
00:19:48 <ais523> <b_jonas> I hope when you get a stable system from this you document it somewhere
00:20:06 <ais523> may take a while to write out the rules but the implementation may be sufficient to determine them experimentally
00:22:20 <ais523> note that you will need to connect a standard-layout (17-button or compatible) game controller in order to use the page
00:22:23 <ais523> (or read the source code)
00:28:57 <ais523> I think you're right that accidental overlaps may become more of a problem as typing speed increases, I wonder if there would be some easy way to tell them apart from the intentional ones
00:35:40 <ais523> it's also not totally finished yet, missing many important punctuation marks and digits
00:55:33 <b_jonas> ais523: I don't quite understand this code. does this mean that if you want one of the secondary consonants [dkmbzvwx] then you hold the following vowel first before you press the consonant, or hold the right shoulder button if there's no following vowel?
00:55:50 <b_jonas> is 5 even the shoulder button, or does that refer to pressing the joystick?
00:56:13 <ais523> b_jonas: you can get it two ways, either hold the preceding vowel and press the consonant, or hold the consonant until you start the following vowel
00:56:18 <ais523> and yes, 5 is the right shoulder button
00:56:28 <b_jonas> I see
00:56:33 <ais523> the HTML/JS gamepad API has really stupid button numbering
00:56:47 <ais523> the face buttons and d-pad aren't at all consistent in their numbering schemes
00:57:02 <ais523> the right shoulder button is the spacebar, it acts like a ninth vowel
00:57:13 <ais523> so holding t and pressing the right shoulder button gives you "d "
00:57:27 <b_jonas> oh, it's space
00:57:43 <esolangs> [[]] https://esolangs.org/w/index.php?diff=177545&oldid=177521 * InLuaIKnow * (+227) /* Lua (made by User:InLuaIKnow) */
00:57:45 <ais523> qu and j are the most difficult, you have to hold orthogonal, press the vowel, then change to a diagonal before releasing
00:57:57 <ais523> it's a fairly easy input to make but a little harder to remember
00:58:11 <ais523> (this works because qu and j are always followed by a vowel in English)
00:58:56 <b_jonas> so because you can hold either the previous vowel or the next vowel to get the secondary consonant, you can use that to get any two of the 16 main consonants one after another if there's a vowel or space before and after?
00:59:19 <ais523> yes
00:59:29 <ais523> but actually there are a lot of special cases to avoid needing to use word boundaries
00:59:40 <ais523> e.g. you can hold a vowel and press two consonants, holding a and pressing t twice gives "add"
00:59:54 <esolangs> [[]] https://esolangs.org/w/index.php?diff=177546&oldid=177545 * InLuaIKnow * (+62) /* Syntax */
01:00:22 <b_jonas> I'm surprised that x rather than j is the secondary consonant paired with c
01:00:25 <ais523> and you can hold a vowel through an n to affect the consonant beyond, holding a and typing "nt" gives "and" rather than "amd" (the choice of m or n in the middle depends on what the third letter is, holding "a" and pressing "np" would give "amb")
01:00:38 <ais523> "x" is sometimes followed by a consonant, e.g. "explosion"
01:00:50 <ais523> but "j" is always followed by a vowel, so it can use an input that requires one
01:00:56 <b_jonas> makes sense
01:01:34 <ais523> it's not totally based on letter frequency (although that was an important factor, it wasn't the only one)
01:02:13 <ais523> the other nontrivial thing is that after c, s, and th, the positions of g and k swap, as do the positions of m and n
01:02:22 <ais523> this "just works" in a very large number of cases
01:02:51 <ais523> so it's worth the extra confusion of the letters changing places sometimes
01:12:46 -!- amby has quit (Quit: so long suckers! i rev up my motorcylce and create a huge cloud of smoke. when the cloud dissipates im lying completely dead on the pavement).
01:12:51 <b_jonas> ais523: how do you type "handful"?
01:13:35 <b_jonas> also how do you type "thanks"? is there a special case to cover these?
01:13:53 <ais523> yes, for "handful" you hold a and type n t
01:14:13 <ais523> and for "thanks" you hold a and type n g
01:14:40 <ais523> holding a vowel and pressing n, then pressing another consonant, the middle letter is m or n depending on what the third letter is
01:14:51 <b_jonas> ah indeed, those are the "two special cases for vowel-n"
01:15:39 <ais523> a syllable in English can't end "amd" or "amk", and if the d or k were part of the next syllable it would have a vowel/l/r after it
01:16:02 <ais523> or rarely n if the k is silent
01:19:39 <ais523> there is another special case that handles, e.g. "jackknife", but it isn't shown on the guide because it's rarely used and it's easier to scan the guide for the letter you want if it only uses each letter once
01:20:39 <ais523> I think the entirety of /usr/share/dict/words (except proper nouns and loanwords) is typable without ever having to use the spacebar to help
01:20:49 <ais523> although I made quite a few late tweaks so I'm not totally sure
01:21:36 <b_jonas> how do you type "meanwhile"?
01:22:17 <b_jonas> (I'm searching a dictionary for consonant clusters)
01:23:56 <b_jonas> also "nothingness"
01:24:44 <b_jonas> and "amongst"
01:25:22 <b_jonas> no wait, "amongst" isn't a problem
01:25:32 <b_jonas> nor is "nothingness"
01:25:54 <ais523> there is a glide for entering "wh", the same way as you would type "qu"
01:26:25 <ais523> hold h, type the vowel, move the d-pad to the right before releasing it
01:26:52 <b_jonas> I see
01:27:00 <ais523> same trick works for "mn" (e.g. "unmnemonic", which I had huge trouble typing even on this normal QWERTY keyboard)
01:27:28 <b_jonas> unmnemonic
01:28:26 <ais523> and "dw" although you have to stretch really far to put that into a problematic position (e.g. "postdwarf")
01:31:20 <b_jonas> I think this might cover all common words. next question "cutzpah"
01:32:18 <ais523> I think that one might actually defeat it, but you can still type it by holding a vowel after the t, backspacing the vowel and then typing the z with the vowel still held
01:32:34 <ais523> (backspace is the left bumper)
01:33:09 <b_jonas> I see
01:33:13 <ais523> or you can do it the other way round, type, e.g. "ze" then backspace the e
01:33:23 <ais523> (this also works for j, qu and lone q)
01:33:34 <b_jonas> what's the normal way to type the punctuation marks shown on the right of the legend?
01:33:48 <ais523> hold the vowel then press the right bumper
01:33:56 <ais523> normally it inserts a space after them too (although for - and / it doesn't)
01:34:09 <b_jonas> I see
01:34:47 <ais523> the reverse pattern (hold space then press the vowel) is currently unused, it would make sense to put another set of punctuation marks on that input
01:35:27 <b_jonas> how about "pocketknife"?
01:36:04 <ais523> special case for kn (and for ck, although that one isn't necessary to type the word); hold n then hold/tap i then move the d-pad towards k
01:36:15 <ais523> and you get "kni"
01:36:44 <b_jonas> ah, so there's qu, wh, mn, kn as these sequences?
01:37:04 <ais523> qu, wh, mn, kn, dw, j
01:37:12 <ais523> and two unused because they aren't important enough
01:37:29 <b_jonas> I see
01:37:34 <ais523> they would logically be dn and zn but neither of those appears at the start of words in practice
01:39:48 <ais523> oh, that reminds me, I was considering making s+space produce "'s " rather than "z ", that would handle all the words ending 's which would otherwise be problematic
01:39:55 <ais523> (primarily due to not having an apostrophe)
01:42:40 <ais523> for apostrophes that aren't 's, I was considering (in the common case) typing them as some other letter and using a dictionary to correct, as there aren't that many words with apostrophes in – o appears to have no collisions in /usr/share/dict/words
01:42:51 <ais523> so, e.g., "it's" would be typed as "itos" and autocorrected
01:42:59 <b_jonas> oh, you could have exceptions for all the other common apostrophe combinations in english then, like "'d", "'re", "n't" "I'm"
01:43:16 <ais523> right
01:43:38 <b_jonas> if s+space produces "'s" then how do you type "waltz"?
01:43:41 <ais523> 're is difficult because r and e are both on the vowels side
01:44:08 <ais523> you would have to type another vowel and delete it
01:44:13 <ais523> so there would be a compromise involved
01:45:11 <ais523> "dz" is an extremely rare ending, so maybe it could have a special case like the case for "nk"
01:45:51 <b_jonas> does the right shoulder button add a second space if you start to type a word holding it? for when you release space before you decide what the next word you want to type is
01:46:11 <ais523> it would
01:46:24 <ais523> I have been considering making that a special case to type "the" but that may be too cute
01:46:44 <ais523> but I've been trying to design the system to not rely on holding space onto the start of a word
01:46:51 <ais523> (so that unknown compound words are typable)
01:47:11 <ais523> this is also important if typing the first word on a line
01:48:16 <b_jonas> hmm, let me check that
01:48:57 <ais523> "and" relies on a special case, it's the most common word that does I think
01:49:27 <ais523> yes, and the second-most common is "which"
01:49:28 <b_jonas> yeah, that should mostly work except for "vs"
01:49:35 <b_jonas> which special case?
01:49:58 <b_jonas> oh, the "md" special case
01:50:01 <ais523> right
01:50:38 <ais523> "vs" is interesting because it's an abbrevation (and isn't actually pronounced the way it's spelled), so it gets to dodge the pronunciation-based reasoning
01:50:55 <b_jonas> besides "vs", I find "khaki" and "khan"
01:51:19 <ais523> I was considering a kh special case because of that
01:51:25 <ais523> but didn't think it'd be useful enough
01:51:37 <b_jonas> they're rare enough that backpacing could be fine
01:51:41 <ais523> there is space on d, vowel, upwards
01:52:11 <b_jonas> isn't that where you're putting "'d"?
01:52:21 <b_jonas> ah, that's only with space as the vowel
01:52:42 <ais523> oh, that's interesting – letter, space, rotate to produce apostrophes
01:52:47 <b_jonas> and it could even multiplex as "'t" after an "n"
01:53:06 <ais523> you would just rotate an n for that I think
01:53:29 <ais523> could have n't, 'd, 's very easily and there is room for five more
01:54:11 <ais523> although there's nowhere really mnemonic to put 're because it doesn't contain any left-hand letters
01:55:11 <ais523> fwiw, I'm considering swapping pb and fv – I am happy with the other 14 placements (which were determined with a lot of experimentation as to what would flow well) but not sure about that one
01:55:24 <b_jonas> there's an alternative, which is that you type "n't" as "not" and have a dictionary of the forty or so words that end in "n't"
01:55:51 <ais523> I was considering "type ' as o, except 's, and use a dictionary"
01:55:54 <b_jonas> but "'d" and "'s" are living endings that you can put to new words so it doesn't work there
01:56:33 <ais523> 'd is normally used to abbreviate "had" or "would" and can only do that on finitely many words
01:56:46 <ais523> or, hmm, can it do that on names?
01:57:03 <b_jonas> maybe
01:57:04 <ais523> 's of course can be used on any noun
01:57:11 <ais523> so it has to be a special case
01:57:36 <b_jonas> there's also "'ve", and "o'clock" definitely needs a one-off exception
01:58:03 <b_jonas> "ma'am" too, and you can't put that on "Maoam" because that's a real word
01:58:06 <ais523> then you have to start dealing with words like "o'er"
01:58:54 <ais523> I think there should be some general-case way to type an apostrophe and maybe a shortcut for common words that contain it
01:59:46 <ais523> but there are so many punctuation marks, ASCII has 94 printable non-whitespace characters and only 62 of them are alphanumeric, so that's 32 punctuation marks that need inputs
02:01:14 <ais523> oh, another problem with my demo is that you have to mash the left bumper to backspace multiple characters, I should make that backspace repeatedly if held
02:01:25 <ais523> maybe time the backspace key that I'm used to and get the controller's backspace to match
02:02:54 <b_jonas> or just add a way to delete a word
02:03:00 * ais523 vaguely wonders if U+0020 should be called the "forward space" character
02:03:05 <b_jonas> you probably need some way to enter a capital letter
02:03:17 <ais523> yes, I haven't decided what to do about capitalisation yet
02:03:29 <ais523> I think it might involve one of the other buttons on the controller
02:03:46 <ais523> digits, likewise
02:04:23 <ais523> maybe there could be US-TTY-style modes, uppercase letters / lowercase letters / digits and punctuation
02:04:43 <b_jonas> I've no idea how you'd enter digits at all
02:05:07 <ais523> in a modal system it's easy enough, the hard part is remembering where they are
02:06:46 <ais523> fwiw I'm pretty sure the left analog stick should move the cursor (but I haven't implemented that yet) – and I was planning to have a sort of mark/point-style selection system where any edit moves the mark to the point of the edit
02:06:57 <ais523> but I'm not sure what to do with the selections after creating them
02:08:02 <ais523> (I was considering making selection / cursor movement be based on the gyro, but haven't figured out how to get my computer and controller to talk to each other in such a way that the gyro is usable)
02:08:18 <b_jonas> eww no
02:08:44 <ais523> it would be done in such a way that gyro movement never had any effect other than moving a marker showing where the gyro was aiming, until you pressed a key to confirm
02:08:56 <ais523> and with a way to fine-adjust afterwards without using it
02:09:08 <ais523> even then, though, I wasn't sure about the idea, would have to test it to see if it works
02:11:06 <b_jonas> capital letters is what worries me the most, I've no idea how you'd type them without freeing up something that you're currently using
02:12:35 <b_jonas> the rest I can imagine fitting there, like cursor movement and editing, a digits lock, and an escape for rare characters
02:13:57 <ais523> I think another button would be involved
02:14:31 <ais523> also there's a lot of unused space in "hold a consonant and type two vowels"
02:14:40 <b_jonas> it might be possible to replace one or two of those eight punctuation marks
02:14:53 <ais523> and a lot of buttons that aren't currently in use
02:16:09 <ais523> in my initial testing, I was making moving the left analog stick diagonally down-right do a newline (it feels satisfyingly return-like) although I haven't implemented it yet – it seems like that might not conflict with the use for cursor movement, unless you wanted to insert a newline mid-line
02:34:33 <b_jonas> I'm assuming if you press the left stick you enter something like vi's normal mode where the d-pad and face buttons and their combinations let you enter editing commands, and the left d-pad moves the cursor. in normal mode, i takes you back to insert mode; u places the mark; y copies text between mark and cursor to the clipboard; e deletes text between mark and cursor; l pastes text; c and g let you
02:34:39 <b_jonas> enter any one character by typing two or four hex digits respectively where each of the 16 hex digits is assigned somehow to the d-pad and face buttons. pressing the right stick (in any mode or pressing t in normal mode) puts you into locking digits mode where 10 of the 16 button combos let you type a digit, the rest let you type a dot, a hyphen, a comma, go to insert mode, go to normal mode. space and
02:34:45 <b_jonas> backspace work the same in digit mode as in insert mode.
02:38:42 <b_jonas> but I think you will have to replace the exclamation sign with a capital letter prefix. press it twice and it's a locking capital letter shift.
02:38:50 <b_jonas> you'd make it not type a space of course
02:39:03 <ais523> remember that there are two shoulder buttons on each side
02:39:15 <b_jonas> yes, but not if you're using the Switch
02:39:18 <ais523> I was considering using the back ones as capital letters or digit switches
02:39:18 <b_jonas> with its joycons
02:39:25 <ais523> no, the Switch has them too
02:39:34 <ais523> they're called ZL and ZR
02:39:45 <ais523> not usable in single-joycon mode, but usable with docked joycons
02:39:45 <b_jonas> in a place where you can reach all four without awkwardness?
02:39:55 <ais523> I'm not sure, I don't actually have a Switch
02:41:09 <b_jonas> oh, I think you're right, they do have two shoulder buttons
02:41:23 <b_jonas> that's good, then if you have a recent controller then you can use all four
02:41:42 -!- impomatic has quit (Quit: Client closed).
02:42:58 <ais523> it's unclear what to use the right analog stick for, that has a lot of potential as well
02:43:34 <ais523> but experimentation showed that analog sticks are extremely bad at digital inputs
02:43:41 <ais523> so it should be something that's continuous in a sense
02:45:34 <b_jonas> I think one of the sticks doesn't do entering text, it either moves the mouse cursor or moves to a different control than the current textarea
02:45:53 <b_jonas> I'm not entirely sure what's left stick and what's right stick
02:47:00 <ais523> oh, hmm, if we're thinking about use on a website, presumably one of them moves the cursor and the other one scrolls
02:47:21 <ais523> right stick is traditionally the camera control, almost all games use it for that, so it would make sense to use it for scrolling
02:47:42 <ais523> and left stick is player movement so that would be used to move the cursor
02:47:47 <b_jonas> that's possible too, so you can move the text cursor only in normal mode
02:48:42 <ais523> I think what right stick does is that it's a combination scroll and mouse cursor movement – it moves the cursor but it also scrolls (along with the cursor) to move the cursor as close to the centre of the screen as possible
02:48:45 <esolangs> [[ZecZec]] https://esolangs.org/w/index.php?diff=177547&oldid=177417 * BODOKE2801e * (+120) /* Examples */
02:48:52 <ais523> (so that it only moves to the side once you reach an edge of the scrollable reagion)
02:48:53 <ais523> * region
02:49:20 <b_jonas> hmm
02:49:22 <b_jonas> I dunno
02:49:34 <ais523> I was thinking more along the lines of a webapp than a browser, though, when I wrote this (HTML/JS was a convenient way to make a cross-platform editor that could read a gamepad)
02:51:00 <b_jonas> it doesn't have to be a browser, it could be some other program where you're entering text into a field then switching to other controls
02:51:25 <b_jonas> you'd need that unless this is specifically just a text editor
02:53:04 <ais523> well I was thinking that it would be a text-editing mode within a larger program
02:53:28 <ais523> but if it isn't in the mode in question, then the controls don't really matter, you can have whatever clashes you like
02:53:28 <b_jonas> if it's a text editor then right stick scrolls would make sense
02:54:12 <b_jonas> well, you probably need some way to exit from text editing mode at least
02:55:20 <ais523> so many unused combinations :-)
02:55:38 <ais523> space + backspace is a good one for a global-menu type of thing
02:55:38 <b_jonas> probably need to find a better way to enter digit lock mode
02:55:55 <b_jonas> what? no, space+backspace deletes a word
02:56:04 <b_jonas> or is that caps+backspace?
02:56:05 <ais523> I don't think that'll be nearly as common
02:56:20 <ais523> I think the back shoulder buttons are probably the best options for caps lock and digit lock
02:57:39 <b_jonas> dunno, I use delete word often when I change my mind about what to type, as opposed to when I press the wrong key
02:58:30 <ais523> I normally hold backspace for that
02:58:47 <ais523> but caps lock and digit lock would make sense to change the scope of backspace
02:58:49 <b_jonas> although you could add more functions to the backspace key if you press it in combination with some other button
02:58:55 <ais523> they're basically shifts
03:11:33 -!- impomatic has joined.
03:13:53 -!- impomatic has quit (Client Quit).
03:39:09 <esolangs> [[Nope]] M https://esolangs.org/w/index.php?diff=177548&oldid=174205 * BODOKE2801e * (+0) /* Tips */ ASSCI
03:39:27 <esolangs> [[Nope]] https://esolangs.org/w/index.php?diff=177549&oldid=177548 * BODOKE2801e * (+1) /* Tips */ ASCI
04:03:23 -!- msv has quit (Quit: Leaving).
04:18:21 -!- msv has joined.
04:23:20 <esolangs> [[Ima gte. Ima dana/Operation table]] https://esolangs.org/w/index.php?diff=177550&oldid=177544 * BODOKE2801e * (+620) unfinished
05:12:48 -!- msv has quit (Remote host closed the connection).
05:13:12 -!- msv has joined.
05:55:44 -!- ais523 has quit (Read error: Connection reset by peer).
07:10:59 -!- Sgeo has quit (Read error: Connection reset by peer).
09:29:32 <fizzie> A thing: https://github.com/nevesnunes/z80-sans
10:29:33 <esolangs> [[Special:Log/newusers]] create * Mrmr2 * New user account
11:22:12 <APic> Hi
11:48:25 -!- msv has quit (Remote host closed the connection).
11:48:42 -!- msv has joined.
12:07:56 <esolangs> [[Template:Unf]] N https://esolangs.org/w/index.php?oldid=177551 * None1 * (+36) Used when the page is not finished, but the language is
12:10:31 <esolangs> [[ChangeFuck]] N https://esolangs.org/w/index.php?oldid=177552 * None1 * (+209) Created page with "{{lang|a=User:None1|i=[[brainfuck]] and [[Malbolge]]. It's [[brainfuck]] but every command has a wierd side effects on the memory or program, in order to make programs hard to be written. ==Commands== {{Unf}}"
12:13:16 <esolangs> [[ChangeFuck]] https://esolangs.org/w/index.php?diff=177553&oldid=177552 * None1 * (+175)
12:46:36 -!- Owen has joined.
12:46:40 -!- Owen has left.
12:57:52 <b_jonas> ok, so after sleeping over this, ais523's text entry scheme makes more sense in that it's elegant, but I still think it will be a problem that you're often not allowed to overlap presses from your two hands and this will slow you down. how much problem this is in practice I don't know.
13:26:41 <esolangs> [[Special:Log/newusers]] create * Qpx5997 * New user account
13:30:52 <esolangs> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=177554&oldid=177528 * Qpx5997 * (+120)
13:35:52 <esolangs> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=177555&oldid=177554 * Qpx5997 * (+88)
13:39:38 <esolangs> [[]] N https://esolangs.org/w/index.php?oldid=177556 * Qpx5997 * (+236) Created page with " is a [[joke language list|joke language]] created by qpx5997 which uses emojis as part of its syntax. Its demo version has been released at [https://github.com/qpx5997/ewemohcheese/ this page]. more to be added soon!"
13:47:38 -!- chloetax has quit (Ping timeout: 244 seconds).
13:54:08 <esolangs> [[Joke language list]] https://esolangs.org/w/index.php?diff=177557&oldid=176532 * Qpx5997 * (+79)
14:31:59 <int-e> Yay, my color mixing plans are coming together: https://int-e.eu/~bf3/tmp/shapez2-mixer-2.jpg is the simple version and https://int-e.eu/~bf3/tmp/shapez2-mixer-3.jpg the perfectly balanced one (with some logic externalized, that's the extra 1x1 platform)
14:57:40 <esolangs> [[Template talk:Unf]] N https://esolangs.org/w/index.php?oldid=177558 * Aadenboy * (+323) Created page with "[[Template:Stub]] already exists for this purpose ~~~~"
14:58:28 <b_jonas> int-e: so you're saying that unlike in shapez 1, low latency isn't as important here, so it's fine to mix colors based on control signal inputs?
15:02:41 <esolangs> [[User:OskuDev]] N https://esolangs.org/w/index.php?oldid=177559 * OskuDev * (+391) Created page with "I-I-I-I just bought more land in the metaverse Now I'm getting paid cash with Atlas Earth (Yeah) Got virtual land all across the globe (Across the globe) The next wave is digital Catch me on the way up The glow up is visible Cop a couple more Watch my income go up
15:02:44 <int-e> Yes. The MAM shapes have formulas like... for the n-th shape, deliver 1e3 * 1.04^(n-1) of them (and that's the slowest growing one), capped at 2^31. This is divided by some factor that for me is 5 and goes up to 12. So... initially, latency matters. But exponential growth will make the effect negligible quickly.
15:03:14 <int-e> (A full belt carries 180 items per minute.)
15:03:31 <esolangs> [[Template talk:Unf]] https://esolangs.org/w/index.php?diff=177560&oldid=177558 * Dragoneater67mobile * (+120)
15:03:32 <esolangs> [[User:OskuDev]] https://esolangs.org/w/index.php?diff=177561&oldid=177559 * OskuDev * (+12)
15:04:07 <b_jonas> for how many items does one of these paint mixing sectors supply paint?
15:04:14 <b_jonas> how many delivered items
15:04:24 <b_jonas> because that decides how often they have to switch
15:04:37 <int-e> This is planning for 12 belts. This is for the painting quarters stage.
15:05:37 <b_jonas> yeah, that does sound like the exponential growth will be fast enough
15:12:03 <int-e> Let me see real numbers. I mean, at first the latency will feel very significant still: One MAM goal sits at 28k, which with factor 5 and 12 bytes is 2m35s; the other one sits at 9.2k which is 51s. But for each goal completed,shape delivered
15:13:25 <int-e> But the first one goes up by 7% per completed goal, and the second one by 4%. So soon enough it'll take hours anyway.
15:13:28 <esolangs> [[ChangeFuck]] https://esolangs.org/w/index.php?diff=177562&oldid=177553 * Aadenboy * (+0) stub
15:13:47 <int-e> 12 bytes? 12 belts!
15:13:48 <int-e> wow
15:14:01 <int-e> I guess they sound vaguely similar?
15:14:28 <esolangs> [[Ima gte. Ima dana]] https://esolangs.org/w/index.php?diff=177563&oldid=177543 * Aadenboy * (+0) fix example
15:15:05 -!- ethan1 has joined.
15:18:42 <int-e> b_jonas: It's safe to say that I'm spending way more time on designing this stuff than I expect to wait for the resulting latency. :)
15:22:08 <b_jonas> yes, that's normal
15:23:10 <int-e> Well in shapez 1 if you were pushing silly goals like reaching level 100k, the story would be different :P
15:25:06 <int-e> The highest "operator level" I've seen for shapez 2 is below 1.7k and maybe 650 of those levels came from MAM shapes.
15:25:34 -!- ais523 has joined.
15:26:08 <esolangs> [[Thisthat]] https://esolangs.org/w/index.php?diff=177564&oldid=175582 * Aadenboy * (+0) /* Update order */
15:27:53 <int-e> And I'm convinced that there's *months* of playtime on that one, though I have not seen any actual number for that.
15:28:19 <int-e> (mostly idling, I hope)
15:29:12 <ais523> <b_jonas> ok, so after sleeping over this, ais523's text entry scheme makes more sense in that it's elegant, but I still think it will be a problem that you're often not allowed to overlap presses from your two hands and this will slow you down. how much problem this is in practice I don't know. ← my opinion is similar to this, it appears to be a problem to some extent but I don't know how much or whether it could be easily fixed by requiring a minimum
15:29:13 <ais523> duration for the overlap
15:29:40 <ais523> I find my accidental overlaps were usually consonant to vowel at the end of a word, e.g. "twe" instead of "the"
15:30:30 <ais523> but it could well become more of a problem as I get faster
15:30:55 <ais523> (in the case of "twe" it could easily be made an alias for "the", like "teh" is in Microsoft Word)
15:38:03 <b_jonas> that could work, you'd just need a short regex for exceptions for real words starting with "twe", like twenty, twelve, etc. the only conflict is probably the rare word "twee".
15:41:01 -!- chloetax has joined.
15:54:27 <esolangs> [[Template talk:Unf]] https://esolangs.org/w/index.php?diff=177565&oldid=177560 * Corbin * (+149)
16:02:13 -!- tromp has joined.
16:11:04 <esolangs> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=177566&oldid=177555 * Mrmr2 * (+83) /* Introductions */
16:11:33 <esolangs> [[C/Cb]] N https://esolangs.org/w/index.php?oldid=177567 * Mrmr2 * (+616) Made the initial page
16:11:36 <ais523> b_jonas: oh, I was thinking more the one specific word
16:12:42 <ais523> really if I want to be serious about this I should write typing speed testing programs for the new layout, and have them record the times of the inputs for both typos and correctly spelled words, and then try to determine if there's a clear difference in the timings that could be used to tell apart intentional from unintentional overlaps
16:12:47 <esolangs> [[C/Cb]] M https://esolangs.org/w/index.php?diff=177568&oldid=177567 * Mrmr2 * (+8) /* Examples */ changed hi mom to hello world
16:12:58 <ais523> and then force myself to get faster and see if the patterns change
16:15:50 <b_jonas> that, and try to find other input methods
16:22:42 <esolangs> [[C/Cb]] https://esolangs.org/w/index.php?diff=177569&oldid=177568 * Aadenboy * (-12)
16:25:22 -!- impomatic has joined.
16:32:19 -!- Artea has quit (Read error: Connection reset by peer).
17:20:31 <esolangs> [[Iterate]] https://esolangs.org/w/index.php?diff=177570&oldid=175578 * Aadenboy * (+47) Compiled Iterate file extension
17:22:45 <esolangs> [[List of esolang file extensions]] https://esolangs.org/w/index.php?diff=177571&oldid=174880 * Aadenboy * (+30) add [[Compiled Iterate]]
17:23:04 <esolangs> [[Compiled Iterate]] N https://esolangs.org/w/index.php?oldid=177572 * Aadenboy * (+33) Redirected page to [[Iterate/Compilation]]
17:29:51 -!- impomatic has quit (Quit: Client closed).
17:54:36 -!- impomatic has joined.
18:23:27 -!- ais523 has quit (Quit: quit).
18:49:20 <b_jonas> ok, so I used to have the impression that the C and C++ rules for how different compilation units has to match are very different, because I didn't know how the C rules work. I have now read more about the C rules, and they aren't *that* strange. So both C++ and C say that if a global function or object is declared in multiple compilation units then those declarations must be compatible. Also if those
18:49:26 <b_jonas> declarations refer to a struct/union then in all compilation units among these where that struct/union is defined, that struct/union must be defined in a compatible way too. There are two main differences between C++ and C here. (1) C++ is stricter in what it considers compatible. In insists that two declarations can only be compatible if they match both in syntax tokenwise (after preprocessing) and
18:49:32 <b_jonas> semantics. C wants exactly the same semantics but allows syntax differences, eg. it sees through typedefs so doesn't care if you mention a type directly in one declaration but through a typedef in another, doesn't care about the position of the const/volatile/signed/unsigned/long/short keywords nor about optional signed/int keywords, and only wants array lengths to be equal rather than spelled the same
18:49:38 <b_jonas> way.
18:50:20 <b_jonas> (2) C++ insists that if two compilation units declare a struct/union with the same name in the same namespace then they must be compatible; C allows for different (incompatible) struct/union types in the same name as long as their definitions never meet in the same compilation units.
18:52:04 <b_jonas> To be clear, for C struct/union defined in two compilation units to be compatible, it still needs the name of the struct/union and the name of its members the same.
18:55:31 <b_jonas> Afaiu, this means that if you have a set of C compilation units, then as far as global declarations are concerned, you can mostly convert them to C++ compilation units by putting different struct/union types into different namespaces, changing references to those struct/union types everywhere to refer to that namespace, then replacing all definitions of each struct/union with the exact same spelling of
18:55:37 <b_jonas> that declaration. You'll have to replace arrays of runtime length with arrays of unspecified length, because arays of runtime length don't exist in C++. You're screwed if the C code uses _Atomic or C complex, because C++ doesn't have those features.
18:57:35 <b_jonas> Also afaiu, nobody bothered to write a general standard for how you're supposed to use C and C++ together, such as when the declaration of a global function or object in a C compilation unit is compatible with that in a C++ compilation unit. You just have to hope that putting a struct/union in any namespace on the C++ side is fine.
18:57:56 <b_jonas> Oh, also you have to mark functions extern "C" on the C++ side, that much is clear.
18:59:38 <esolangs> [[COSOL]] M https://esolangs.org/w/index.php?diff=177573&oldid=123664 * SirBrahms * (-3) Update Implementation Link
19:00:56 <esolangs> [[User talk:Sporeball]] https://esolangs.org/w/index.php?diff=177574&oldid=82558 * Sporeball * (-139) clear
19:03:16 <b_jonas> There are rules at the machine code and ELF level documented, as in how these types of structures and functions are represented in compiled code, but those are much omre relaxed than the C or C++ level rules.
19:04:18 <b_jonas> It's kind of like a two chinas situation, nobody wants to write a documentation that refers to both C and C++ and define exactly how they combine.
19:04:41 <b_jonas> But I think now I'm at least closer to understanding the expectations.
19:06:36 -!- ais523 has joined.
19:09:22 <b_jonas> The complication is that the much more relaxed representation rules come into effect if you combine C with some other language, like export or call functions from rust or direct machine code. You don't give a full C type, so the same function that you implement in rust or assembly with a C-compatible interface could be referred to by multiple incompatible C declarations. If you want to make a C
19:09:28 <b_jonas> implementation for a new platform that does more strict typechecking between compilation units, it will have to allow much more differences than even the relaxed C rules to accomodate functions not defined in C.
19:10:26 <b_jonas> This could be true even if you're adding extensions to an existing platform where object files can optionally contain more strict type information and that's checked across compilation units.
19:10:59 <b_jonas> You could still give *warnings* for when the C rules are broken across translation units of course.
19:11:51 <zzo38> Presumably it should be defined so that if you write extern "C" then it will be compatible, although I don't know if this might need to change some of the C++ rules for that circumstance to make it compatible in this way.
19:14:58 <ais523> `unidecode d›e
19:15:04 <HackEso> ​[U+0064 LATIN SMALL LETTER D] [U+009B <control>] [U+0065 LATIN SMALL LETTER E]
19:15:55 <b_jonas> This goes both ways by the way: whether you define a function in C and import it to rust or define a function in rust and import it to C, you have have multiple different rust declarations that are compatible with the same C declaration, and multiple different C declarations compatible with the same rust declaration. The names of struct/union and the names of their members don't need to match, for one,
19:16:01 <b_jonas> and there can be layers of rust wrappers such as transparent structs, MaybeUninit, UnsafeCell, and more. The three integer ranks int, long, long long don't correspond in a straightforward way to the three integer ranks in rust i32, isize, i64.
19:18:34 <b_jonas> Also a C pointer or const pointer can correspond to a rust raw mut pointer, raw const pointer, std::ptr::NonNull, reference, mut reference, Box.
19:20:06 <b_jonas> There are probably even some open-ended questions of some of the corners of how the C and rust memory models can interact.
19:24:12 <ais523> b_jonas: so "twe" is actually quite common, e.g. "outweigh" or "retweet"
19:24:21 <esolangs> [[Prehistory]] N https://esolangs.org/w/index.php?oldid=177575 * Corbin * (+58) Redirecting for a commonly-visited humor page. Feel free to replace this.
19:24:25 <ais523> oh, and "between" although that's common enough to likely be in a dictionary
19:24:29 <b_jonas> ais523: yes, but I think you convert it to "the" only at the start of words
19:24:36 <ais523> "twelve"
19:25:10 <ais523> most of the complications around w is because it's logically a vowel but I had run out of space on the vowel wheel (l is more important)
19:25:24 <b_jonas> ais523: yes, I did say “you'd just need a short regex for exceptions for real words starting with ‘twe’, like twenty, twelve, etc.”
19:25:33 <ais523> right
19:25:35 <ais523> I think there are too many of them
19:25:41 <esolangs> [[Object-oriented paradigm]] https://esolangs.org/w/index.php?diff=177576&oldid=169181 * Corbin * (+33) /* See also */ Redlink a new topic. Because the number of topics here could be as many as several dozen, it's not appropriate to do the subsection/main-article wine-tasting approach that we have in e.g. [[computable]] or [[monoid]] or [[prehistory]].
19:25:45 <ais523> to be sure that we have them all
19:26:25 <ais523> "twerk" is in my /usr/share/dict/words but it's a comparatively new word that didn't exist a few decades ago
19:26:36 <ais523> so it is reasonable to expect that new "twe" words may be coined
19:26:39 <b_jonas> too many of them if you insist on a full list of words; not too many if you're fine with prefixes, like anything starting with "twent" or "twelv" or "twelf", so you don't list each of "twentyone twentytwo twentythree twentyfour ... twentynine" separately
19:28:26 -!- Everything has joined.
19:28:50 <esolangs> [[User:Sporeball]] https://esolangs.org/w/index.php?diff=177577&oldid=91661 * Sporeball * (+69) update user page
19:28:58 -!- impomatic has quit (Ping timeout: 240 seconds).
19:29:25 <ais523> interestingly, the fastest known typing method (stenotype) doesn't actually do very many strokes per second, the reason it's fast is that each stroke presses a lot of keys at once so there are millions of possible strokes, and most of the goal of the system is to create a method of assigning strokes to words that humans are able to memorize
19:29:39 <b_jonas> ais523: keep /^twe(nt|l[vf]|ak|e[dtnz]|erp/
19:30:04 <ais523> that has unbalanced parens I think?
19:30:09 <b_jonas> oh yes
19:30:14 <b_jonas> ais523: keep /^twe(nt|l[vf]|ak|e[dtnz]|erp)/
19:31:00 <ais523> that works for every word in my /usr/share/dict/words except "twerk"/"twerks" (which are new enough that they might not be in yours)
19:31:22 <ais523> but, I find I am more likely to make that sort of overlap-error at the end of a word rather than the start
19:37:02 <b_jonas> it is possible to make the transformation more conservative, covering only common words that start with "the" and keeping "twe" for anything dubious, in which case for some rare words that start with "the" you have to be careful not to overlap the "h" with the "e". it wouldn't be shorter to code the list, but it might be better for typing.
19:37:15 <b_jonas> the transformation of "twe" to "the" at the start of a word
19:41:13 <b_jonas> like transform /^twe(at|[fimostwy]|/theen\W|nc|r\W|r[aem])/
19:41:18 <b_jonas> argh
19:41:30 <b_jonas> like transform /^twe(at|[fimostwy]|\W|nc|r\W|r[aem])/
19:42:12 <ais523> neither "twer" nor "ther" is a real word
19:42:32 <b_jonas> yes, but "ther" is closer
19:42:51 <esolangs> [[Talk:Arbitrary memory emulation]] https://esolangs.org/w/index.php?diff=177578&oldid=175207 * Aadenboy * (+429)
19:43:04 <ais523> I feel like if I were typing a non-word I would slow down and make sure to get the letters correct
19:43:24 <b_jonas> yeah, you can keep that one as "twer", doesn't matter
19:43:49 <ais523> I was testing my typing algorithm on #esolangs logs (in order to get a sufficient amount of plausible text that I hadn't seen before) and backspacing was basically only required for acronyms and the like
19:43:59 <ais523> which I was typing out quite slowly as a consequence
19:44:05 <b_jonas> the one tricky case is if what to do with "twee" as a full word, because "twee" is a real word but "thee" is a much more common real word
19:44:55 <ais523> I'm not certain about your claims about relative frequency there – "thee" used to be very common but isn't very common nowadays
19:44:55 <b_jonas> hmm, that's still messed up
19:45:07 <b_jonas> transform /^twe(\W|at|[fimostwy]|n\W|nc|r[aem])/
19:45:22 <b_jonas> "twen" is important to transport to "then", that's very common
19:48:10 <ais523> apparently "thee" is over 256 times as common as "twee" in Google Ngrams data, although it's likely biased by including a lot of old books
19:48:20 <esolangs> [[Naked object]] N https://esolangs.org/w/index.php?oldid=177579 * Corbin * (+1078) Stub a niche concept from the OOP world.
19:48:45 <ais523> b_jonas: hmm, I feel like "them" is just as likely a typo (probably more likely) but that's also a very common word so you couldn't correct it
19:49:19 <b_jonas> sorry? why is "them" relevant?
19:49:32 <ais523> b_jonas: if you overlap e and n rather than h and e
19:49:58 -!- Lord_of_Life_ has joined.
19:50:06 <b_jonas> oh, do you mean type between "them" and "then" because the typer's fingers think that the "th" switches m/n even past the vowel?
19:50:10 -!- Lord_of_Life has quit (Ping timeout: 248 seconds).
19:51:03 <b_jonas> yeah, it'll be easy to type "then" as "them"
19:51:25 <b_jonas> not much you can do about close pairs like that unless you want to make the system much more complicated with lots of exceptional shortcuts
19:51:53 <ais523> b_jonas: not the "th" switch beyond the vowel (although there was a bug in an earlier version that did that), but pressing the "n" before fully releasing the "e" due to typing quickly
19:52:09 <b_jonas> like you'll always have "we" vs "he", or "am" vs "an", "was" vs "has"
19:52:19 <ais523> I guess you could make it so that overlapping a consonant with a vowel on *both* sides turned it back to the original version
19:52:46 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
20:06:03 <esolangs> [[Naked object]] https://esolangs.org/w/index.php?diff=177580&oldid=177579 * Corbin * (+76) /* Examples */ Forgot one.
20:06:27 <b_jonas> ok, so weird idea, what if you swap space and backspace, so ZL1 is space and ZR1 is backspace, and you no longer care about a vowel overlapping a consonant, but backspace works as a shift for secondary consonants (usually kmbzvwxd), and it backspaces only if you press and release it without any other button in between?
20:08:53 <b_jonas> or something similar with ZL1 is space, ZR1 is alternate consonant shift, ZL2 is backspace, and you put the digit mode and edit mode on either combinations or on the stick presses? the alternate consonant shift doesn't change the vowels, so you get some freedom in when exactly you press and release it in relation to other letters
20:14:18 <b_jonas> probably not good ideas but I think we at least have to consider it
20:16:39 <b_jonas> hmm no, we can't multiplex backspace with alternate consonant shift because you said you want to hold backspace for deleting multiple characters and that would make the UI confusing
20:28:22 -!- ethan1 has left (WeeChat 4.7.1).
20:36:02 <ais523> my earlier plans had an alt-consonant shift
20:36:26 <ais523> I found it was awkward to synchronize it with the actual consonants
20:36:56 <ais523> but, that was before I came up with the two-wheel method with consonants on one hand and vowels on the other
20:37:26 <ais523> you could multiplex it with forward space easily enough (tap the button with no other keys held for space, overlap it with a consonant to reach the second set of consonants)
20:39:02 <b_jonas> not really, you do wnat to overlap space with the last letter of the previous word often
21:41:29 <esolangs> [[G Sharp]] M https://esolangs.org/w/index.php?diff=177581&oldid=174541 * Ractangle * (+60)
22:09:08 <APic> cu
22:15:00 -!- Everything has quit (Quit: leaving).
23:00:32 -!- chloetax6 has joined.
23:02:01 -!- chloetax has quit (Ping timeout: 244 seconds).
23:02:01 -!- chloetax6 has changed nick to chloetax.
23:18:56 <ais523> b_jonas: fwiw I realised that Start/Select are probably good buttons to use to leave edit mode entirely
23:19:08 <ais523> so we don't need an option for that elsewhere
23:28:10 <b_jonas> ais523: yeah, possibly
23:30:41 <ais523> ooh, idea – the original idea of this was for a programming environment – could we create a programming language whose APIs only use the 16 primary letters?
23:30:57 <ais523> few words seem to need the 10 rare ones
23:31:38 <ais523> that way, typing the rare letters would only be required for string literals and comments
23:32:25 <ais523> (even so, I think you'd want to use some API-and-type-driven technique for entering code, rather than typing it out, so the gain from 16-primary-letter APIs would just be in making the lists faster to filter)
23:35:08 <b_jonas> ais523: so you'd make identifiers not only case-insensitive but also vowel sounding insensitive?
23:35:20 <ais523> case-insensitive and vocalisation-insensitive, yes
23:35:57 <ais523> although some of the pairs aren't voiced/unvoiced (e.g. mn are very similar but it's a different distinction from voicing, and wh aren't really the same letter at all)
23:36:16 <b_jonas> yeah
23:36:37 <ais523> and c and g are both primary letters even though g is the voiced version of k and c is usually pronounced like k
23:37:30 <b_jonas> would "q" be considered equivalent to "h" or to "c"?
23:37:53 <ais523> I was actually planning to just avoid the rare letters altogether
23:37:56 <ais523> lipogram-style
23:38:08 <ais523> so what they would be equivalent to doesn't matter
23:38:17 <ais523> it might be a bit weird to not have a .equals, though
23:38:38 <b_jonas> hmm
23:39:20 <b_jonas> would you also restrict which punctuation the language can use? because that would likely force you to use more alphabetic keywords or identifiers
23:39:52 <ais523> my current plans are that operators are equivalent to method calls
23:40:01 <ais523> you type the method name but it displays as the operator
23:40:14 <ais523> x + y would be x.add(y), perhaps, and the IDE can swap back and forth between them
23:40:33 <b_jonas> ok, but even discounting that, some programming languages need a lot of punctuation characters
23:41:11 <ais523> that said, I am increasingly thinking that it is wrong for a language to provide arithmetic operators, except perhaps if it is based around bignums – doing arithmetic correctly is difficult and has a lot of edge and corner cases that need specifying, and one operator isn't enough for that
23:41:15 <b_jonas> if you want to mark comments and string literals and stuff
23:42:05 <b_jonas> the arithmetic can be just ordinary non-privilaged library functions, many languages these days do that
23:42:08 <ais523> yes
23:42:32 <ais523> I feel like you'd want a syntax that was mostly equivalent to Lisp's, but maybe rendered more nicely
23:42:48 <ais523> although, hmm, still want method chaining
23:43:09 <ais523> x.add(y.add(z)) and the like is basically homoiconic but I don't think it's equivalent to either s-expressions or m-expressions
23:43:30 <b_jonas> I do want to cheat that a little bit in enchain in that the conditionals are built-in so the language knows about the integer type and that nonzero integers of that type are truthy, but the rest of arithmetic are just ordinary functions
23:44:02 <b_jonas> as in there's only one integer type that you can use for conditionals directly
23:44:23 <b_jonas> enchain is compile-time typed
23:45:07 <ais523> hmm, how does an if statement work in this syntax
23:45:13 <ais523> a.if(b, c)
23:45:21 <ais523> would need either CBN or a special case to work properly, but it seems fine
23:45:25 -!- Sgeo has joined.
23:46:50 <b_jonas> I have to be careful about this because this is one of those decisions that I can't just change in a later language extension -- I very much want to make just a first version of Enchain that later versions can extend, though in practice (1) I probably won't bother to actually make those extensions and (2) even if I do I'll probably make some of them incompatible, but I want to at least try
23:47:10 <ais523> maybe the right special case is that methods can choose to be CBN and doing that is marked by the IDE at the callsite, even though the syntax doesn't technically change
23:47:48 <ais523> I guess there's always the closure option of a.if(||b, ||c) but that's terrible :-D
23:50:16 <b_jonas> yeah, there are all sorts of different solutions for this. smalltalk/ruby/postscript/GML makes it easy to pass closures to such functions. haskell is call by name. scheme makes if a built-in but gives a macro system so you can define macros with interface similar to that built-in.
23:50:50 <ais523> Haskell is call-by-need, which doesn't work for a while statement (but Haskell can't meaningfully express a traditional while statement anyway due to not having side effects in the traditional sense)
23:51:22 <ais523> huh, I just realised that TCL is basically call-by-name, except for strings
23:51:37 <ais523> (and integers but those are also strings)
23:52:18 -!- amby has joined.
23:59:32 <b_jonas> prolog has an awkward mixture where functions like , and ; and -> take code as their arguments, but it's still awkward to write a while loop
←2026-03-10 2026-03-11 2026-03-12→ ↑2026 ↑all