Threads for colindean

    1. 3

      Sentences in all languages can be templated as easily as in English: {user} is in {location} etc.

      I don’t doubt the, uh, falsehood of this one, but it surprised me a bit. I don’t know any other language well enough to think of a counterexample.

      1. 13

        It’s, uh, it sucks.

        As @xigoi mentioned here, in languages with grammatical cases, the form of {location} may vary.

        It’s not very straightforward. Best-case scenario is actually that a noun that indicates a location is always the same case (e.g. accusative), and you just have some declension rules + a series of exceptions to remember because there’s always a few of those.

        But some languages retain a locative case – i.e. they indicate a location by a specific form of the noun, rather than with a preposition like “in”. To make matters worse, the locative form may be gendered. E.g. in Polish it’s w domu, but w Austrii. Hopefully. Polish is special in every way there is :-).

        To make matters worse, some languages retain the locative, or variants of a locative, but it’s no longer productive. I think the only European language here is Hungarian, which no longer uses the locative, but retains a locative form for some places.

        And to make them even worse, some languages actually have different cases for relative locations. Some Baltic languages are like that. E.g. the “house” in “out of the house” and “inside of the house” would be in different cases (illative vs. ellative) and thus different forms (Finnish, which hopefully someone can correct me about if I got it wrong, would be talosta in illative but taloon in ellative.

        I know that there are many other constructions in some African and Asian languages, but I don’t know enough about those. I know, for example, that there are languages where:

        • Locatives agree with verbs and other predicates, so the form depends on what’s between {user} and {location}.
        • The form of the verb depends on word order/agreement (I think some Bantu languages are like that: “to be” would have different forms when saying “the birds are in the tree” vs. “in the tree are the birds”).
        • Some locative forms can drop certain verbs (so the “is in’ is implicit if {location} is in a locative form).
        1. 8

          It’s not so easy in English either. For example, “Please select an {object}”. If object is “pen”, then you get a grammatically incorrect English sentence. The use of “a” vs. “an” depends on the initial syllable of the following word.

          1. 1

            Or, notably, “You selected {number} items”.

            1. 4

              item(s) ;)

              Not to take away the point, but this one is at least so commonly “fixed” that most people stopped caring.

              1. 1

                And then you have an issue with “items”, because there are languages which don’t have an equally generic word that you can use. It would be either a different one depending on what you’re selecting, or would sound really clumsy.

                1. 1

                  Some developers really are lazy… Like, how difficult is it to write "{number} item{number == 1 ? "" : "s"}"?

                  1. 1

                    From my experience at least 50% of the time that is becoming a lot uglier depending on template language. Yes, if it works like this, fine.

                    1. 1

                      That would encode English grammar into program logic, though. Pragmatic me wants to avoid it because it adds guilt from this list of falsehoods.

                      If that “s” string can be tied to this context (because gender affects pluralization) before given to translators, it can work beautifully for many other languages, but I heard at least slavic follows a different pattern.

                      1. 5

                        Even in English it’s not complete: plural for potato is potatoes, not potatos.

                        I heard at least slavic follows a different pattern.

                        Yeah, slavic numerals are hard. In Polish: ziemniak - potato

                        • 1 ziemniak
                        • 2|3|4 ziemniaki
                        • 5-21 ziemniaków
                        • 22|23|24 ziemniaki
                        • 25-31 ziemniaków …

                        Sometimes the case is genitive, sometimes nominative 🤷. As a native I can become puzzled given awkward and unnatural enough sentence. I was once shown an example from a C1 language exam: I danced with 21 girls. All variants of a numeral sound a little awkward in my head.

                        1. 3

                          from a C1 language exam: I danced with 21 girl

                          This broke my brain a bit. There’s no way to phrase it well. At that point your only good way out is to dance with one more.

                        2. 3

                          The big problem, if you care about translating your app down the road, isn’t even the “s” suffix. It’s the assumption that you use a particular word if there is exactly 1 of something, and a different word if there is any quantity other than 1 of the thing. That’s true in some languages, but it’s not universal.

                          In some languages, there are different forms of nouns based on quantity, but they don’t follow the “if 1, then X, else Y” pattern. In Russian, for example, it’s based on the last digit of the quantity. Mostly. If the quantity ends in 2, 3, or 4, you use one word form, but not if the quantity is 12, 13, or 14. If the quantity ends in 5, 6, 7, 8, 9, or 0, or it’s 11 through 14, you use a different form. And if the quantity ends in 1, but isn’t 11, the form varies depending on the grammatical context. (Disclaimer: I don’t speak Russian, but I remember Russian being a fun stress test of some pluralization code I worked on when I was doing i18n stuff.)

                          And it’s not always more complicated than English. In some languages (Chinese, for example) there isn’t a plural form at all. The concept of pluralization just flat-out doesn’t exist, aside from a small handful of plural pronouns like the words for “them” and “us.”

                          1. 1

                            You need to do that anyway, because some languages do not have a straightforward equivalent of “item(s)”.

                    2. 6

                      Rankings being like, 1st 2nd 3rd 4th … 11th … 21st … 111th, is an example of how much of a pain at least one language can be, let alone every other language’s approach. (I think some actually use completely different words between counting and ranking too, fun!)

                      Aside: There was a table I found one day that listed “all” the languages and their handling of counting, ranking, etc, and how to program around it. Forgot to bookmark it however.

                      1. 4

                        the canonical data source for things like that is the unicode common locale data repository (cldr), specifically the ‘ordinal numbers’ in the language plural rules charts. this data is used, for example, by web browsers to power Intl.PluralRules and other Intl apis.

                      2. 5

                        Foe example, in any language that has grammatical cases, you would need to know the proper declension of {location}.

                        1. 4

                          In French:

                          • Je suis à la maison (I am at home)
                          • Je suis chez le médecin (I am at the doctor)
                          • Je suis au marché (I am at the market)
                          • Je suis aux Halles (I am at les Halles – a Paris metro station)
                          1. 6

                            Similarly in Polish

                            • Jestem w domu (I am at home)
                            • Jestem u lekarza (I am at the doctor)
                            • Jestem na targu (I am at the market)
                            • Jestem nad jeziorem (I am at the lake)

                            A lot of those issues seem to be due to English speakers not knowing any other languages.

                          2. 3

                            I’ve been learning some Korean lately and picked up that what we’d say as “outside of the apartment” in English is more like “apartment outside” in Korean.

                            1. 1

                              Prepositions are untranslatable because they don’t map one-to-one: I am in the toilet.

                              1. 2

                                And the idioms are different. One interesting example from Dutch: “Hij lijkt op zijn vader” is “he looks like his father” in English but it’s ~literally “He looks on (top of) his father” which of course doesn’t make much sense in English.

                                1. 1

                                  LOL, despite what you say the verb means, that looks so much like Norwegian: “Han likner på sin far”, where “likne” is the verb for to “look like”. But yes, “på” means “on (top of)” here as well.

                            2. 6

                              More like American programmers

                              1. 22

                                You’d think so! I did too.

                                I was the tech lead of the internationalization effort for a popular website a number of years back. This was in the US. The site was English-only and we wanted to make it available in a wide variety of languages. We wanted to make it feel as native to each language as we could, rather than feeling like a translation of a foreign site.

                                My team and I came up with a bunch of internal tools and a flexible library we could use to make our code work in multiple languages. When I say “flexible” I mean it went way beyond simple token replacement; it could do things like look up different variants of sentences depending on whether a caller-supplied place name referred to a city or a country and whether that distinction mattered in the target language, could use different pluralization rules for different languages, took gender into account if a sentence mentioned a person whose gender was known, and so on. We had people with linguistics backgrounds making sure we didn’t fall into any obvious traps.

                                The code base was far too big for my little team to update on our own, so an early goal was to give the rest of the engineering team all the resources they needed to do a really good job of updating their own corners of the code. In addition to thoroughly documenting our tools and libraries, we wrote up a set of annotated examples of how to change existing English-only code to be translation-friendly, and we made sure it covered all the common patterns in the code base (including visual design things like assuming a button only needed to be exactly big enough to hold an English label) and included examples of what could go wrong in different languages if people decided to just do string concatenation instead.

                                Then we started rolling it out. My expectation going into it was like yours: that the monoglot American devs would struggle to embrace all the techniques because English-specific assumptions would be too deeply ingrained.

                                But once I started doing code reviews of people’s changes, the reality was different. It turned out there was no measurable relationship between how good someone was at making their part of the site translatable into a wide variety of languages and which language(s) they spoke. Americans who’d never spoken anything but English were just as good at it, on average, as trilingual Europeans or people whose native languages were very different from English.

                                The thing that floored me was seeing people from other countries repeatedly make mistakes that would have made it impossible to correctly translate part of the site into their own native languages. This happened a lot, and it happened across multiple native languages. It seemed to me like some people were able to put their brains in “human language is highly variable and the code needs to act accordingly” mode, and some people were stuck in “I am working in English right now, so everything is English” mode, and it barely mattered if they happened to speak some other language or not.

                                Maybe the situation would have been different if the site had been in more than one language from the get-go; I don’t know. But that experience really shattered some of my preconceptions about the advantages of speaking multiple languages. (For the record: I still think it’s worthwhile to be multilingual!)

                                1. 5

                                  The first job I had in Germany, having moved here as a fresh-faced monolingual foreigner, was kind of like this. We were building an internal tool that was used by warehouse workers in various European countries. We knew we had a lot of fairly monolingual users in a variety of different languages, so when we decided to redesign the tool, I pushed really hard for making sure that every part of the UI was fully translated into all the relevant languages. I was amazed by how much my German colleagues pushed back against this, saying it would be a lot of effort, and people could just learn what the different English-language messages meant over time.

                                2. 7

                                  There were things a decade ago that my non-American English native speaker coworkers (Romanian, Croatian, Indian [Hindi & Marathi]) learned alongside me who’d been doing localization for a while — back then, I spoke natively American English but had six school years of Latin, 10+ years of self-driven Esperanto, and smattering of (Mexican) Spanish and (Canadian) French — when we did a big project targeting 10 languages on release days and 22 within four weeks in a patch release. I’ve picked up Dutch and some Korean since then and I’m constantly learning new things about language having gotten into linguist sector of Instagram, Threads, Bluesky, and the fediverse.

                                  Unless you’re a linguist, you’re always learning surprising new things about language, discovering new tools in the toolbox, per se. If you’re a linguist, you’re learning which has/does what because you’re more familiar with what’s in the toolbox.

                                  1. 1

                                    Cool you’ve learned so many languages. I’m currently trying to learn a new language and struggling a bit so maybe you can help. What are your preferred ways to learn a new language and make it stick?

                                    1. 4

                                      Consistent practice. Try to experience all modes - reading, writing, listening, speaking, and conversing.

                                      Find media you like. You don’t have to be even at 50% comprehension to listen to some audio, but obviously you’re only going to get little bits.

                                      Adverts are much simpler than anything except children’s media.

                                      Experiencing the language is generally the best way to internalize the rules, but reading up on complex rules to help you practice them is also important.

                                      1. 1

                                        Regular practice. Duolingo is fine if all you can put into it is 10-15 minutes per day. That’s better than 0 and 5 minutes isn’t doing much. Most of my focus is on reading and writing until I started learning Dutch in 2023. You have to read a ton and listen a lot. I don’t listen as much as I should, but there are plenty of Dutch teachers and comedians on social media that I’ve come to enjoy.

                                        I think it’s important to remember your purpose. I like learning languages because I like linguistics and language, not because I have an acute need to interact in another language. Honestly, some trips to Belgium and The Netherlands in the last few years have been the most immersive foreign language environment I’ve been in… and any Belgian or Dutch can tell you that you can get along just fine in most both of those countries speaking just English. I was able to use nothing but Dutch to get lunch in my great grandmother’s small hometown, though!

                                        1. 2

                                          Thanks, I’ll keep practicing! :)

                                    2. 3

                                      Absolutely not, I’ve seen a couple of these with German software, with English/French just an afterthought. And that’s already two languages where half of the stuff doesn’t even apply because they are both LTR languages in latin script. I will admit that it’s of course more likely to be a US/UK dev team.

                                    3. 2

                                      Languages that have similar names are similar.

                                      Which ones are meant by this?

                                        1. 5

                                          and Romansh! And Romang!

                                          It seems that Wikipedia has an editor in the know on this disambiguation, see the See Also on “Roman Language”.

                                          1. 2

                                            That mix-up sure caused some embarrassment to the producers of Peaky Blinders.

                                            1. 1

                                              On the other hand, the writers of Utopia leaned into it and had a whole plot point where the main characters mix up Romanian and Romani.

                                            2. 4
                                            3. 4

                                              What a fun writeup! This reminds me I’ve been wanting to try writing a service with SCTP.

                                              FWW, to get around most of the NAT shenanigans it’d be interesting to try using IPv6. But, some CPE might still try to track the state of a “session” or “flow”.

                                              1. 4

                                                I’ve had this lowkey obsession with SCTP since learning about it like 20 years ago. My dream at the time was to create some kind of tool for LAN parties that let people transfer game patches, etc. over multiple interfaces at a time when having more than one 100 Mbps NIC was easily achievable.

                                                1. 8

                                                  You likely already know this, but WebRTC allows negotiation of video, audio and/or data channels. The data channels are SCTP.

                                                  So using a WebRTC lib allows you to set up SCTP channels peer-to-peer (you need to provide a signalling/SDP exchange, but that is only at connection setup time).

                                              2. 2

                                                It looks like a fun project to work on - lots of interesting challenges and ideas to synthesize from across various other projects in the space, but I don’t quite get why I’d use it.

                                                I get why homebrew is popular on macOS, because their package ecosystem is missing a lot of important, useful stuff, but on Linux the various distributions I use have pretty good coverage.

                                                1. 1

                                                  Hypothesis: Perhaps you would use this if you were working across distributions and didn’t want to assume that Ubuntu 20.04 and Fedora 42 had the same “latest” versions?

                                                  1. 2

                                                    I do work across different distros and there’s some annoyance switching between apt and rpm-ostree but package management differences are largely why I’m not running a uniform set of distros. If I wanted consistent package management then I’d just use the same distro everywhere.

                                                    Also, for software, generally unpackaged, that is tied to the set of libraries on particular distro versions I end up using toolbox or distrobox.

                                                      1. 2

                                                        Exactly, that’s the point I’m trying to make here.

                                                        1. 1

                                                          ah sorry, read this as “hypothesis for why would you need soar”

                                                    1. 1

                                                      What would you like to see in Homebrew that’s not present for Linux?

                                                    2. 3

                                                      I really dislike the Apple system font as it appears on GitHub, so I use Stylus to override it with the Source family of fonts. Segoe UI on Windows isn’t much better but I allow it and whatever I end up using on Linux is neither SF UI nor Segoe so I leave it. I really should, for my own sake, just copy the Stylus rule across all my systems.

                                                      1. 5

                                                        I’m just starting on home automation stuff in my new house so I don’t have any good stories just quite yet.

                                                        One of the more interesting ones that I’ve done is a system that accepts a stripe webhook, parses a bunch of information out of a donation transaction or a bank account transfer transaction, reformats it into a ledger plain text accounting format, and then appends it to a ledger transaction record by downloading the file, adding the new transaction, and then re-uploading it. It then send a notification to Slack and then opens up a Gitlab merge request. I need only hit the merge button and a few seconds later, in slack, I’ll get the latest financial report for my non-profit organization.

                                                        1. 2

                                                          Frink’s units file is great; it’s a pity the language is closed source.

                                                          1. 4

                                                            There’s an open source project inspired by Frink called Rink.

                                                            1. 1

                                                              Oh, cool! I’ve been doing these sorts of calculations as part of worldbuilding for an sf story set on a one-mile-diameter planetoid with a tiny black hole inside for gravity; this would’ve made them a lot quicker.

                                                            2. 1

                                                              I only realized that a few weeks ago while actively looking for its implementation for some reason I’ve now forgotten. I might have been looking for this very units file and gotten into that periodic feeling of, “Well, I wonder if I could rewrite this in X.”

                                                            3. 8

                                                              I am one of the people who worked through the Linux from Scratch book by hand. I did this circa Q3 2006. I learned so much about how a distro is made.

                                                              …then my professor pointed out the script on the CD referenced at the end of the book. It built in ~75 minutes the base system that had taken me three months of hand typing to build. I learned about automation and I was enlightened.

                                                                1. 2

                                                                  No but on ironically, that work was quite formative for me in the mid-2000s!

                                                              1. 1

                                                                Be careful when doing this as a simple way to convert from JSON to Python objects, generally a dataclass. Missing or extraneous members of the dictionary will break the unpacking. I learned that the hard way whenever I learned about this feature about a year ago.

                                                                1. 33

                                                                  “Protesting is allowed as long as it is ineffective”.

                                                                  1. 18

                                                                    The FOSDEM organizers, insofar as they are FOSDEM organizers, exist for the purpose of organizing FOSDEM. In that role, they have decided that there will be such and such a speaker at such and such a time at such and such a place.

                                                                    You can disagree with that decision. You can register your disagreement through channels they’ve provided. If that’s proven ineffective, you can disengage with the whole affair. If you don’t like that option, you can register your disagreement by non-obstructive protest, which clearly indicates friendly criticism. Or if you don’t like that option, you can register your disagreement via obstructive protest. But in that case you have declared yourself to desire to obstruct FOSDEM’s reason for existence; it’s not surprising that FOSDEM will in turn assert its will to proceed with itself.

                                                                    There’s a bizarre trend among vaguely-radical Westerners whereby they expect to be able to disrupt the operations of an organization and not suffer any opposition for their own disruption because they call the disruption “protest”. This is a very confused understanding of human relations. If you are intentionally disrupting the operations of an organization, at least in that moment, the org is your enemy and you are theirs. Of course your enemy is not going to roll over and let you attack it. Own your enemyship.

                                                                    1. 16

                                                                      FOSDEM is volunteer-run, by people who are involved in F/LOSS themselves. It exists thanks to a lot of goodwill from the ULB. Protestors are not fighting the cops or some big corporations, they’re causing potential grief for normal working-class people like themselves.

                                                                      While the ULB campus always gives me the impression it’s not averse to a bit of political activism, it would be an own goal if some tone deaf protestors were to jeopardise the possibility of future FOSDEM conferences.

                                                                      Dorsey won’t care, he’ll take his same carefully rehearsed speech and deliver it again at any of the hundreds of for-profit tech conferences. They’ll be delighted to have him. But there’s really only one volunteer-run event of FOSDEM’s scale in the EU.

                                                                      By all means, boo away Dorsey, but be considerate of the position of the people running this.

                                                                      1. 14

                                                                        Protestors are not fighting the cops or some big corporations, they’re causing potential grief for normal working-class people like themselves.

                                                                        As a former and future conference organizer who has taken a tiny paycheck from three of the ~dozen conferences I’ve organized but never a salary °, this is 100% true. I’ve been fortunate that my conferences have had no real controversy, but two that did have a bit of a tempest in a teapot were went to two directions. One, the controversy was forgotten in a week, aside from a couple of people who just couldn’t let it go on Twitter. It took about a month for their attention to swing elsewhere. In retrospect, almost a decade later now, we’d have made a different decision, and the controversy wouldn’t have happened. Unfortunately, the other was life-altering for a few of the organizers because of poor assumptions and unclear communication on our part and a handful of attendees who felt that it was reasonable to expect intra-day turnaround on questions leading to a hostile inquiry two weeks before a $1M event for 1,500 people put on by eight volunteers spread way too thin.

                                                                        I’ve also had to kick out attendees who were causing a disruption. No, man, you can’t come into the conference and start doing like political polling, petitioning, and signature collection, even if I agree with you, and might have considered setting aside a booth for you if you’d arranged for it ahead of time.

                                                                        As conference organizers, we have a duty to platform ideas worth being heard and balance that with the person presenting them. The most effective way to protest a person or a presentation is not to attend, and the second most is to occupy space in silence with a to-the-point message on an unobtrusive sign or article of clothing. Anything more disruptive, and you’re creating a scene that will get you kicked out according to the customs of the organizer team, the terms of attendance, and the laws of venue if the organizers enforce their code of conduct. I’ve never physically thrown someone out of an event in my 24 years of event organization, but I’ve gotten temptingly close and been fortunate that someone with a cooler head yet more formidable stature intervened (and I was 6’2” 250 lbs at the time!).

                                                                        ° A tenet of my conf organizer org is “pay people for their work.”

                                                                        1. 16

                                                                          As conference organizers, we have a duty to platform ideas worth being heard

                                                                          Or you can just acknowledge that a person has done enough damage in their life that you won’t let them shout out any other weird takes.

                                                                          It’s not like FOSDEM is mainstream enough that it needs to have people who are more well-known outside of FLOSS circles to keynote. There are enough figureheads (often people who spent decades of their life doing good things) who would be more well-suited. This is not some random enterprise conference where you may invite any random startup CEO to shill their stuff. FOSDEM should do better. (I remember phk, and it was great)

                                                                          1. 15

                                                                            As conference organizers, we have a duty to platform ideas worth being heard and balance that with the person presenting them.

                                                                            that’s cool but literally nobody had heard of block’s involvement in open source until this was announced, so i don’t know what ideas you’re referring to

                                                                        2. 8

                                                                          Respectfully I disagree with this. Peaceful protest can be non-disruptive but still effective. If Jack is talking the whole time with people on the stage in protest around him, I think a lot of attendees will inevitably read Drew DeVault’s article and understand his argument.

                                                                          1. 7

                                                                            Drew lied about FOSDEM taking money from Dorsey for the keynote. You should take anything he says with a large grain of salt.

                                                                            1. 7

                                                                              Where did he say that? I don’t see that claim anywhere in the article.

                                                                              1. 1

                                                                                Dorsey is presumably being platformed in Janson because his blockchain bullshit company is a main sponsor of FOSDEM this year.

                                                                                There you go.

                                                                                  1. 2

                                                                                    I was going to point this out, but then I realized the concern is more likely the “presumably” in “presumably being platformed”. In other words, they’re not saying that Block’s sponsorship is a lie, they’re saying FOSDEM did not accept a bribe: Block’s sponsorship is not the reason Dorsey got a keynote as DeVault alleges.

                                                                                    1. 4

                                                                                      Yes, that could be it. If so, a bit disappointing to see such misconstrual or misrepresentation of DeVault’s clear statement of presumption as a statement of fact. (There’s also a lot of grey area between “bribe” and “total neutrality”. Patronage is a thing.)

                                                                                      1. 3

                                                                                        Would you agree then with the statement that “presumably DeVault lied when he construed Block’s main sponsorship as the reason Dorsey got the keynote selection”? Would presumably have made @talideon ’s comment acceptable?

                                                                                        The linked article makes it clear that patronage is not in play for this event.

                                                                                        To be clear, in our 25 year history, we have always had the hard rule that sponsorship does not give you preferential treatment for talk selection; this policy has always applied, it applied in this particular case, and it will continue to apply in the future. Any claims that any talk was allowed for sponsorship reasons are false.

                                                                                        Not trying to be adversarial, just trying to highlight how others are reading DeVault’s statement in light of the clear answer from FOSDEM that Block’s sponsorship had no role in his keynote. I don’t care one way or the other about the keynote, have no feelings either way about DeVault (who seems to be the most polarizing figure on this site), and will not be at FOSDEM. But when I read DeVault’s wording, I generally understood he believes FOSDEM accepted Block’s sponsorship in return for a keynote address and “presumably” is there to avoid any legal issues from making such a claim.

                                                                                        1. 6

                                                                                          Would you agree then with the statement that “presumably DeVault lied when he construed Block’s main sponsorship as the reason Dorsey got the keynote selection”?

                                                                                          No, because there’s no need to presume anything when you can just go look at his words. None of it gets anywhere near “lie”, to me. It strikes me as easy and reasonable to take his words as a true statement of his belief.

                                                                                          [FOSDEM’s very clear statement snipped]

                                                                                          Thanks for pointing that out.

                                                                                          But when I read DeVault’s wording, I generally understood he believes FOSDEM accepted Block’s sponsorship in return for a keynote address and “presumably” is there to avoid any legal issues from making such a claim.

                                                                                          We’re on roughly the same page here. To me, he’s definitely casting aspersions on the integrity of the selection process, though I wouldn’t go so far as to say there’s a clear belief of quid pro quo: this is the bit where the grey area is.

                                                                                          1. 4

                                                                                            I like the fact that they demoted Mr Dorsey to a ordinary main track! Free speech but no billionaire privilege!

                                                                                            1. 4

                                                                                              To me, he’s definitely casting aspersions on the integrity of the selection process, though I wouldn’t go so far as to say there’s a clear belief of quid pro quo: this is the bit where the grey area is.

                                                                                              That’s fair. Have a wonderful day!

                                                                            2. 6

                                                                              Protesting is the act of clearly communicating that you don’t like something. Effective protests are those where the specific ideas being communicated are convincing enough, or the people doing the protest are important enough or widespread enough, that you take the communication seriously.

                                                                              Communication takes many forms and some of them are more disruptive than others. But it is a popular fiction that disrupting and shouting down events because you don’t like the speakers is an effective form of protest - in fact there could be nothing more ineffective than associating your side of the argument with something that would make an ordinary attendee annoyed. Only if an ordinary attendee would side against the speaker by default would this be a good strategy.

                                                                              But when employed, usually this is not about actually communicating that you protest against the thing, it’s about attempting to get your way by force, just with a 1A-tinted veneer. Protesting is allowed as long as it is actually protesting, instead of trying to take control.

                                                                              1. 4

                                                                                This is just another example of the black and white thinking responsible for a large part of the awfulness in the world.

                                                                                Effectiveness isn’t binary. The allowed form of protesting probably not as effective as it could be in a different form than what is allowed. That doesn’t make it ineffective.

                                                                                1. 3

                                                                                  Protesting is making your disagreement and numbers visible. If you’re physically stopping somebody from doing whatever it is they’re planning and you’re against, it is not a protest, it’s just disrupting. And by implication it means you have the power to stop it and are not the oppressed underdog you are likely proclaiming to be.

                                                                                  1. 5

                                                                                    That’s a very narrow definition of protest which - afaict - isn’t in line with how that word is used by the rest of the English-speaking world.

                                                                                    1. 2

                                                                                      ‘Protesting is allowed as long as it is ineffective’ is an appeal to the moral valence of the particular action of protesting. If you change the meaning of the word to refer to a completely different thing, you cannot keep the moral valence. Physically stopping something from occurring is not something anyone has to tolerate just because you used a certain set of Latin glyphs/mouth-noises to identify it.

                                                                                      1. 1

                                                                                        Could be, I’m not very pleased with how I worded that so I might not be very clear about what I meant exactly, but it seems disingenuous to go back and edit it, given I’m not sure it’d end up better anyway. I’m trying to point at a meaningful difference between bringing attention to an issue and the size of the cohort in agreement with you, versus unilaterally acting to stop people doing something simply because you wish they wouldn’t. Of course everybody thinks that they’re in the right, therefore their actions are justified, but that can’t really be the case all that often, since everybody thinks it.

                                                                                        1. 3

                                                                                          I’m trying to point at a meaningful difference between bringing attention to an issue and the size of the cohort in agreement with you, versus unilaterally acting to stop people doing something simply because you wish they wouldn’t.

                                                                                          The latter sounds like direct action. It is widely regarded as a kind of protest. Protests typically involve a small minority of the population deliberately causing a disruption to force a response. Often, a majority of the contemporary population disagree with the aims of protest, even protests that we consider good and/or effective in retrospect.

                                                                                          Further reading:

                                                                                    2. 5

                                                                                      I’ve learned so much in my career during code reviews. I’ve been getting paid to write software for 20 years this year. Code reviews became a standard expectation about 13 years ago, but I learned about them probably 15 years ago, starting with GitHub’s original pull request feature. I wonder what else I’d have learned with 7 years’ more time getting meaningful feedback and consensus from coworkers and fellow students. I’m glad “kids these days” are growing up with this feedback mechanism.

                                                                                      In the middle of last year, a teammate was curious why I’d started a branch and protected it in our GitHub project for work. They’d never worked with a dev branch, only feature/PR branches pulled into main. Then the PRs started flowing as I did my best to keep my reviews under the ~400 lines ± that Best Kept Secrets of Code Review and some other books recommend based on code review attention span research. We’re about to merge the dev branch for the new component into the main, and it’s about a 4,000 SLOC change in a Python codebase— most of it already reviewed— with another 12,000 SLOC worth of test data, most of which doesn’t need much review.

                                                                                      Recently, another dev on my team put up a large PR in one go, about a 1,500 SLOC change for the same codebase. No tests. If it had been broken down, I could have invested 5 minutes daily for the last two months and nudged about testing early on. Instead, the review took half a day and resulted in a block until there are tests.

                                                                                      Review early, review often.

                                                                                      Related: https://conventionalcomments.org, a formatting convention for comments on, well, everything, but esp. code reviews:

                                                                                      <label> [decorations]: <subject>
                                                                                      
                                                                                      [discussion]
                                                                                      

                                                                                      E.g.

                                                                                      question (non-blocking): At this point, does it matter which thread has won?

                                                                                      Maybe to prevent a race condition we should keep looping until they’ve all won?

                                                                                      I’ve been using this convention with my team for a couple of years now, aided by the excellent Conventional Comments Web Extension by David Fournier.

                                                                                      1. 2

                                                                                        I’m finally ~entirely moved into the new house and also out of my coworking space of 8 years. I’ll be setting up my office and dreaming and planning of once again having a wired connection to my network core. WiFi-only is only for now, but at least it’s WiFi 6 instead of draft 802.11n, as it was the last time I was without wires between the core and my office.

                                                                                        1. 2

                                                                                          I agree with Woodruff’s position 100%. I wish Make could change more easily, because Make is the greatest common denominator. The one feature it’s missing is a built-in and obvious way to import other Makefiles as a flexible module system. Its simplicity and effectiveness enable that perpetual copypasta to succeed and fail.

                                                                                          As I wrote years ago and published last year in Make Python DevEx,

                                                                                          Any sufficiently advanced system of one-off scripts eventually reimplements proper DAG — directed acyclic graph — build tool, so let’s just use one from the start.

                                                                                          and the rest of the article goes into eventually explaining a little that Make is the choice because it’s just ~always there.

                                                                                            1. 3

                                                                                              Going into 2025, I’m down one involvement: an organization I helped to start in 2012, but all but stepped away from in October 2023 per a requirement in our organizing documents. It failed not because of my absence, but because of externalities I’m not sure even I could have predicted given a departure from policies I’d set and kept until 2021. Frustratingly, it was the departure from those policies that enabled a rapid rise in all metrics. My successors took a gamble and unfortunately flew too close to the sun. I don’t fault them for trying something new and they fought the good fight. Honestly, the organization was struggling to breathe until they came in, perhaps we were suffocating ourselves out of fear of breathing easy only to have the air run out. The air’s gone now. It was a big part of my life and my identity in the past.

                                                                                              Going in 2025, I’m down one major responsibility. I maintained a coworking space for 5.25 years, stepping in to help a close friend when he really needed it for what was initially six months. It closes at the close of year 8 at the end of January. I’ll miss many aspects of it, especially the community of people I’d see a few times per week, the late night conversations we’d have, and the meetups and conference events we’d have there, including Global Day of Coderetreat for the past several years. The meetups side of the org will continue but we no longer have our own physical space. So, I’ll have to find other venues just like the old days before we had a coworking space for our 12-year-old organization.

                                                                                              In 2025, I need to relearn some community-focused skills. During 2024, I focused on me a lot: my partner and I renovated a house for 307 days, moving in… yesterday. I kept my full-time dev job and we’re fortunate that my income is sufficient that she was able to focus on the house. We have some new operating system to learn in the new house, a way of working, a house as a service and a tool, a never-ending subscription to “the joys of homeownership” of the true and sarcastic variety. During that renovation and knowing that the coworking space was likely to close, I let some network nodes in my social graph atrophy. I need to reignite them with a new foundation.

                                                                                              And I really want to commit to doing something meaningful in the open source funding space. I don’t know what that looks like yet, but one small project I started a year ago and have neglected is looking awfully shiny.

                                                                                              1. 2

                                                                                                Ooh, similar story here. I’d done a little BASIC and some PHP, but it was “Oh, you want SSI but PHP will be easier than setting up SSI, so learn some PHP.” Then I got into MUDs with Achaea and subsequently into Ultima Online player-run “shard” servers. I was helping with some SphereScript shortly after I was promoted to GM on a shard. I don’t know how much SphereScript influenced my coding but it certainly did influence my interest in pulling things apart, seeing how they work, and changing them to suit my needs.

                                                                                                1. 1

                                                                                                  Using an ecosystem without

                                                                                                  1. Version specification
                                                                                                  2. Version locking
                                                                                                  3. Package content authentication

                                                                                                  feels risky in 2024. Most of the stacks I use have all three (Python w/ Poetry, Rust w/ Cargo), while Ruby still has just the first two and the JVM projects I inherited just have the first with Gradle and SBT.

                                                                                                  A fourth requirement for an idea dependency manager is attestation verification. I’ll expect it in a few years once the ecosystem around SigStore is more widely adopted.

                                                                                                  1. 1

                                                                                                    I consider number (3) to be table stakes.

                                                                                                    Number (1) is optional, e.g. Nixpkgs is one of the largest software ecosystems ever made and has no concept of “versions”, let alone ranges/solvers/etc. Those things can certainly be nice, though are largely orthogonal.

                                                                                                    Number (2) is a red herring, which is what this post is about. If you want to use human-readable names (and/or “versions”), then the resolution process should be reproducible. “Locking” is unnecessary busy-work.

                                                                                                  2. 8

                                                                                                    As I’ve been writing in “doing this week(end)” posts on Lobste.rs for almost a year, I’m finally moving into the house I bought a year ago, having been actively renovating it for the last 10 months since closing the sale. I moved my Home Assistant from my old house where it was not doing much to the new house, where it’s already automating some of the new lights through Zigbee. I’m really excited to dive into HA more while trying to keep sight of “things should just work” for my partner, who’s less tolerant of tech failures than I am.

                                                                                                    1. 3

                                                                                                      As unadopted as Brave’s basic attention token system is/was — among other barriers — the concept was so hopeful.