To me this paper confuses regulation via mitochondria from the requirement of sleep. Even if experimentally manipulating mitochondria state induces sleep, this might just be a proxy indicator control mechanism. ETC leak is only an issue for these dFBNs which are specifically complementary active to normal neuronal cells. I would say mitochondria are important for sleep regulation but this is specific to animals with brains. Other kingdoms do not "sleep". This is too much a stretch to say mitochondria dysfunction is the cause of sleep when other kingdoms also have mitochondrial stress and don't have actual analogical "sleep" processes. My raw take given my PhD work was on mitochondria.
for me, (just started using it), at least 1 good case is traversing deeply nested maps without going crazy. Even when looking at nested structures from other langs, easy enough to write a converter and then use this to inspect. Also if the datatypes are special, you can have it expand in other ways like links to browser, or other custom view types. That alone seems pretty useful. You can make GUI like behavior with just adding some metadata.
That's great news. It would be easier to make "ports" of REBL like to a simple cljs app with the major components available. I feel REBL might have a bunch of nav wrappers that I would have to re-implement if I had to start from scratch
I'm curious what this would be implemented on top of. How do we get graphics acceleration playing well with java? There's a lot of details to get right. What's the scope and timeline for an mvp?
The low-level stuff is already "done" with https://GitHub.com/jetbrains/skija which is a Java API with FFI to Googles skia library, which is used for rendering in Chrome and Firefox amongst other things.
"Writing GNU Emacs Extensions" by Bob Glickstein is a solid introduction. After that, the Emacs Lisp reference manual (available as "info elisp" in the shell) gives much more detail.
Inside Emacs, you can:
- "M-x apropos" to search for commands of interest
- "C-h f" to get documentation for particular functions by name
- "M-x find-function" to jump to the definition of a particular function
- "M-x find-library" to load a library into a buffer so you can read and (depending on your permissions) edit it.
The Elisp reference is very good, and most libraries are well documented. Between that, the ability to jump around the code base, and trying things out in the "scratch" buffer (it's an Elisp REPL disguised as an editing buffer), you should be able to get quite far.
Can you elaborate with an example for s/valid? on needing to preconfrom your data. I have not had this issue.
Also note for others with regard to eagerness, this is only for maps. "When conformance is checked on a map, it does two things - checking that the required attributes are included, and checking that every registered key has a conforming value. We’ll see later where optional attributes can be useful. Also note that ALL attributes are checked via keys, not just those listed in the :req and :opt keys. Thus a bare (s/keys) is valid and will check all attributes of a map without checking which keys are required or optional."
Can you explain the point of :opt with s/keys if it will always check any registered spec in if present?
> Can you elaborate with an example for s/valid? on needing to preconfrom your data. I have not had this issue.
If you have any conformers, s/valid? will use them before validating.
So, if you have a 'set' conformer, for example, s/valid? will tell you that the data is valid even if the value is not a set, but a vector, for example.
Your code must explicitly call 'conform', checking with s/valid? is not enough.
> Thus if you have a map without the key, the value won't be validated. But if the key is present, then it will validate its value.
Exactly. Which is something I did not expect. I expected '(s/valid? ::my-spec x)' to tell me if x is valid according to ::my-spec, checking only those keys that ::my-spec lists in :req and :opt (if present).
For maps, you might as well think of s/valid? as ignoring the first parameter. It validates anything it can.
It's simplistic. When you move into distributed systems, these claims are not sufficient to indicate "so we're fine". Even with the ACID, the "I" has multiple levels, and often they get things wrong (see Jepsen).