Moonchild's recent activity

  1. Comment on Let's build a spec-compliant HTML parser in ~comp

    Moonchild
    Link Parent
    Haven't looked very in-depth at any of those, but none looks particularly interesting. Beaker is basically a newer and less cool version of freenet. It also still relies on the monolith that is...

    Haven't looked very in-depth at any of those, but none looks particularly interesting.

    Beaker is basically a newer and less cool version of freenet. It also still relies on the monolith that is html5/css3/js, as does solid. It's not really clear to me what solid does, or what it's supposed to do; its website has a list of stated goals, but not what it is or how it achieves them.

    Matrix and mastadon are--nice enough (personally I prefer irc over matrix, and am not a huge fan of mastadon), but neither is trying to replace the web as a whole; just specific pieces of it. The reason the web is so successful is that it's a platform for every internet-bound app you might want to build.

    Ultimately, though, I don't have much hope, no. The injustices affecting the web are a microcosm of the rapidly-worsening classism that affects the world as a whole, and there's no end in sight to either.


    I made some notes a couple of years ago on what a web replacement should look like. A lot of them were more social than technical1 (though there's not really a clear division), but here are some of the more salient technical points:

    Replace the PKI with--something. Honestly, it's probably the worst thing about the web currently, technologically. Trust on First Use (TOFU), or a Web of Trust (WoT), or even a TXT record. Its current state is a mess, and let's encrypt isn't a solution; it's a band-aid. I don't think any of those are actually the Right Thing--that's something that needs to be discussed further--but they're starting points

    Explanation: PKI is a centralising force that focuses reliance on a number of root certificate authorities (as well as the browsers that choose which root certauths to trust). Trust in the root certauths is just proxy for their trust in TLD brokers and ICANN2, so a simple solution is to just cut out the middleman (hence the TXT record suggestion). But maybe in an ideal world we can cut dependence on ICANN entirely, maybe use something like opennic for dns, or a peer-to-peer solution (hence the TOFU and WoT suggestions). (I suspect that, if such a project were to go through, it would compromise and rely on ICANN; that's just not important enough to be a sticking point.)

    Layout/markup language that's easier for non-technical people to write, and has less 'overhead' for technical ones. Perhaps something based on LaTeX?

    Explanation: one of the reasons that people proliferate around centralised websites (twitter, reddit, facebook) is that setting up their own is difficult. Html is just hard, and especially plain html doesn't look good—so you have to learn css, too, if you want to make something usable. (This also encourages gathering around platforms like squarespace. Not only is it becoming impossible to make your own browser, it's getting harder to make your own website.) Having a simple markup language that can be made to look good with minimal effort helps with that.

    Require layout/markup language to be well-formed

    Explanation: HTML implementations have to parse ill-formed html. This is actually in the spec. (They actually have to be able to parse multiple variants of ill-formed html; look up 'quirks mode'.) This is a small thing, but it would help with making the web easier to implement.

    Any potential replacement to the web will be destroyed by google, facebook, and their ilk if it does not allow for advertising, high-quality analytics, recaptcha, and bitcoin mining. (We may be able to avoid the latter, but it may be inadvisable.) This means that, unfortunately, it needs to be turing-complete.

    Explanation: This is the biggest one. Essentially, to have a shot at success, a web replacement has to be pushed forward by a major os/browser vendor (that is, google, apple, or microsoft). Which means it has to have a value add to one, and not be an existential threat to any others. So ultimately, it'll be a compromise. But implementing latex + webassembly is doable for a small team, in a way that implementing the whole web isn't.


    1: That is, how do we encourage quality discussion and avoid people being assholes to each other. There will always be places where there is high quality discussion—e.g. certain smaller or well-moderated subreddits on reddit, smaller fora like tildes or lobsters with a well-defined theory, some IRC channels, etc.—but by and large, on a platform like facebook, the majority of interactions will be negative.

    2: Back when EV records meant something, there was marginally more reason for certauths to exist, but at this point they're pure overhead.

    2 votes
  2. Comment on Let's build a spec-compliant HTML parser in ~comp

    Moonchild
    Link Parent
    Back in the 90s, and even the early 2000s, there were quite a few independent browsers. Some of the text-based ones (w3m, links, elinks, lynx) survive to this day (though they're only marginally...

    Back in the 90s, and even the early 2000s, there were quite a few independent browsers. Some of the text-based ones (w3m, links, elinks, lynx) survive to this day (though they're only marginally useful), but none of the graphical ones do. Reason being? Microsoft decided to try to Embrace, Extend, and Extinguish the web1. They added many features to IE that were exclusive to that browser, and didn't work anywhere else, and then websites started targeting IE exclusively, so you had to use IE if you wanted to visit those websites.

    We were saved by mozilla firefox, a bastion of standards compliance, usability, and extensibility. (Firefox had somewhat of a golden age of addons—now defunct, sadly.) IE was thwarted, but the web had grown in complexity, and the cost of building a web browser had grown.

    Then came WHATWG.

    WHATWG and W3C were both committees that had been publishing versions of the html specification for many years, and those specs were largely identical. But in 2012, they diverged. Why? Simple. Google had published its 'chrome' browser a few years earlier; it was based on apple's webkit (still in use today powering safari, as well as various embedded browsers), which was in turn based on KHTML (one of the early now-defunct graphical browsers). And WHATWG was run by browser vendors (who had, completely separately from membership of the committee, significant influence over the direction of the web).

    As a vendor of ads on the web, google had significant vested personal interest in ensuring that the web was a platform where ad-tech and ad-tracking could be perpetuated. (And that it was not a platform where third-party cookies were blocked by default, as by firefox and safari.)

    Google's core business model is threatened by the existence of browsers other than chrome, and it has a vested interest in ensuring that people can't effectively use other browsers.

    This is the reason the web is so complicated today. Because google has used its influence to make it so, to discourage other browsers from cropping up so it can sell more ads. To succeed where microsoft failed. A single new browser won't fix that. Can't change that. No 'mysterious benefactor' has deeper pockets than google, to be able to start a browser from scratch, bring it up to par, and keep up with the shifting quagmire that is the web.

    What we need is a revolution. A completely new vision of the web that doesn't rely on ad-tech. I don't know if it's possible to build such a thing. But I would certainly like to think so~


    1: To be fair, it's not possible to prove intent. Charitably, they may have wanted to provide more tools for web developers to make better websites. But whatever the intent, the effects are indisputable.

    4 votes
  3. Comment on Let's build a spec-compliant HTML parser in ~comp

    Moonchild
    Link Parent
    Why? The problem with the web isn't that it isn't democratized, it's that it's not democratizable. The solution is a content vehicle which is simple. Simple enough, that, say a skilled engineer...

    Why?

    The problem with the web isn't that it isn't democratized, it's that it's not democratizable.

    The solution is a content vehicle which is simple. Simple enough, that, say a skilled engineer would be able to implement it entirely in under a couple of months. (Some people even thing it should be simple enough to be a weekend project; see e.g. gopher, gemini.) A single new browser engine doesn't do anything for the pathological problem.

    3 votes
  4. Comment on What programming/technical projects have you been working on? in ~comp

    Moonchild
    (edited )
    Link Parent
    Neat project! If you're having trouble with rsi, I recommend looking into ergonomic keyboards. I use a kinesis advantage, and I have the shift keys remapped to the thumbs, which all but eliminates...

    Neat project!

    If you're having trouble with rsi, I recommend looking into ergonomic keyboards. I use a kinesis advantage, and I have the shift keys remapped to the thumbs, which all but eliminates strain.

    2 votes
  5. Comment on I'm asking for some initial insight into a problem that I'm trying to solve for hundreds of users that are dismayed with Discord in ~comp

    Moonchild
    (edited )
    Link Parent
    Sure. What more do you want to know? There are plenty opensource, self-hostable solutions for functionality you might want from a discord replacement (or augmentation, since it seems you want...

    Sure. What more do you want to know? There are plenty opensource, self-hostable solutions for functionality you might want from a discord replacement (or augmentation, since it seems you want more), like:

    • matrix or irc for instant chat

    • phpbb for persistent fora (it can be made to look less ugly)

    • tildes itself for a forum with tree-based threads

    • nextcloud, as mentioned by others, for file hosting. Note that you can also share files through matrix, phpbb, and irc, but you may want something more organized (you mentioned academia)

    Once you've acquired your server, the process for installing any of those programs isn't terribly difficult, although it can be a bit daunting if you're new to unix or have never done it before. Hard to give advice beyond that without knowing more specifically what you're after. Can also discuss over PM if you'd prefer.

    5 votes
  6. Comment on I'm asking for some initial insight into a problem that I'm trying to solve for hundreds of users that are dismayed with Discord in ~comp

    Moonchild
    Link
    Self-hosting is a great idea. For about $5/month, you can rent a commercial server, from amazon, microsoft, google, digital ocean, or any number of others. The first three all have a year-long...

    Self-hosting is a great idea. For about $5/month, you can rent a commercial server, from amazon, microsoft, google, digital ocean, or any number of others. The first three all have a year-long free trial, so you don't have to venture any money up-front if you just want to experiment. Feel free to ask if you want any help with the process


    You mention file storage; the server you get for $5/mo is a fairly low-grade one (still more than powerful enough for chatting/file storage for 100s of people, though), but you can upgrade storage separately, which tends to cost about 2-3¢/mo. You'll probably also want a domain name, which is ~$12/year.

    5 votes
  7. Comment on What is 0 to the power of 0? in ~science

    Moonchild
    Link Parent
    The definition of exponents isn't that an is a multiplied by itself n times. That was where we started, but then we replaced it with the more precise recursive definition. That an = a multiplied...

    The definition of exponents isn't that an is a multiplied by itself n times. That was where we started, but then we replaced it with the more precise recursive definition. That an = a multiplied by itself n times is a desirable property for a definition of exponentiation to have. But it's not clear what that means in a mathematical sense; that's just the intuitive understanding.

    1 vote
  8. Comment on The latest versions of Pango and HarfBuzz are leading to a messy font rendering situation in ~books

    Moonchild
    Link
    On the other hand, freetype doesn't support all of the kernings supported by harfbuzz. What a clusterfuck...

    HarfBuzz doesn't support all of the hints supported by FreeType

    On the other hand, freetype doesn't support all of the kernings supported by harfbuzz. What a clusterfuck...

    1 vote
  9. Comment on What is 0 to the power of 0? in ~science

    Moonchild
    Link Parent
    That relies on another assumption: that a1=a. You can use either one (a0=1, or a1=a) as your 'bottom' rule, but I find a0=1 more elegant.

    That relies on another assumption: that a1=a. You can use either one (a0=1, or a1=a) as your 'bottom' rule, but I find a0=1 more elegant.

    1 vote
  10. Comment on What is 0 to the power of 0? in ~science

    Moonchild
    Link Parent
    Yes; as I mention in the GP, proving anything for reals requires a formal definition of reals, which is nontrivial.

    Yes; as I mention in the GP, proving anything for reals requires a formal definition of reals, which is nontrivial.

    2 votes
  11. Comment on What is 0 to the power of 0? in ~science

    Moonchild
    (edited )
    Link Parent
    Proof sketch of 0x = 0 for any x>0: 01 = 0 * 00 = 0 * 1 = 0 For any n, if 0n = 0, then 0n+1 = 0 * 0n = 0 * 0 = 0 Therefore, 0n = 0, for all natural n>0 For any natural p>0, q>0, 0p/q = q√(0p) =...

    Proof sketch of 0x = 0 for any x>0:

    • 01 = 0 * 00 = 0 * 1 = 0

    • For any n, if 0n = 0, then 0n+1 = 0 * 0n = 0 * 0 = 0

    • Therefore, 0n = 0, for all natural n>0

    • For any natural p>0, q>0, 0p/q = q√(0p) = q√0

    • let x = q√0. xq = 0. Therefore, x=0

    • Therefore, 0p/q = 0

    • QED

    4 votes
  12. Comment on What is 0 to the power of 0? in ~science

    Moonchild
    Link Parent
    Looking at KaTeX's website, it looks like they support server-side rendering to html. So you could do the latex rendering at comment submission time, but since it's all html it would still be...

    Looking at KaTeX's website, it looks like they support server-side rendering to html. So you could do the latex rendering at comment submission time, but since it's all html it would still be fast, respect themes, look ok on mobile, etc.

    That just leaves the problem of previews. I think that having latex previews disabled by default, with a userpref to enable them would be a good solution.

    Thoughts?

    2 votes
  13. Comment on What is 0 to the power of 0? in ~science

    Moonchild
    Link
    This is a cute way of explaining limits, but there's a better explanation for 00, which comes from the definition of an exponent. He defines an as 'a * a * a * ... n times'. But we can do better,...

    This is a cute way of explaining limits, but there's a better explanation for 00, which comes from the definition of an exponent.

    He defines an as 'a * a * a * ... n times'. But we can do better, by defining exponentiation recursively*.

    1. a0 = 1
    2. an = a * an-1, when n is natural and n>0
    3. am = 1/(a-m)
    4. ap/q = q√(ap) (that is, the q-th root of ap)

    x0 = 1 is actually a rule. 0x = 0 is not a rule, it just happens to be true for all non-negative values of x except for 0.

    (Side-note: @deimos, any chance of getting latex support?)

    *: This definition does not work for irrational numbers. Given a proper definition of real numbers, it can be trivially extended, but that's mostly beside the point and takes up a lot of space.

    11 votes
  14. Comment on On verbosity in ~talk

    Moonchild
    Link Parent
    —Fred Brooks

    Ken [Iverson] taught me some useful productions: If it’s a clause, turn it into a phrase. If it’s a phrase, turn it into an adjective or an adverb. If it’s an adjective or an adverb, omit it. And you apply these recursively.

    —Fred Brooks

    2 votes
  15. Comment on Microsoft Word now flags two spaces after a period as an error in ~tech

    Moonchild
    Link Parent
    I have typed on a typewriter. The worst part of it is not the keyboard layout, but the way the keys are angled upward. Horrible for ergonomics. The flat keyboards that are predominant nowadays...

    I have typed on a typewriter. The worst part of it is not the keyboard layout, but the way the keys are angled upward. Horrible for ergonomics. The flat keyboards that are predominant nowadays aren't great for ergonomics, but they're 10x better than that atrocity.

  16. Comment on Programming Languages that are Both Interpretable and Compilable? in ~comp

    Moonchild
    (edited )
    Link
    I answered a similar question on reddit a couple of months ago; I'll just quote part of that: Note, however, that there are still gradations of work done at compile-time vs run-time, and those are...

    I answered a similar question on reddit a couple of months ago; I'll just quote part of that:

    The distinction between 'interpreter' and 'compiler' is not well-defined. Can I call python a compiled language if, given a python file as input, I produce a file which is equivalent to a regular python binary, except that it's hardcoded to just run the python file I inputted? On the other hand, many programming languages that are 'obviously' statically compiled (go, c++, ...) have runtime reflection systems or runtime libraries that are always linked in. D can be effectively duck typed with jsvar. To drive this point home, consider: I can use sbcl to make a fully standalone native binary from lisp source. It doesn't call into the lisp interpreter at all, it's pure freestanding code, and you can even use it to make operating systems. But inside of this binary, you can call eval and dynamically construct new code.

    Note, however, that there are still gradations of work done at compile-time vs run-time, and those are still interesting to consider. For more on that, see this blog post. That is more relevant to your question, because it points out that how meaningful 'compilation' is depends on what language you're compiling.

    The main conflict seems to be between iteration speed (on the side of interpretation) and runtime speed (on the side of compilation), but I disagree with both of those. TCC can compile c stupidly fast, and go and d aren't far behind. Notably, those compilers are fast enough that you can meaningfully build a REPL on top of them. Meanwhile k (and k) is one of the fastest programming languages around, usually faster than c, and it's interpreted. Hotspot (the main java virtual machine) can be started with a -client or -server flag; those flags trade off startup time (and memory usage) with runtime performance. Without changing the type of implementation.

    1 vote
  17. Comment on Political discussion here seems to be really bad. Is it even possible for it to be good? in ~tildes

    Moonchild
    (edited )
    Link Parent
    How dare you! <insert favourite language here> is amazing, and everyone who hates it is either stupid or ignorant

    How dare you! <insert favourite language here> is amazing, and everyone who hates it is either stupid or ignorant

    3 votes
  18. Comment on Political discussion here seems to be really bad. Is it even possible for it to be good? in ~tildes

    Moonchild
    Link Parent
    Or, maybe, something similar to slashdot's rating system. You can rate comments on a scale from 1 to 5, and the average is shown, along with the number of ratings.

    Or, maybe, something similar to slashdot's rating system. You can rate comments on a scale from 1 to 5, and the average is shown, along with the number of ratings.

    1 vote
  19. Comment on What do you guys think about socialism or other utopias? in ~talk

    Moonchild
    Link Parent
    That's not really the point of that story, but: and more importantly, you cannot draw such clear ethical delineations. Someone must decide who gets ejected, and not everyone is going to be happy...

    One of the problems I always had with the religious moral of the Eden story was the question, "why not just eject the snake?"

    1. That's not really the point of that story, but:

    2. and more importantly, you cannot draw such clear ethical delineations. Someone must decide who gets ejected, and not everyone is going to be happy with those choices. So then, if you start to solicit people's opinions, what you get is partisan democracy, like we have in Europe and parts of Asia and North America.

    I'm not saying there's no better system, but it's certainly not that easy to come up with.

    2 votes
  20. Comment on JPMorgan's Athena has 35 million lines of Python code, and won't be updated to Python 3 in time in ~comp

    Moonchild
    (edited )
    Link
    Python 2.7.17 is 1.25 million lines of code. That's 3.6% the amount of code. It would be easier to maintain python 2 indefinitely than to migrate their codebase, and they would be less likely to...

    Python 2.7.17 is 1.25 million lines of code. That's 3.6% the amount of code. It would be easier to maintain python 2 indefinitely than to migrate their codebase, and they would be less likely to run into bugs as part of the migration process.

    11 votes