Threads for dmonay

  1. 3

    *M1 or M2 mac required.

    Please someone with a Mac tell us how well this works.

    I guess that’s no worse than the original project requiring a Nvidia GPU, not putting that in the requirements and only telling me until I try to run it :( Currently trying some other stuff to get it to work on my AMD GPU.

    1. 3

      Just tried it. Similarly to reply above, works exceptionally well on the M1 MPB. It does require an initial internet connection to download about 4.5 GBs of weights, which makes sense.

      1. 3

        Works flawlessly on my M1 MBP. It’s also one of the few applications that have a noticeable impact on battery life & generated heat.

        1. 2

          Carving a spoon!

          Need a new chisel set, hoping they have this set in stock at the Charlotte store.

          1. 1

            This sounds very relaxing. How long do you figure it will take to carve?

          1. 5

            This is my first time submitting a job posting. I modeled it on this one.

            I’d like to understand the reasoning behind the spam votes.

            1. 5

              They’re mistaken. I’ve messaged the flaggers to ask them to remove. This is the purpose of the job tag and if someone doesn’t want to see them, they can filter them out.

            1. 12

              A bit expensive.

              1. 5

                I have the Full Edition, and in my opinion it is worth the price. The author literally added CREATE EXTENSION, in addition to many other contributions over the last couple of decades, and takes a clear, deliberate approach to walking the reader through a lot of the useful features and gotchas about Postgres. My knowledge is intermediate, so it fits the bill for me quite nicely - I’m learning new things and don’t feel patronized in either direction (beginner sections or advanced sections). The code samples that come with it are nice too.

                Most of the business logic at my company is written in Postgres functions, and this has proven quite a valuable resource.

                1. 3

                  I agree. I’m intrigued, but the ebook price is around what I’d normally pay for a book in print, and I don’t know why I need to share my email address for the sample chapter instead of just downloading it.

                  1. 2

                    The book price is okay IMO (especially because the author knows his stuff), but the difference between the standard and full edition is insane. It’s twice as much just to get the queries as separate SQL files and a dump of some demo db.

                  1. 28

                    Stephen Wolfram is considered a crank by professional scientists; see for example Scott Aaronson’s review of Wolfram’s A new kind of science.

                    The “buyer beware” signal from this breathless celebration of Wolfram’s genius (by Wolfram) is strong.

                    1. 11

                      Also this one about him suing people for writing math proofs:

                      1. 3

                        Thanks so much for sharing that. It’s sent me down a rabbit hole for the past two hours, in the course of which I have discovered many fascinating things. Like Natalie Portman having an Erdös-Bacon-Sabbath number of 11.

                      2. 3

                        I approach these kinds of things from a philosophical perspective so for me reading Stephen Hawking and reading the Bhagavad Gita are both valid forms of investigation of the universe. The idea that ‘professional scientists don’t approve your choice of reading material’ has always been something that I find very annoying and unhelpful. It is essentially none of their business what I read.

                        Even if I were about to spend money or time building an experimental setup based on the information in that article, that would still be valid science if I did it rigorously and correctly. Any result achieved by the setup would be valid science and either falsify or fail to falsify the tested hypothesis.

                        If thinkers always listened to what ‘professional scientists’ said we would have no plate tectonics, no theory of evolution, and no germ theory, to name just a few.

                        I think I phrased this more harshly than I meant to, your comment is relevant and may be of use to some readers. But I can’t let it go unchallenged as I find there are a lot of impressionable science enthusiasts that read something like that and take it as an invitation to start sending hate mail and flaming people on forums for discussing this kind of idea. I feel like blindly clinging to accepted dogma is extremely detrimental to the practice of good science, whereas wild imaginative ideas with little supporting evidence have proven to be quite beneficial to it in the past.

                        I will also admit that the breathless celebration of one’s own genius, as shown by Wolfram and others, is also annoying and unhelpful. Nevertheless I found this article fascinating and I am glad it was shared here.

                        1. 2

                          I feel like blindly clinging to accepted dogma is extremely detrimental to the practice of good science, whereas wild imaginative ideas with little supporting evidence have proven to be quite beneficial to it in the past.

                          I agree and I’m going to explain how at length.

                          The scientific method is a way of establishing consensus. It is a tool made by humans for other humans. Over time a culture and a way of doing things has developed around it.

                          The two main products of science are theories that explain observed phenomena and observations and experiments that can confirm or refute theories. Because of the values of the culture of science (squishy humans like the things they know), any new theory has to explain existing observations as well or better than the incumbents. A more complex, technically difficult, or simply innovative can only replace existing theories if it explains more known phenomena, or predicts new phenomena that can be verified.

                          This is how, for example, the Copernican view of the solar system won out, or how general relativity replaced Newtonian gravity, a vastly simpler theory. As far as I know, wild imaginative ideas (quantum mechanics, relativity, Newtonian physics, the Copernican view, …) have won out because they have been supported by evidence (the double-slit experiment, the Michelson-Morley experiment, elliptical orbits, phases on Venus, …).

                          When Einstein proposed general relativity, he was literally an Einstein in the current cultural meaning of the term. Nonetheless, he had to provide an extensive list of predictions (gravity lenses, the orbit of Mercury, gravitational redshift) that were not explained by Newton’s theory for his extremely technically complicated new theory to be accepted.

                          This brings us to Wolfram. He has done none of those things. He has not shown how his framework explains existing phenomena. He has not made new predictions that can be verified experimentally. What he has done is make some models and proclaimed himself a genius. He doesn’t want to do the work needed to be accepted within the scientific system, and just new ideas are not enough to move the consensus.

                          The thing is, his ideas are out there. If he explains them well enough, they can be picked up by people who are willing to work within the squishy system of science. If they have genuinely new things to offer, they will be accepted, because they’ll offer a competitive advantage to the people who accept them, who will be able to figure out new things faster.

                          Wolfram has been proclaiming himself a genius since the 80’s, and no one has yet taken him up on his offerings.

                          I approach these kinds of things from a philosophical perspective so for me reading Stephen Hawking and reading the Bhagavad Gita are both valid forms of investigation of the universe.

                          Hey, whatever works for you. Historically, we’ve tried similar approaches to building knowledge consensus (shamanism, ancient Greek philosophy, religion, etc) and when they work they end up much more dogmatic and hostile to outside challenges than the scientific method. If you’re just doing things for yourself you don’t need any consensus.

                          1. 1

                            This brings us to Wolfram. He has done none of those things. He has not shown how his framework explains existing phenomena.

                            Isn’t that what the Physics project is about? Also in this article, he explains several existing phenomena, at least in broad outlines with links to details. I am not in position to verify his claims, but the article offers some explanations and link to details.

                        2. 3

                          I read Wolfram always with some kind of hope. I am kind of biased in that what he aims for most likely won’t work / fail, but on the other hand, I think sometimes there are interesting ideas in between. I’m looking there sometimes for smaller ideas that I can comprehend.

                          But thanks for the critique! I needed that

                          1. 4

                            He definitely has a habit of claiming original insights and not citing prior work. But I think “crank” means something different – it’s someone who doesn’t actually understand the field, has no background in it, but claims original insights (that usually fall down really quickly).

                            I think Scott Aaronson has a good page about how to tell if someone’s a crank without doing a full reading.


                            Wolfram goes beyond factual claims and “sells” his stuff pretty hard, and this post seems like a good example of that.

                            I would put him in a different category than “crank” though. He’s more like talented guy who became an “outsider scientist”, and I would say there’s nonzero probability that he’s right about something interesting, even if he is going about it in a very ham-fisted way…

                            It’s definitely impressive he managed to build a profitable company and work on improving the same software for decades… Cranks don’t do that. You can’t be totally “out of it” and accomplish that.

                            1. 2

                              If you read through the article, it covers many of Scott Aarsonson’s concerns.

                            1. 5

                              @shalabh, if you’d like specifics on how this sort of thing is handled in various Xanadu systems, I can provide them.

                              Generally speaking, we have some an abstraction layer where ‘documents’ are composed out of underlying objects of some kind, where ‘documents’ are arbitrary virtual byte-streams assembled on the client side (usually piecemeal & lazily). Documents themselves look like bytestreams, except that the information about the original address of any given byte is accessible, and this lets us look up ‘formatting links’ or ‘overlays’ (which contain information equivalent to MIME for non-text but contain font, size, emphasis, or color information for text). Depending on the particular implementation, the underlying structure this abstracts from could be a set of conventional files addressed by conventional URLs (as with XanaduSpace, XanaSpace, OpenXanadu, and XanaduCambridge) or dot-separated numeric indexes for traversing a tree structure (as with Udanax Green / XU88 and Udanax Gold / XU92).

                              The general idea is that, for the sake of avoiding duplication, avoiding single failure points, enabling access control / monetization schemes, and enabling simple-to-implement but powerful tree versioning, we introduce an abstraction layer between underlying bytes & documents that is mostly a matter of ordering and reordering lists of fat pointers, but that users are not generally expected to be aware of the underlying abstraction unless we run up against one of a handful of points at which it intentionally leaks (for instance, if I do not have permission to view a piece of text, the span of bytes corresponding to it will be either blanked out or scrambled by a one-time pad).

                              I can provide more details if there’s interest. It’s tangential to the topic, but Xanadu is an example of an existing functioning system that breaks the UNIX philosophy of flat files in favor of more structure (while maintaining an opposition to hierarchical structure).

                              1. 1

                                @enkiv2 - thank you, I’m quite interested in various aspects of Xanadu. I have been recently thinking about how hypermedia could be the primary model of interacting with a computer, with other features (such as programming languages, dynamic media) built on top; rather than hypermedia itself being a feature built on other stuff. The idea is to emphasize and represent the interconnected nature of all information and enable easy interlinking of objects. The vision is this: if I open my computer I don’t have files or apps, but just documents/objects. I can interact with these in place (they’re more than static documents) but also chase links from these to other objects. These links could be the history (older versions of same object), constituents (parts of the object), provenance (‘source objects’), etc. I’m wondering if there is a similar set of ‘link types’ defined in Xanadu? A related question is if Xanadu has something like the web URL - a user visible chunk that identifies a document. Finally, once Xanadu assembles the bytestream for a document, how does it know how to render it? Does it support multiple views of the same document?

                                1. 1

                                  I’m wondering if there is a similar set of ‘link types’ defined in Xanadu?

                                  In Xanadu, link types are freeform strings & there are optional client-side rules for dealing with specific type strings. If a string doesn’t have specific rules associated (i.e., if it’s not a ‘formatting link’) then it’s used to generate a highlight color (which the user can also override). This way, link types can be used for freeform tagging / categorization or (for links with two or more targets) as a kind of predicate & you get automatic color coding.

                                  A link can also connect to an arbitrary document, of course, and every version of a document is stored permanently so revision history (stored cheaply because content isn’t duplicated) is available. But, generally there’s the expectation that you can view the original context of transclusions (which are not links but should be displayed like links when you ask) & from there, be able to navigate to all the contexts you have access to.

                                  A related question is if Xanadu has something like the web URL - a user visible chunk that identifies a document.

                                  In XU88, there’s a namespace for assembled documents (the POOMfilade) versus chunks of text (the source enfilade). In XanaSpace, ordinary URLs are used & there’s the expectation that files ending in .xanadoc or .edl should be rendered (and files ending in .odl should have their links imported into the current context) by default. I was in favor of being able to write links against an assembled concatext by using the EDL’s address, so that it’s possible to do context-specific formatting, but I was never able to convince Ted.

                                  Finally, once Xanadu assembles the bytestream for a document, how does it know how to render it?

                                  In the absence of formatting links, we assemble as plain text & basically just simulate a text stream. (The expectation is to use word wrapping rather than hard newlines for ease of editing in XanaSpace, but otherwise, it’s just going to act like a text viewer.) The implementations I worked on didn’t get far enough to have implementations of the type-specific rendering rules or to have the plugin system for custom formatting links.

                                  There was also the idea that you could hint type within a span declaration so that you could declare it during a normal link or transclusion & use type-specific start and length information – for instance, a section of an audio file in terms of start and end time, or an image in terms of bounding box, or a video in terms of a combination of both. We put off the details of this, because it was unclear how to ensure that only relevant portions of the file would be downloaded in these cases, and because in the easiest cases for XanaSpace we would be hitting http endpoints that support the w3c media fragments standard that expose this anyhow.

                                  Does it support multiple views of the same document?

                                  Yeah. All links basically go into an ‘overlay’ that’s like a modpack, and you can bring up a list of all links in various orders and turn them on and off for particular documents or source URLs or globally. So, you can have different sets of formatting rules for a document and switch between them. We had backend support for this but I’m not sure if any implementation actually exposed a UI for it, though this feature was certainly intended.

                                  (A lot of criticisms of xanadu are based on the assumption that everybody has direct access to the same global namespace of links, which are on all the time. It makes more sense to see links as something like themes or mod packs or web fonts. A document can recommend a set of links & bring them in, but all resident & enabled links, regardless of source, will be applied to any document they can be applied to. This is great if you’re an academic in a field with a canon: if you spend a lot of time reading and writing commentaries on Canturbury Tales then your copy of Canterbury Tales will be a nexus of all sorts of overlapping links and annotations that accumulate as you get more commentaries. But, somebody can never impose links or formatting upon you in a way that you can’t disable.)

                                  1. 1

                                    I also wonder if there was any ‘computation’ medium built or imagined on top of Xanadu which would expose the Xanadu structures as objects and let you build dynamic views? Or was it mostly about static text and images kind of mediums?

                                    1. 1

                                      There was definitely the expectation of dynamic views. Details of how to do the plugin architecture were never really stable for mainline translit, but on the zigzag side we had various prototypes for this. Since in XanaSpace & XanaduSpace, we used zigzag for modeling the display, there was this idea that we might have zigzag-oriented code modifying the display information (sort of like javascript modifying a DOM or like writing applications in Display Postscript on NeWS). That said, the actual code never got written (and we had no fewer than 3 incompatible systems for scripting in zigzag that got implemented), & all implementations after XanaSpace didn’t use ZZOGL at all, so it’s all pretty abstract.

                                      1. 2

                                        Interesting stuff. Thanks for taking the time to answer my questions!

                                        Tangentially, I wonder if you’ve used or have opinions on I ask because it’s the only writing system where I found a form of transclusion as well as fine grained versioning. There’s no collaborative aspect though.

                                        1. 2

                                          I’ve been looking at Roam as well. This isn’t pertinent to the article, but my biggest concern is that a third party company has access to my notes, and vendor lock-in to some degree. They do provide export options, but once I’ve accumulated years of interconnected notes, I wonder how functional that will be. I’d love an open-source alternative that can be self-hosted for these kinds of projects that deal with highly personal details.

                                          Roam is also the only note-taking program I’ve come across that attempts to break free of the tyranny of linear progression, a paradigm that simply isn’t in accord with how the mind works, and one that I think has been highly limiting in the past. That’s why pen and paper have tended to win thus far - they allow you to capture the highly networked stream of consciousness in a form that is least distorted, as opposed to pretty much all existing text editors that force you to retrofit this networked stream of thoughts into a neat linear progression, with tremendous loss of insight.

                                          1. 3

                                            I share your concerns. The offline, partial sync operation of Xanadu that enkiv2 described above seems quite useful.

                              1. 22

                                Comments really aren’t a “code smell.”

                                1. 16

                                  Nothing stinks quite like uncommented complicated code.

                                  1. 7

                                    Exactly! Margaret Hamilton’s code itself, whom the author cites, is full of comments. Possibly more comments than source code. Which, if you’re sending a ship with the processing power of a toothbrush to the Moon, is a great idea.

                                    1. 10

                                      This code is not readable on it’s own, if it was possible to use variable and function names most of those comments could be removed. It’s also quite likely that every detail of the program was decided before writing the code. In a modern codebase things are always evolving and comments can get left behind.

                                      1. 5

                                        This is my fear with comments. I code in a team of 2, so we don’t really comment stuff. I know it’s bad, but I’m a team of two, we kind of know the whole code anyway.

                                        We also don’t write tests. We’re bad people.

                                        1. 4

                                          Oh man, save yourself some pain and write unit tests. You don’t need 100% test coverage, even non-zero coverage of basic functionality will save you so much time. If you don’t know how to use test frameworks then you don’t have to bother, just write one big main file with a function per test you want to do, and call them all in main. That’s basically what test frameworks are, so if you need a low barrier to entry then don’t bother learning one yet, just do something. If you program in a language with a REPL you can literally just save the stuff you use to manually test into a file so you don’t have to type it more than once.

                                          I personally couldn’t develop without unit tests. You can test the application and do something that hits the code path you just changed, which is time consuming and tedious, especially to do repeatedly, or you can write a little bit of code that calls the code and run it with zero effort every time all the time for the rest of forever. Even a small sanity test of the happy path is better than nothing, you can at least check your code doesn’t blatantly fuck up with normal input and save yourself the round trip through the application.

                                          If I had to code without unit tests I’d quit. And I have worked on teams that didn’t want to unit test, so I had out-of-tree tests I wrote for myself. The amount of bugs I fixed a couple hours after someone else committed was mind boggling.

                                          1. 4

                                            How do you even develop without unit tests?

                                            I’d avoid this kind of shaming, especially since the commenter has already noted (in a self-deprecating manner) that they’re aware of the stigma associated with not using tests.

                                            If the intent is to encourage the use of tests, I would put your last paragraph first and focus on how it would help GP.

                                            1. 3

                                              Revised, thank you for the feedback. 😊

                                            2. 2

                                              Depends on the language and coding style though. I wrote a 25000 line game in C++ without a single test, and I never had a regression. I obviously had occasional bugs in new code, but they’re unavoidable either way. Now my preferred language is Haskell, and I feel the need for tests even less. I generally prefer correct-by-construction to correct-by-our-tests-pass. My purpose isn’t to discredit tests though, just that not every codebase has as much need for them.

                                              1. 2

                                                I’m just self taught and kind of out of my depth on it. I had a dev friend who did integration tests, and they were really brittle and slowed us down a lot. Are unit tests not as bad at slowing down a small team of two devs who are both self taught? We’re good / mediocre / we build good stuff (I consider ourselves hackers) but we don’t have a ton of time.

                                                1. 1

                                                  Unit tests don’t have to slow things down like integration tests. In your situation, I’d wait until the next bug comes up, then instead of fixing the bug immediately, I’d write a test that reproduces the bug. Usually doing that helps narrow down where the bug is, and after fixing it, the test passes and (here’s the cool part) you will never see that bug again

                                                  1. 1

                                                    That’s what i was told about integration tests, but I had to set up all these extra dependencies so that the integration tests continued to work every time we added an external service… we’d have to mock it or shit would break.

                                                    I’m assuming since Unit tests don’t run like that, they don’t have external dependencies like that? You’d mock on a component by component basis, and wouldn’t have to mock unrelated shit just to keep them running… hmm… maybe i will.

                                                    Any unit testing video series I could watch as a noob to get started you’d recommend? Or anything like that?

                                                2. 1

                                                  I second saving yourself pain with writing tests! I’ve avoided lots of rakes with a handful of tests

                                              2. 2

                                                What makes everybody think that the programmers who change code so that it no longer matches the comments they just used to understand it will somehow write code so clear you don’t need comments to understand it?

                                                1. 1

                                                  Often people write code like total = price * 1.10 #This is tax which can be rewritten as total = price * TAX A lot of comments like that can be removed by just putting them in the actual code.

                                                  1. 2

                                                    I’m not suggesting it can’t be done I’m suggesting it won’t be done

                                              3. 4

                                                I’ll also correct the article to say a team did the code and review per the reports I read. She describes it here in “Apollo Beginnings” as a team with a lot of freedom and management backing with unusual requirement to get software right the first time. Unfortunately, a rare environment to work in.

                                              4. 5

                                                You can’t write test coverage for a comment. You can’t have your compiler warn you that a comment is inaccurate.

                                                If you have no tests, and your code is full of dead paths, you can’t even percieve the risk posed by an errant, out of date, or unintentionally misleading comment.

                                                Sometimes they’re necessary. But the best default advice to a ‘mediocre’ developer is to write better code, not add more comments.

                                                1. 5

                                                  You can’t write test coverage for a comment. You can’t have your compiler warn you that a comment is inaccurate.


                                                  If you have no tests, and your code is full of dead paths, you can’t even percieve the risk posed by an errant, out of date, or unintentionally misleading comment.

                                                  If you have no tests or comments you have no way of knowing whether your code is actually matching your spec, anyway.

                                                  Sometimes they’re necessary. But the best default advice to a ‘mediocre’ developer is to write better code, not add more comments.

                                                  That’s like saying that the best default advice to a ‘mediocre’ developer is to write less buggy code, not add unit tests.

                                                  1. 2

                                                    doctest is great for testing comments that include code, but nothing else… If a comment says “Framework X is expecting variable foo in JSON format inside the array bar.” I would be inclined to believe it at first and then test the hypothesis that the comment is wrong. That’s the danger of comments.

                                                    1. 1

                                                      A couple of times today I caught myself committing deleted or changed lines without deleting or changing the associated comment. Luckily I could go back and fix things so that the comments weren’t complete nonsense. Sometimes though they escape detection.

                                                  2. 2

                                                    Once the code is cleaned as much as possible and still is hard to understand, or if something is tricky, comments help a lot!

                                                    I guess the author talked about comments that could be removed by making the code cleaner.

                                                    Maybe it depends on what motivates one to add comments, there might be good reasons as well.

                                                    1. 2


                                                      But Comments that are wrong or out of date stink like dead rats.

                                                      I view asserts as “executable comments” that are never out of date. Sometimes they are wrong… but testing will tell you that.

                                                      If a plain comment is wrong… nothing will tell you except a very long, very Bad Day at work.

                                                      1. 7

                                                        But Comments that are wrong or out of date stink like dead rats.

                                                        Valuable comments are something along the lines of “this looks weird, but I did it because of [historical reason that is likely to be forgotten] even though [other implementation] looks like the more obvious solution at first glance; it wouldn’t have worked because [rationale].”

                                                        The longer I spend working with old codebases, the more I’ve come to treasure such comments. But comments that just explain what the code is doing rather than why are suspect.

                                                    1. 17
                                                      1. Overcommunicate - the benefits outweigh the costs. You may sound repetitive, but having everyone be clear and on the same page is a huge win.
                                                      2. Get out of the house/apt - whether you’re an introvert or an extrovert, social interaction in real life is important. Get out and hang out with people.
                                                      3. Find a routine that works for you - and stick to it. If working out is important to you, schedule it into the day.
                                                      4. Set boundaries - let your teammates know you’re on from e.g. 10am to 8pm. Enforce this. For example I do not have Slack on my phone.
                                                      5. Sequester your workspace - don’t work in the bedroom. Your brain learns and will start to associate the bedroom with work, stress, bugs, Jira, etc.
                                                      1. 2

                                                        The big question here seems to be: how will it make money if not by making you a product like Facebook does it? Ads?

                                                        It seems to me that a (primarily?) self-hosted, decentralized solution is the only sensible way out, and it comes with the obvious downsides: a/ people don’t like things that can’t be easily regulated, b/ it’s hard to gain a market share with this unless your social group is a bunch of nerds.

                                                        Maybe actually hanging out with your friends in real life and sharing information the old-school way, or simply engaging more in direct messaging, for which there are privacy-focused platforms, is the best choice you have. In the end, people tend to share very superficious things on Facebook and fish for attention (been there) instead of engaging you directly in a meaningful way.

                                                        What is it that you’re really missing?

                                                        1. 2

                                                          What I’m really missing is the ability to easily organize somewhat distributed groups of friends and stay updated on their lives. By organize I mean take a group of friends where 2 or 3 live in NJ and 3 or 4 live around NYC, get some kind of a group chat going, and land on a time/place to meet.

                                                          I’ve been doing the old school thing for these past 8 months, and what I’ve discovered is that

                                                          1. email is a pretty good platform for carrying out long-format discussions
                                                          2. my flipphone has terrible audio quality and weak signal to the point where it hampers conversations
                                                          3. the inability to quickly shoot off a text message on the flip phone is more debilitating than originally imagined
                                                          4. If I’m going back to NY and want to hang out with people, I just ask one of my friends there to use his FB or phone to organize a time and place to catch up, shifting the burden and the price of being on FB onto him

                                                          Answering your question helped me realize that something like a simple, standalone alternative to FB messenger and FB events might do the trick. The two biggest barriers I see are:

                                                          1. Network effects, obviously
                                                          2. How to pay for this

                                                          In regards to 2 - is it possible the Wikipedia model would work? Essentially, donations? That would allow the platform to potentially be open source which would strengthen any claims it make towards privacy.

                                                          1. 2

                                                            it’s always felt like the obvious solution to make money is to charge money for a subscription.

                                                            But tried this and failed pretty hard. Wonder if it’s ever possible. I would totally pay money to get ad-free Facebook/Twitter, but that would go against their overall business models.

                                                          1. 22

                                                            I think the Fediverse (GNU Social / Mastadon) is the decentralized social network with the closest to critical mass so far. You can either join a node run by someone you trust, or run your own. If by privacy you mean you don’t want the server operator collecting usage profiles on you and so on, that might be a good fit. Messages are still usually public though.

                                                            If you want messages private and not easily scrapeable on the public internet, the Fediverse isn’t quite as good of a fit, although there are ways to do it with GNU Social at least, by setting up private groups on a single node. But that’s not as widely used, and you’d have to get your social group all on a GNU Social node. Another approach might be to make an ad-hoc Signal group (you can add multiple people to a group-messaging session). Messages there are end-to-end encrypted and it’s relatively easy to get people on Signal (many people I know are already on it), but messages do go via a centralized server infrastructure, so Signal can collect metadata even if not the message contents (I think I probably trust them more than I trust Facebook/Twitter, but still).

                                                            1. 2

                                                              I used Mastodon a few months back. I found its feature set closer to Twitter than Facebook; to me it’s a good platform for seeing news, cool tech trends, or following people I respect in the tech world. Not so much for staying in contact with real-world friends, organizing outings, etc.

                                                              I also find the “join a node run by someone you trust” to be a barrier to joining. My non-tech friends probably will as well.

                                                              I really don’t mind the server being centralized. As long as (1) the company has a clear mission statement and has not given reason to doubt that mission, and (2) has a zero-knowledge infrastructure (I think metadata is ok), I am happy to use it.

                                                              1. 9

                                                                One option with Mastodon is to just run your own private instance for friends. It’s pretty easy to setup, and will run fine on a $5 a month Linode instance.

                                                                1. 7

                                                                  Maybe give Diaspora a try; same basic ideas, but I believe is closer to facebook than twitter.

                                                                  Edit: I think the idea of not minding a centralized solution and only using a company you can trust are sort of opposed. If your solution is centralized and you lose trust in the company, you’re stuck with abandoning the network or your principles. If you’re using a federated network then you can still use the network without supporting that specific company (node/instance). And I’m not sure what’s so hard about trusting an individual/small group of people instead of a company.

                                                                  1. 3

                                                                    Agreed on the last part. Companies are composed of constantly changing and potentially large groups of people all hidden behind a shallow corporate identity.

                                                                    Trusting individuals makes a lot more sense to me.

                                                              1. 2

                                                                Have you looked into ZeroNet?

                                                                1. 3

                                                                  I have, but it requires a Bitcoin wallet and downloading a binary. Whatever I end up using needs to be simple and accessible enough for me to convince at least some of my friends to use.

                                                                  It needs to be the kind of thing where privacy is inside the Trojan Horse. The experience is great, and if you happen to care about it, it also has privacy. It can’t be the kind of thing where the user has to jump through hoops.

                                                                  1. 3

                                                                    ZeroNet doesn’t require a bitcoin wallet. In fact it doesn’t use bitcoin at all. I don’t know why this became a thing. Maybe because ZeroNet site addresses are valid bitcoin addresses, and you can import the private key for a site into bitcoin if you want, then people can send coins to your site address and you can receive them. I don’t know of anyone who actually does this though.

                                                                    You don’t need to download a binary. It’s written in Python and open source. Clone the repository and run if you want. If you have non-tech friends there are “bundles” which contain everything needed to run and stay updated.

                                                                    I wrote about using their decentralized microblogging system on a post about ZeroMe if you want to look at it further.

                                                                    1. 2

                                                                      In fact it doesn’t use bitcoin at all.

                                                                      Huh, that’s new to me. I had assumed it was more deeply tied in because the front page mentions bitcoin prominently, and even uses the phrase “your bitcoin wallet” (which seems to imply I have one). Although on closer reading, to be fair, it just says that it uses “the same cryptography as” my bitcoin wallet, not the actual wallet. There’s also another blurb saying “Decentralized domains using Namecoin cryptocurrency”, which added to my impression that I probably needed to be deep into the cryptocurrency scene to use this.

                                                                      I’ll give it another look!

                                                                1. 5

                                                                  There’s quite a rigid type system implemented in Sanskrit. I wrote a high-level overview of it a few years back. Sanskrit has gone on to, indirectly, give rise to the Backus Normal Form.