00:09:08 -!- ais523 has joined.
00:09:30 <ais523> wob_jonas: you can actually take user input, at least from the opponent, with just the cards we have now
00:09:42 <ais523> if you use the same construction but set both creature types on one of the Hungry Lynxes to the same thing
00:09:59 <ais523> then the counter will be set to either 4 or 5 depending on the order in which they stack the triggers
00:10:35 <ais523> although, actually reading values that are that close in magnitude would be hard because it'd lead to multiple creatures dying simultaneously
00:11:08 <ais523> also, you can't simulate M:tG, there's no way to do the infinite loop detection :-P
00:12:03 <ais523> <ais523> 9 cards: CREATURE/TRIBAL: Hungry Lynx, Rotlung Reanimator, Noxious Ghoul, (Elesh Norn, Grand Cenobite), Wild Cantor, Shields of Velis Vel, INSTANT: Artificial Evolution, SORCERY: Fractured Identity, Coax from the Blind Eternities
00:12:53 -!- sebbu has joined.
00:20:24 -!- sleffy has quit (Ping timeout: 256 seconds).
00:22:12 -!- Phantom_Hoover has quit (Remote host closed the connection).
00:24:14 <zzo38> If you can make stuff that cares if a subgame is ended by not knowing if it halt, and use other cards that take stuff from sideboard they can be used to affect the main game from the subgame, then there is possibility to be uncomputable and solve halting problems, if the rule is supposed to work that way.
00:25:12 <ais523> you can affect the main game simply because subgame creation cards have an effect on the main game
00:25:56 <ais523> I don't think there's any way to create an actual paradox, though (in which we have a termination detector for M:tG itself rather than just for Turing machines)
00:26:24 <ais523> anyway, I'm going to bed
00:26:26 -!- ais523 has quit (Quit: quit).
00:26:49 <zzo38> Yes, such as affecting life total depending who wins/loses, but that is not the only way to affect the main game
00:33:06 -!- oerjan has joined.
00:41:03 -!- augur has quit (Remote host closed the connection).
00:41:40 -!- augur has joined.
00:42:29 <esowiki> [[Talk:StackFlow]] https://esolangs.org/w/index.php?diff=54281&oldid=54276 * Oerjan * (+0) People keep getting this backwards...
00:46:52 -!- augur has quit (Ping timeout: 245 seconds).
00:57:46 -!- augur has joined.
00:58:35 -!- mniip has quit (Ping timeout: 240 seconds).
01:17:02 <shachaf> oerjan: maybe because it's confusing hth
01:17:28 <shachaf> people should talk about coreductions instead, which are merely nfusing
01:17:51 <esowiki> [[Brainfuck implementations]] https://esolangs.org/w/index.php?diff=54282&oldid=53890 * Superchargedcoffee * (+95) /* Normal implementations */
01:18:07 <int-e> Well, I'm not sure why oerjan is calling themselves "people".
01:30:00 <esowiki> [[Talk:StackFlow]] https://esolangs.org/w/index.php?diff=54283&oldid=54281 * Int-e * (+0) Undo revision 54281 by [[Special:Contributions/Oerjan|Oerjan]] ([[User talk:Oerjan|talk]]) (Yes, people keep getting this wrong.)
01:34:20 -!- Cale_ has quit (Remote host closed the connection).
01:34:32 -!- sleffy has joined.
01:35:55 <int-e> A reduction from A to B takes an instance of A and turns it into an instance of B. Here, a StackFlow program becomes a M:tG deck and instructions for starting the game.
01:36:30 <int-e> What people *do* get wrong is which direction they need. (Reducing from the halting problem shows undecidability; reducing to the halting problem shows semidecidability.)
01:43:47 -!- Naergon has joined.
01:52:18 * oerjan needs brain replacement, stat
02:52:39 <FreeFull> int-e: Which problems can't be reduced to the halting problem?
03:10:13 <wob_jonas> ais523: "you can't simulate M:tG, there's no way to do the infinite loop detection" => unless you can use the host game's infinite loop detection for that. That would get really ugly, you'd need like two or three different ways to get input from each player for that.
03:12:56 <wob_jonas> That probably won't work here, but it happened to just work out in my reduction from (1) with arrays to (1).
03:13:28 <wob_jonas> You can arrange it just so that the infinite loop rule in (1) simulates the infinite loop rule in (1) with arrays.
03:23:56 <oerjan> FreeFull: the halting problem for TMs with a halting oracle hth
03:24:36 <oerjan> *oracle for ordinary TMs
03:25:50 <FreeFull> Encode a program that halts when it finds a counterexample to collatz conjecture that is a cycle
03:30:26 <FreeFull> Checking for a divergent trajectory would be tougher
03:32:18 -!- Cale_ has joined.
03:44:23 -!- augur has quit (Remote host closed the connection).
04:12:48 -!- augur has joined.
04:28:10 <zzo38> I made more of Free Hero Mesh conversion program. One output (the ".class" file; it creates four files, but the other three are binary) is: https://arin.ga/grhVRM So far, shapes, class codes, and help texts are not implemented, but everything else is. You can now complain about it if the syntax could be altered and other suggestions and comments and complaints please.
04:36:31 -!- moei has quit (Quit: Leaving...).
04:50:45 <zzo38> I still have not figured out level 86 of this tsume shogi game
05:46:38 -!- MDude has joined.
06:04:43 -!- xkapastel has quit (Quit: Connection closed for inactivity).
06:07:05 -!- shikhin has quit (Quit: Alas.).
06:07:13 -!- shikhin has joined.
06:32:42 -!- moei has joined.
06:34:32 -!- moei has quit (Client Quit).
06:35:00 -!- moei has joined.
06:45:57 -!- shikhin has quit (Quit: Alas.).
06:46:10 -!- shikhin has joined.
07:13:54 -!- augur has quit (Remote host closed the connection).
07:21:43 <zzo38> What other formats to compress 2-dimensional data will include a rotation flag?
07:35:59 -!- xkapastel has joined.
07:37:28 <wob_jonas> zzo38: jpeg, and some camera raw formats do have that
07:37:43 <wob_jonas> jpeg not natively, only in camera metadata
07:39:02 <wob_jonas> all this is because most modern cameras save the rotation, either derived by a heuristic from the image itself, or from an acceleration sensor in the camera, because people often use the same camera upright or rotated
07:39:30 <wob_jonas> there's usually four settings of the rotation flag that the camera uses, as multiples of 90 degrees
08:34:53 <\oren\_> us flag with mars colony https://imgur.com/e9zSfkb
08:37:03 -!- sleffy has quit (Ping timeout: 256 seconds).
09:18:18 -!- atslash has joined.
09:25:17 -!- oerjan has quit (Quit: Nite).
09:28:28 -!- atslash has quit (Quit: This computer has gone to sleep).
09:31:11 -!- AnotherTest has joined.
09:41:53 -!- atslash has joined.
10:15:19 -!- xkapastel has quit (Quit: Connection closed for inactivity).
10:33:32 -!- LKoen has joined.
10:38:21 <int-e> FreeFull: the non-halting problem doesn't reduce to the halting problem, but I guess the standard example is the universal halting problem (does a TM halt on all possible inputs?) which is neither semidecidable nor cosemidecidable.
10:39:49 <int-e> FreeFull: also, more fundamentally, anything not below \Sigma_1 in the https://en.wikipedia.org/wiki/Arithmetical_hierarchy
10:41:39 <int-e> FreeFull: (the non-halting problem is in \Pi_1; the universal halting problem is in \)
10:53:05 -!- Phantom_Hoover has joined.
10:53:05 -!- Phantom_Hoover has quit (Changing host).
10:53:05 -!- Phantom_Hoover has joined.
11:02:02 -!- atslash has quit (Quit: This computer has gone to sleep).
11:10:16 -!- atslash has joined.
11:28:53 -!- xkapastel has joined.
11:31:01 -!- wob_jonas has quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client).
11:31:51 -!- wob_jonas has joined.
11:32:55 <wob_jonas> zzo38: also I think in the sprite-tile based graphics processor in some 8-bit era game consoles, the sprites have X and Y mirror flags so the bitmap only has to be stored once
11:33:24 <wob_jonas> this is why in game boy super mario land 2, when an enemy dies, its sprite is shown mirrored
11:38:34 <Roger9> with three bits you could encode rotation & X/Y mirroring (depends on rotation)
11:38:41 <Roger9> but only in 90 degree increments ofc
11:38:55 <wob_jonas> Roger9: yes, but actual rotation isn't so cheap to compute on the fly
11:39:31 <wob_jonas> Roger9: the sprite bitmaps are stored in the ordinary ROM or RAM of the machine, which is read in bytes, and there's usually four pixels per byte
11:39:48 <Roger9> ah, I can kinda see what you mean
11:40:06 <wob_jonas> so if you render normally, you read one byte and render four pixels from it, but if it's rotated, you read each byte four times to render one pixel from it
11:40:28 <wob_jonas> reading a byte multiple times isn't the problem, but reading a new byte each pixel is a bit difficulty
12:03:19 -!- atslash has quit (Quit: This computer has gone to sleep).
12:07:50 -!- atslash has joined.
12:10:50 <Taneb> Does anyone know the best way to staple together a booklet (multiple sheets of foled paper) with a desk stapler?
12:12:08 -!- Phantom_Hoover has quit (Ping timeout: 256 seconds).
12:12:42 <wob_jonas> Taneb: how many pages? If it's more than 10 or 15, then you usually want a desk hole punch and one of those flexible flat metal clamps that can be opened and closed multiple times and are usually put into these cheap plastic folders, but occasionally you can find it without the folder front and back sheet. Both desktop hole punches and these clamps
12:13:54 <wob_jonas> Taneb: and if it's over 50 pages, then you might want spiral binding, which needs a more expensive machine, but the use-once spiral binder is cheap and there are shops that do spiral binding as a service for quite cheap.
12:14:13 <wob_jonas> (The spiral binder machine is still something a large office can buy.)
12:16:04 <wob_jonas> There's also an intermediate solution, also for over 50 pages, of reopenable ring binders with two or four rigid rings. These exist in various sizes, and are more expensive than the folders with the plastic clamp, but for large amount of pages it can be worth. I used one to organize my university notes for a few years, because you can insert and re
12:16:04 <wob_jonas> move sheets easily hundreds of times without damage.
12:16:18 <wob_jonas> Note that four holes can still be punched easily with a cheap two-hole hole punch.
12:17:32 <wob_jonas> 10 sheets? I think for 10 sheets you can just use either a single staple 45 degrees diagonally near the top left (for ltr main writing direction) so that any number of top pages can be folded on the bottom,
12:18:16 <wob_jonas> or two or three vertical staples on the left margin so it folds like a normal book, but that latter is harder to execute well.
12:19:26 <wob_jonas> I think if it don't expect too much use of the booklet, one staple on the top left corner is usually the best.
12:20:43 <wob_jonas> This is eg. the normal way we have students staple between 8 and 16 pages of blank sheets on written exams at the start of the exam (before they receive the task sheet) on exams with high risk of cheating.
12:21:11 <wob_jonas> I mean, we provide staplers and staples, students bring the empty sheets.
12:21:41 <Taneb> My situation is I've printed some text expecting to be folded horizontally and then read like a book
12:23:59 <wob_jonas> Oh, and importantly, use the normal size staples, the one with the two tiny holes in the paper approximately 0.013 apart, not the smaller staples. The smaller staples are junk.
12:25:13 <wob_jonas> Taneb: is it a document where people will be deeply immersed and turning pages a lot, like a hard to understand maths article, or just one of those reports or legal documents that probably nobody will read much? If the latter, then a staple is fine. In any case, stapling is undoable, so people can change their mind later.
12:25:37 <Taneb> wob_jonas, the former, and it's solely for my benefit
12:25:52 <wob_jonas> If it's only for yourself, then none of these.
12:26:03 <Taneb> ...actually I think needle and thread would be better than stapling
12:27:23 <wob_jonas> Use a removable paperclip if you only have few of these, remove the paperclip for reading; or just use nothing, store it in a folder with other documents, and label and number the pages for easier assembly if they get loose.
12:27:46 <wob_jonas> If you've got lots of such documents, then it might be worth to invest in a ring binder (there exist ones with different thicknesses) and put everything in to them.
12:27:48 <Taneb> It's slipping as I read it
12:28:59 <wob_jonas> I usually just used a paperclip and folders. Now I have like a thousand pages of old documents in like six thick folders, most of which is useless, but one day I'll have to go through it and find the twenty useful pages and throw away the rest.
12:29:21 <wob_jonas> Luckily digital cameras make this thing cheaper, because you can cheaply photograph any document if you're not sure you'll need it later.
12:29:39 <Taneb> https://imgur.com/s7IIxgA
12:32:33 <wob_jonas> Taneb: don't fold it like a booklet. Have one stack of pages on your right that you cyclically permute and all face upright, and when you're reading the reverse of the top page of that cyclical list, then (a) if it's not stapled, put that one sheet on the left next to the stack, (b) if it is stapled on the top left, then rotate the stack left 90 de
12:32:33 <wob_jonas> grees while flat on the desk and fold the top page down so you can read its reverse.
12:33:09 <wob_jonas> During that, the same side of the main stack will always face up, and you'll always have only one sheet loose from it, unless you're trying to turn many pages at once to find something.
12:33:33 <wob_jonas> Is that clear enough, or should I make photos?
12:35:53 <wob_jonas> You can still fold like a booklet without slipping, but in that case don't staple or otherwise attach the sheets, don't fold the sheets at all (keep each completely flat), so the equivalent of the book spine is actually of negative width. But for that, you need a stable desk space with enough width for two pages.
12:36:19 <wob_jonas> Folding and trying to keep a positive width spine might be your error here if you want to stick closest to what you're doing
13:05:36 <wob_jonas> If you compile from The Amnesiac from Minsk level 1 to The Waterfall Model, do you automatically get the property that the Waterfall program will never find two clocks run out at the exact same time? I think that's true, and it's important because the M:tG construction would emulate the program wrong if two clocks ran out at the same time.
13:09:25 -!- wob_jonas has quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client).
13:46:26 -!- LKoen has quit (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”).
13:53:25 -!- Roger9 has quit (Changing host).
13:53:25 -!- Roger9 has joined.
14:08:32 -!- xkapastel has quit (Quit: Connection closed for inactivity).
15:08:16 -!- atslash has quit (Quit: This computer has gone to sleep).
15:14:38 -!- atslash has joined.
15:15:42 -!- Cale_ has quit (Remote host closed the connection).
15:16:38 <lambdabot> LOWI 041450Z 08010KT 020V160 CAVOK 14/M04 Q0996 WS R26 TEMPO 12010G20KT
15:17:46 <int-e> wow, 29% humidity, very dry.
15:21:53 <int-e> Oh and we did start out around -04°C and almost 100% humidity... so it kind of makes sense. Huge difference between then and now.
15:36:44 -!- LKoen has joined.
16:02:20 -!- idris-bot has quit (Quit: Terminated).
16:16:55 -!- wob_jonas has joined.
16:18:21 -!- Melvar has quit (Quit: rebooting).
16:18:23 <wob_jonas> zzo38: oh nice, so the sqlite webpage now points to a public web archive of the sqlite-users mailing list. It used to point to a private archive, readable only after you subscribe, which is rather incvoncenient, because I want to link to some specific emails in it.
16:24:58 -!- Melvar has joined.
17:12:40 -!- atslash has quit (Quit: This computer has gone to sleep).
17:15:22 -!- laerling has joined.
17:19:55 <esowiki> [[Brainfuck implementations]] https://esolangs.org/w/index.php?diff=54284&oldid=54282 * B jonas * (+136)
17:31:04 -!- xkapastel has joined.
17:41:26 -!- sprocklem has quit (Ping timeout: 245 seconds).
17:43:32 -!- sprocklem has joined.
17:44:39 <wob_jonas> the internet is awesome. I just found out about something awesome that exists in the real world.
17:46:16 <wob_jonas> A bronze statue depicting the coronation pall with realistic proportions and in detail, apparently life sized or close, exhibited in the Buda castle: https://commons.wikimedia.org/wiki/Category:Coronation_pall_of_Hungary_by_Tibor_Rieger_(Budapest)
17:46:33 <wob_jonas> It might have been there since 2007, but I never knew it was there, because it's in the north side of the castle, and I rarely go there.
17:46:59 -!- erkin has joined.
17:47:02 <wob_jonas> I'll absolutely have to watch this soon, although since it's outdoors, the snow would cover it.
17:48:36 -!- atslash has joined.
18:15:46 <zzo38> I do mean the three bit rotation flag. And, I know that some game systems (including Famicom) can flip/mirror sprites (although Famicom has only flip/mirror not rotation, and only for sprites and not backgrounds; some systems support it for backgrounds too I think)
18:17:02 <wob_jonas> zzo38: in that case I only know of such a rotation flag in formats representing photographs, in the metadata sometimes saved by the camera, sometimes added by hand later (because older cameras like my mobile phone don't guess the orientation, and sometimes newer cameras could guess wrong)
18:17:29 <zzo38> Anyways I was asking about compression. JPEG doesn't use it natively so maybe doesn't count I don't know
18:17:33 <wob_jonas> zzo38: are there systems where horizontal flip is supported for tiles but vertical flip isn't?
18:18:29 <zzo38> wob_jonas: I don't know. However, my own (unimplemented, and not necessarily finalized either) computer design supports vertical but not horizontal flip for tiles.
18:19:10 <wob_jonas> Such metadata rotation flag is probably stored in most not too old brands of camera raw files, plus jpeg, tif, and probably other compressed formats.
18:20:01 <wob_jonas> I've even temporarily stored such a flag in a PPM comment once, but that's not standard, only one tool I wrote wrote it plus one or two scripts I wrote read it.
18:20:21 <zzo38> Also, there are two archives for the sqlite-users mailing list, one private and one public. (I don't know why, but it is.)
18:20:52 <wob_jonas> zzo38: that's normal, there are (or used to be) a lot of third-party mail archive servers that archive many public mailing lists from various servers.
18:21:05 <wob_jonas> It makes sense, because if the mailing list is public, then those web archive services can just subscribe to it.
18:21:08 <zzo38> The SQLite web page links to both.
18:21:42 <zzo38> Yes, of course a program can subscribe to it and automatically archive it public; I know that already.
18:23:47 <wob_jonas> I'd guess the sqlite guys made the private archive themselves, private so that email address harvesting bots can't easily read it, and the other archive started later. Let me check how far the public archive goes.
18:25:08 <wob_jonas> The public archive goes back to https://www.mail-archive.com/sqlite-users@mailinglists.sqlite.org/mail60.html mails from 2014-09
18:25:21 <wob_jonas> Let me see when I reported that bug...
18:26:03 <zzo38> Yes, maybe, and then they linked both because the public one hides the email addresses (which isn't necessarily a good idea, because sometimes it might believe something is an email address even when it isn't, and they might want to make it public)
18:27:47 <wob_jonas> And yes, servers doing that in an overzealous way is very annoying, ones that think anything with an at sign in it is an email and thus corrupting all sorts of computer-readable code or data in hard to recover ways.
18:28:13 <wob_jonas> Then there's the somewhat more modern phenomenon of turning anything with a dot in it to a hyperlink.
18:28:41 <zzo38> I, too, reported a bug, having to do with sqlite3_get_auxdata() and triggers. (It has been corrected.)
18:31:19 <wob_jonas> If only they had an archive of sqlite-dev too. I want to link an email from there too.
18:31:24 <wob_jonas> Oh well, it's still better than nothing
18:33:05 <wob_jonas> I am proud of having found that bug, and should make a short writeup about it, linking the emails and the commits fixing it, then link the writeup from my cv.
18:34:27 <zzo38> Yes, I don't do those things on my own web pages. Although, you could also put the plain text files on gopher only (email harvesting bots might not be programmed to access gopher, although it is also possible that it does, but I think it is less likely)
18:34:35 <zzo38> What bug did you find?
18:35:23 <wob_jonas> https://www.mail-archive.com/sqlite-users@mailinglists.sqlite.org/msg92963.html The comparison of numbers wasn't transitive when integers and floating point numbers both were involved.
18:36:17 <wob_jonas> I first reported that the comparison is not transitive, but that understandingly got lost among the hundreds of emails by beginners complaining about how floating point numbers don't work like real numbers or something (you get that on a lot of programming mailing lists), so I reposted without referring to that at all.
18:36:43 <wob_jonas> The devs fixed that second try, after I complained that the first attempted fix didn't work.
18:36:59 <wob_jonas> It's not trivial to fix, it's not even clear to me what the best fix would be.
18:37:09 <wob_jonas> But the current fix seems good enough.
18:38:23 <wob_jonas> This is in an important class of bugs, because it can come up in a lot of dynamically typed languages where you can easily mix floating points and integers, especially ones that have commonly used functions reading an input such that you don't know if an integer or float comes out,
18:39:15 <wob_jonas> such as perl or lua, because then if you read untrusted input and try to sort it or store it in a dictionary, and the comparison (even just equals comparison) is implemented wrong, you can get inconsistent results and even segfaults or arbitrary code execution in the worst case.
18:39:47 <zzo38> Or some programming language such as Awk and JavaScript
18:40:09 <wob_jonas> The worst case doesn't happen very often, and even in sqlite you can't get segfaults or anything like that, only incorrect and inconsistent results to queries plus warnings about an inconsistent database.
18:40:18 <zzo38> Or some programming language such as Awk and JavaScript which has only floating point
18:41:02 <wob_jonas> How is that relevant? If you only have floating points (and presumably only one type of floating points) then this particular bug won't hurt you. Comparing NaNs incorrectly can hurt you, but that's a different inconsistent comparison bug.
18:41:43 <zzo38> Yes, that is a different bug I suppose
18:43:08 <wob_jonas> NaN comparison bugs is also an important class of bugs, and they're worth popularizing, though they're already well-known, it's not always easy to figure out how best to protect against them in a generic way.
18:44:37 <wob_jonas> It might take 25 more years until everyone (including people using old versions of Apple or MS compilers) get easy access to a total comparison function for floating points that they can use for sorting.
18:46:12 <zzo38> But you can pass your own function for comparing with qsort if you are using that, anyways
18:47:42 <wob_jonas> And currently sqlite and perl and lua and all those other languages have to write their own comparison functions (they don't use qsort, but that's irrelevant)
18:51:49 <zzo38> I also had proposals for new features for the SQLite virtual table mechanism, including new methods xInterrupt, xFreeIdxStr, xUpdateInline, and also an option to reduce the number of bits set in colUsed in some cases, and a way to consume LIMIT/OFFSET clauses, and indexing virtual tables on expressions and partial index (which would be done by calling sqlite3_declare_vtab() a second time with a CREATE INDEX statement)
18:52:39 <wob_jonas> And while I'm there, I should also link to the other sqlite code bug I found from my CV
18:52:48 <wob_jonas> that one was earlier, I think, and a bug in the query parser/compiler
18:54:07 <wob_jonas> http://www.sqlite.org/src/tktview/3a88d85f3670
18:54:37 <wob_jonas> From 2014-08 so the public archive won't have the mail
18:54:53 <zzo38> The other one more thing to add would be a action code input in the sqlite3_index_info structure, which is normally SQLITE_SELECT, but if it is a UPDATE or DELETE statement where the entire WHERE clause is consumable then it will mention that instead, in order if an implementation wishes to set SQLITE_INDEX_SCAN_UNIQUE if you tell it to delete everything and it can return a special row that when deleted, deletes everything.
18:56:20 <zzo38> The xInterrupt method and consuming LIMIT/OFFSET clauses would be useful when the virtual table is accessing the internet.
18:57:21 <zzo38> What is your opinion of these things?
18:59:07 -!- LKoen has quit (Remote host closed the connection).
19:07:00 <wob_jonas> zzo38: no opinion, because I didn't look much into the custom virtual table interface part of sqlite3. I don't care about that interface, and it doesn't get into my way. If I want to define my custom tables, then I don't see why I'd want to go through sqlite3 for its interface at all.
19:07:11 <wob_jonas> (This applies to current versions of sqlite3 obviously.)
19:17:08 -!- sleffy has joined.
19:17:16 <zzo38> How can you define custom tables like that without going through sqlite3 for its interface though?
19:18:17 <wob_jonas> Pressing k pauses or resumes youtube. This is good to know.
19:20:30 <wob_jonas> zzo38: I use sqlite3 mostly because of how it solves storing the table data on the disk, with all the block and record and b-tree stuff, plus managing atomic transactions with arbitrary reads and writes on them. The sql language and automatic query optimizations are less important to me. So if I don't want to use sqlite's built-in table+index, then
19:20:30 <wob_jonas> I don't see why I'd want to go through its query language and query optimizer at all.
19:20:59 <wob_jonas> If I implement a custom table, then I'll just use whatever custom interface I define for it, with exactly the operations I want.
19:22:33 <zzo38> If you are not accessing it with SQL statements, then you can use a different custom interface. I am just saying sometimes is useful accessing it with SQL statements, including to deal with the custom table and standard SQL tables together.
19:23:08 <wob_jonas> Maybe it's useful, I don't think that's useful for me.
19:24:24 <wob_jonas> If I want to deal with custom and standard tables together, I can just loop through rows of sqlite3's tables with an sql SELECT ... WHERE ... > ... LIMIT ... query, which recent versions make even easier using list lexicographic comparison built into the sql language.
19:28:46 <HackEgo> 1/2:twitter//Twitter is Taneb's bird collection (presumably). \ lynn//lynn likes to impersonate seasonal cucurbitaceæ. \ pcp//PCP refers to probably cyclidine proofs. It is precipitously illogical in many places, but research has shown that PCP is, surprisingly, No Problem. \ diet//People go on diets to loose weight instead of gaining. It
19:28:50 <zzo38> Maybe to you is not useful, but to me is useful the virtual table interface. If your program uses SQLite, then it also includes executing SQL codes, so if you want to allow embedding scripting codes that the user can enter, you can allow user to enter SQL codes even if you do not implement another programming language. Virtual tables is one way allowing to be used in this way.
19:29:13 <HackEgo> 1/1:973) <oerjan> `quote 1000
19:29:27 <HackEgo> People go on diets to loose weight instead of gaining. It gives them a consistant diet.
19:30:25 <wob_jonas> zzo38: that's true, if you want to run sql queries chosen by an untrusted user, then you could use sqlite to implement that
19:31:14 <wob_jonas> but even then I imagine it's sometimes easier and better to just copy all the data to an sqlite table than to build a new virtual table interface to access it
19:31:35 <wob_jonas> (but even write access can be done that way, with triggers)
19:32:13 <wob_jonas> zzo38: do you actually have such an application, or are you planing one?
19:32:40 <zzo38> You can do that whether the user is trusted or untrusted (for untrusted input, there is a authorizer callback).
19:33:30 <wob_jonas> If you've met my users, you wouldn't trust me either
19:34:25 <zzo38> wob_jonas: Neither so far, but if it is an extension then you can use them in the sqlite3 command shell too.
19:35:41 <wob_jonas> And I don't think the authorizer callback is enough for limiting queries by untrusted users. In particular, it's not easy to control how much disk space temporary files can take up.
19:36:40 <zzo38> Yes, but there is also the sqlite3_limit() function.
19:37:31 <zzo38> (And if that is still not enough, you can write a VFS shim to limit disk space and write memory allocation routines to limit memory usage.)
19:37:36 <wob_jonas> There is a limit, but it limits the size per file, not the total size of temporary files, and I'm not even sure it applies to all files or just some.
19:38:02 <wob_jonas> Yes, you can do all that stuff, I said it's not easy.
19:39:25 <zzo38> I do trust the user if the program is local and not setuid (although this does not necessarily mean an input file is trusted); for programs that you enter input remotely, or if setuid is in use, then the user is not to be trusted.
19:49:51 <zzo38> I thought of using SQLite to store level and solution files for Free Hero Mesh, although I thought it simpler to just use a Hamster archive instead. This does mean the entire file must be rewritten if the size of any lump changes, but Hero Mesh already does this anyways.
19:52:22 <zzo38> Do you like Free Hero Mesh?
19:54:17 <wob_jonas> I don't know Hero Mesh or Free Hero Mesh.
19:54:41 -!- mniip has joined.
20:02:55 -!- laerling has quit (Ping timeout: 256 seconds).
20:03:02 <wob_jonas> Duck jumping is a duck type special move big Mario can use in most Super Mario games.
20:09:40 <zzo38> Some things I will intend doing differently in Free Hero Mesh. In Hero Mesh, if you right click on any tile it displays a description (but not the variables) of only the topmost object at that location. I intend you can view a list of the objects at any location, including the values of any variables, so that there is no hidden information. Variables are not displayed if the class has the Quiz flag set though.
20:10:26 <zzo38> (The Quiz flag is a new flag in Free Hero Mesh. The converter gives this flag to classes named "Quiz". The user configuration file can override the Quiz flag of classes.)
20:10:27 -!- sprocklem has quit (Ping timeout: 252 seconds).
20:11:38 <zzo38> I can use smallxrm (which I wrote) for user configuration.
20:12:04 -!- sprocklem has joined.
20:13:09 <zzo38> Do you like smallxrm?
20:13:11 -!- laerling has joined.
20:14:08 <wob_jonas> I don't know. Do you have a link for that?
20:16:35 -!- augur has joined.
20:18:28 <zzo38> http://zzo38computer.org/prog/smallxrm.zip
20:18:29 <esowiki> [[Kangaroo]] https://esolangs.org/w/index.php?diff=54285&oldid=46011 * B jonas * (+26)
20:19:32 <wob_jonas> ah, that X resource manager reimplementation. you mentioned that, yes.
20:20:47 <esowiki> [[The Amnesiac From Minsk]] https://esolangs.org/w/index.php?diff=54286&oldid=53893 * B jonas * (+26)
20:23:43 -!- Phantom_Hoover has joined.
20:23:43 -!- Phantom_Hoover has quit (Changing host).
20:23:43 -!- Phantom_Hoover has joined.
20:33:51 -!- variable has quit (Quit: Found 1 in /dev/zero).
20:35:27 <zzo38> I don't know your opinions about the specifics of them though
20:36:52 <wob_jonas> I don't really use x resources directly, so I don't much care
20:37:37 <wob_jonas> In particular, I control urxvt with command-line option, and that program allows setting any or almost any option with either an X resource or a command-line option, with both documented
20:38:36 <wob_jonas> I used to use X resources to set some things for xterm, because it didn't have equivalent command-line options for some of them, but that was before I started using urxvt, and urxvt is better in almost every way, so I have no reason to go back to xterm.
20:39:05 <wob_jonas> There might have been one or two other programs for which I set an X resource, but nothing really significant.
20:39:28 <wob_jonas> As far as I know, most new programs don't care much about X resources. It's an old style thing.
20:40:09 <wob_jonas> I think old programs used X resources because the old motif-like toolkits read them transparently, so the programs could use it to customize the look and feel of its controls without doing much of anything.
20:40:29 <wob_jonas> But newer toolkits don't do that anymore.
20:41:03 <wob_jonas> zzo38: is there some particular reason why you use xterm over urxvt, or have you just not changed because xterm is good enough?
20:41:16 <zzo38> Because xterm is better.
20:42:11 <wob_jonas> I had some serious visual glitches with xterm way back, which was the main reason why I changed, although that might have been fixed in later versions or disappeared as video drivers improved. But now I like urxvt better, and see no reason to go back to xterm from it.
20:42:27 <wob_jonas> I can still use xterm as a fallback, like as a temporary terminal while I install urxvt.
20:43:08 <wob_jonas> zzo38: better how in particular? I'm curious what matters for you in particualr
20:45:03 <zzo38> It supports bitmap fonts and non-Unicode text.
20:45:34 <zzo38> (As well as Xaw scrollbars, which unfortunately most modern programs do not use)
20:45:39 <wob_jonas> zzo38: urxvt supports bitmap fonts. X bitmap fonts through the X calls.
20:46:13 <wob_jonas> I use urxvt with bitmap fonts in factr
20:47:08 <wob_jonas> In particular, this is one of the settings I pass to urxvt to set the font: -fn "x:-*-fecupboard-medium-r-*-*-20-*-*-*-*-*-iso10646-1,x:-*-terminus-bold-r-*-*-20-*-*-*-*-*-iso10646-1"
20:47:43 <wob_jonas> this sets my bitmap font (listed in wisdom/font ) as the primary font, provided you have it installed to where X can see it
20:48:31 <zzo38> Still one thing it does not support is non-Unicode characters that have no Unicode equivalent, it seems; this should be fixed.
20:48:54 <zzo38> (I may eventually try to write my own terminal emulator, which can fix these problems, too)
20:49:35 <wob_jonas> zzo38: do you mean non-unicode characters that have a direct representation in the encoding you use for terminal io?
20:49:46 <wob_jonas> or do you access such characters in some other way?
20:50:07 -!- erkin has quit (Quit: Ouch! Got SIGIRL, dying...).
20:50:13 <zzo38> They are accessed by switching the character set
20:51:02 <zzo38> (There are also characters that do have a Unicode version, although the Unicode version has the wrong width.)
20:51:11 <wob_jonas> ok. that's a reasonable argument, but it doesn't affect me, because all the characters in other encodings I care about are accessible mapped through unicode.
20:52:33 -!- wob_jonas has quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client).
20:52:50 -!- wob_jonas has joined.
20:54:11 <wob_jonas> In particular, all characters in the DEC line drawing character set are mapped into unicode (there's a table in urxvt's source code), and all characters in the byte encodings I've used have a mapping into unicode, and in both cases this mapping is how my fecupboard20 font identifies the character.
20:54:41 <zzo38> Yes, the "-iso10646-1" indicates that it identifies the character in that way, of course.
20:57:33 <wob_jonas> And my font has all the characters from the DEC line drawing character set, and all the characters from the byte encodings I've used.
20:57:44 <wob_jonas> It does lack some other useful unicode characters though.
20:57:45 -!- LKoen has joined.
20:57:58 <wob_jonas> oren's bitmap font is much more exhaustive
20:58:08 <wob_jonas> there are lots of characters I should add some day
21:02:57 <zzo38> I would make the terminal emulator with bitmap fonts only, all commands from DEC VT terminals, some of the xterm commands, Xaw-like scrollbars, and not much else. If possible, a BREAK signal can be emulated too (by reading the termios settings when BREAK is pushed to determine what to do).
21:04:41 <wob_jonas> zzo38: you can compile urxvt to support bitmap fonts only. the X bitmap font support is mandatory; and there's a configure switch for whether you want to support rendering fonts through xft (which would alone let you use x bitmap fonts too incidentally, but also lets you do much more than that).
21:04:48 <zzo38> We don't need background pictures (only Sixel pictures are supported, or a program can read the environment variable with the window ID and draw pictures that way), hyperlinks, etc
21:05:34 <wob_jonas> I don't know about "all commands from DEC VT terminals" because there are too many such terminals to be able to follow, but urxvt certainly supports many of those commands. It also supports "some of the xterm commands", including some xterm-specific ones, but not all of them.
21:07:09 <wob_jonas> I don't know about Xaw-like scrollbars. Urxvt has optional support for three different types of scrollbars (many of these features have a compile-time switch), but I just disable the scrollbar so I don't care.
21:08:11 <wob_jonas> I don't know if the break signal is supported, but if it weren't yet supported, it wouldn't be too hard to add. It's like one ioctl call to send a break signal to a virtual terminal anyway. Maybe more if you want it to work on all BSDs.
21:10:15 <wob_jonas> Ah, there's even a possibly portable wrapper function over that ioctl call: tcsendbreak.
21:11:14 <wob_jonas> I don't think you have to read the termios settings, because you're on the master side of the terminal, so the virtual terminal layer handles that. You just have to tell the master virtual terminal to send the break using that function (or the ioctl) and it will do whatever it has to.
21:11:48 <wob_jonas> Of course, a break is a feature that's more useful for a physical terminal line than a virtual terminal, but whatever.
21:13:06 <zzo38> I thought someone told me that virtual terminals don't support break.
21:15:18 -!- wob_jonas has quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client).
21:16:04 -!- wob_jonas has joined.
21:17:31 <wob_jonas> I dunno. The virtual terminal interfaces at the kernel and libc level are very similar to the physical terminal interfaces, so the ability should be there. But I don't think I've tested that. You'll have to test on each OS if you want to be sure.
21:22:57 <zzo38> I doubt such a terminal emulator will be important on operating systems other than Linux and BSD, and possibly Hurd.
21:24:03 <wob_jonas> Terminal emulators are useful on win32, with msys or cygwin or other such systems, but urxvt in particular doesn't work in those.
21:26:04 <zzo38> If you are using Windows 10 then you might be able to run it in Linux mode (if you install a Windows-based X server), but I don't know as I have not used Windows 10
21:27:02 <wob_jonas> It seems tcsendbreak (of glibc) isn't supported on openbsd or freebsd. But linux and openbsd and freebsd have the TIOCSBRK/TIOCCBRK ioctl pair.
21:27:28 <wob_jonas> tcsendbreak is standardized by posix though, so the bsd libcs might eventually grow one
21:28:34 <zzo38> If necessary, #if and #ifdef can be used to deal with stuff that is different on different operating systems.
21:34:51 <wob_jonas> POSIX describes the consequences of a break depending on the termios at http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap11.html (free registration required) and I don't see why that wouldn't apply for a pseudo-terminal
21:35:15 <wob_jonas> the openbsd manuals also specifically say that the pseudo-terminal tries to behave similar to a real terminal
21:35:58 -!- Phantom_Hoover has quit (Ping timeout: 256 seconds).
21:44:54 -!- LKoen has quit (Remote host closed the connection).
21:51:26 -!- Phantom_Hoover has joined.
21:51:26 -!- Phantom_Hoover has quit (Changing host).
21:51:26 -!- Phantom_Hoover has joined.
21:51:41 -!- LKoen has joined.
21:52:07 -!- LKoen has quit (Remote host closed the connection).
22:02:58 -!- fizzie has quit (Quit: Coyote finally caught me).
22:04:28 -!- zemhill_ has quit (Read error: Connection reset by peer).
22:05:35 -!- Phantom_Hoover has quit (Ping timeout: 252 seconds).
22:06:22 -!- Phantom_Hoover has joined.
22:06:22 -!- Phantom_Hoover has quit (Changing host).
22:06:22 -!- Phantom_Hoover has joined.
22:08:48 <zzo38> The man page for tcsendbreak() says "If the terminal is not using asynchronous serial data transmission, tcsendbreak() returns without taking any action."
22:08:56 -!- fizzie has joined.
22:09:58 <zzo38> It also requires a duration, which is not applicable for pseudo-terminals.
22:10:12 -!- variable has joined.
22:10:21 <wob_jonas> It doesn't require a duration. Normally you call it with 0 as the duration parameter.
22:10:55 <wob_jonas> It *allows* a duration, because sometimes people have specific physical devices that care, and the kernel can control the duration easily.
22:11:07 <zzo38> Yes, but it still has a duration even if you specify zero (it says 0.25 to 0.5 seconds if zero is specified).
22:11:47 <zzo38> That is why I suggested using termios and then to check the IGNBRK, BRKINT, and PARMRK flags, and then the terminal emulator can perform the appropriate operation due to what they are set to.
22:13:50 <wob_jonas> Maybe. But I think you should test first if you can send a break directly.
22:17:31 <zzo38> Another reason to read termios settings is to determine how to respond to DECREQTPARM, although an alternative would be to use X resource settings instead. If connecting to a remote server, you may wish to change the report of the baud rate in case it might choose to result a less fancy display at lower baud rates.
22:26:31 -!- laerling has quit (Quit: Leaving).
22:35:13 -!- sleffy has quit (Ping timeout: 240 seconds).
23:01:06 -!- wob_jonas has quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client).
23:07:33 -!- AnotherTest has quit (Ping timeout: 252 seconds).
23:30:37 -!- Phantom_Hoover has quit (Remote host closed the connection).
23:45:52 -!- sprocklem has quit (Ping timeout: 256 seconds).