1. 3

    If you think blooms are cool, check out Vacuum Filters[1]

    [1] https://www.vldb.org/pvldb/vol13/p197-wang.pdf

    1. 3

      Thanks! From your link I ended up finding yet-another-filter, the Morton Filter

      1. 4

        Wow, never imagined what a rabbit hole this topic is. I was starting with Bloom, went over to Ribbon, then to Cuckoo and now to Vacuum and Morton filters.

    1. 1

      Why force people to create yet another password instead of letting them authenticate via Google/Github/Facebook/etc?

      1. 2

        If personally like to see an account system using metamask, aka ethereum account Id. Its the same idea in essence as the failed browserId experiment from Mozilla a few years ago.

        1. 1

          I think part of the issue is that lots of the bits of a social network are hard, so it’s hard to build one “your way” even though the hard parts could be a standalone library or microservice.

          I’ve thought several times about a “social core” standalone library/microservice. Solving rich content, search, censorship, spam tools once and leaving authentication, authorisation, threading, moderation decisions to the app author.

        2. 1

          Today, I’d rather have yet-another-password than GAMFA.

          Some OAUTH type thing would be better, but I’m not aware of any such scheme that is practical today.

          1. 1

            OpenID?

        1. 4

          “At the end of the day, nearly all of us run software on the Linux Kernel. The Linux Kernel is written in C, and has no intention of accepting C++ for good reasons. There are alternative kernels in development that use languages other than C such as Fuschia and MirageOS, but none have yet reached the maturity to run production workloads.”

          First counter is all the software not running on Linux kernel. Microsoft, Apple, IBM, Unisys, etc still exist with their ecosystems. Second, there’s two things here author is conflating with the C justifications which are too common: effect of legacy development; what happens at a later point. For legacy, the software gets written in one language a long time ago, becomes huge over time, and isn’t rewritten for cost/time/breakage reasons. That’s the OS’s for sure given their size and heritage. Although legacy kernels are in C, much of Windows is in C++ and Mac OS X in Objective-C. They intentionally avoided C for those new things.

          Outside those, Burroughs MCP is done in an ALGOL, IBM uses macro-ASM’s + PL/S for some of theirs, and OpenVMS has a macro-asm + BLISS in theirs. Those are still sold commercially and in production. For others in past, there were LISP machines in LISP variants, Modula-2/Oberon systems w/ Astrobe still selling it for microcontrollers, Pascal, FreeBASIC, Prime had a Fortran OS, Ada used from embedded to mainframe OS’s, and several in Rust now. There’s also model of systems stuff in high-level language that depends on tiny amount of low-level stuff done in assembly or low-level language. OS projects were done that way in Haskell and Smalltalk.

          Lot of options. You don’t need C for OS’s. The sheer amount of OS work, libraries, compiler optimizations, and documentation make it a good choice. It’s not the only one in widespread use or strictly necessary, though. It’s possible other things will work better for OS developers/users depending on their needs or background.

          1. 2

            I don’t believe the Mac OS X Kernel uses Obj-C. It’s mostly C with the drivers in C++.

            1. 4

              True (source: I used to write kernel extensions for macOS to do filesystem things). NeXTStep/OpenStep had Driver Kit, an ObjC framework for writing device drivers in-kernel, which appeared in early Mac OS X developer previews but not in the released system.

              Specifically IOKit (the current macOS driver framework) is Embedded C++, which is C++ minus some bits like exceptions.

              BTW Cocoa is also a “legacy part”, but it comes from NeXT’s legacy, not Apple’s. IOKit (the C++ driver framework) was new to Mac OS X (it didn’t come from NeXT or Mac OS 8, though clearly it was a thin port of DriverKit) and the xnu kernel was an update of NeXT’s version of CMU Mach 2.5.

              1. 3

                Yeah, that’s the legacy part. They just keep using what it’s already in. It was the newer stuff like Cocoa that used Objective-C IIRC. I should’ve been more clear.

                1. 1

                  that has nothing to do with the kernel negates the point. It amplifies the C point because darwin is written in C

                  1. 1

                    It doesn’t at all. I already addressed why the kernel stays in C: someone long ago chose C over the other systems languages with so much code they can’t justify rewriting it. It’s an economic rather than a language effect. Thinking it’s strictly the properties of C is like saying Sun Microsystems wasn’t the cause of the rise of Java, Microsoft wasn’t behind rise of .NET, and so on. People are still being trained in those languages to add to massive codebases that are too big to rewrite. Same thing that always happens.

                    1. 3

                      big or not (and xnu is biggish), risk is more of a concern than cost. the kernel needs to stay up a few years in between panics and they’ve already got it there for the C code.

                      1. 1

                        poppycock

                2. 2

                  In addition to all that, I think the systems level domain also has a new growth sector by replacing the kernel with a hypervisor+library combination. Aka, the topic from this talk[1].

                  [1] https://www.youtube.com/watch?v=L-rX1_PRdco

                  1. 2

                    Although still listening to talk, their robur collective has a great, landing page. Lots of good stuff on it. I also like her team is working on a home router. That’s what I told separation kernel vendors to build since it’s (a) hugely important, (b) huge market, and (c) can be done incrementally starting with virtualized Linux/BSD.

                1. 6

                  Apparently all the galaxies are rotating faster than general relativity / newtonian mechanics predicts with the amount of matter we can see. This is a signature that those aliens are already moving them toward the center of the galaxy by gravity engineering. Dark matter is nothing but advanced alien technology that modifies gravity. Dark energy, on the other hand, is the same piece of alien technology that alien villains use to destroy developing civilizations.

                  Earth? Mostly harmless.

                  1. 3

                    Haha, that would be a hilarious outcome. The unexpected existence of Dark Energy turns out to be the signature of advanced civilization in the universe.

                  1. 7

                    Using positivity and human connections to boost the self esteem and confidence of others and set others on a positive trajectory. Also walking, lots of walking, and my taijiquan practice!

                    1. 3

                      My main complaint about in-lined code is that is makes the logic tree more difficult to parse due to spreading out the opening & closing of each branch. At my previous job I fixed lots of code with broken logic trees by factoring out the chunks within if-else block into functions(which also allows a simple level of documentation with the function name ala addToTableView() or selectNewViewController()) which then made the tree much easier to parse allowing bugs to show their face.

                      The following example is a result of factoring out the inlined action for each branch of a logic tree.

                         if allowReplay && autoplay {
                              // This is a common case.
                              addToTableView()
                              selectNewViewController()
                      
                          } else if allowReplay && !autoplay {
                              // This is a common case.
                              addToTableView()
                      
                          } else if !allowReplay && autoplay {
                              // This is a less common case. The item is NOT added to the list.
                              // The use case for this has historically been for introduction videos.
                              immediatelyShowViewIfItIsntAlreadyShown()
                      
                          } else if !allowReplay && !autoplay {
                              // This is the least common case, and the most non-intuitive.
                              immediatelyShowOnlyOnce()
                          }
                      

                      You’ll first look at this and say, who came up with these 2 boolean values that have this strange interaction with each other. Let me just clarify that is wasn’t me, and I had no authority to change this design decision only to handle it as best I could. That being said, I think this highlights the simplicity of this tree, the complexity of each action is now bundled into a specific place and can be looked at in isolation with the intended action as the function name.

                      My boss would argue that you could accomplish the same with folding the intention blocks. And while this is true, you lose a free/forced level of documentation of the method/function name.