1. 16

    Ask yourself: why is documentation of internal-facing decisions like what software licenses to use being published in a public place? The answer is straightforward: to influence the public. This is propaganda.

    The site describes what open source projects Google shares, explains their approach, and what contributors should expect. It’s marketing, but marketing by giving away a few hundred useful codebases seems pretty unobjectionable to me. Publicly explaining a policy publicly that applies to all the projects in one place so they can link to it rather than rehash a legal point every time it comes up seems like a normal use of documentation. Calling it propaganda is uncharitable and unjustified.

    (Also, odd title: the article only addresses a single anti-AGPL argument.)

    1. 6

      Calling it propaganda is uncharitable and unjustified.

      The distinction between marketing and propaganda is pretty subjective.

    1. 6

      The only times I’ve gone through the trouble of mocking out someone else’s interface are cases where the library authors did not provide any testing capability, or wanted me to run a whole damn simulator process in addition to my test code. Google in particular has been guilty of this.

      1. 3

        Yes I wrote an alternative implementation of their message bus once because the simulator barely worked. Some fat java app to run in the background but managing it’s state was really hard which made it tricky to use for testing. Sadly that code never got open sourced :(

      1. 6

        While I think this is a great article about the state of Rust’s ecosystem for writing HTTP backend, the name of the article seems to be quite a bit off.

        As mentioned this is about HTTP backends, but even there it’s not really about the language, as you’ll be able to write a Flask clone in most languages. Also it depends a lot on use cases. I mean there is C++ HTTP servers for reasons, even though I do not think it is generally the language that people would recommend for HTTP backends.

        Again, great article, just not quite what I expected by the title.

        1. 2

          as you’ll be able to write a Flask clone in most languages

          Flask has a surprising amount of functionality and most new languages in fact can’t write a Flask clone. The very article discusses Rust ecosystem’s inability to replicate Flask’s file upload functionality.

          1. 1

            Okay, that part was oversimplified from my side and I think it also very much depends on what you consider a clone. Most languages there are have at least one “flask inspired” HTTP framework.

            The very article also links to an issue which links to a crate, which does something very similar.

            However this also wasn’t the main point of my comment. Just wanted to mention that this is about HTTP backends and not about servers at large, which I (wrongly) expected. Instead it’s about the HTTP ecosystem, like the file upload functionality of a web framework.

            1. 4

              Most languages there are have at least one “flask inspired” HTTP framework

              Sinatra predates Flask by a few years, so one could say Flask is Sinatra-inspired. But I think the real truth is that they both map code to URL resources in as minimal a fashion as possible, so they all basically look the same because they’re solving the same problems.

        1. 4

          I’ve got mixed feelings about this. It’s yet another syntax for Ruby, which is already fairly complicated. It is very close to duplicating pre-existing functionality in the form of Struct and OStruct - neither of which I actually like using because there’s no built-in immutability. I don’t know that this proposal is HARMFUL, but neither do I know that it is a benefit. So, “meh”

          1. 3

            I like using Structs in Ruby, especially as a form of documentation and, as the author said, ensuring that a key passed in doesn’t silently fail. It’s much easier to see the options available for a bit of code where the struct is defined in one place instead of hunting for accessors of a hash.

            That being said, I don’t like this syntax at all. It just adds yet another way of doing something when, I feel, the current way is sufficient and easy enough already.

            1. 3

              I’ve been using dry-struct for this reason, in concert with dry-types, and I really like it.

            1. 4

              Linking my comments from the last time this book came up.

              I’ll agree that it’s certainly better than Clean Code, but I wouldn’t hand this to a new engineer without some caveats.

              1. 16

                I’ve been bitten once by the modern use of JSON files in firefox. I don’t have a bug report at hand, but the issue is that since the whole file gets rewritten on save, a crash at the wrong time can make you end up with an empty (0 bytes) file. This happened to me with the password database, and it was quite hard to fix. I ended up creating a new profile. SQLite databases tend to resist damage a lot better.

                1. 5

                  That seems like a fixable problem. The trick would be to write the file with a temporary name, then fsync, then rename it over the top of the old one. Depending on when it crashes, you might lose the changes, but you shouldn’t get torn writes.

                  1. 1

                    rename() should be atomic on any sane posix filesystem. might be able to skip the whole fsync() call altogether.

                    1. 3

                      But then the atomic rename may be of an incomplete file…

                      1. 1

                        Someone correct me if I’m wrong, but for my own understanding it sounds like the process is:

                        • Write output to temp file
                        • One way or another ensure temp file gets committed to disk
                        • Rename temp file to real file

                        And then in the case of a crash, start over from the beginning? That may lose you data in a crash but will always be consistent. Otherwise you need to verify that the temp file is valid before doing stage 3, or detect a crash and attempt to recover something, or something along those lines…

                        1. 1

                          Perhaps I’m mistaken and doing dumb things, but I’ve intentionally induced power faults testing my temp to rename over method without fsync and it seems to work, vs opening and editing or just overwriting the file underlying.

                          1. 3

                            iirc ext4 filesystem actually inserts an fsync for you in this case because it is such a common mistake.

                        2. 1

                          When you’re dealing with crashes, all bets are off

                        3. 1

                          Funny you say that, this is exactly what FF does for downloads.

                          1. 0

                            To encourage less SQLlite usage, providing an API to manage this (compressed JSON files, loaded+saved via tmpfile/fsync/rename) seems a sensible approach, and probably not much more effort than writing this guide.

                              1. 1

                                Thanks, interesting, the non-default version (if you provide a tmpFile and ask for ‘flush’) seems to do this safely. I wonder if a higher-level API would be of use (save/load a json object, no need to provide tmpfile name etc)

                                The description of the ‘flush’ argument suggests it is doing an fsync(), rather than using stdio and doing ‘fflush’, but if so the terminology is confusing.

                                I would check, but I don’t want to check out all of firefox and but I’m having difficulty searching up “NativeOSFileInternals.cpp” to look.

                                  1. 2

                                    Try searchfox.org

                          2. 2

                            A similar thing can happen if you run out of disk space. During writing the file will first get pruned, then some program will use up all the available space in the meantime and your write will fail with the end result being an empty file. This can be avoided by creating a temporary file in the same location as the destination file and then renaming it.

                          1. 5

                            In the issue comments I found repeatedly a proclamation that „All software is political“.

                            This is generally not true. There might be some „political“ software, but usually software is simply a tool. It is not good or bad* – it can be used for good or bad or neutral purposes, just depending on who and how is using that software.

                            And there is also software or development style that is explicitly apolitical – Sane software manifesto says:

                            In order to contribute, it must not be required: … to sign any political, religious or other proclamation or agree with it.

                            P.S. Yes, free software has some political undertone, or I would rather say ethical, but it is very strictly defined and there are clear boundaries that prevent bending and misusing this term. Free software can be used by anyone for any purpose.

                            *) now I am not talking about code quality, but about the ethical dimension

                            1. 13

                              The inception of the Free Software movement was inherently political, and the recuperation of that movement into a more business-friendly Open Source movement was also political. Licensing software using a FLOSS license is a political act.

                              1. 2

                                Yet the success of the open-source movement in relation to the failure of the free software movement (at least, according to their goals) is almost 100% due to the FSF’s politics. Companies would rather use open-source software rather than free software because there’s less legal bullshit to go through. Additionally, companies have been less inclined to license their own software with the GNU GPL and have chosen alternative licenses that are more permissive and don’t place so much burden on the author to “give credit where credit is due”.

                                I love the FSF, GNU, and the movement it all stands for. But in my opinion, the world has mostly left that concept of “freely available software that you have total control over” behind. Especially in the current “rental” climate where less software is actually owned by a user.

                                1. 5

                                  Companies would rather use open-source software rather than free software because there’s less legal bullshit to go through.

                                  You use company adoption as the yardstick for success here but I would counter that it is entirely irrelevant to the political goals of Free Software.

                                  (P.S. my use of the word recuperation above was deliberate.)

                                  1. 3

                                    Open source is hardly a success. It’s companies struggling over control of software for their own interest (that very often is not aligned with the interest of the community) or bright people working for free for companies and be happy about the theft of time and energy. Corporate adoption and investments for control is their own metric of success but arguagly one that reflects the wellbeing of the commons.

                                    1. 4

                                      hardly a success

                                      What? This makes very little sense. Most of the software running the Internet is open source. Throw a dart at the list of top 100 tech companies, they’ve probably open sourced major libraries that have gone on to spawn entire industries.

                                      The Linux kernel, ffs.

                                      I’m confused at your argument. What is it you define as “success?” Adoption? Growth? Longevity? Monetary return?

                                      1. 3

                                        Be useful to people, solve problems in the real world (ideally problems that aren’t created other open source software), make the world a better place.

                                    2. 0

                                      ‘Free’ and ‘open source’ are synonyms. Companies don’t use open source software instead of free software. Using open source software is using free software. Using free software is using open source software.

                                      Copyleft and permissive software licenses are all both free software licenses and open source software licenses.

                                      1. 2

                                        No, they are not synonyms. Free software does no need to be gratis, nor does open source software imply that you have the freedom to change and distribute that software - even in exchange for money - like free software gives you. This distinction has been made clear so many times by now that it is surprising to see the claim that these two are synonyms.

                                        1. 1

                                          No, they are not synonyms. Free software does no need to be gratis

                                          Nor does open source software.

                                          nor does open source software imply that you have the freedom to change and distribute that software

                                          Yes it absolutely does imply that you have the freedom to change and distribute that software. The Open Source Definition requires:

                                          “The license must allow modifications and derived works, and must allow them to be distributed under the same terms as the license of the original software.”

                                          This distinction has been made clear so many times by now that it is surprising to see the claim that these two are synonyms.

                                          It’s been stated over and over again by everyone from the FSF to the Open Source Initiative that, ignoring some very idiosyncratic edge cases, ‘free software license’ and ‘open source software license’ are synonyms. The cases where the FSF approves and the OSI doesn’t or vice versa is generally because one of the them considers it too vague to be a valid license, such as with the Artistic License v1 or some issues with public domain licenses in Europe. Or to put it another way: if you put the FSF people in charge of evaluating licenses under the OSI definition and the OSI people in charge of evaluating licenses are free or not, they’d come to the reverse conclusions. The requirements for something to be a free software license are virtually identical to the requirements for something to be an open source software license.

                                          RMS: The term “open source” software is used by some people to mean more or less the same category as free software. It is not exactly the same class of software: they accept some licences that we consider too restrictive, and there are free software licences they have not accepted. However, the differences in extension of the category are small: nearly all free software is open source, and nearly all open source software is free.

                                          1. 1

                                            “The license must allow modifications and derived works, and must allow them to be distributed under the same terms as the license of the original software.”

                                            If the original licence says the software can not be used for or distributed by individuals and companies who work in a certain industry - defence is an example which has come up several times, police would be another - that software is not free software.

                                            1. 1

                                              Nor would it be open source software.

                                              Have you ever actually read the open source definition?

                                              “The license must not discriminate against any person or group of persons.”

                                              “The license must not restrict anyone from making use of the program in a specific field of endeavor. For example, it may not restrict the program from being used in a business, or from being used for genetic research.”

                                              1. 0

                                                OK, if that clause is part of the open source licence (there are many) the distinction gets less clear. This used to be a problem back in the day when ‘open source’ and ‘free software’ started to be recognised as two possibly distinct licence types. It still is for some licences (e.g. [1], “The license above does not apply to and no license is granted for any Military Use of the Licensed Patents.” but they do seem to be getting more rare.)

                                                [1] https://www.cs.ucdavis.edu/~rogaway/ocb/license2.pdf

                                                1. 1

                                                  OK, if that clause is part of the open source licence (there are many) the distinction gets less clear.

                                                  That clause is a restriction on what constitutes an open source license. It applies to all open source licenses by definition.

                                                  1. 2

                                                    Ah, but that is where the shoe wrings. Open source has become a generic term which is applied to any and all software for which the source is not hidden. The OSI has tried - and, as far as I can see, failed - to rein in the term to only encompass those licences which abide to the directions set forth in their licence, other software should be called ‘source-available’ or similar such constructs.

                                                    1. 1

                                                      the shoe wrings

                                                      I love this translation of “där skon klämmer”, but I think a better English is idiom is “there’s the rub”.

                                                      1. 2

                                                        It is actually a translation of “daar knelt de schoen”, an idiom which exists in many Germanic languages (the one cited being Dutch), English being one of them. Proverbs citing shoe-related woes have been used for many centuries, Shakespeare and his contemporaries were rather fond of these expressions which can be found scattered around their proze: I feare me theres s shooe wrings her i’th instep, of my yong [sic] Shooemakers making was a way of referring to a pregnant woman in a play from 1540.

                                                      2. 1

                                                        Open source has a definition and is still being used according to that definition. I have never seen anyone refer to anything that isn’t open source as ‘open source’ without having many comments pointing out the incorrect use of language and then usually an apology.

                                      2. 1

                                        Most developers who write open source (or free, if you will) software either aren’t very familiar with the politics of Free Software, or explicitly reject it. A well-known example of this is Linus Torvaldus, but there are many more.

                                        Many who use the GPL simply want to ensure people contribute code back, nothing more. I think Free Software as a political concept is not particularly common, even among people who contribute to it, and even less common outside of it.

                                        1. 2

                                          Torvalds doesn’t reject Free Software, he rejects the tivoization clause(s) in GPLv3.

                                          1. 2

                                            He’s been pretty critical of the concept of Free Software, and sharply critical of Stallman and the FSF, and not just about the GPL3. He’s often said that he mostly sees open source and the GPL has a simple practical matter (“it just works best, and sending back your patches is just basic fairness”), and has also said that he doesn’t really mind that proprietary software exists (which is quite different than the political position of the FSF).

                                      3. 17

                                        Nothing is apolitical, because nothing can exist outside of the political (social) climate in which it is created or consumed. Calls to keep politics out of X are political, however, because they distill down to a tacit defense and support of the status quo.

                                        1. 9

                                          This argument has no merit, as you could equally apply it to the choice of condiments you put on a hotdog.

                                          1. 5

                                            It’s political in a very narrow scope; the one of producing the software. The reverse conclusion that some seem to make is that it is a justification to throw even more politics into software development. It is used as a strong-arming argument that disrespects the intent of the author.

                                            1. 8

                                              Calls to keep politics out of X are political, however, because they distill down to a tacit defense and support of the status quo.

                                              You have to be trolling. Some people are just sick of everything being a political discussion.

                                              1. 13

                                                I think the counter here would be that, if you are sick of discussing a political issue, it is likely because the issue does not affect you, which is in some cases due to what might be described as social/cultural/whatever privilege: hungry people don’t often become “sick of” talking about food.

                                                I’m a straight white upper class American male and I both empathize somewhat with your sentiment and do often get tired of every discussion becoming political (hence why I read lobste.rs 100x as often as the orange site) but I must concede some validity to the argument that my position in society is what lets these political discussions be just “boring” to me instead of terrifying and immediately relevant.

                                                1. 13

                                                  I think the counter here would be that, if you are sick of discussing a political issue, it is likely because the issue does not affect you

                                                  And sometimes, you are powerless to affect it.

                                                  Racism exists everywhere in the world, but the form it takes in Bulgaria and elsewhere in the world is unlikely to line up with the American discourse. Imagine how you’d feel if people vehemently demanded you pick a side about the Indian citizenship law, and saw your unwillingness to comply as an indirect endorsement of the other side’s position? Because this is what the internet is like for non-Americans, at the moment.

                                                  1. 6

                                                    if you are sick of discussing a political issue, it is likely because the issue does not affect you

                                                    Bear in mind that even activists and volunteers need to decompress.

                                                    One can’t be 24/7 involved in the same thing or you will burn out. Not every conversation can be about the same topic, over and over again.

                                                2. 3

                                                  Nothing is apolitical

                                                  It’s not true. The action itself can be apolitical at the same time when analyzing the results of the same action can be political. If I stare at a tree because I find it relaxing, it’s not political. But the realization that I’m at the park staring at the tree instead of vandalizing public monuments in a name of some idea, can be political.

                                                  It’s similar to mathematics. If I eat an apple because I’m hungry, the action itself is not mathematical. But the number of apples in the area I live in will decrease by 1, so it will be a mathematical result only if you use mathematical reasoning when interpreting the situation.

                                                  1. 3

                                                    Maybe this would help you understand:

                                                    … People are different and have various opinions on various topics. But the pure free software ideas are a common interest which leads people from different groups and with different backgrounds to cooperation and shows them the way how to talk each other and eventually build a friendly and respectful community. It is much better than if people from different groups stay in their own bunkers and just bark at each other.

                                                    Future of the Free Software Foundation

                                                    1. 2

                                                      If you want to make something political you can, not matter what it is. Eating a peanut butter sandwich can be political. Washing your hair can be political. Walking to your work can be political. Washing your hands can be political.

                                                      That does not mean these things are political, only that you choose to make them political. This is a personal choice which does not need to - and often does not - transfer to others who get to make their own choices about what they consider to be political and what not.

                                                      That last statement is political, it is the freedom of thought and expression which is one of the pillars most of our societies are built on. Think well before you demolish this pillar, it was built for a good reason.

                                                      1. 0

                                                        Let’s suppose, for the sake of argument, someone came into your supermarket and demanded you change the labels on the white pepper and black pepper (to, say, retted and unretted pepper, or pepperseed spice and peppercorn spice, or any other term that didn’t mention colours) because the words ‘white’ and ‘black’ are racist and political.

                                                        You respond ‘no that’s ridiculous, there’s nothing political about white and black pepper’. They respond ‘everything is political’.

                                                        Ponder that.

                                                        1. 4

                                                          You think you’re making a point, but you’re not.

                                                          1. 3

                                                            Well, for example, electron recently changed whitelist/blacklist to allowlist/blocklist, and Chromium did the same some time ago.

                                                            1. 5

                                                              A blacklist is literally a list of bad things, which are clearly bad because they have the ‘black’ quality.

                                                              Black pepper is a tasty spice.

                                                              1. 1

                                                                Nonsense. Bookkeepers and accountants rejoice when the numbers are ‘in the black’ but shudder to see them go red. Here, black is good, red is bad. Is this a different black from the one used in the blacklist?

                                                                1. 1

                                                                  A blacklist is a list of bad things which are bad because the colour black is associated with negativity in our culture, while white is associated with good. That has nothing to do with skin colour. It’s honestly pretty cringe to try to force an association between the word ‘black’ and black people everywhere the word exists. ‘Blacklist’ has nothing to do with black people and black pepper has nothing to do with black people. Black MTG cards have nothing to do with black people. Whitelist has nothing to do with white people, white pepper has nothing to do with white people, white MTG cards have nothing to do with white people.

                                                                  1. 1

                                                                    white pepper has nothing to do with white people

                                                                    No shit.

                                                                    It’s honestly pretty cringe to try to force an association between the word ‘black’ and black people everywhere the word exists.

                                                                    Sure.

                                                                    ’Blacklist’ has nothing to do with black people

                                                                    Nothing wrong with disagreeing with the majority of linguists if you’ve got an informed opinion.

                                                                    Perhaps demonstrating some familiarity with the relevant literature (or maybe even linked a source for this unfounded claim) would help people be a little more charitable in their reading of your ideas.

                                                                    1. 2

                                                                      Nothing wrong with disagreeing with the majority of linguists if you’ve got an informed opinion.

                                                                      It’s been used in the English language for hundreds of years (as far back as the mid 1600s, if I remember correctly), rarely, though its first popular use was in the 20th century in reference to blacklists of union members. It’s a blacklist in the sense that the list itself is black. A blacklist was originally two words (as with many compound words) and its first usages are in a more poetic sense: a ‘black list’ where ‘black’ is used poetically to mean dark or evil. ‘His black list’ i.e. ‘his evil list’. It is not a list of ‘blacks’, never has been. Its use far predates modern American conceptions of race.

                                                                      Now you might respond by saying that using a term that has its popular origins in the suppression of unionism to be ‘problematic’, but etymology is not the same as meaning. Words do not mean precisely what they were coined to mean, and it would be absurd to expect everyone to inspect the etymology of every word they speak to make sure it isn’t associated too closely with whatever topic has fallen under the gaze of the keyboard warriors on Twitter and is now considered ‘problematic’. There are probably heaps and heaps of completely normal terms people use all over the place that have their origin in something that, under close inspect without the proper context, might seem ‘problematic’.

                                                                      Should one not use the word bugger? Or hysterical? Are no can do and long time, no see racist? What about uppity or hooligan? Grandfather clause? Call a spade a spade? What about gypsy or Eskimo or American Indian where despite the popular view among white Americans that they’re racist or outdated terms, they’re actually preferred by many of the people they’re meant to describe over Romani (lots of whom aren’t Romani at all) or Inuit or native American?

                                                                      Maybe instead of being offended on behalf of others, you just leave it to them to raise issues if they are actually offended? Getting offended by the origins of terms that have been free of offensive connotation for decades or centuries because a couple of keyboard warriors on Twitter decided that the best way to solve an issue like systemically racist police violence in the USA is to police what variables people use on GitHub…

                                                                      Perhaps demonstrating some familiarity with the relevant literature (or maybe even linked a source for this unfounded claim) would help people be a little more charitable in their reading of your ideas.

                                                                      If you’re going to make such a significant claim you should back it up with sources from the relevant literature. Language is not problematic-by-default. The onus is on you to prove that the term was coined in reference to race if you wish to claim that it is “problematic”. I’m not telling people what to do or calling anyone racist. I’m not making any extraordinary claims. I don’t see why any burden of proof falls on me.

                                                                      1. 2

                                                                        its first popular use was in the 20th century in reference to blacklists of union members

                                                                        Says who? (The wikipedia page for an active political controversy is not a source).

                                                                        Maybe instead of being offended on behalf of others, you just leave it to them to raise issues if they are actually offended?

                                                                        Firstly, I’m not offended by it; secondly, what idea would you have whether it was on someone elses behalf or my own if I were.

                                                                        I’m offended by longwinded, unsourced, nonsensical arguments on an otherwise-good-SNR technical forum.

                                                                        I don’t see why any burden of proof falls on me.

                                                                        You’ve asserted, without evidence, that ‘Blacklist’ has nothing to do with black people, which is sort-of the crux of the discussion. Not only are you raising flat assertions without a source, you’ve the gall to demand anyone who points out this is low-effort do the legwork for you. Generating bullshit is much easier than refuting it, and all that.

                                                                        EDIT: Oh. It’s you, but you’ve changed your username again. I’ll update my killfile, as usual.

                                                                        For anyone else as uninterested as I am in this inanity, a handy ublock rule is:

                                                                        lobste.rs##:xpath(//div[contains(concat(' ', normalize-space(@class), ' '), ' comment ')][.//a[contains(@href,'/u/mrr')]])

                                                                        1. 1

                                                                          You are a nasty piece of work.

                                                              2. 3

                                                                He is making a point though, even if you choose not to see it. You might not agree with it but that does not imply the point doesn’t exist. In other words, a single person or a group does not get to be the purveyor of truth in an open society which allows freedom of thought and freedom of expression.

                                                            2. -2

                                                              Excellent. Now these monsters who support the status quo have no place to hide.

                                                          1. 1

                                                            Unfortunately on Linux it’s just been dogshit, absolute dogshit. Slow, takes ages to start, websites render in really slowly, switching between tabs feels so lethargic it’s like the fire in the fox has gone out.

                                                            That’s surprising to me, because I switched to Firefox from Chrome on Linux for the opposite reason. Opening Chrome causes it to thrash my disk for a few minutes before things like autocomplete or recently visited sites show up. Firefox runs fine.

                                                            1. 21

                                                              If I’m building a static site for a blog, I think the number one requirement will be stability of dependencies over time. I should be able to come back five years later and get it up and running without spending a day fixing all the broken things.

                                                              Given my experience with NodeJS, I do not think it meets that standard. I’d probably give Ruby a pass too.

                                                              Maybe something built on Rust or Go would be my first choice, since they build a single executable and don’t depend on a packaging environment to run.

                                                              1. 5

                                                                I’m pretty happy with hugo and Netlify. I seem to be averaging a post a year lately, but my handful of shell aliases and locally installed static binary for hugo are working fine.

                                                                The only trouble I’ve had was that I used a theme as a git submodule and the author removed the upstream repo. Which just convinces me to remove even more dependencies.

                                                                1. 3

                                                                  I built a blog with Hugo back when it was new, then came back to it a few years later and Hugo wouldn’t run (some incompatibility between Go and macOS), updated Hugo, and everything broke because they’d changed so many things with e.g. theming. I did get it working again, but it took a while.

                                                                  1. 4

                                                                    Ah, well, there you see my secret. I’ll just never update Hugo!

                                                                2. 4

                                                                  I tend to agree. I wrote up a really nice SSG setup I put together with Flask, Jinja2, and Markdown, and a super simple Flask plugin called Frozen-Flask (for generating static HTML from Flask routes), which one can easily vendorize.

                                                                  https://lobste.rs/s/s91ry0/most_dynamic_static_site_you_ll_ever_see#c_jrzsib

                                                                  The nice thing about Flask and Jinja2 is that they are completely ubiquitous as a web app and template framework in the Python community, and its maintainers have essentially declared the projects “done” (+/- the odd security fix). Thus, coming back to a repo built with this setup years later, stuff Just Worked.

                                                                  Sometimes it’s best not to let perfect be the enemy of the good.

                                                                  1. 2

                                                                    I have some projects on Vercel / Zeit that are 3-4 years old, no problems with them whatsoever. It does lock you in a bit but it’s not a big deal since you can always next export.

                                                                  2. 1

                                                                    I mean my setup also fits the bill as it would have worked fine (except for markdown processor and rsync) in the 1980s.

                                                                    1. 2

                                                                      You’ve probably moved computers a few times since then. How much effort does it take to get the project up and running without the original dev environment? That’s my biggest concern regarding continuity.

                                                                      1. 1

                                                                        Well, you need a UNIX-like machine, a server with bunch of headers and footers of indexes and atoms (which I have for my blog) then just have some processor (I did not have this setup since the 80s as I wasn’t back there nor Atom/HTTP was :), I said 80s for hyperbole’s sake and the fact that most of the setup is through basic ed commands and Bourne shell (not bash) syntax).

                                                                        Ed sadly is less and less preinstalled in modern UNIX-like machines, but ed syntax has not changed for longer than majority of solutions here exist.

                                                                        I believe that Lindy effect is a good guide for designing such projects (continuous). Would it work right when the internet began - in my case, except for rsync and markdown, which are both just variables for generating html, which could be replaced with something else.

                                                                        1. 1

                                                                          That sounds like an extremely boring solution that will probably outlive me ;-)

                                                                  1. 3

                                                                    Despite the title, there is not in fact an example of how to hide whitespace in a git diff.

                                                                    git diff --ignore-space-at-eol
                                                                    git diff --ignore-all-space (or -w)
                                                                    
                                                                    1. 27

                                                                      There’s a huge funnel problem for computer science at the moment. Go and Rust have some pretty serious evangelical marketing teams, but they are a drop in the ocean compared to the emergent ultramarketing behemoth that feeds JavaScript to the new developer.

                                                                      Part of this is that JS is constantly “new and modern” – with the implication that it’s a bandwagon that you’ll be safe on, unlike some of the old cobwebbed bandwagons. Constant change and “improvement” is itself a safety generator.

                                                                      Another part is that it’s so easy to get to hello, webpage. The sweet spot on the racket is enormous. Every computer including your phone comes with at least 1 and usually several JS interpreters. Frictionlessness drives adoption.

                                                                      The problem is that JS is, violently, garbage for most purposes. It’s a local maxima that has essentially everyone trapped, including the next generation. It’s not clear how we escape from this one.

                                                                      1. 16

                                                                        I feel about JS similarly to the way I felt about the x86 ISA taking over the world. “A local maxima that has everyone trapped”, that caused billions of dollars of R&D to be diverted into clever hardware, code generation, psychological treatment for programmers, etc. (I think the last thing is a joke, but I’m not sure.) One could even draw a parallel between the modern “micro-op” architectural approach to bypassing literal x86 in hardware and the WASM approach to bypassing literal JS in the browser.

                                                                        1. 10

                                                                          The longer it goes, the more this talk gets correctly.

                                                                          1. 1

                                                                            I’m not sure any other ISA would have been better than x86 at the time x86 began to take off. Lots of companies were trying lots of things in the RISC world, and plenty of money was being spent on RISC hardware and compilers, and the x86 still began to take off. Intel had a lot of money? IBM had a lot of money, and IBM was working on RISC. HP had a lot of money, and HP was working on RISC. And so on.

                                                                            1. 2

                                                                              Of the obvious choices available at the time x86 began to take off (1984ish), I would say the 680x0 was a better choice, demonstrated by watching the parallel evolution of the two. At least the extensions to 32-bit and virtual memory seemed a lot more straightforward on the 68k. They both would have run out of steam and gotten weird by now, but I feel like it would have been less weird.

                                                                          2. 2

                                                                            It’s not clear how we escape from this one.

                                                                            Simply wait. There are some better tools out there (for some value of the objective function “better.”)

                                                                            We’ve moved on from C, C++ and Java, all of which have had a similar level of death grip. JS is not invincible. The more users it attains, the more it suffers problems of perception due to the wide variance of quality. This gives rise to new opportunities.

                                                                            Really, I get a bit disappointed that everyone is content to rewrite everything every seven years, but, hey, it’s their life.

                                                                            1. 0

                                                                              I take strong offense at this proclamation of JavaScript as garbage. What kind of an opinion is that? If you don’t know JavaScript, don’t call out garbage. If you do know if well, you’ll see that it isn’t any more garbage then any other modern language for most purposes for which it is used - at least on backend.

                                                                              The entire ecosystem has some issues, but every ecosystem does. And considering that node was created only a decade ago and has vastly more users then some “serious” things that exist for ages, it’s obvious that there’s something that it’s going correctly.

                                                                              1. 28

                                                                                I take strong offense at this proclamation of JavaScript as garbage.

                                                                                You are offended on behalf of Javascript? People can dislike things that you like. It doesn’t do anything.

                                                                                1. 4

                                                                                  Okay, inprecise choice of words on my part. I’ve wanted to state that I strongly disagree with his statement, english isn’t my first language and so I didn’t think every word completely through. I think you can still get the message. Be flexible a bit and you’ll understand it.

                                                                                  1. 7

                                                                                    I’m not sure what other languages you know, but compared to most popular languages:

                                                                                    • Javascript has a weird type-system that doesn’t really pay off. Sure, they added inheritance recently (welcome to the 80s), but there are all kinds of inconvenient relics like having to do Object.keys(x) when in Python you can just do x.keys() (as in most popular languages)

                                                                                    • Javascript makes it much harder to catch errors. Its implicit typecasting (undefined+“1”==“undefined1”, really??) and misuse of exceptions in the API means that when something goes wrong, you’ll often find out a few functions later, and then struggle to zero-in on the actual problem.

                                                                                    • The ecosystem is too fractured. The lack of a curated “standard library” sends novices into all sorts hacky solutions, and makes other people’s code less familiar.

                                                                                    I could really go on for a long while, and there are tons of example that I could give. I can say positive things too, like it has a good JIT, lots of interesting libraries, and some nifty syntax features (while lacking others), but overall think it’s a really bad language, that just happened to be in the right place and in the right time.

                                                                                    1. 1

                                                                                      For the record, JavaScript has always had inheritance, it just hasn’t had a class syntactical sugar that made it trivial to use until ES6.

                                                                                      1. 1

                                                                                        I wouldn’t call it bad. It just has bad parts. The == operator you mentioned is a trap for many beginners. On the other hand, there’s no inheritance problem because the inheritance was always there - you just have to know how prototypes work. The type system without extra tools and some practice is a pain. Yet the closure or say prototypical inheritance and composability you get is great.

                                                                                        JavaScript got really lousy reputation because unlike, say, C++ or Java, everybody wrote it, not just people who studied software engineering for five years and know how to use tools, have structure and not break the rules.

                                                                                        And it’s keeping the lousy reputation because it is still being done - randos adding jquery plugins for perfectly css-able animations even today.

                                                                                        Plus it’s got 25 years of backwards compatibility to maintain, so those bad parts never leave. Yes, it has been at the right place at the right time - but many others have tried and are still trying.

                                                                                        But despite all the bad parts and lack of standards, it’s still immensely flexible and productive and for a lot of use cases actually provides the best concepts to do them. Could you put something like elixir in a browser engine? Or java? Or Rust? Probably. Would it be better? Maybe, but I suspect not by much.

                                                                                        I don’t know, I’m probably not seeing it. I’m not claiming that it’s a great language or that it’s even good for everything and everyone. But people only see the ads and single page apps where they don’t belong or where they simply don’t like it, and ignore a lot of directness that the language provides, look down on flexibility, and don’t allow the little language that could its deserved praise (where it does deserve it).

                                                                                        Once again, as I’ve said in another comment - I don’t claim it’s the best language ever. I’m just saying it is not garbage. These days the tooling and the entire ecosystem is mature and there are no more language issues in writing a typical NodeJS application then in most other similar languages.

                                                                                        1. 1

                                                                                          Javascript has a weird type-system that doesn’t really pay off. Sure, they added inheritance recently (welcome to the 80s)

                                                                                          It added inheritance as a sop to people who didn’t know composition and refused to learn. Are you not satisfied with that? Does it have to become a pure Smalltalk clone for you? Composition is more powerful but it’s less familiar. Now JS has easy ways to do both.

                                                                                    2. 23

                                                                                      I have a deep understanding of JavaScript; I promise that my opinion is rooted in experience.

                                                                                      1. 6

                                                                                        Even though you personally find Node impressive, there might be people who don’t get impressed by languages (or any software really).

                                                                                        Being impressed or having respect (for a software) makes no sense. It is just a tool that should be used or discarded at will. Not a cultural icon.

                                                                                        If you do know if well, you’ll see that it isn’t any more garbage then any other modern language for most purposes for which it is used - at least on backend.

                                                                                        You have stated no arguments that support your conclusion. I believe that the jury is still out on the matter of language effect on productivity. All the studies I know of were totally botched.

                                                                                        Anecdotally, I have seen more poor Node backends than Python ones. I have also seen less high quality Haskell backends, which confuses me greatly. Still, I wouldn’t go as far as to conclude that everything is the same crap.

                                                                                        1. 5

                                                                                          Denying the role of aesthetic judgement in programming is madness.

                                                                                          1. 1

                                                                                            I didn’t state I find Node impressive. I do love it for the productivity it brings to me. And that is just the point of my reply. The guy claimed JavaScript is garbage, also without arguments. I’ve just pointed out that. No more garbage then any other language, in my opinion. If anybody brings arguments into this whole discussion, including the original post of the thread that claims people are pushing node, we can talk about with arguments. Otherwise we’re all just giving opinions and estimations.

                                                                                            Anecdotally I’m seeing much more crappy Java Enterprise and Spring backend code lately then node. Likely because I work at a java shop now. But I don’t claim that people are pushing Java exclusively for backend (even though they do at my company, we literally have 100% Java in my 800 people department), nor do I claim Java is garbage.

                                                                                            I hope that clarifies my objection to the claim of garbageness.

                                                                                            1. 4

                                                                                              I think you are right that JavaScript brings great initial productivity. Especially in the single developer case. For many simple tasks, it is easy to use node, easy to use npm, and easy to deploy code. Where I have seen problems that I know are avoidable in other languages is in its long term sustenance and operation, which are vitally important parts of software engineering.

                                                                                              Other languages have, for example, highly vetted and deep standard libraries of functions which are included in the system and move very slowly, which eliminates large classes of dependency management issues. Or, they have good type systems, which helps prevent common problems, especially in dynamic languages. Or they have exceptional tooling that enforces good practices. Or they are especially operable in production, with good intrinsic performance or observability characteristics.

                                                                                              But the most important thing, to me, is that most other languages have a culture of remembering, but this is distinctly lacking in JavaScript. I attribute this to many JavaScript programmers starting from scratch in their software career inside JavaScript, and not having broader exposure to the vast surface of other kinds of software. And I attribute it also to the “stack overflow” method of programming, in which rather than engineer your software, you assemble it from the guesses of others, losing fidelity and getting more blurry with each iteration.

                                                                                              It could sound like I’m being a pretentious jerk. I’ll confess to that. But having been a professional software engineer for now 32 years, and having seen probably a hundred languages and environments, the current JavaScript one is my least favorite. I appreciate that it’s one that you have significant personal investment in, but I would also encourage you to step out and up, and look around.

                                                                                              1. 1

                                                                                                Thanks, this also raises some quite relevant concerns. And I agree with these things. And now I have to fall back to the fact that despite these problems, it’s not garbage. I did step out and I try other languages and their frameworks, but I’m simply personally the most productive with it. And when I worked in teams where Node was used on the backend, the teams were professionals and mostly didn’t have problems with the language itself - maybe more or less then if it was done in, say, Spring or Rails, but I would say the typical problems are always stupid things like commas in the database where they break serialization somehow.

                                                                                                And that is the point of my original comment. Which was that I object to the claim that JavaScript is garbage. Maybe a lot of garbage is written in JavaScript today, but it in itself is not that, and can provide perfectly productive envrionment for doing our jobs.

                                                                                          2. 6

                                                                                            I wouldn’t call JavaScript “garbage” myself, but it sure has some problems that few other languages have. [1] + [2] resulting in "12" being a simple example. JavaScript definitely took the 90s/00s vogue of “all things should be dynamic!” more than a few steps too far.

                                                                                            considering that node was created only a decade ago and has vastly more users then some “serious” things that exist for ages, it’s obvious that there’s something that it’s going correctly.

                                                                                            Well, just because it’s popular doesn’t mean it’s good ;-)

                                                                                            I notice myself that I often use tools that I know, even when it’s not necessarily the best fit, simply because it’s so much easier. Yesterday I wrote some Ruby code for a Jekyll plugin and had to look up a lot of basic stuff and made a few simple mistakes along the way; there was quite a lot of overhead here. And I programmed Ruby for a living for 2 years (but that was 5 years ago, and looks like I have forgotten much).

                                                                                            JavaScript is rather unique in the sense that almost everyone has to deal with it because it’s the only language supported by browsers[1], so there are a lot of people familiar with JS who would rather like to use it in other scenarios as well: not necessarily because it’s the “best”, but because it’s just easier as they won’t have to re-learn a whole bunch of stuff.

                                                                                            That’s not necessarily a bad thing, by the way; I’m all for giving people the tools to Get Shit Done. My point is merely that much of NodeJS’s popularity probably stems from factors other than intrinsic qualities of the language, runtime, and/or ecosystem.

                                                                                            [1]: Ignoring wasm, which isn’t quite ready for production-use, and “X-to-JS” compilers, which typically still require knowledge of JS.

                                                                                            1. 1

                                                                                              Oh, I wasn’t claiming that the popularity of NodeJS comes from it’s quality. I’m just saying JavaScript is not garbage, which the commenter claimed without argumenting it.

                                                                                              I mean, I know that [1] + [2] is “12” in JavaScript. But if you ask me how many times I’ve had a problem because of that in the last year, I would possibly be mistaken, but I would say 0 times.

                                                                                              Again, it’s not the best language and it has its problems. But it’s not garbage.

                                                                                              1. 2

                                                                                                I mean, I know that [1] + [2] is “12” in JavaScript. But if you ask me how many times I’ve had a problem because of that in the last year, I would possibly be mistaken, but I would say 0 times.

                                                                                                I find this interesting, because a few comments upwards, you state this:

                                                                                                The typical problems are always stupid things like commas in the database where they break serialization somehow.

                                                                                                It might just be me, but in no other language have I ever heard of specifically this problem. If you dig a little deeper, you’ll notice that there are a few fundamental issues in the language. But definitely the most prominent root issue is that types are treated extremely loosely, which causes all sorts of offshoot problems, like the two above.

                                                                                                I always try to think a bit more holistically about this, and when you do, you start to see this pop up everywhere. Just yesterday I was debugging an issue with a colleague where he accidentally was throwing a JSON-encoded string at a program where in fact he should have been taking the JSON document, extract a specific key’s string value and send that to the program. Basically the same thing: it’s too easy to mix up types.

                                                                                                I occasionally see this in Python as well: when you accidentally have a string instead of a list of strings; because of the “everything is a sequence” abstraction it’s too easy to mix things up, and you end up chasing down the rabbit hole before you figure out where it’s going wrong. It’s better if things error out early when you try to do something that makes no sense.

                                                                                                Having type-specific operators makes it easier to get your bearings when reading unfamiliar code, too, in my experience.

                                                                                            2. 3

                                                                                              And considering that node was created only a decade ago and has vastly more users then some “serious” things that exist for ages, it’s obvious that there’s something that it’s going correctly.

                                                                                              No, it means JS has a powerful monopoly (the web) and thus commands a huge mindshare. Some subset of those people want to take their painstakingly earned experience to the server.

                                                                                              1. 0

                                                                                                So, ‘heads I win, tails you lose’, eh? Good argument. /s

                                                                                            1. 2

                                                                                              In the Nix language, expressions are the top-level language construct. (As opposed to, for example, statements in JavaScript / Python / Ruby, or definitions in C and friends.)

                                                                                              (nitpick) this is also true of Ruby

                                                                                              1. 1

                                                                                                Eek! Thanks for pointing this out. I simply removed the mention of Ruby there. :-)

                                                                                                1. 2

                                                                                                  It’s still true that Nix’s top-level construct is one expression used only for its value, while Ruby’s is a sequence of expressions used only for their side-effects…

                                                                                              1. 6

                                                                                                Interestingly this runs very counter to some common wisdom. See “Things you should never do” by Joel https://www.joelonsoftware.com/2000/04/06/things-you-should-never-do-part-i/

                                                                                                At my last team I used the “paying down credit card debt” analogy. You allocate a portion of your budget to it (hopefully enough to avoid the balance increasing), but you also still spend money on food every month.

                                                                                                The cynical view of this is that you kind of need to rate limit “fixing all the things” because software developers often conflate “technical debt” with “> 6 months old and not using the latest framework or pattern from my favorite blog”. The questions I usually use to guide these conversations are:

                                                                                                1. What quantifiable pain does $X cause to us in terms of velocity or outages or security exposure?
                                                                                                2. If we take action $Y, what leads us to believe that the pain will lessen?

                                                                                                So basically you have to convince me there’s a problem, and you have to convince me the recommended solution will actually fix the problem and that we can expect it to be cost effective.

                                                                                                1. 9

                                                                                                  This is a very old post at this point, and I think some historical context about Fog Creek is worth pointing out:

                                                                                                  Because of Joel’s inflexible position on this, Fog Creek ended up CREATING THEIR OWN PROGRAMMING LANGUAGE and then porting the whole codebase to C# with their hand-rolled compiler.

                                                                                                  I don’t consider that to be any less risky than a full-scale rewrite.

                                                                                                  1. 2

                                                                                                    Interestingly this runs very counter to some common wisdom. See “Things you should never do” by Joel https://www.joelonsoftware.com/2000/04/06/things-you-should-never-do-part-i/

                                                                                                    A good followup to “Things you should never do” is Lessons from 6 software rewrite stories, which is about the ways some companies are able to do complete rewrites.

                                                                                                    1. 1

                                                                                                      exactly.

                                                                                                      For the above reasons, the original post is IMO poor advice.

                                                                                                    1. 0

                                                                                                      Interesting topic but it reads so emotionally charged that it’s hard to believe there are no further personal reasons for the author to write this.

                                                                                                      Also it’s often stated that IP addresses are an extremely poor way to identify someone reliably, so why would it not be the case now?

                                                                                                      That’s especially true when most people are going to be using mobile data and not their home WiFi, so an attacker would need to do so much work just to get some even more unreliable data on whether someone has contracted covid or not. For what purpose anyway? It’s not like it’s the bubonic plague after all.

                                                                                                      The Bluetooth part I agree is a bit poor, especially the precision, but I guess if it is presented as not a perfect and final metric for social distancing then I don’t see the problem with it.

                                                                                                      Valie points but the tone is completely off in my opinion.

                                                                                                      1. 1

                                                                                                        While I agree this is emotionally charged, there are good points in there about bluetooth and privacy design in general.

                                                                                                        Why do you say that “it’s often stated that IP addresses are an extremely poor way to identify someone reliably”? If anything this proved to be reliable enough (TM).

                                                                                                        1. 2

                                                                                                          Why do you say that “it’s often stated that IP addresses are an extremely poor way to identify someone reliably”?

                                                                                                          Because that has been tested in court on multiple occasions.

                                                                                                          1. 1

                                                                                                            True that they can fail to work as proof in court. And depending or your ISP (mobile or not) they may rotate frequently leading to the wrong mobile (or not).

                                                                                                            They can still be used as correlation together with other data though. The concern here is not court use, but rather privacy disclosure. In court they are discarded because they are not enough to identify one single person, at least not without other proof. The article also suggests this by combining IP with user agent.

                                                                                                            Any service that can tie that ip/timeframe to user identity could collude with this Covid tracking service to reveal that information - this could be your ISP, or any other service that you used in a time window and can identify you.

                                                                                                            I think his point stands - compromising that service risks exposing the identity, even if not directly. It is not like there are no alternative designs to avoid this either.

                                                                                                          2. 1

                                                                                                            Exactly what @colonelpanic said.

                                                                                                            Anyway IP are quite precise indicators when you can go and talk privately with the ISP of that IP with a datestamp in hand.

                                                                                                            But only IP address means absolutely nothing: VPNs, restarting your router, changing cellular station and restarting your mobile data, all that usually changes your IP address, making it not a 1 to 1 match.

                                                                                                            That’s why browser fingerprinting is much worse as normally nobody changes that often enough (unless you use extensions to prevent some of that).

                                                                                                          3. 0

                                                                                                            Also it’s often stated that IP addresses are an extremely poor way to identify someone reliably, so why would it not be the case now?

                                                                                                            The IP address is now tied to a mobile phone and not a family home computer.

                                                                                                            1. 1

                                                                                                              Mobile IP addresses get reused very often by the ISP so, as I said, unless you are in touch with people there you won’t get anything out of IP addresses nowadays.

                                                                                                          1. 1

                                                                                                            I have been doing this for the past couple years using the Architecture Decision Record format. I’ve never regretting spending time writing one.

                                                                                                            1. 13

                                                                                                              Sometimes, Programs That Use Transactions… Are Worse

                                                                                                              You ever see a reference that is such a deep cut you feel like it’s written for you, specifically?

                                                                                                              1. 9

                                                                                                                I am personally delighted every time someone catches these. :)

                                                                                                                1. 2

                                                                                                                  Haha, amazing! Thank you for introducing me to this.

                                                                                                                1. 23

                                                                                                                  One can no more dissuade a visionary of this kind than one can dissuade a member of the Fabian Society from the virtues of global humanitarian government, but then neither will the vox populi of provincial yokels be of any use in countering it. One can only stoically resign to the pull of inexorable necessity.

                                                                                                                  With the help of an Internet search query or two, and a good deal of re-reading, I could probably figure out what this means. But I am le tired. And I haven’t even gotten through the first chapter.

                                                                                                                  This brings up a different controversy: Is writing like this useful to stretch peoples minds, help them grow? Or does it just discourage people and make them feel dumb? Is writing a form of art, or a means of communication, or both?

                                                                                                                  From my perspective, it looks more focused on artistry than actually communicating and transferring knowledge. Which isn’t necessarily a bad thing.

                                                                                                                  1. 22

                                                                                                                    It’s called “purple prose”.

                                                                                                                    1. 2

                                                                                                                      That’s exactly what I was referring to, TIL.

                                                                                                                    2. 9

                                                                                                                      From my perspective, it looks more focused on artistry than actually communicating and transferring knowledge.

                                                                                                                      Your perspective may change if you finish reading the document before dashing off to post a comment about the style instead of the substance of the source material. :)

                                                                                                                      It goes on to give a lot of historical context on previous attempts and on systems issues.

                                                                                                                      1. 8

                                                                                                                        That’s the point though - I’d happily read the whole thing, if I had the mental capacity to do so. I’m sure there’s plenty of good info in there, but it’s buried under so much prose that I feel like I need a college degree to begin understanding it.

                                                                                                                        1. 4

                                                                                                                          The point that you mentioned is a local maximum in terms of hard-to-read prose, and (from my reading up to section 2.3) I believe it is a global maximum too - the text is much nicer almost from that passage onward and I only found one other spot that I believe to be particularly egregious. I encourage you to keep going! I very much dislike the Unix culture and tooling in general, but found this article to be fascinating anyway.

                                                                                                                          1. 1

                                                                                                                            I sampled towards the end and found the prose similarly tiresome.

                                                                                                                          2. 3

                                                                                                                            Not every reader is native English speaker (and reader). Reading this style is very demanding and makes it harder to focus on the main topic. I have no idea if there are expressions hidden that I don’t know yet, or if a reference in the text is key to the final point.

                                                                                                                          3. 9

                                                                                                                            You make the mistake of implying that there’s an objective way to communicate clearly and it’s not instead dependent on the listeners.

                                                                                                                            Most tech documentations, even when assuming no previous knowledge from the reader, would be unreadable for most people for the sole reason of their structure and dryness.

                                                                                                                            You’re witnessing something written by a person that is on the boundary between different worlds and can merge them into a single piece of writing and this confuses you. It’s normal and probably the author did it deliberately.

                                                                                                                            Lot of us programmers on the left are keen in rupturing the cultural and social bubble in which the tech sector is entrenched and I wouldn’t be surprised if the author wrote the piece in this way to deliberately challenge the stylistic elements of engineer-oriented writing.

                                                                                                                            1. 7

                                                                                                                              I agree, but I think it’s just interesting that the author seems to have raised the educational bar, not lowered it. Now you have to be an engineer AND a literary genius to understand what’s being written.

                                                                                                                              And I’m not saying this is necessarily a bad thing. I’m just noting that it’s unapproachable for people like me. I’m sure after a bit more education and time, I’ll appreciate it too.

                                                                                                                              1. 13

                                                                                                                                You don’t have to be a genius to understand that paragraph, just literate. I understood it just fine and the highest formal education I’ve received is community college.

                                                                                                                                Anyone who works in software is accustomed to googling tech jargon they’re unfamiliar with and learning as they go. I think it is interesting that you balk at doing this in a humanities context and perhaps that was the point.

                                                                                                                                1. 4

                                                                                                                                  I think you hit the nail on the head. It sounds to me like you’ve put in the hard work to understand and appreciate this kind of writing, and that is truly awesome (no sarcasm there). For me, I could totally figure this out, no doubt about it. But it would still be quite the slog, because I haven’t invested quite as much hard work as you have into the humanities yet. And that’s ok.

                                                                                                                                  That’s why I say this “isn’t necessarily a bad thing.” I could use some more development in my humanities skills! But if the goal is to communicate ideas, then writing like this will only communicate ideas to a gifted few who are good at both engineering and humanities. Again: Not necessarily a bad thing.

                                                                                                                                2. 1

                                                                                                                                  If you want to start from somewhere, I suggest you read Geek Sublime from Vikhram Chandra. He’s both a programmer and a novelist.

                                                                                                                                3. 1

                                                                                                                                  Lot of us programmers on the left are keen in rupturing the cultural and social bubble in which the tech sector is entrenched

                                                                                                                                  And yet you at the same time alienate readers who’ve never studied literature in English, nor English literature. More often than not from second and third world countries.

                                                                                                                                  1. 6

                                                                                                                                    We write in different ways to reach different audiences in different ways. I never said everything should be written this way. There’s a growing idea of writing more propaganda disguised as tech opinion pieces using a language that programmers like. I mean, the far-right has been doing that for three decades now, it’s time for the left to react.

                                                                                                                                    The “poking” at the bubble is complementary and clearly doesn’t aim at reaching the masses, but just at bringing out those that have the potential to connect with those readings.

                                                                                                                                    Also I’m not American, I’m not an English native speaker and in “second and third world countries” humanities are usually valued a lot more than in the protestant anglosphere, so I don’t get your point.

                                                                                                                                4. 8

                                                                                                                                  This is the “English (Literary)” locale where it is assumed you know your leftist lore (and French philosophy). Not my thing but sometimes the references lead to interesting wikipedia pages.

                                                                                                                                  1. 11

                                                                                                                                    This brings up a different controversy: Is writing like this useful to stretch peoples minds, help them grow? Or does it just discourage people and make them feel dumb? Is writing a form of art, or a means of communication, or both?

                                                                                                                                    When I was younger I thought that impressing people with my vocabulary is the utmost purpose of my writing, but as years have gone on I have realized that this is just mental peacocking (to use a friendly term). The real greatness is to convey information (or even humor) using simple language while staying informative and engaging. I have been way more impressed with authors being able to write like this than people who just show they own a thesaurus.

                                                                                                                                    1. 6

                                                                                                                                      This brings up a different controversy: Is writing like this useful to stretch peoples minds, help them grow? Or does it just discourage people and make them feel dumb? Is writing a form of art, or a means of communication, or both?

                                                                                                                                      I would argue the former. You’ve learned a little more about the world by virtue of looking up a literary or cultural reference you didn’t previously understand. I’ve done this with plenty of texts I’ve read, in English and particularly in other languages (English is my cradletongue). Of course you weren’t obligated to do so - you could’ve decided that this article about systemd written using these kinds of literary references wasn’t worth your time to understand, and if enough people thought similarly, it would lose a substantial portion of its potential audience. But using literary and cultural references is something that writers and speakers do in pretty much every genre of human communication; and it’s only because this author happened to choose ones that you were unfamiliar with, that you found it something worth remarking on.

                                                                                                                                      1. 3

                                                                                                                                        I found it really funny. To me, that kind of descriptiveness adds humor, but maybe I’m the only one? Like putting an eccentric accent on a movie character.

                                                                                                                                        1. 1

                                                                                                                                          i found it pretty funny too :)

                                                                                                                                        2. 2

                                                                                                                                          I think the article would be much longer if it wasn’t for the use of various literary devices for compression.

                                                                                                                                          Maybe that would be for the better as more people would benefit from reading it.

                                                                                                                                          On the other hand, it’s useful to have someone shine a light on gaps in your knowledge of things which used to be well known. Certainly I don’t think that a lot of the things referred to in the writing should be particularly exotic, yet sadly they are.

                                                                                                                                          Finally, I personally get some enjoyment from reading things like these. It’s the kind of enjoyment I get from reading old books. Difficult to read but full of very interesting ideas.

                                                                                                                                          1. 2

                                                                                                                                            Is writing like this useful to stretch peoples minds

                                                                                                                                            While I do not particularly like the style of this text, I appreciate any kind of writing style that does not resemble the current “ted-talk” style uncultured vomit that is becoming the style of almost everybody today.

                                                                                                                                            1. 2

                                                                                                                                              I”m less offended by the use of some obscure terms and references than by the implicit comparison of a Gnome maintainer to a follower of Stalin:

                                                                                                                                              And if we are to take the “revolution OS” metaphor further, then Bassi’s position is not unlike Stalin’s defense of the need of a vanguard party in The Foundations of Leninism (1924), with those opposed consequently in the role of Trotskyites, Zinovievites and ultra-leftists: “The theory of worshipping spontaneity is decidedly opposed to giving the spontaneous movement a politically conscious, planned character. It is opposed to the Party marching at the head of the working class, to the Party raising the masses to the level of political consciousness, to the Party leading the movement; it is in favour of the politically conscious elements of the movement not hindering the movement from taking its own course; it is in favour of the Party only heeding the spontaneous movement and dragging at the tail of it.”

                                                                                                                                              1. 2

                                                                                                                                                Arguably, in many historical cases, such ways of expression were used to hide the real meaning, a sort of emphemization. It was especially used when it came to criticizing a point of view, to filter out as many people as possible to not bear the consequences of saying clearly what you intended to say. The more fluff and ambiguity the more you can hide behind it.

                                                                                                                                                EDIT as this comment says, it’s called “purple prose”.

                                                                                                                                                1. 1

                                                                                                                                                  FWIW, here’s my translation:

                                                                                                                                                  You can’t dissuade visionaries like this, and the popular bloggers won’t help you counter them either. All you can do is give in [and use the visionaries’ stuff?]

                                                                                                                                                  Without the context of the surrounding paras I don’t really know what they were getting at.

                                                                                                                                                  I think people write like this because it’s fun for the writer, not necessarily for the reader ;)

                                                                                                                                                  Edit: the context is:

                                                                                                                                                  • The Fabian Society is a British internationalist lefty think tank. Because they’re internationalist and lefty (but not anarchists), they’d probably really like a global humanitarian government.

                                                                                                                                                  • “vox populi” is latin for “voice of the people” and sometimes means the “opinion of the people”, but that bit is a bit clumsy anyway.

                                                                                                                                                1. 7

                                                                                                                                                  I’ve spent weeks trying and failing to implement Vault at $job, so I am sympathetic to the argument. But SOPS + KMS are simply not a replacement for Vault unless your needs are very simple. We already do basically this, but Vault offered a bunch of useful things that we couldn’t do.

                                                                                                                                                  The biggest value of Vault is the plugins you can enable to help automate more infrastructure. I want to automatically provision things like Certificates and SSH keys, with a short lifespan. I want to automatically rotate keys without manual intervention.

                                                                                                                                                  If all you need are encrypted secrets checked into git, then yes. Use this. Vault was not for you.

                                                                                                                                                  1. 1

                                                                                                                                                    Sounds a lot like what dry-types in Ruby is doing.

                                                                                                                                                    1. 1

                                                                                                                                                      The only ActiveRecord feature that is more of a footgun than this is default_scope. Almost every time I have ever used counter caches I’ve ended up having to replace the functionality with my own implementation.

                                                                                                                                                      1. 1

                                                                                                                                                        Hmmm. Is that because the cache doesn’t serve your needs, because it becomes inaccurate, or because of performance concerns (or for some other reason)?

                                                                                                                                                        1. 2

                                                                                                                                                          In my experience, a simple count of all associations is rarely what you actually need, especially if you’re soft-deleting records. Counts more often than not need to take some kind of business logic into account when being computed, and this is not possible with this feature.

                                                                                                                                                          Accuracy is also, less frequently, a problem as well.