Threads for tlvb

  1. 1

    De/centralization-agnostic social media protocol + test implementation.

    • When AliceClient is started it looks into its local db of Alice’s friends, and where they store their content.
    • AliceClient then queries AliceServer, BobServer, CharlieServer, for top-level posts (Bob and Charlie are friends)
    • BobPost001 is returned
    • AliceClient then queries AliceServer, BobServer, CharlieServer, for replies to BobPost001

    …etc. and so on…

    Pull-type data transfer + auth would make it resistant to spam from sources you don’t subscribe to. Open protocol + the network graph being stored locally by the client and fetching data from possibly many servers means that the server provider is not a gatekeeper and cannot hold users hostage due to network effects, should they wish to leave.

    A server could be anything, a cupboard SBC, a VPS instance, or something analogous to a web hotel tenancy.

    By now I’ve been away from social media for so long that I can’t really see myself coming back, even to my own implementation, and if I can’t convince even myself it doesn’t really matter if I had the time in the first place.

    1. 11

      My first thought was the double 0 problem you usually get from ones complement, but this actually reserves a sentinel “Nan” value.

      The problem there is that part of what makes twos complement so great is that the representation also makes basic addition, subtraction, shifts, etc very efficient to implement.

      The other problem here is the gratuitous and unnecessary use of undefined behavior. UB is bad, and is meant to exist for things that cannot be specified, e.g using an object after it has been freed, accessing memory through the wrong type, etc. obviously the C and C++ committees decided to abandon that and create numerous security vulnerabilities over the years. If you don’t want to constrain the implementation the correct course of action is unspecified behavior. That is the implementation can choose what to do, but it must always do that, the compiler can optimize according to that but it can’t go “that’s UB so I’ll just remove it”, which I also think is a bogus interpretation of what UB means but that’s what we have.

      The desire to say “NaN is UB” means that you can’t test for NaN, because by definition it isn’t defined so the compiler can remove any NaN checks you insert. You might say “we’ll add a built in with defined behaviour”, but that doesn’t help because you gave the compiler the option to remove intermediate NaNs. Eg if(__builtin_isnan(0/0)) doesn’t trip because 0/0 can’t produce a NaN (that would be UB), so therefore the value passed to isnan can’t be NaN, so therefore isnan is false. This is obviously a dumb example, but it’s fundamentally the behavior you see for anything UB. Imagine isnan(x), which looks reasonable, but if x got it’s value from any arithmetic in the scope of the optimizer (which can include inlining) then isnan is always false.

      1. 1

        It’s not giving up the ease of two’s complement addition core operation (ie full adders) as I understood it (after re-reading, it’s late, I on first skim thought they were advocating sign-magnitude) but rather to reserve ~0 as a not-numerically-valid NaN. However efficiency would still be lost of course in that the implementation would need to have checks for NaNness of input, and the overflow/underflow detection would be more complex as well. But this only matters if we decide to build processors this way to support the representation/interpretation, otherwise it’s going to be software layers above.

        1. 1

          I on first skim thought they were advocating sign-magnitude

          This is what I understood and how I still interpret it on re-read. The clearest indication I found is this phrase:

          Third, you’re getting an unused bit pattern 0b1’0000000, the old INT_MIN, which you can interpret however you like.

          10000000 would be -127 using ones-complement but -0 using sign-and-magnitude.

          1. 2

            I made a mistake in my previous post, it’s not ~0 that is the reserved value, ~0 is still the representation of -1. It is the interpretation of {msb=1, others=0} that is changed to INT_NAN rather than a valid number, but my interpretation is that beyond that, the representation remains two’s complement-like (4 bit example):

            0111 = 7 (INT_MAX)
            0110 = 6
            0010 = 2
            0001 = 1
            0000 = 0
            1111 = -1
            1110 = -2
            1010 = -6
            1001 = -7 (INT_MIN)
            1000 = INT_NAN
            1. 1

              I see it now. Is this a novel idea? Does it have a name?

        2. 1

          I think only arithmetic is meant to be UB on INT_NAN. You can still check for it, otherwise it can’t be used as a sentinel value.

          1. 4

            The problem isn’t the NAN value being tested it is the preceding arithmetic, because of what UB means. Take

            x = y / z;
            if (__builtin_isnan(x)) doThingA()
            else doThingB() 

            Because arithmetic producing INT_NAN is UB, then the compiler is free to assume that no arithmetic produce it, which gives the compiler the ability to convert the above into:

            x = y / z


            Because the product “cannot be NAN” the isnans can be removed.

            1. 2

              I think the idea is that you’d only ever assign INT_NAN when you want to set the sentinel value.

              However, unlike floating point arithmetic where e.g. 0/0 can result in NaN, under my model, no arithmetic operation on integers can result in INT_NAN as overflow is undefined behavior.

              You wouldn’t be checking for INT_NAN after arithmetic: you’d only check before, to see if you have an empty optional. It’s not true that the compiler can remove every NaN check, only the ones immediately following arithmetic. And those don’t make sense in this model since there’s nothing meaningful you could do at that point. If you’re representing optional<int>, there’s no reason to check if your optional is suddenly empty after an arithmetic operation. If you want to prevent overflow from resulting in a NaN, you can insert a precondition before doing any arithmetic.

              1. 1

                You wouldn’t be checking for INT_NAN after arithmetic: you’d only check before, to see if you have an empty optional.

                No - that handles a parameter passed to you, it does not handle general arithmetic, unless you pre-check everything, e.g:

                x = a() + b() / c()

                would become

                _a = a()
                if (isnan(_a)) ???
                _b = b()
                if (isnan(_b)) ???
                _c = c()
                if (isnan(_c)) ???
                if (_c == 0) ???
                x = _a + _b / _c

                This is assuming of course the optional case, but this runs into the standard footgun that comes from the frankly stupid at this point belief that having arithmetic edge cases be undefined rather than unspecified, e.g.

                _a = a();
                if (isnan(_a)) { printf("saw nan") }
                return 1 * _a;

                In a world where arithmetic on nan is undefined behaviour, as the author specified, the isnan() and printf can be removed. Because we’ve said “arithmetic on nan is undefined behaviour” rather than “unspecified”, the compiler can do the following logic:

                1. "1 * _a" is UB if _a is nan. Therefore _a cannot be nan.
                2. "1 * _a" is "_a" by standard arithmetic
                3. due to 1, isnan(_a) is false
                4. if (isnan(_a)) will never be taken due to 3
                5. no one uses _a so we can flatten

                So we get the above code lowered to

                return a()

                This is how compilers reason about UB. It’s not “I have proved this path leads to UB so that’s an error”, it’s instead the much worse “I have proved that this path leads to UB, therefore this path cannot happen”.

                Yes, this logic has led to security bugs, in numerous projects, and yet language committees continue to assign “UB” to specifiable behaviour.

        1. 1

          There are gotchas in any operation once you start pushing against the boundaries of the representation, sure things may be more or less intuitively understandable without underlying knowledge of the implementation, but for a more obvious example, you cannot get the mathematically correct result of UINT16_MAX+1 into a 16 bit unsigned integer. The solution is the same: Select a datatype that fits the data and the operations you want to do on it.

          1. 5

            The notion of the “gemini community” feels to me like that one of the desired properties of it is the pioneer spirit of the early web; you are part of a community simply because you are one of the few there to begin with. You can have communities on the web, but it hasn’t been for a long time that being on the web meant you were part of a community.

            This way also sets the limit on the life span of such a community spirit: If gemini grows too large the community diffuses.

            1. 27

              I suggested a rant tag since this feels like a super vague long form subtweet that likely has a specific story/example behind it. I don’t understand what dhh actually complains about there and whether it’s genuine without knowing that context.

              1. 11

                Pretty sure he’s railing against the /r/programmerhumor style “software development is just copy-and-pasting from stack overflow right guiz!” meme. I’m sympathetic to his frustration because this joke (which was never that funny in the first place) has leaked into non-technical circles. I’ve had non techies say to me semi-seriously “programming, that’s just copying code from the internet, right?” and it galls a bit. Obviously we all copied code when we were starting out but it’s not something that proficient developers do often and to assert otherwise is a little demeaning.

                1. 9

                  Obviously we all copied code when we were starting out

                  Well no, I copied examples from a book. Manually, line by line.

                  1. 6

                    I have 20 years experience and I regularly copy paste code rather than memorize apis or painstakingly figure out the api from its docs. I do the latter too, but if I can copy paste some code as a start all the better.

                    1. 4

                      The meme starts being a bit more condescending now though. I frequently come across tweets saying things like « lol no one of us has any idea what we are doing we just copy paste stuff ». The copy pasting stuff is kinda true in a way (although a bit more complicated, even as a senior dev I copy paste snippets but know how to adapt them to my use case and test them), but the incompetence part is not. But it sadly starts to feel like there are tons of incompetent OR self deprecating people in the field. That’s pretty bad.

                      This blog post resonates with me, it really pinpoints something.

                      1. 3

                        It’s cool if that’s what he wanted to say, but the inclusion of impostor syndrome and gatekeeping made me think otherwise.

                        1. 3

                          That was probably just him hedging against expected criticism

                        2. 2

                          Why am I paying this exorbitant salary, to attract people like you with a fancy degree and years of experience when all you ever do is a four-second copy-and-paste job?

                          You pay it because it because I spent a long time achieving my degree and accumulating years of experience to be able to judge which code to copy and paste where, and why and in only four seconds at that.

                          No matter the context these reductions are always boiled down to the easy to perform operation, never the understanding behind the operation.

                        3. 5

                          It absolutely feels like a subtweet, but I have no idea what the context was. Did someone at Basecamp just post the no idea dog one time too often?

                        1. 5

                          What’s wrong with base32 < /dev/urandom | head -c 32 | tr '[:upper:]' '[:lower:]' ?

                          160 bits of entropy (5 per char) while being easy to type (no special chars etc - though most sites will make you add one).

                          1. 2
                            $ base32 < /dev/urandom | head -c 32 | tr A-M a-m | sed 's/..../&-/g;s/-$//'; echo 
                            1. 3

                              dd if=/dev/random|tr -cd '\x21-\x7e'|dd bs=1 count=16 status=none;echo

                              I have noticed that for some things it lets too much through, but in those cases the filter can always be modified.

                          1. 14

                            This meta tag will block only Google’s web crawlers

                            Given that google stopped respecting robots.txt, I will assume that they will have no qualms stopping respecting this one should it become a nuisance.

                            1. 4

                              To be fair, Google does respect robots.txt Disallow, which is what 99% of people actually want (but not what the author here needs).

                            1. 2

                              After I started working I find that my leisure programming has dwindled, including practice (my definition). Using the definition in this talk it sounds like I never did practice, there is always a goal artifact, and once that has been produced the task is done, even if it’s just another checkmark-goldstar-proceed-to-next-level on some sort of programming challenge site.

                              I find in my professional life what is difficult is not directly related to the writing of the code, how to write the code, what language constructs to use etc (but this might be due to my domain), but how to deal with requirements that may have holes, may lead to absurd edge-cases, may clash with legacy code; where supporting some legacy behaviour is the requirement, but the legacy implementation does not really follow the associated documentation or requirements. The closest I get to the code when dealing with these parts of an implementation task is figuring out how to make the smallest permutation to a legacy codebase that will support the newfangled sweet thing, determining if it’s at al feasible or if rewriting [part of] the whole thing is the way to go.

                              I’m not sure that is something that can be practiced in isolation outside of an actual task, on my own, and if it is it’s probably not something I would want to spend time on without getting paid for it.

                              1. 2

                                I don’t think that Acton’s vision of practice is the only valid one, though it does have a lot to teach folks.

                                For me, my practice is currently a lot more diffuse, but I definitely still am a student of programming, and of code.

                              1. 1

                                Because transparency is a less strong visual indicator than the blocks, it takes two 0s to override the OR, etc.

                                This does not seem to apply for me, the transparency determines the orientation of the image, and depending on how this is consistent with the orientation of the input blocks or not makes the total shape look valid or impossibly bent. Not sure if that indicates anything about me; if there are trends among the population aligning with perhaps proficiency in various skills.

                                1. 5

                                  This is all very true. The big question is: why translate at all? There are different reasons that directly affect expectations about quality.

                                  I live in Finland, which is an officially bilingual country. Finnish is the most common language, but there’s a ~10% Swedish-speaking minority. However, most people understand English, and most Swedish speakers understand Finnish.

                                  I’ve been in a project where we had a requirement of a Swedish translation, but no real resources to do it. So someone who doesn’t know Swedish would just kind of guess something. And AFAICT no one ever complained.

                                  I assume that most translation projects are similar. As a Finnish native I abhor Finnish translations of technology, because they suck 95% of the time. Even tech giants like Microsoft and Apple have bad UX in Finnish at times, and smaller companies seem to have no chance unless they’re from Finland.

                                  1. 3

                                    As a Finnish native I abhor Finnish translations of technology, because they suck 95% of the time.

                                    I set my computer’s locale to Japanese for many years as a second language learning thing, but it really only was useful for Apple and other big company apps. Small developers usually had no translations, and OSS usually had translations that were incomplete and/or laughably bad even to me, a non-native speaker. It’s a tough thing though, because unlike Finland, most Japanese people don’t really speak English well enough to just switch the computer to English mode and ignore the bad localization.

                                    1. 3

                                      As a Finnish native I abhor Finnish translations of technology, because they suck 95% of the time.

                                      This was also mentioned in the article and to me this is very sad. What good are computers if they can’t serve their users in their own language?

                                      I’m curious - do you find much value in good Finnish translations of software? Or do you think this is not good use of time and someone who wants to serve Finns would be better off making a more polished English product?

                                      1. 2

                                        What good are computers if they can’t serve their users in their own language?

                                        An upside to having a “common” language is that the searchability of any string output by the program increases. Of course, if that is at the cost of the user understanding the text at all, then it’s no good.

                                        1. 1

                                          Depends on the product and target audience. Maybe if you target only young educated people it doesn’t make a big difference. I think most Finns would benefit from a well-made UI in Finnish, but most also realize translations tend to be bad.

                                        2. 1

                                          I assume that most translation projects are similar. As a Finnish native I abhor Finnish translations of technology, because they suck 95% of the time. Even tech giants like Microsoft and Apple have bad UX in Finnish at times, and smaller companies seem to have no chance unless they’re from Finland.

                                          I’ve only really noticed this attitude much from Europeans who can speak English - usually the ones fluent enough to post on English-language communities like Lobsters. For example, most Japanese users I’ve seen prefer using…. Japanese, because they don’t speak or can barely read English. (I have to imagine the translation quality is a bit better for Japanese than a smaller European language, both because it’s a bigger market and the users have an even more immediate need for it.)

                                          As with the other commenter, I think it’s better if computers can meet people in the language they’re familiar with, not what language the hackers prefer.

                                          1. 1

                                            You obviously hear only the attitudes of people whose language you can understand. I’d guess Japanese people abhor bad translations even more than Finns do, because many of them don’t have the option of reverting to English.

                                            Maybe this is also a reason Japanese people prefer products made in Japan (I’ve heard).

                                            I totally agree that technology should be approachable and that includes localization. But that never worked in Finland. Those Finns that don’t know English at all tend to also be technologically illiterate. My grandparents were all smart people even if they were uneducated. They did learn to use dumbphones (Nokia is Finnish, remember) but smartphones and computers always remained a mystery to them.

                                            1. 1

                                              Even in many IT jobs a lot of my coworkers just use the Dutch versions of software. I’m often the odd one out with everything set to English.

                                              A lot of that is due to the spectacularly horrendously bad Dutch translations that existed in many open source projects when I started using BSD and Linux the early 00s, if there were any translations at all. If you just used Windows it was a lot better, because the Dutch version of Windows was always fairly decent.

                                              A lot has improved since then, but I’m used to English now. It’s like watching or reading something in a language you’re not used to: it just seems all wrong. I read some Asterix & Obelix comics in English some years ago; they’re not bad translations at all and the Dutch version is also just a translated version (from the original French), but I’m used to the Dutch version from my childhood so English seems off 🤷 Similarly, I grew up on the English version of Animaniacs and the Dutch version they have now isn’t bad, but just seems weird to me (I don’t envy having to translate that one by the way).

                                          1. 1

                                            When it comes to the closing remarks one could also flip the coin to pose the question: When proposing new architectures or technologies for an anonymous(ish) communication service, how can it be built to not be attractive for propagation or proliferation of “bad” content e.g. CSAM or terrorist propaganda as it were. Is it at all possible?

                                            My own thoughts on communications technology has focused on protocols rather than services (wanting to avoid platform silos, but that’s a different discussion), and at that level it’s even more difficult as the technological aspect of information exchange is independent of notions of good and bad in the ethical sense, …and the evil bit did not get any traction afaik.

                                            1. 15

                                              This is exactly what I was thinking when more and more stuff was pushed into the USB-C stack.

                                              Previously it was kinda easy to explain that “no, you can’t put the USB cable in the HDMI slot, that won’t work”. Now you have cables that look identical, but one can charge with 90W and the other can’t, even though both fit. It’s going to be confusing for everyone having to be careful with the which cable can be plugged into where.

                                              1. 9

                                                Everything about the official naming/branding used in USB 3 onward seems purposely designed to be confusing.

                                                1. 5

                                                  It seems like for some reason the overriding priority was making the physical connector the same, but it’s fine to run all kinds of incompatible power and signals through it. I preferred the old way of giving different signals different connectors so you knew what was going on!

                                                  1. 2

                                                    The downside to that is I guess that each different type of device that you would want to be able to connect to a small form factor device such as a phone or a slim laptop would need to have with every type of connector that you might want, or alternatively you would need dongles left and right.

                                                    I can now charge my phone with my laptop charger, that has not been the case in previous generations.

                                                    I believe we are moving into POE-enabled network cable territory on some conceptual level; data+power (either optional) is the level of abstraction that the connector is made common on.

                                                    1. 4

                                                      I’m surprised the business laptop manufacturers haven’t tried getting into PoE based chargers, considering most offices have not just Ethernet, but PoE, and it’d solve two cables at once.

                                                      1. 1

                                                        I think (a hunch more than data-backed) that the last meters of networking is increasingly moving towards wireless, at least if the end-user equipment is a laptop. Monitors on the other hand are still cable-connected, and that is one of the singled-out use-cases for usb-c now that we have it.

                                                        Looking back at before usb-c, then I’d agree power and networking would be a neat thing to combine, but it would have to have a different connector than regular ethernet, those plastic tab spring lock things would not last long.

                                                        1. 1

                                                          I mean, I would like an Ethernet AAM for Type C…

                                                        2. 1

                                                          I’d love to know what you’re basing this thesis on because as far as I know I’ve never worked in a German office with PoE in the last 20 years. (Actually it was a big deal in my last company because we had PoE-powered devices, so there was kind of a “where and in which room do we put PoE switches for the specialty hardware”)

                                                          1. 1

                                                            Most offices nowadays have PoE if only for deskphones.

                                                      2. 1

                                                        It’s fine if you have a manufacturer that you can trust to make devices that work with everything (USB, DP, TB, PD, etc.) the cable can throw at it. (Like, my laptop will do anything a Type C cable can do, so there’s no confusion.) The problem is once you get less scrupulous manufacturers of the JKDSUYU variety on Amazon et al, the plan blows up spectaularly.

                                                      3. 1

                                                        When the industry uses a bunch of mutually-incompatible connectors for different types of cables, tech sites complain “Ugh, why do I need all these different types of cables! It’s purposely designed to be overcomplex and confusing!”

                                                        When the industry settles on one connector for all cable types, tech sites complain “Ugh, how am I supposed to tell which cables do which things! It’s purposely designed to be overcomplex and confusing!”

                                                        1. 5

                                                          Having the same connector but incompatible cable is much worse than the alternative.

                                                          1. 3

                                                            The alternative is that every use case develops its own incompatible connector to distinguish its particular power/data rates and feature set. At which point you need either a dozen ports on every device, or a dozen dongles to connect them all to each other.

                                                            This is why there have already been well-intentioned-but-bad-idea-in-practice laws trying to force standardization onto particular industries (like mobile phones). And the cost of standardization is that not every cable which has the connector will have every feature of every other cable that currently or might in the future exist.

                                                          2. 1

                                                            They could’ve avoided this by either making it obvious when one cable or connector doesn’t support the full set or simply disallowing any non full-featured cables and connectors. Have fun buying laptops and PCs while figuring out how many of their only 3 USB-C connections are actually able to handle what you need, which of them you can use in parallel for stuff you want to use in parallel and which of them is the only port that can actually do everything but is also reserved for charging your laptop. It’s a god damn nightmare and makes many laptops unusable outside some hipster coffee machine.

                                                            Meanwhile I’m going to buy something that has a visible HDMI, DP, LAN and USB-A connector, so I’m not stranded with either charging, mouse connection, external display or connecting my USB3 drive. It’s enraging.

                                                            1. 1

                                                              or simply disallowing any non full-featured cables and connectors

                                                              OK, now we’re back on the treadmill, because the instant someone works out a way to do a cable that can push more power or data through, we need a new connector to distinguish from already-manufactured cables which will no longer be “full-featured”. And now we’re back to everything having different and incompatible connectors so that you either need a dozen cables or a dozen dongles to do things.

                                                              Or we have to declare an absolute end to any improvements in cable features, so that a cable manufactured today will still be “full-featured” ten years from now.

                                                              There is no third option here that magically lets us have the convenience of a universal connector and always knowing the cable’s full capabilities just from a glance at the connector shape, and ongoing improvements in power and data transmission. In fact for some combinations it likely isn’t possible to have even two of those simultaneously.

                                                              It’s a god damn nightmare and makes many laptops unusable outside some hipster coffee machine.

                                                              Ah yes, it is an absolute verifiable objective fact that laptops with USB-C ports are completely unsuitable and unusable by any person, for any use case, under any circumstance, in any logically-possible universe, ever, absolutely and without exception.

                                                              Which was news to me as I write this on such a laptop. Good to know I’m just some sort of “hipster coffee” person you can gratuitously insult when you find you’re lacking in arguments worthy of the name.

                                                              1. 1

                                                                Ah yes, it is an absolute verifiable objective fact that laptops with USB-C ports are completely unsuitable and unusable by any person, for any use case, under any circumstance, in any logically-possible universe, ever, absolutely and without exception.

                                                                You really do want to make this about yourself, don’t you ? I never said you’re not allowed to have fun with them, I just say that for many purposes those machines are pretty bad. And there are far too many systems produced now with said specs, that its becoming a problem for people with a different use case than the one you have. With more connections, less dongles or hubs and with the requirement that you know about the specific capabilities before buying it: Have fun explaining your family why model X doesn’t actually do what they thought, because their USB-C is just a USB 2.0. Why their USB-C cable doesn’t work - even though it looks the same, why there are multiple versions of the same connector with different specs, why one port of USB-C doesn’t mean it can do everything the port right beside it can do. Why there is no way to figure out if the USB-C cable is actually able to handle a 4k60 display before trying it out. Even for 1000+€ models that you might want to use with an external display, mouse, keyboard, headset,charging and some yubikey you get 3 USB-C connections these days. USB-C could’ve been something great, but now it’s a RNG for what you actually get. And some colored cables and requirements towards labeling the capabilities would have already helped a lot.

                                                                Yes I’m sorry for calling it hipster in my rage against the reality of USB-C, let’s call it “people who do not need many connections (2+ in real models) / like dongles or hubs / do everything wireless”. Which is someone commuting by train, going to lectures or whatnot. But not me when I’m at home or at work.

                                                                This is where I’m gonna mute this thread, you do not seem to want a relevant conversation.

                                                        2. 1

                                                          Yeah, I was thinking this too. Though even then we were already starting to get into it with HDMI versions.

                                                        1. 65

                                                          I got that banner once too, after a string of good faith but slightly controversial comments which got many upvotes and a few flags. From what I can tell, the banner is less serious than it sounds, but being nudged towards deleting your account definitely leaves a sour taste in the mouth.

                                                          I don’t think the ratio of upvotes to flags is taken into account, just the pure number of flags. That would mean that people who post frequently are likely to see the banner, unless everything they post is 100% uncontroversial.

                                                          The banner suggests talking to a mod, I tried sending a PM to a moderator asking what I should change in my behavior to not be prompted to delete my account again. I never got a reply. I suppose there are higher priority things to take care of.

                                                          1. 42

                                                            Yep. I’ve seen it twice.

                                                            The first time, I had no clue what it was about, and tried to PM every mod. I got a response from one about a week later I think, and then later from pushcx saying that he’d added a page to show you your own ‘standing’.

                                                            The “flagging” for me was based on just two comments:

                                                            1, where I expressed an opinion about systemd, that got 30+ upvotes and 1 “incorrect” downvote, and then replied to myself to question how an opinion can be “incorrect”, and that comment got 5 ‘off topic’ down votes.

                                                            2, I make a sarcastic comment about the irony of using docker to distribute all-in-one Go binaries, and of course, it was downvoted -5 as ‘trolling’.

                                                            I am convinced from my use here, HN, /. - using user input via ‘downvotes’ as any kind of trusted heuristic about the quality of a comment, is a stupid fucking idea. It’s never been done well, even here, which is already better than most places.

                                                            The only thing that makes it better here is that the banner is all that happens automatically - there’s no automatic banning or anything. But it really doesn’t make that clear, and the hint about closing your account is just ridiculous IMO.

                                                            1. 5

                                                              I remember that discussion (I was the one who responded). I did find it to be an important example of how sensitive the system is, precisely because it’s based on user input. I looked over those two comments carefully at the time, and I still bear them in mind every time we’re discussing feature changes.

                                                              1. 4

                                                                And I’m still thankful for your efforts!

                                                                I know moderation is generally a thankless task.

                                                                I hope it’s clear from my comments, that the actual moderation (ie the actual actions you take) on 🦞 is among the best Ive seen, if not the best.

                                                                My issue is very much with the way regular users use the tools available to them, and thus the tools that are available.

                                                                Lobsters doesn’t have downvotes, so (some) people use flags to signify stuff they disagree with (although I think someone mentioned the incorrect flag is gone now?) as well as flagging actually “bad” stuff.

                                                                In theory the orange site should do better at this because it has both downvotes and flagging - the problem is the downvote action has consequences that actively encourage the production of echo chambers.

                                                                🦞 still manages this much better overall, but I also wonder how much of that is down to sheer size. Would unpopular opinions be flagged to death here if the population grew ten-fold?

                                                                I don’t know. But I wouldn’t bet my carefully hoarded internet upvote points on it!

                                                                1. 3

                                                                  Good thoughts, and it’s very welcome criticism.

                                                                  Yes, “incorrect” is gone now.

                                                                  1. 1

                                                                    “Incorrect” is gone, but “unkind” remains?

                                                                    That’s sus.

                                                              2. 5

                                                                (edit: I’ve removed a quote here, since the post I was replying to had been deleted by its author.)

                                                                (Slightly later edit: I suspect the author removed that post because it brought up the problem of flagging abuse, and mentioned their own post as an example. Taking a look at my standing page, I absolutely understand why that’s the case though. I have two flags this month: one flagged “troll”, which I don’t wanna argue about, and another one flagged “spam”. It’s on a post that’s on-topic, contains no links, no mention of any product except the one the topic is about, no self-promotion – actually no promotion of any kind. I’d love to know why someone thought it might be spam, but since there’s no way to appeal flags and no way to know who flagged a comment, that’s anyone’s guess.

                                                                That being said, since some decisions are taken based on flags, there should be a way to appeal them, just sayin’ ;-))

                                                                It’s also my experience that metrics really don’t help. Way back when phpBB was still a thing I was part of a moderator team that tried to test-drive one of those up/downvote plugins that started popping up around 2006 or so (or maybe earlier? I don’t recall anymore… anyway, it was a long time ago). It was terrible, and we tried a couple of “soft” versions (one that allowed upvotes but not downvotes, another one that allowed for various positive flags like helpful, funny, whatever, the way Slashdot did) – we eventually turned them off for good.

                                                                All of them had a negative impact not only on the community – which, 15 years of Facebook later, is probably easy to understand – but they had a negative impact on the moderation process, too. We routinely had to weigh obvious decisions against metrics that didn’t tell the whole story (e.g. banning users who slipped subtle neo-Nazi crap into their posts on a 400-page topic and rarely got called out on it because there were like 10 people keeping that topic alive anyway vs. not banning users expressing an unpopular opinion about a recent game or whatever and getting downvoted to hell).

                                                                There’s always a point at which you admit that the metrics just don’t tell the whole story, like the one above (I remember the systemd post, too). After that point, no metrics tell the whole story anymore. If you have to decide, for every post, if the metrics are trustworthy or not, then you’re already in subjective land, and the metrics only enforce a decision that’s already made. Dumping the metrics entirely at least enables some more freedom to articulate your thoughts and make a good call.

                                                                Large social networks, like Facebook and Twitter, need to show metrics because they depend on projecting an image of an objective information dissemination platform, otherwise the ad funding dries up. And even in their case it’s bullshit, and they gather more stats, and make more automated decisions, than anyone else. I don’t think acknowledging the subjective nature of mod actions would be hurtful for in any way. Many of us are here precisely because things don’t work the way they work on FB or HN – doing things exactly the way those platforms don’t do them, and could never do them, sounds like a good call ;-).

                                                                1. 3

                                                                  It’s funny you mention Slashdot: I’ve always been interested in their moderation/meta-moderation approach and wonder why it hasn’t caught on in more places.

                                                                  I think metamoderation could work well here. Present comments with churn, positive or negative, and have the community decide if the vote was appropriate. If the community says “you, user, are using your flags incorrectly”, perhaps they decay in value?

                                                                  1. 5

                                                                    I wasn’t specifically talking about the metamoderation part, but Slashdot’s system has a problem related to that of downvote-based systems: when allowed to do something other than reply, butthurt users will abuse the flag system, too. If someone expresses an unpopular opinion, it won’t be downvoted, but it will be flagged as “flamebait”, “troll”, “redundant” and “offtopic” without any consideration, because that’s just what mobs do – if booing (downvotes) isn’t available, they’ll take slogans (flags) as well.

                                                                    I know this sounds cold-hearted but it is what it is, I’ve been a butthurt user who acted irrationally more times than I can count, and I still find myself indulging in flamewars and the like even when I’m perfectly aware it’s stupid. I try to keep away from flags for this precise reason. Flames are a whole different story :).

                                                                    That being said, it’s worth remembering that Slashdot’s policy dates from a whole other era. I think many younger people have slightly different exectations from moderation these days, shaped by large social media platforms and the like.

                                                                    Any moderation policy is going to have some impedance mismatch. Some people are going to find it intolerable, and many of them will be smart people who have a lot of interesting things to say. Such is life.

                                                                  2. 1

                                                                    I’d love to know why someone thought it might be spam, but since there’s no way to appeal flags and no way to know who flagged a comment, that’s anyone’s guess.

                                                                    I imagine one could have a system where the flags would be required to be accompanied by a motivating comment by the flagger, only visible to the receiver, and perhaps moderators.

                                                                  3. 1

                                                                    I am convinced from my use here, HN, /. - using user input via ‘downvotes’ as any kind of trusted heuristic about the quality of a comment, is a stupid fucking idea. It’s never been done well, even here, which is already better than most places.

                                                                    How would you do it then? You can’t expect moderator(s) to be on top of every thread, so you need some way to alert them that something’s up. AFAIK using downvotes (which Lobsters doesn’t really have, just “flags”) is still the best way to do that.

                                                                    1. 12

                                                                      I agree, I think is basically the best possible solution I can imagine. It has upvotes to show support, but not downvotes to show “disagreement”. Instead, it lets you flag comments for being off-topic, spam, troll, unkind or me-too; I suspect that the threshold for “I disagree with you, so I’m gonna flag your comment as a troll” is much higher for most people than the threshold for “I disagree with you, so I’m gonna downvote you”. It’s not like actual moderation decisions are made automatically based on the flags.

                                                                      To be honest, the only real issue I see with the system is that the message is so harshly worded. I wouldn’t even be against the current low flag limit if it just said something like, “Your recent comments have been heavily flagged. Maybe you should consider taking a break to cool down”. Maybe it would be nice if it also took into account the ratio between flags and upvotes, rather than just the flags. But it’s where the banner suggest deleting your account that it really goes off the rails IMO. It’s also a bit weird that it suggests contacting a moderator, when the moderation team clearly doesn’t have the time/patience/desire/whatever to respond to inquiries about it.

                                                                      1. 33

                                                                        If we must have such a warning, which I wouldn’t be in favour of really, then I’d phrase it as “Your comments have been flagged a lot, this may or may not be a problem but here are your comments to review; kindly take a look and see if there’s something you could have done better” or something to that effect. Right now, and in your suggestion as well, it kind of assumes you did something wrong, which may not be the case at all.

                                                                        1. 9

                                                                          I would also change the background from red to something more neutral. It would still be visible, just not that “alarming”.

                                                                          1. 5

                                                                            This is really nicely worded and I can’t agree with you more. Cooling off assumes it was a heated debate, which itself might not be bad, yet the original text was quite aggressive in blaming the recipient, instead of following though that it might have been an honest mistake, or even no mistake at all.

                                                                          2. 4

                                                                            I suspect that the threshold for “I disagree with you, so I’m gonna flag your comment as a troll” is much higher for most people than the threshold for “I disagree with you, so I’m gonna downvote you”

                                                                            I suspect so too, but maybe i’m just projecting.

                                                                            What feels weird to me about Lobsters flagging system (or at least of the impression i get of it form reading this thread) is that while flags definitely have a cost for the flagged person, they seem to not have any cost on the flagging one? If that’s true, then i think that’s a glaring problem and should be addressed. Someone that’s mass-flagging comments should be as much a red flag for moderation as someone who gets mass flagged.

                                                                            Regarding the wording of the flag notice itself, i completely agree with others in that it’s quite bad and should be improved in tone and clarity (and probably in color too).

                                                                            NB: take this comment with a grain of salt, as i’m mostly a lurker here and not much of an active member :)

                                                                            1. 2

                                                                              while flags definitely have a cost for the flagged person, they seem to not have any cost on the flagging one?

                                                                              I got told-off once for flagging something that I shouldn’t have (the mod was correct), though I also didn’t understand that flagging actually got a human involved. My mental model was more like a downvote (from other comments here, I don’t think I’m the only one). So I felt bad about wasting a mod’s time. It probably says how flags work somewhere on the site, but it’s not on the “flag” dropdown :)

                                                                              Maybe there should be a low limit on flags-per-week, or something like that. You could get really economicsy and a debt system - if you’re out of flags, and you see something you really think should be flagged, well that’s going to put you in flag-debt and cost you two of your flags from next week. With a limit on how far into flag-debt a user can go.

                                                                              And or some down-weighting of users who flag heavily vs those who flag rarely.

                                                                          3. 7

                                                                            As @hauleth correctly points out, the issue is not that people can signal they see a problem with a post.

                                                                            The problem is assuming that signal is (a) trustworthy and (b) even remotely close to correct.

                                                                            The idea that people don’t downvote (or flag, in lobster’s terminology, the effect is the same) comments simply because they disagree with the view, is laughable. It definitely seems to happen less here than the orange site, but that’s like saying America has less gun violence than a literal war zone, so there is no problem.

                                                                            As I said, Lobsters gets a lot of things right, and it wouldn’t take much to improve it.

                                                                            The threshold for the warning message definitely should be smarter - a fixed number of flags makes zero sense if the goal is to have other users feedback be meaningful. 100 people upvoting and 11 people marking as ‘off topic’ or ‘troll’ because they don’t like the content, doesn’t really signify “you should reconsider your words” to me, unless of course the goal is an echo chamber.

                                                                            If a post doesn’t go below “0” effective ‘score’, it should not qualify, and even then I’d expect a much higher threshold than 11 such instances.

                                                                            As multiple people have said, the message itself is just bizarre right now. If you have to have a message it should be a lot more aware of the context of how it’s probably being read.

                                                                            If someone is genuinely just trolling, the message won’t mean shit to them anyway, they’re not likely to stop because of it.

                                                                            1. 4

                                                                              That this warning is not great because of the wording and threshold is something we can quickly agree on, as I already expanded on in some other messages in this thread.

                                                                              I’m not so cynical about the value of downvotes in general though;I don’t think that “flag for disagreement” are “flag for unconstructive” mutually exclusive. We’re all more sensitive when someone is being an ass about something we disagree with and less sensitive when we do agree with it.

                                                                              It’s a bit of a tricky balance; early today I saw a thread where an author was just being obtuse IMHO, responding with short messages that were essentially just refutations instead of actually having a conversation. I considered flagging it as it’s not a constructive conversation, or … because I don’t agree with it? Kind of both. I didn’t end up flagging it btw.

                                                                              I did flag another comment a few days ago which consisted of little more than “oh, you must not have understood it, let me explain it to you again like you’re an idiot who needs to be educated”. It was actually a fairly substantive comment, but also very condensing and not constructive. At that point you’re just being an ass, so -1 troll. I probably wouldn’t have if I had agreed with the gist of the post.

                                                                              And this also works two ways. I mean, Drew DeVault got plenty of upvotes as well even when he was demonstrably outright lying in his posts just because people vaguely agreed with the sentiment.

                                                                              Overall, “+1 because I agree with it” is actually a far bigger issue than “-1 because I disagree” IMHO.

                                                                              1. 3

                                                                                You’re right. I don’t really agree with the concept of simple ‘upvoting’ or ‘downvoting’. I think it encourages knee-jerk “ooh I agree with one sentence so clicky clicky” responses, rather than requiring people to actually articulate when they agree or disagree with something.

                                                                                Of course then you end up with “+1” etc type comments.

                                                                                But the bigger issue IMO is still the conflation of agree/disagree and “this is inappropriate”.

                                                                                Flagging something means a moderator should intervene and review the comment. It should be unrelated to whether the person agrees or disagrees with the content.

                                                                                1. 4

                                                                                  I don’t really agree with the concept of simple ‘upvoting’ or ‘downvoting’. I think it encourages knee-jerk “ooh I agree with one sentence so clicky clicky” responses, rather than requiring people to actually articulate when they agree or disagree with something.

                                                                                  How would you sort comments then? Perhaps Lobsters is small enough that it can get away without them, but on HN with hundreds of comments it gets hard and you need some form of mechanism. In spite of the problems with voting, I don’t really know of anything better.

                                                                                  1. 3

                                                                                    Posting order (i.e. chronological) wouldn’t be terrible.

                                                                                    On a small site like this, sorting by ‘agree’/‘disagree’ is probably not necessarily as bad, it that’s all it’s used for.

                                                                                    On the orange site the problem is that they encourage ‘downvote to disagree’ and then hide downvoted comments both visually, and then literally.

                                                                                    If that’s not the poster child for group-think and echo-chambers, I don’t know what is.

                                                                                    1. 4

                                                                                      I want to say that I’m reading this whole discussion and I appreciate it, though I’ll resist the temptation to weigh in on every single point.

                                                                                      Lobsters is what it is and I think removing the use of upvotes to sort comments would significantly change the site and the kinds of discussions it’s good for. Many people would leave. When I see people building their own new spaces, however, I do advocate for chronological order. I think it’s very difficult to have anything that even remotely resembles a game mechanic, without attracting users who treat social interaction as a game that they want to win.

                                                                                      1. 1

                                                                                        You’re probably right that removing upvotes would change lobsters somewhat. Perhaps then the solution is the downvote mechanism that I detest so much, because if it’s purely attached to sorting order, that’s still a better outcome than having posts flagged simply because someone disagrees.

                                                                                        1. 1

                                                                                          Would it be possible to display separate upvote and downvote counts, but still sort by the sum (“overall score”)? That way voting still does affect reading order, but the UI makes it feel less onerous if you’ve been downvoted. In essence, hopefully normalizing a UI pattern to indicate disagreement quickly.

                                                                                2. 1

                                                                                  And this also works two ways. I mean, Drew DeVault got plenty of upvotes as well even when he was demonstrably outright lying in his posts just because people vaguely agreed with the sentiment.

                                                                                  Is the lying still demonstrable, or was it only demonstrable back then?

                                                                                  1. 8

                                                                                    Stuff like this (and some more on the same topic at HN), and stuff like this. There have been some other discussions as well. I can’t be bothered to track them all down.

                                                                                    1. 2

                                                                                      I’m sorry to say it, but the web browser scope looks less like lies and more like methodology that you do not like. I cannot judge the other one, though.

                                                                                      1. 5

                                                                                        I’ve looked at now 100+ documents from that list. Not a single one has had actual content related to the web standard.

                                                                                        That’s not a minor methodology error; that’s just completely wrong and he’s more than smart enough to see that too, especially after multiple people pointed it out to him. An honest response would be to fix and correct it.

                                                                                        1. 1

                                                                                          I disagree. At the very least, a person still has to sift through all of those documents, even if they don’t have to read them.

                                                                                      2. 2

                                                                                        “Demonstrably outright lying” doesn’t fit what I see here. Maybe there were better examples at the time; I know much of the record was lost when drewdevault was banned due to Lobsters’s policy of deleting posts.

                                                                                        1. 5

                                                                                          He deliberately said things that were not true and defended it with “but my point us correct anyway”; I don’t know how to call that anything else than lying. Granted, he’s probably just a victim of his own anger and bias, but that’s a poor excuse and the end result is the same.

                                                                                          Anyway, this thread isn’t about Drew, so I’ll leave it at that.

                                                                                          1. 3

                                                                                            Deliberate outright lies could be demonstrated by a direct quote of the lie. What I see is a disagreement over whether an estimate is fair and what it means.

                                                                                            1. 9

                                                                                              The estimate makes a really serious methodological error, one that can scupper an otherwise strong paper. It’s fine to make mistakes, but doubling down on them is bad.

                                                                                3. 3

                                                                                  I think the keyword there is trusted heuristic. No-one says that downvotes/flags cannot be one of the metric that there is something wrong, just it shouldn’t be used to “automatically notify users”. Human interaction for showing “big red banner with “go f… delete account” should be required.

                                                                                  1. 3

                                                                                    It seems to me that the problem is determining who are the trolls - eg the person criticising Go, or the Go fans downvoting the criticiser. One solution might therefore be to limit the downvote to never less than -1, and greyed. Downvote trolls might be satisfied by this enough to not flag, and anything serious would still get flagged, and genuine criticisers wouldn’t be harassed by people who can’t handle criticism of their favourite whatever.

                                                                                    1. 2

                                                                                      I don’t know if you’re talking about a specific discussion, but in general I find Go discussions tiring because it’s always the same “Go bad” arguments over and over again, whether that’s relevant to the story posted or not. It’s really tiresome.

                                                                                      If you don’t like Go then that’s fine, but maybe you should be careful interjecting on Go stories unless you really have something of value to add. I don’t go around “C++ bad” or “PHP bad” on every C++ or PHP story.

                                                                                      I think the same applies to Rust from what I’ve seen on occasion, although I don’t read most Rust stories so I’m not sure.

                                                                                      1. 1

                                                                                        Your response seems to have nothing to do with my comment.

                                                                                4. 12

                                                                                  Previous: Flagged comment warning should have tiers.

                                                                                  IIRC there were some other discussions as well, but I can’t find them right now. I actually thought this warning got removed last year, but it seems not.

                                                                                  I have the impression false positives are fewer since the “incorrect” flag reason got removed; I used to get this warning fairly regularly before that, but haven’t since.

                                                                                  According to the standing page (, put in your own username in there) you need to net 11 in the last month to see that page. End up in two or three conversations where one or two people get their panties all in a knot, and yeah … say hello to your 11 flags.

                                                                                  Either way, automatic moderation never really works all that well IMO, or at least should have a really high bar. There is automatic moderation on Stack Overflow (and other SE sites), but the bars are so high that if you hit them, you almost certainly deserved it. And before you get to that point, you usually get flagged in the moderator interface first. IIRC there isn’t even a way for moderators to override these bans, because it’s simply not needed.

                                                                                  I don’t know the details of the single person who has 59(!) flags, but that’s really a excessive outlier (and almost certainly not burntsushi, who is probably close to those 11 flags) so doing something about that automatically might be okay. But 11 flags in 30 days seems really low. And given there are just 7 users in total who see this warning it seems to me that automating this costs most than it’s worth. Lobsters isn’t that large.

                                                                                  1. 2

                                                                                    IIRC there were some other discussions as well, but I can’t find them right now. I actually thought this warning got removed last year, but it seems not.

                                                                                    It was shown on the Replies page, which was offline for performance reasons for a long time.

                                                                                    I’m probably one of the few who took a peek at my /standing page nevertheless.

                                                                                  2. 5

                                                                                    I can promise we’re aware that the voting/flagging system penalizes controversy. The formula doesn’t have any way of knowing which posts and comments are difficult-but-necessary conversations vs. which ones are behavior that should be changed, but we do take it into account behind the scenes.

                                                                                  1. 6

                                                                                    I agree so much about the documentation. It’s hard. It’s not just about making sure that everything is there, unless you’re strictly writing a reference perhaps, but making sure that it is introduced in an order and pace that the intended target audience (which is not you by the way, so who is it?) can be assumed to learn it. And those people cannot read your mind, only what you wrote; if it’s ambiguous they will make the other interpretation.

                                                                                    Conversely, if there is a call for document review for some thing you will be an end user of, or which contains the thing you work on, or any other reason for why you might know of the document review in the first place – put time into it, it will most likely save everyone time in the long run.

                                                                                    1. 6

                                                                                      the intended target audience

                                                                                      This, this, this! There are a lot of books and articles online that talk about writing as following a series of rules (e.g., omit needless words, use the active voice, keep your sentences short, do not end a sentence with a preposition, etc.), but you’ve nailed exactly what writing is about: it’s about the target audience. It’s about writing in a way that they’ll gain value from reading. The rules about language can be useful, but they’re useless if the author failed to understand what his audience needed.

                                                                                      There’s a video online that I quite like. The first time I saw it, I was shook to my core, but I’ve come to realize the wisdom of the advice in it.

                                                                                      1. 5

                                                                                        I was just discussing this the other day with my wife (also a software engineer): there’s two things that nobody teaches you:

                                                                                        • How to write good documentation (and more importantly, how to write a simple project specification and keep the conversation going so that most of the high-level items are ironed out before you write the first line of code)
                                                                                        • What, how and why to test your code

                                                                                        Two huge endeavors that improve the quality of the code immensely are never touched on in academia and are not emphasized as part of your job once you enter the industry. I was mind-blown by just bad documentation was when I worked at Google. Another thing I did realize early on is that one’s ability to get promoted was directly correlated with how well they documented their work. You could spend months working on a super important project, but if you were shit at documenting the importance of the project and the progress you were making, the promo committee had 0 visibility into your work.

                                                                                        Honestly, I think there’s a fair market opportunity for creating courses around this and selling them to companies.

                                                                                        1. 1

                                                                                          I think it’s weird that these two are in the same category. You can’t write any non-trivial code (or even much trivial code) without reading documentation on the things that it wants to interoperate with (even if that’s only the core standard library for your language). It’s impossible to be even a junior developer without being exposed to good and bad documentation. I don’t understand how anyone can be exposed to so many exemplars and not learn. Even if you work entirely on your own, you’ve almost certainly come back to a project that you haven’t looked at for a year and either gone ‘I’m so glad I documented this well, it’s really obvious what I was doing’ or ‘I have no idea what I was thinking when I wrote this’.

                                                                                          Writing good documentation is really just a matter of putting yourself in the mind of the person approaching your codebase for the first time (or after a sufficiently long gap that they’ve forgotten). That person is very much likely to be you in a year’s time, so being able to write good documentation depends only on being able to empathise with yourself, which should be easy!

                                                                                          Testing is very different. Tests don’t show their value until a project reaches a certain level of complexity. It’s possible to work on a load of simple self-contained things and not really experience first-hand the benefit of tests. The value of a good test suite is really obvious if you’ve worked on a big project that has one but is far less obvious when you only work without one. I really hated the requirements that the LLVM project had on writing regression tests for every new feature and bug fix when I started working on it but I lost count of the number of times I was saved work by having a bug easily reproduced by a test.

                                                                                          I think the big problem with a lot of academic teaching in software engineering is that they don’t treat it as a social enterprise. Everyone works on their own project (or, occasionally, in small groups) and then the code is thrown away at the end of the year. I taught a compilers course to the Cambridge MPhil group and most of the students had never worked on a project that was >10KLoC before. I like to think that they learned a lot about compilers, but the most valuable transferable skill was probably having to read LLVM API documentation and write things that integrated with a library that was over a million lines of code from a standing start.

                                                                                          I’d love to have a course where every year people had to fix bugs from the previous cohort’s project and then add new features and hand it over to the next cohort and where the grades for each cohort depended on the experiences of the following one (or, ideally, of the next two or three).

                                                                                          1. 1


                                                                                            Yes yes Yes yes YES YES YES.

                                                                                            I’ve worked at Sauce Labs for several years helping people debug tests and test frameworks, and have come across just so much bad documentation and testing practise… And been so impressed at the difference when those things are good, instead.

                                                                                            The thing that’s blown my mind as a Big Boy (eg professional dev with experience) is how little of this stuff people can get away with doing, even as a senior. My college degree was run by the engineering school, and I’ve worked in Engineering firms, and that shit does not fly in other industries; You document and test properly even if you don’t want too, or you’re fired.

                                                                                          2. 2

                                                                                            In my experience there are two tricks:

                                                                                            1. Practice.
                                                                                            2. Do it at least twice.

                                                                                            Practice will make anything better. This is why writing a weblog is useful even if no one reads it (or even if you don’t publish it!)

                                                                                            Doing it twice is like code: the first time you usually don’t quite know what you’re doing yet as you don’t fully understand the problem, eventually you come up with something that works but isn’t necessarily the best. So you write it again, sometimes just parts of it, sometimes even from scratch. Because you now know all the things you didn’t know when you wrote the first line it will be better.

                                                                                            I did this today actually; I’ve been working on some tools to extract stuff from Baldur’s Gate (a game), and there’s some documentation out there but it’s all rather meh. While writing the implementation I also wrote quite a bit of documentation for it explaining how it all works. When I continued to work on it today I rewrote a bit of the code, but a lot of the documentation. The gist is still the same, but now that I understand it better the documentation is much better, too.

                                                                                            Often times coming back to it after a few days is very helpful. You’re not longer “immersed” in the material and whatever is unclear tends to stick out.

                                                                                            I don’t think any of this is hard as such, it just requires more time than many people are willing to invest.

                                                                                            1. 3

                                                                                              Talks work like this as well; my talks don’t “emerge” from the notes and slides until I’ve written them once, tried to give them to the wall and decided I hate everything I’ve written and I’m a fraud and a sham.

                                                                                              1. 1

                                                                                                Even after that, giving them to someone who is willing to give good feedback is incredibly valuable. I got the ‘best presentation’ award at ASPLOS a few years ago. I gave a practice talk to some folks in my department and got two hours of feedback from a 15-minute talk. The final version had almost no relationship to the version that I have as a practice talk, and I gave the practice talk because I thought the talk was basically ready.

                                                                                                If you learn to dance, the value of feedback becomes apparent really quickly. Folks who start doing tango often get excited and practice a lot with another beginner. After a few weeks, they’ve really entrenched some bad habits and then they need to spend several months unlearning them. Feedback early and often is a really hard habit to get into (nobody likes having their early attempts criticised) but it’s so very valuable.

                                                                                                1. 1

                                                                                                  Yup, 100%. One thing I love about digital talks during The Virus Times, is the ability to poll the audience at the end to ask for feedback.

                                                                                                  Additionally, how is Tango going?

                                                                                                  1. 1

                                                                                                    Additionally, how is Tango going?

                                                                                                    I injured my back and had to stop for a little bit and then the pandemic happened. Hoping to get back to it this autumn!

                                                                                              2. 2

                                                                                                “Do it at least twice.” is a great way to put it. Whenever I’m working on something nontrivial, I always get something that works somehow, someway with the explicit plan of rewriting all of the terrible hacks I resorted to because I didn’t understand what I was doing yet.