00:00:49 [[Ima gte. Ima dana]] https://esolangs.org/w/index.php?diff=177543&oldid=177542 * BODOKE2801e * (+141) 00:01:37 [[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 I implemented my gamepad typing algorithm: http://nethack4.org/pastebin/typing.html 00:19:09 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 I hope when you get a stable system from this you document it somewhere 00:20:06 may take a while to write out the rules but the implementation may be sufficient to determine them experimentally 00:22:20 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 (or read the source code) 00:28:57 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 it's also not totally finished yet, missing many important punctuation marks and digits 00:55:33 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 is 5 even the shoulder button, or does that refer to pressing the joystick? 00:56:13 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 and yes, 5 is the right shoulder button 00:56:28 I see 00:56:33 the HTML/JS gamepad API has really stupid button numbering 00:56:47 the face buttons and d-pad aren't at all consistent in their numbering schemes 00:57:02 the right shoulder button is the spacebar, it acts like a ninth vowel 00:57:13 so holding t and pressing the right shoulder button gives you "d " 00:57:27 oh, it's space 00:57:43 [[]] https://esolangs.org/w/index.php?diff=177545&oldid=177521 * InLuaIKnow * (+227) /* Lua (made by User:InLuaIKnow) */ 00:57:45 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 it's a fairly easy input to make but a little harder to remember 00:58:11 (this works because qu and j are always followed by a vowel in English) 00:58:56 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 yes 00:59:29 but actually there are a lot of special cases to avoid needing to use word boundaries 00:59:40 e.g. you can hold a vowel and press two consonants, holding a and pressing t twice gives "add" 00:59:54 [[]] https://esolangs.org/w/index.php?diff=177546&oldid=177545 * InLuaIKnow * (+62) /* Syntax */ 01:00:22 I'm surprised that x rather than j is the secondary consonant paired with c 01:00:25 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 "x" is sometimes followed by a consonant, e.g. "explosion" 01:00:50 but "j" is always followed by a vowel, so it can use an input that requires one 01:00:56 makes sense 01:01:34 it's not totally based on letter frequency (although that was an important factor, it wasn't the only one) 01:02:13 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 this "just works" in a very large number of cases 01:02:51 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 ais523: how do you type "handful"? 01:13:35 also how do you type "thanks"? is there a special case to cover these? 01:13:53 yes, for "handful" you hold a and type n t 01:14:13 and for "thanks" you hold a and type n g 01:14:40 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 ah indeed, those are the "two special cases for vowel-n" 01:15:39 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 or rarely n if the k is silent 01:19:39 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 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 although I made quite a few late tweaks so I'm not totally sure 01:21:36 how do you type "meanwhile"? 01:22:17 (I'm searching a dictionary for consonant clusters) 01:23:56 also "nothingness" 01:24:44 and "amongst" 01:25:22 no wait, "amongst" isn't a problem 01:25:32 nor is "nothingness" 01:25:54 there is a glide for entering "wh", the same way as you would type "qu" 01:26:25 hold h, type the vowel, move the d-pad to the right before releasing it 01:26:52 I see 01:27:00 same trick works for "mn" (e.g. "unmnemonic", which I had huge trouble typing even on this normal QWERTY keyboard) 01:27:28 unmnemonic 01:28:26 and "dw" although you have to stretch really far to put that into a problematic position (e.g. "postdwarf") 01:31:20 I think this might cover all common words. next question "cutzpah" 01:32:18 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 (backspace is the left bumper) 01:33:09 I see 01:33:13 or you can do it the other way round, type, e.g. "ze" then backspace the e 01:33:23 (this also works for j, qu and lone q) 01:33:34 what's the normal way to type the punctuation marks shown on the right of the legend? 01:33:48 hold the vowel then press the right bumper 01:33:56 normally it inserts a space after them too (although for - and / it doesn't) 01:34:09 I see 01:34:47 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 how about "pocketknife"? 01:36:04 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 and you get "kni" 01:36:44 ah, so there's qu, wh, mn, kn as these sequences? 01:37:04 qu, wh, mn, kn, dw, j 01:37:12 and two unused because they aren't important enough 01:37:29 I see 01:37:34 they would logically be dn and zn but neither of those appears at the start of words in practice 01:39:48 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 (primarily due to not having an apostrophe) 01:42:40 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 so, e.g., "it's" would be typed as "itos" and autocorrected 01:42:59 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 right 01:43:38 if s+space produces "'s" then how do you type "waltz"? 01:43:41 're is difficult because r and e are both on the vowels side 01:44:08 you would have to type another vowel and delete it 01:44:13 so there would be a compromise involved 01:45:11 "dz" is an extremely rare ending, so maybe it could have a special case like the case for "nk" 01:45:51 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 it would 01:46:24 I have been considering making that a special case to type "the" but that may be too cute 01:46:44 but I've been trying to design the system to not rely on holding space onto the start of a word 01:46:51 (so that unknown compound words are typable) 01:47:11 this is also important if typing the first word on a line 01:48:16 hmm, let me check that 01:48:57 "and" relies on a special case, it's the most common word that does I think 01:49:27 yes, and the second-most common is "which" 01:49:28 yeah, that should mostly work except for "vs" 01:49:35 which special case? 01:49:58 oh, the "md" special case 01:50:01 right 01:50:38 "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 besides "vs", I find "khaki" and "khan" 01:51:19 I was considering a kh special case because of that 01:51:25 but didn't think it'd be useful enough 01:51:37 they're rare enough that backpacing could be fine 01:51:41 there is space on d, vowel, upwards 01:52:11 isn't that where you're putting "'d"? 01:52:21 ah, that's only with space as the vowel 01:52:42 oh, that's interesting – letter, space, rotate to produce apostrophes 01:52:47 and it could even multiplex as "'t" after an "n" 01:53:06 you would just rotate an n for that I think 01:53:29 could have n't, 'd, 's very easily and there is room for five more 01:54:11 although there's nowhere really mnemonic to put 're because it doesn't contain any left-hand letters 01:55:11 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 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 I was considering "type ' as o, except 's, and use a dictionary" 01:55:54 but "'d" and "'s" are living endings that you can put to new words so it doesn't work there 01:56:33 'd is normally used to abbreviate "had" or "would" and can only do that on finitely many words 01:56:46 or, hmm, can it do that on names? 01:57:03 maybe 01:57:04 's of course can be used on any noun 01:57:11 so it has to be a special case 01:57:36 there's also "'ve", and "o'clock" definitely needs a one-off exception 01:58:03 "ma'am" too, and you can't put that on "Maoam" because that's a real word 01:58:06 then you have to start dealing with words like "o'er" 01:58:54 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 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 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 maybe time the backspace key that I'm used to and get the controller's backspace to match 02:02:54 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 you probably need some way to enter a capital letter 02:03:17 yes, I haven't decided what to do about capitalisation yet 02:03:29 I think it might involve one of the other buttons on the controller 02:03:46 digits, likewise 02:04:23 maybe there could be US-TTY-style modes, uppercase letters / lowercase letters / digits and punctuation 02:04:43 I've no idea how you'd enter digits at all 02:05:07 in a modal system it's easy enough, the hard part is remembering where they are 02:06:46 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 but I'm not sure what to do with the selections after creating them 02:08:02 (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 eww no 02:08:44 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 and with a way to fine-adjust afterwards without using it 02:09:08 even then, though, I wasn't sure about the idea, would have to test it to see if it works 02:11:06 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 the rest I can imagine fitting there, like cursor movement and editing, a digits lock, and an escape for rare characters 02:13:57 I think another button would be involved 02:14:31 also there's a lot of unused space in "hold a consonant and type two vowels" 02:14:40 it might be possible to replace one or two of those eight punctuation marks 02:14:53 and a lot of buttons that aren't currently in use 02:16:09 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 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 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 backspace work the same in digit mode as in insert mode. 02:38:42 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 you'd make it not type a space of course 02:39:03 remember that there are two shoulder buttons on each side 02:39:15 yes, but not if you're using the Switch 02:39:18 I was considering using the back ones as capital letters or digit switches 02:39:18 with its joycons 02:39:25 no, the Switch has them too 02:39:34 they're called ZL and ZR 02:39:45 not usable in single-joycon mode, but usable with docked joycons 02:39:45 in a place where you can reach all four without awkwardness? 02:39:55 I'm not sure, I don't actually have a Switch 02:41:09 oh, I think you're right, they do have two shoulder buttons 02:41:23 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 it's unclear what to use the right analog stick for, that has a lot of potential as well 02:43:34 but experimentation showed that analog sticks are extremely bad at digital inputs 02:43:41 so it should be something that's continuous in a sense 02:45:34 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 I'm not entirely sure what's left stick and what's right stick 02:47:00 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 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 and left stick is player movement so that would be used to move the cursor 02:47:47 that's possible too, so you can move the text cursor only in normal mode 02:48:42 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 [[ZecZec]] https://esolangs.org/w/index.php?diff=177547&oldid=177417 * BODOKE2801e * (+120) /* Examples */ 02:48:52 (so that it only moves to the side once you reach an edge of the scrollable reagion) 02:48:53 * region 02:49:20 hmm 02:49:22 I dunno 02:49:34 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 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 you'd need that unless this is specifically just a text editor 02:53:04 well I was thinking that it would be a text-editing mode within a larger program 02:53:28 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 if it's a text editor then right stick scrolls would make sense 02:54:12 well, you probably need some way to exit from text editing mode at least 02:55:20 so many unused combinations :-) 02:55:38 space + backspace is a good one for a global-menu type of thing 02:55:38 probably need to find a better way to enter digit lock mode 02:55:55 what? no, space+backspace deletes a word 02:56:04 or is that caps+backspace? 02:56:05 I don't think that'll be nearly as common 02:56:20 I think the back shoulder buttons are probably the best options for caps lock and digit lock 02:57:39 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 I normally hold backspace for that 02:58:47 but caps lock and digit lock would make sense to change the scope of backspace 02:58:49 although you could add more functions to the backspace key if you press it in combination with some other button 02:58:55 they're basically shifts 03:11:33 -!- impomatic has joined. 03:13:53 -!- impomatic has quit (Client Quit). 03:39:09 [[Nope]] M https://esolangs.org/w/index.php?diff=177548&oldid=174205 * BODOKE2801e * (+0) /* Tips */ ASSCI 03:39:27 [[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 [[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 A thing: https://github.com/nevesnunes/z80-sans 10:29:33 [[Special:Log/newusers]] create * Mrmr2 * New user account 11:22:12 Hi 11:48:25 -!- msv has quit (Remote host closed the connection). 11:48:42 -!- msv has joined. 12:07:56 [[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 [[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 [[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 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 [[Special:Log/newusers]] create * Qpx5997 * New user account 13:30:52 [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=177554&oldid=177528 * Qpx5997 * (+120) 13:35:52 [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=177555&oldid=177554 * Qpx5997 * (+88) 13:39:38 [[]] 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 [[Joke language list]] https://esolangs.org/w/index.php?diff=177557&oldid=176532 * Qpx5997 * (+79) 14:31:59 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 [[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 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 [[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 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 (A full belt carries 180 items per minute.) 15:03:31 [[Template talk:Unf]] https://esolangs.org/w/index.php?diff=177560&oldid=177558 * Dragoneater67mobile * (+120) 15:03:32 [[User:OskuDev]] https://esolangs.org/w/index.php?diff=177561&oldid=177559 * OskuDev * (+12) 15:04:07 for how many items does one of these paint mixing sectors supply paint? 15:04:14 how many delivered items 15:04:24 because that decides how often they have to switch 15:04:37 This is planning for 12 belts. This is for the painting quarters stage. 15:05:37 yeah, that does sound like the exponential growth will be fast enough 15:12:03 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 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 [[ChangeFuck]] https://esolangs.org/w/index.php?diff=177562&oldid=177553 * Aadenboy * (+0) stub 15:13:47 12 bytes? 12 belts! 15:13:48 wow 15:14:01 I guess they sound vaguely similar? 15:14:28 [[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 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 yes, that's normal 15:23:10 Well in shapez 1 if you were pushing silly goals like reaching level 100k, the story would be different :P 15:25:06 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 [[Thisthat]] https://esolangs.org/w/index.php?diff=177564&oldid=175582 * Aadenboy * (+0) /* Update order */ 15:27:53 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 (mostly idling, I hope) 15:29:12 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 duration for the overlap 15:29:40 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 but it could well become more of a problem as I get faster 15:30:55 (in the case of "twe" it could easily be made an alias for "the", like "teh" is in Microsoft Word) 15:38:03 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 [[Template talk:Unf]] https://esolangs.org/w/index.php?diff=177565&oldid=177560 * Corbin * (+149) 16:02:13 -!- tromp has joined. 16:11:04 [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=177566&oldid=177555 * Mrmr2 * (+83) /* Introductions */ 16:11:33 [[C/Cb]] N https://esolangs.org/w/index.php?oldid=177567 * Mrmr2 * (+616) Made the initial page 16:11:36 b_jonas: oh, I was thinking more the one specific word 16:12:42 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 [[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 and then force myself to get faster and see if the patterns change 16:15:50 that, and try to find other input methods 16:22:42 [[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 [[Iterate]] https://esolangs.org/w/index.php?diff=177570&oldid=175578 * Aadenboy * (+47) Compiled Iterate file extension 17:22:45 [[List of esolang file extensions]] https://esolangs.org/w/index.php?diff=177571&oldid=174880 * Aadenboy * (+30) add [[Compiled Iterate]] 17:23:04 [[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 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 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 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 way. 18:50:20 (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 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 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 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 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 Oh, also you have to mark functions extern "C" on the C++ side, that much is clear. 18:59:38 [[COSOL]] M https://esolangs.org/w/index.php?diff=177573&oldid=123664 * SirBrahms * (-3) Update Implementation Link 19:00:56 [[User talk:Sporeball]] https://esolangs.org/w/index.php?diff=177574&oldid=82558 * Sporeball * (-139) clear 19:03:16 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 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 But I think now I'm at least closer to understanding the expectations. 19:06:36 -!- ais523 has joined. 19:09:22 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 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 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 You could still give *warnings* for when the C rules are broken across translation units of course. 19:11:51 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 `unidecode d›e 19:15:04 ​[U+0064 LATIN SMALL LETTER D] [U+009B ] [U+0065 LATIN SMALL LETTER E] 19:15:55 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 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 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 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 b_jonas: so "twe" is actually quite common, e.g. "outweigh" or "retweet" 19:24:21 [[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 oh, and "between" although that's common enough to likely be in a dictionary 19:24:29 ais523: yes, but I think you convert it to "the" only at the start of words 19:24:36 "twelve" 19:25:10 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 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 right 19:25:35 I think there are too many of them 19:25:41 [[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 to be sure that we have them all 19:26:25 "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 so it is reasonable to expect that new "twe" words may be coined 19:26:39 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 [[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 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 ais523: keep /^twe(nt|l[vf]|ak|e[dtnz]|erp/ 19:30:04 that has unbalanced parens I think? 19:30:09 oh yes 19:30:14 ais523: keep /^twe(nt|l[vf]|ak|e[dtnz]|erp)/ 19:31:00 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 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 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 the transformation of "twe" to "the" at the start of a word 19:41:13 like transform /^twe(at|[fimostwy]|/theen\W|nc|r\W|r[aem])/ 19:41:18 argh 19:41:30 like transform /^twe(at|[fimostwy]|\W|nc|r\W|r[aem])/ 19:42:12 neither "twer" nor "ther" is a real word 19:42:32 yes, but "ther" is closer 19:42:51 [[Talk:Arbitrary memory emulation]] https://esolangs.org/w/index.php?diff=177578&oldid=175207 * Aadenboy * (+429) 19:43:04 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 yeah, you can keep that one as "twer", doesn't matter 19:43:49 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 which I was typing out quite slowly as a consequence 19:44:05 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 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 hmm, that's still messed up 19:45:07 transform /^twe(\W|at|[fimostwy]|n\W|nc|r[aem])/ 19:45:22 "twen" is important to transport to "then", that's very common 19:48:10 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 [[Naked object]] N https://esolangs.org/w/index.php?oldid=177579 * Corbin * (+1078) Stub a niche concept from the OOP world. 19:48:45 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 sorry? why is "them" relevant? 19:49:32 b_jonas: if you overlap e and n rather than h and e 19:49:58 -!- Lord_of_Life_ has joined. 19:50:06 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 yeah, it'll be easy to type "then" as "them" 19:51:25 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 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 like you'll always have "we" vs "he", or "am" vs "an", "was" vs "has" 19:52:19 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 [[Naked object]] https://esolangs.org/w/index.php?diff=177580&oldid=177579 * Corbin * (+76) /* Examples */ Forgot one. 20:06:27 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 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 probably not good ideas but I think we at least have to consider it 20:16:39 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 my earlier plans had an alt-consonant shift 20:36:26 I found it was awkward to synchronize it with the actual consonants 20:36:56 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 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 not really, you do wnat to overlap space with the last letter of the previous word often 21:41:29 [[G Sharp]] M https://esolangs.org/w/index.php?diff=177581&oldid=174541 * Ractangle * (+60) 22:09:08 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 b_jonas: fwiw I realised that Start/Select are probably good buttons to use to leave edit mode entirely 23:19:08 so we don't need an option for that elsewhere 23:28:10 ais523: yeah, possibly 23:30:41 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 few words seem to need the 10 rare ones 23:31:38 that way, typing the rare letters would only be required for string literals and comments 23:32:25 (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 ais523: so you'd make identifiers not only case-insensitive but also vowel sounding insensitive? 23:35:20 case-insensitive and vocalisation-insensitive, yes 23:35:57 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 yeah 23:36:37 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 would "q" be considered equivalent to "h" or to "c"? 23:37:53 I was actually planning to just avoid the rare letters altogether 23:37:56 lipogram-style 23:38:08 so what they would be equivalent to doesn't matter 23:38:17 it might be a bit weird to not have a .equals, though 23:38:38 hmm 23:39:20 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 my current plans are that operators are equivalent to method calls 23:40:01 you type the method name but it displays as the operator 23:40:14 x + y would be x.add(y), perhaps, and the IDE can swap back and forth between them 23:40:33 ok, but even discounting that, some programming languages need a lot of punctuation characters 23:41:11 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 if you want to mark comments and string literals and stuff 23:42:05 the arithmetic can be just ordinary non-privilaged library functions, many languages these days do that 23:42:08 yes 23:42:32 I feel like you'd want a syntax that was mostly equivalent to Lisp's, but maybe rendered more nicely 23:42:48 although, hmm, still want method chaining 23:43:09 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 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 as in there's only one integer type that you can use for conditionals directly 23:44:23 enchain is compile-time typed 23:45:07 hmm, how does an if statement work in this syntax 23:45:13 a.if(b, c) 23:45:21 would need either CBN or a special case to work properly, but it seems fine 23:45:25 -!- Sgeo has joined. 23:46:50 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 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 I guess there's always the closure option of a.if(||b, ||c) but that's terrible :-D 23:50:16 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 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 huh, I just realised that TCL is basically call-by-name, except for strings 23:51:37 (and integers but those are also strings) 23:52:18 -!- amby has joined. 23:59:32 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