00:05:42 <esolangs> [[PAL]] https://esolangs.org/w/index.php?diff=154287&oldid=154286 * I am islptng * (+100)
00:58:40 <zzo38> It seems to me that there are many benefits of X.509 authentication.
01:03:14 <zzo38> Someone cannot steal your password since there isn't one; they can copy your certificate but cannot use it to impersonate you since a private key is required. You can include extra information in the certificate if wanted (like OpenID allows specifying your email address and other stuff).
01:03:50 <zzo38> You can allow self-signed certificates and/or allow using credentials from other services, and can do so even if you are unable to connect to that service.
01:05:15 <zzo38> Additionally, I think DER is a better format than JSON in general.
01:06:18 <zzo38> X.509 authentication also is not limited to only HTTPS, although it can be used with HTTPS (although it seems to be very rarely used for client authentication, it is common for server authentication).
01:13:11 <zzo38> (The OpenID Simple Registration Extension allows to provide some information such as time zone and others. I have made up a X.509 extension for providing the time zone in a X.509 certificate, which could be used for a similar purpose (and I have done this once, although the service I was authenticating to did not actually care about anything other than the expiry date).)
01:26:41 <zzo38> The main problem I seem to have is securely specifying superseding certificates. I have some ideas about how it might be possible to make this though (as well as allowing to store the private key used for this purpose separately for improved security).
01:54:46 <esolangs> [[APL]] M https://esolangs.org/w/index.php?diff=154288&oldid=140158 * I am islptng * (+241)
02:21:12 -!- 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).
02:47:08 <zzo38> It does not require a web browser, does not necessarily require an internet connection, etc.
02:50:24 -!- tromp has quit (Ping timeout: 244 seconds).
03:02:56 -!- mtm has joined.
03:58:31 <esolangs> [[Sb]] https://esolangs.org/w/index.php?diff=154289&oldid=154020 * C0ffee * (-6)
03:59:35 <esolangs> [[Sb]] https://esolangs.org/w/index.php?diff=154290&oldid=154289 * C0ffee * (-43)
03:59:59 <esolangs> [[Sb]] https://esolangs.org/w/index.php?diff=154291&oldid=154290 * C0ffee * (-9)
05:24:25 <zzo38> I had thought of making a variant of RISC-V (another instruction set also might be usable, but there are some benefits of RISC-V such as being free and having existing compilers that can target it) for use with an operating system design. There might be capabilities, which can be stored in registers and memory and are separate from numbers (I think Flex computer does something similar).
05:25:21 <zzo38> The kernel will be able to examine the contents of capabilities and create them, but user programs can only copy them and compare them for equality.
05:26:18 <zzo38> This means that a C program could store a capability in a uint64_t variable, although attempting to them perform arithmetic with that variable's value will be an error. (Some kinds of optimizations might affect this in some cases; I don't know. Do you know?)
05:26:30 <korvo> You might want to privilege equality comparisons. In E, a user program is only allowed to join two capabilities; either the runtime proves that the two caps refer to the same underlying object, or the join is broken and can't be used.
05:29:30 <zzo38> OK, although I had thought that the kernel might make a separate entry when the capabilities come from other sources, in order that they can be separately discarded (like dup and close in UNIX). Also, a program may want to compare equality of capabilities with numbers (especially zero) as well, since a program might use them to denote the lack of a capability.
05:32:25 <korvo> To use an analogy, imagine a program that sends and receives references to SysV-style shared memory segments. How to compare two references for equality? We can't, because we can't be confident that the segments haven't been remapped.
05:32:33 -!- craigo has quit (Quit: Leaving).
05:33:35 <korvo> But we could e.g. test a segment by writing a byte via one reference and then reading that same byte from another reference. This is the "scratchpad" approach to implementing caps that can be sealed.
05:34:19 <zzo38> I have used that approach in a PostScript program once, actually.
05:35:13 <zzo38> (the "eq" operator in PostScript can test if two arrays, dictionaries, etc refer to the same underlying memory, but when using "eq" with strings it compares the contents of the strings instead)
05:35:57 <zzo38> I think I understand your concern now that you explained it better, though.
05:36:31 <zzo38> However, perhaps I should also have explained better, because the copies that are considered equal are only copies made by the program itself, not any other references to the same object.
05:37:34 <korvo> Sure. The precise sort of shared object is important. File descriptors are another UNIX capability object which can't be directly compared, and AFAIK there's *not* a way to add an equality protocol to them.
05:40:43 <zzo38> Yes, and in UNIX if you use dup to make a new number that refers to the same object, the new number is not equal to the existing number, but if you just copy the value directly without using system calls then the number will be equal, and it is the similar idea here. However, the difference here is the operating system and application programs need to know what data refers to capabilities and what doesn't.
05:45:00 <zzo38> (due to how message passing works, and how receiving and sending capabilities works)
05:58:11 <zzo38> I had thought of other hardware features as well. The keyboard probably also would be different from PC keyboard too. Some of the ideas of Apple is good such as a separate Command and Control key, and a separate Return and Enter key. I also would avoid USB which has many problems, but I might have the "GeekPort" like BeBox has, as well as RS-232 and other ports.
06:19:41 -!- mtm has quit (Read error: Connection reset by peer).
06:20:42 -!- mtm has joined.
07:13:56 -!- Lord_of_Life_ has joined.
07:14:33 -!- Lord_of_Life has quit (Ping timeout: 245 seconds).
07:15:20 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
07:44:26 -!- Sgeo has quit (Read error: Connection reset by peer).
11:04:32 <esolangs> [[User:PrySigneToFry/Sandbox/Draft of AGPL]] https://esolangs.org/w/index.php?diff=154292&oldid=154265 * PrySigneToFry * (+243)
11:17:26 <esolangs> [[User:JIT]] https://esolangs.org/w/index.php?diff=154293&oldid=154249 * JIT * (+95)
11:33:58 <esolangs> [[User talk:I am islptng]] https://esolangs.org/w/index.php?diff=154294&oldid=154263 * Hotcrystal0 * (+124)
12:04:44 -!- mtm has quit (Ping timeout: 260 seconds).
12:05:36 -!- mtm has joined.
12:19:47 <esolangs> [[PAL]] https://esolangs.org/w/index.php?diff=154295&oldid=154287 * Timwi * (+242) Summary
12:29:29 <esolangs> [[User:Hotcrystal0/CGoL+]] https://esolangs.org/w/index.php?diff=154296&oldid=154262 * Hotcrystal0 * (+56)
12:33:28 <esolangs> [[User:Hotcrystal0/Colon three]] https://esolangs.org/w/index.php?diff=154297&oldid=154264 * Hotcrystal0 * (+5)
12:33:45 <esolangs> [[User:Hotcrystal0]] https://esolangs.org/w/index.php?diff=154298&oldid=154260 * Hotcrystal0 * (+0)
13:25:45 -!- amby has joined.
14:11:50 -!- Sgeo has joined.
14:17:04 -!- craigo has joined.
14:17:30 <esolangs> [[Amethyst]] https://esolangs.org/w/index.php?diff=154299&oldid=154115 * PrySigneToFry * (+298)
14:17:38 -!- craigo has quit (Remote host closed the connection).
14:18:27 -!- craigo has joined.
14:31:08 <esolangs> [[Talk:BF is Plushie-complete]] https://esolangs.org/w/index.php?diff=154300&oldid=154273 * PrySigneToFry * (+1023)
14:36:03 <esolangs> [[Talk:Poetic is plushie-complete]] N https://esolangs.org/w/index.php?oldid=154301 * PrySigneToFry * (+179) Created page with "Poetic is also Storm-complete: Rule 1(so abstract) <pre> Ato selfer, y priil y sal dilktran prisyl y cron e di salet y selpril! </pre> Rule 2 <pre> </pre> Rule 3(Not on display)"
16:08:27 -!- FreeFull has joined.
17:12:31 -!- chiselfu1e has changed nick to chiselfuse.
17:23:10 <esolangs> [[]] N https://esolangs.org/w/index.php?oldid=154302 * JIT * (+990) Created page with " is an esolang by [[User:JIT]], 2025 ''"What if you drew the output?"'' : -[[User:JIT]], 2025 {| class="wikitable" |+ Drawing ! commands !! what they do |- | || draw in that direction |- | || draw in that direction |- | || draw in that direction |- | || draw in that direction
17:25:00 <esolangs> [[Language list]] https://esolangs.org/w/index.php?diff=154303&oldid=154278 * JIT * (+9)
17:25:54 <esolangs> [[]] https://esolangs.org/w/index.php?diff=154304&oldid=154302 * JIT * (+1) /* Truth-machine */
17:38:22 -!- ais523 has joined.
17:38:39 <ais523> <korvo> Sure. The precise sort of shared object is important. File descriptors are another UNIX capability object which can't be directly compared, and AFAIK there's *not* a way to add an equality protocol to them. ← Linux has kcmp
17:39:23 <ais523> which can check two FDs (possibly in different processes) to see if they are duplicates of each other (e.g. due to dup or fork)
17:40:38 <ais523> there's more than one reasonable equality-like operation you could perform on FDs, but that one seems reasonable
17:41:04 <ais523> (you can also use fstat to check whether two FDs refer to the same file)
17:42:11 <ais523> it is not immediately obvious to me what equality of capabilities would mean – it might be useful to know what the equality comparison was being used for in order to work out the best way to do the comparison
17:44:02 <korvo> ais523: TIL! That's quite cool.
17:45:11 <korvo> E doesn't bother with equality at all; instead, they use H. Baker's extensional equality for objects. In the general case, where a cap might refer to a networked resource, equality is really equivalence of message-passing: two caps are equal when it doesn't matter which one is used to make the delivery.
17:46:21 <korvo> Accordingly, E.join(o1, o2) returns a reference that lets the holder send messages, and the holder promises that o1 and o2 have the same referent. If that promise breaks, then E literally converts the returned Promise to a Broken reference.
17:47:08 <korvo> The relevant Baker paper is https://plover.com/~mjd/misc/hbaker-archive/ObjectIdentity.html and the entrypoint to the E dig site is http://www.erights.org/elib/equality/index.html
17:47:46 <ais523> the use case for join doesn't seem obvious to me – if the return value of the join is non-broken, couldn't you just use one of the inputs directly?
17:49:08 <korvo> Usually o1 is a Near reference and o2 is Far; the idea is to assert that o2 has taken a round trip to some other object broker, and collapse its reference down to something that could be Near-ish.
17:49:20 <ais523> right, so you're doing it for the assert
17:49:49 <ais523> I guess this is using a definition of "promise" other than the usual one?
17:50:05 <korvo> Yep. Strong hint from the underlying runtime's table class, named "CycleBreaker", as well as: "Used to finitely and successfully walk possibly cyclic & unsettled structures."
17:51:01 <korvo> The idea is that, in E or Monte or etc., we can ask `x == y` on two object graphs which include networked resources and cycles, and get a meaningful answer *immediately*. If we need to ask more careful questions, there's E.sameEver/2, E.sameYet/2, etc.
17:51:54 <korvo> E is where the usual definition of "promise" comes from, in the sense that a Promise is a reference to a not-yet-computed result and only interacts via sent messages.
17:52:13 <korvo> But more specifically it's the eponymous state in this Harel statechart: http://www.erights.org/elib/equality/images/ref-settling.gif
17:54:07 <korvo> The typical language is Near and spends most of its time in the green Near box. Value objects are that whole PassByConstruction optimization, for example. Java with NIO, or typical JS runtimes, also have Promises, both inheriting their designs heavily from E.
17:54:53 <korvo> (When I was younger I used to think that this was actually from Ruby's EventMachine or Python's Twisted, which did inspire Node. But JS's Promise feature is actually literally designed by folks like M. M. Miller and Crockford who worked on E!)
17:57:12 <ais523> oh, I see – the thing you get when you force the promise lets you send messages only if o1 == o2, but isn't itself o1 or o2
17:57:15 <korvo> ais523: Sorry if that's a lot. Today a promise is more-or-less a "deferred with error", a combination of the deferred monad and error monad, and that's what happens when the runtime doesn't have a nice vat-style structure for holding object graphs in isolation from one another. I guess you could say that today's runtimes are like one-vat setups.
17:57:43 <korvo> Right! It's literally the join in the lattice of behaviors extending from o1 and o2.
17:58:33 <korvo> Or, the partial order, I guess? I feel like it should be a lattice.
18:02:38 <korvo> ais523: Oh! Another thing to consider: E is explicitly like an extremely heavy macro system; E-on-Java is Java-flavored. Monte doesn't actually *have* M.join/2 as a primitive. From today's perspective, Monte would have something like Capn Proto RPC support, and join would be implemented as an RPC conversation.
18:02:58 <korvo> What we actually provided is promise-aware equality primitives: https://github.com/monte-language/typhon/blob/6da286a954f039e524c282c10cff1d6a43664d0f/typhon/objects/equality.py#L478
18:08:45 -!- tromp has joined.
19:14:24 <zzo38> You have another reason for equality of capabilities, which might be meaningful in your use, but in my use that I was considering, two capabilities are equal iff the program made a copy of a register or memory containing it. (If a program wants a capability that refers to the same object but is unequal, it can send a message to itself containing that capability.)
19:24:42 <korvo> Ah, like authenticated or encrypted pointers.
20:00:55 <esolangs> [[Xkcd 1537]] https://esolangs.org/w/index.php?diff=154305&oldid=153958 * Hotcrystal0 * (+14) xkcd is normally stylized as lowercase
20:01:31 <esolangs> [[Xkcd 3062]] https://esolangs.org/w/index.php?diff=154306&oldid=153922 * Hotcrystal0 * (+14) xkcd is normally stylized as lowercase or all caps
21:28:21 <esolangs> [[Special:Log/newusers]] create * TristinSmith * New user account
21:38:06 <esolangs> [[Esolang:Introduce yourself]] https://esolangs.org/w/index.php?diff=154307&oldid=154195 * TristinSmith * (+189)
22:09:14 <zzo38> It should be an error to copy or compare only a part of a capability (although the kernel may be allowed to do this), and the operating system may also designate certain memory areas as not being allowed to copy capabilities into that memory (e.g. video memory).
22:10:18 <zzo38> Only the operating system is allowed to make capabilities or read their values, although user programs can copy them, compare if they are equal, and test whether or not they are capabilities (rather than numbers).
22:10:46 <zzo38> (The CPU does not know what "capabilities" means other than being values with the capability tag bit set; everything else about them is defined by the operating system.)
22:55:27 <esolangs> [[Language list]] M https://esolangs.org/w/index.php?diff=154308&oldid=154303 * Buckets * (+15)
22:56:02 <esolangs> [[User:Buckets]] M https://esolangs.org/w/index.php?diff=154309&oldid=154279 * Buckets * (+14)
22:56:17 <esolangs> [[Geometry]] N https://esolangs.org/w/index.php?oldid=154310 * Buckets * (+2241) Created page with "Geometry is an Esoteric programming language created by [[User:Buckets]] in 2022. {| class="wikitable" |- ! Commands !! Instructions |- | <sub>m</sub> || Set the Point m. |- | <nowiki><n|o></nowiki> || Change Coordinates by n Units horizontally & o units vertically.
23:00:37 <esolangs> [[Geometry]] M https://esolangs.org/w/index.php?diff=154311&oldid=154310 * Buckets * (+153)
23:09:04 <esolangs> [[Geometry]] M https://esolangs.org/w/index.php?diff=154312&oldid=154311 * Buckets * (+352)
23:20:14 <esolangs> [[Eans,]] M https://esolangs.org/w/index.php?diff=154313&oldid=154143 * Buckets * (-105)
23:28:44 <esolangs> [[HAps]] M https://esolangs.org/w/index.php?diff=154314&oldid=153681 * Buckets * (+0)
23:39:25 <esolangs> [[Esorn]] M https://esolangs.org/w/index.php?diff=154315&oldid=154075 * Buckets * (+1756)
23:53:41 <esolangs> [[Fontmess]] M https://esolangs.org/w/index.php?diff=154316&oldid=153891 * Buckets * (+498)