1. 4

    I am Not a Web Developer, but can someone with a clue help me understand how the author can mix server side and client side Javascript frameworks while making his “FRAMEWORKS BAD!” point?

    If he were to restrict himself to Javascript I could see his point, but IMO tarring all web frameworks with the same brush feels less than useful to me.

    For instance, frameworks like Django and Rails are superlative tools for building simple CRUD apps which require very little in the way of custom interface. Does anyone really dispute that?

    1. 4

      There’s is a new trend now (which i don’t like), it’s to do everything on the client side – except, in most cases, but not always unfortunately, authorization.

      So basically people write “micro services” which just served raw data. You can see that as SQL/KV-Store/<whatever database> over HTTP. Because they’re using micro-services “like google in their last blog-post explained”, you can scale the software better in terms of development effort, and request load. (like Facebook said in their blog posts as well) Even though, the software will never be developed by more than 3 devs, and will never have more than 100 concurrent users.

      Also because the “micro services” still use MySQL in the background, you will still have a bottleneck on your SQL server (but that’s fine because the “micro-services are stateless” like Amazon recommended in their blog post)

      The climax of this trend is GraphQL.

      So basically, now, you have this data backend, but you need to create hyper-linkable routes, with rendered HTML data for each routes, forms to insert/update new data, and so on… (What Django and Rails would do: CRUD) So people use full client side Javascript framework to do so.

      The real advantages are that:

      • this is cool and hipster. (Investors love it. You just have to put some machine learning on top of it)
      • You have “separation of concerns” (whatever that means, because you end up with spagghetti because of the third point)
      • You can hire cheap “frontend engineers” (5 years ago they were called designers) or right out of school juniors (usually they learned basic javascript at school)
      • You can write brittle tests in Selenium (or don’t write any test at all, and have a “QA person” click through the app every time you deploy)

      PROFIT!

      1. 3

        While there are definitely some former designers working in JS on the client side, it’s far from the majority. And if you want a client side application done well, you can’t just hire cheap “frontend engineers” or you get a mess like you used to have. You should still unit and integration test aside from e2e test on the client regardless of what the server side is.

        1. 1

          We can’t really argue on this, because there’s no data back up any of our points. I don’t claim that all “frontend engineers” were designers. I know that my original comment was implying it, but I was making the generalization as part of the joke/satire tone of my original comment.

          The bottom line is: you’re right, there are many frontend engineers who have real engineering background (many people working on react.js, or on facebook’s frontend, the designers of Elm, …) However, I disagree when you claim they’re are the vast majority.

          I don’t have any number to back up my claim, but that’s true: if you just read comments and pull request on Github’s react.js project, you might think “most frontend engineers are engineers.” However, I haven’t seen that in my experience working with many companies: JavaScript is considered a toy language, very junior (with no experience) engineers are hired. Or former designers who could figure jQuery now write full single page application (in react or angular)

          The result in general is a buggy result, with no tests, all the possible bad practices, okay working. And when “the guy” (or “the gal” doesn’t matter) leaves the next “frontend engineer” just rewrites it. (and the next, and the next, …)

          1. 2

            I’m not sure on your experience, but I’ve worked at a lot of companies and I’ve only heard a few elitist types of individuals who called JS a toy language or assumed just anyone can do it. I’ve heard that on the server side when it comes to PHP from the same types, though.

            I think you’re being unnecessarily harsh on client side work in general when server side work is often just as buggy, untested, and just enough to “work” now and again to keep the team going with the worst possible practices. It’s not a client vs server thing, it’s just a fact of working in the “engineering” umbrella.

            That said, I’ve worked with a ton of people who never went to school for CS or anything even related (myself included) who don’t even consider themselves engineers. My title says it, but that only changed within the last 5 years or so. It used to say “developer.” It’s a marketing thing for companies to say devs are “engineers” because people attach some significance to that term, but not to “developers.”

        2. 1

          You couldn’t be more right on this ine. I am working as a freelance developer and the last 3 out of 5 projects were exactly that: Throwing buzzwords around, glueing stuff together. Using micro services but still have so many dependencies between each module that it’s basically a harder to seploy monolith.

          1. 1

            I’m currently building one of those websites that does everything in the frontend. There are a bunch of real advantages. My primary reason was I want to write a very efficient server app for when I get more usage but for now it would be best to continue using rails because thats what I know best so I want the backend to be fairly easy to replace later and not having any app logic in it makes that a whole lot easier. The backend is mainly just an api over a database which validates things the client sends.

            Another advantage is you get a rock solid, complete API for other people to use with no extra effort. Most online services have websites that do things that simply can not be done via the API. When making an app that just exchanges JSON with the server you end up with an API that can do everything the website can. Someone else could make an alternative website using my backend and there would be no issues.

            Also after the first page load it will actually require less data sent over the network because the whole website logic is cached and only a tiny bit of json is sent on page loads.

            1. 2

              Of course there are many advantages. I don’t deny them: no reload is cool, having a universal API is nice, heavy caching of the static assets is awesome, …

              But there are many disadvantages:

              • Was SEO finally fixed? When I was still on the topic people used to serve an alternative page to google to get indexed. I heard that now google was running a full javascript engine in their crawlers. Is that fixed now? I haven’t checked further. You might say “We don’t care about SEO”, but as a user of your website, I want to be able to use google/bing/duckduckgo instead of your badly performing internal search engine when I’m looking for content.
              • There are still disparities between javascript dialects of each browsers last time I heard. If you do a server-side rendered website, you just have to care about HTML/CSS, now it’s one more language to support.
              • You will most definitely break on legacy browsers (IE6 which is still used in China), or text based browsers. (Lynx, w3m, …)
              • Your single page application (SPA) might not have all the correct aria elements for disabled people and screen readers: If you just do links and buttons with label, most screen readers will get it right.
              • You have to handle things that the browsers does for you. For example you click on a link, and the network goes down, the browser display a page “connectivity issues”. With an SPA, you have to handle failures and display the message yourself when your XHR request fails.

              That’s just the technical side. What I’ve seen is the mess it brings on the human level. Of course in you’re case if you’re alone, or with compatible developer, it will be smooth. But I’ve seen teams split by management or the employees themselves.

              Either management says “we need to share the work load, let’s have a ‘frontend team’ and a ‘backend team’.” Or, in some other case, the employees have the mindset “I’m a frontend dev, I don’t do Python”, “I do backend, not javascript”, … In both cases, you have huge friction “when do you send when I request that?”, “you told me you added this feature but it doesn’t work on staging!”, …

              1. 1

                Thanks for the comments. Those are some pretty good points. I’m currently working on this myself and just working things out.

                Was SEO finally fixed? When I was still on the topic people used to serve an alternative page to google to get indexed. I heard that now google was running a full javascript engine in their crawlers. Is that fixed now? I haven’t checked further. You might say “We don’t care about SEO”, but as a user of your website, I want to be able to use google/bing/duckduckgo instead of your badly performing internal search engine when I’m looking for content.

                I’m not really sure but my website doesn’t really have much searchable stuff anyway. It’s mainly based around maps where 90% of the data you look at is uploaded by you.

                You will most definitely break on legacy browsers (IE6 which is still used in China), or text based browsers. (Lynx, w3m, …)

                I’m not really concerned about this as my mapping library also doesn’t work on these also my website is probably automatically banned from china for being not hosted there.

                Your single page application (SPA) might not have all the correct aria elements for disabled people and screen readers: If you just do links and buttons with label, most screen readers will get it right.

                The framework I am using makes it very easy to control the HTML that gets generated so I have had no issues making accessible pages

                Overall it’s worse in some ways and better in others. I’m not sure if its the best way to do things but it has been a great learning experience.

                1. 2

                  If you do something with maps, heavy interactive (like google maps), and very little text. I think you don’t have any other choice: doing single page application is fine. (and maybe best)

                  In most cases, I’ve seen people write CRUD single page application. (Like an ERP) I consider that non-sense.

        1. 22

          IMHO this article could have done a much better job of saying “don’t blindly trust the framework but also think about how things work underneath”.

          I do get the point that the author is trying to convey. But unfortunately the language that’s used and the tone in which it’s conveyed makes the advice come off wrong-ish.

          1. 5

            It took me half way through the article to realize the author is probably serious. The tone of the language lends itself to parody very well.

            1. 3

              I agree. At first, when I read the title, I thought “ohh.. We’re just going to disagree on this one…”. I had to maintain countless Python application just doing SQL/CRUD and the previous engineer either glued Flask and SQLAlchemy together in a bad way, or worse invented their own framework based on WSGI. And every-time, I just migrated it to Django with half to a tenth of the original lines of codes.

              Then, I read the article, and all it says is “please understand how frameworks work under the hood”. Which I totally agree with, and that’s what I always teach juniors when I train them with Django or Flask.

              In a nutshell, the title is totally clickbait.

            1. 11

              Every time one of my users inadvertently reports a bug by describing a problem followed by asking “is this normal?” I feel shame for our entire profession.

              1. 5

                Tell me about it… I got into a heated debate with one of my coworkers. They were claiming our product worked “because users don’t complain about it.” Our tests actually show that our product perform badly (in terms of correctness) and our Sentry is full of errors.

                It is a well known fact that, when using computers, users just always blame themselves when the software is buggy: “Oh I used it wrong”, “Oh I did something wrong.” I see that everyday with my 70 year old parents when they use any shitty web application.

              1. 2

                I disagree with the author. And very much agree with @apy’s comment.

                I wrote (3 years ago) what I considered at the time a nice API to fork/exec/pipe out in python. It is old now, and might not be the best Python code according to my current clean code standards. (Also it doesn’t support Python 3’s asyncio) I would need to get back to it and fix it, but I never gain a user base.

                Sorry for the self-promotion plug :) .

                My point is: shelling out is awful, I agree. fork()-ing, exec()-ing and pipe2()-ing is totally fine. And sometimes, it can lead to better separation of concerns and security. (Actually that’s what postfix does, and it’s consider as one of the most secure MTA out there)

                1. 8

                  As a French guy living in Germany, I’ve never seen a non-compete clause in my whole life. They are legal in both countries, but they’re highly regulated.

                  As far as I know the German law limits the period to 2 years, and forces the employer to pay at least 50% of the last salary during the non-competing period. And the french law says that there should be a limit of time and location given in the clause itself, and a compensation should be given during the period in question (the exact salary ratio depends on your job, but it can’t be less than 33%, most white collar jobs are around 75%)

                  Because most employer don’t want to throw money at former employees after they leave (except for big corporation CEO positions), I’ve never seen such clause.

                  When I read about these clauses in the US, I sometimes feel like it’s the wild west over there. Are these clause enforceable outside California? Are these clauses regulated (compensation, limit, …)? Or is that just legal fluff to scare off employees from leaving?

                  1. 3

                    Are these clause enforceable outside California?

                    Absolutely. And they’re not just limited to high paying jobs. The fast food sandwich chain Jimmy John’s makes their employees sign non-competes that keep them from leaving to work at other fast food establishments that sell sandwiches within a within a 3 mile radius [Source].

                  1. 2

                    I like how this gets downvoted as “off-topic” while this, this and this (same topic) got upvoted.

                    See, ya’ll do have a cultural problem. On topic.

                    1. 8

                      Two of the three stories you linked to also have a significant number of off-topic downvotes, so maybe people really do think this class of content is off topic.

                      1. 5

                        Those were on topic because they were centered on tech (though they each got a number of off-topic flags nonetheless). This is not.

                        Edit: Chatting with itistoday, he gave a timecode for where they talk about Damore that I’ve added into the link.

                        1. 1

                          Edit: Chatting with itistoday, he gave a timecode for where they talk about Damore that I’ve added into the link.

                          Thanks, and for whatever reason the link isn’t pointing to the timecode, which is at 34m17s, so here is a direct link to where they talk about Google’s James Damore case.

                          It’s also relevant/interesting banter/convo for moderators on social media to consider, IMO. Those in “tech” are increasingly finding themselves now to be stewards of what is and isn’t socially acceptable.

                          1. 6

                            I’ll note in this that he puts emphasis on NLRB confirming they could fire the guy. Technicalities and ideal world aside, you can get fired for about anything or nothing in many (most?) states. This is double true if your company has a bigger legal team than you. Companies led by conservatives do it all the time. I have plenty of first and second hand accounts of that which will never be in one of these talks since they don’t look for them. Republicans, the conservative party, also are fine with workers not having rights in the first place (i.e. “at-will employment”) while owners/shareholders get all kinds of special treatment. So, some guy getting threatens his company’s image with them trashing his career. That’s totally normal for big firms. The ability to do that is certainly worth fighting but this isn’t new or just anti-conservative.

                            The first, good claim was where guy in red said something based in culture would be easier to democratize than something based in biology. Trying to quickly refute that made me go back and forth in my head a bit. This one is worth some deep thought on since it seems to have a lot of truth built into it. I think religion, which he brings up later, weakens his argument a bit on culture being so much more amenable than biology given conservatives of several groups will go with words from anonymous sources on paper or other influencers in day-to-day life over actual evidence of what people do any time or day, especially from biology research. I think him making culture seem more malleable than biology is weak given they reinterpret biology or other sciences using their cultural views. Changing data to fit one’s theories isn’t science: it’s supposed to work other way. ;)

                            Note: The reproducibility crisis, fraud, lack of checking, etc shows quite a bit of science operates as a religion as well. They deserve to be called out, too. If you see “science” here in positive light, it’s about those actually taking hard looks at stuff responding to peer review.

                            The woman on the left mentions people get fired or worried about it because they dared to have a different opinion which was (conservative traits here). What she leaves out is these types were protected for all kinds of unsubstantiated, annoying or screwed up opinions for a long time with folks truly different (eg liberals, gays, blacks) taking the damage from them. Often still true. Declassified documents even had the U.S. government sending teams to infiltrate them, get them to break up with spouses, dangerous experiments, and sometimes murder with stuff like syphilis or uranium. Then, in some places, the power structure has shifted where people of different beliefs have reversed whose the outsiders with the penalties so far being financial or social ostracism. Not as bad as those before them but certainly bad. The logical conclusion in a fair discussion is bringing up both systematic oppression of unusual ideas (or even decency) by both conservatives and liberals to show how universally damaging these patterns are. Then, one presents methods to counter that when both (all) do it. That they’re focusing on one as aggressor and one as victim says this move might be propaganda similarly to the subset of liberals conservatives call SJW’s. Bonus points for her bringing up religious as a form of victimization when church-backed laws are denying people rights in states everywhere with the older ones actually advocating murder of atheists or pagans with rocks to head or fire to body.

                            Best part of this video for me happens when woman in the middle talks about whether we should question beliefs or be obedient/sensitive. That starts here. She describes how she teaches things with expectation that people will question everything about them to learn. However, when she got texts on feminism, whatever those were wanted unquestioning belief with straight-up insults or making villains out of people who asked questions or otherwise rejected the core doctrines. That’s a real problem that applies to more than feminism which I’ve fought here on this site usually on the liberal side where disagreement equals some evil or in this case some BS by conservatives that’s setting them up as victims instead of people with often-aggressive views folks disagree with or react to in typical ways. I agree, though, people should ideally always be able to disagree with your views in a rational manner analyzing what they’re built on, the truth of that, the truth of what follows, traditions, reforms, and so on.

                            Preferably, we make this something that can’t get us ostracized from our social circles, workplaces, etc. I’ve seen specific people do better than average here and elsewhere on these things where I know it can happen in smaller groups or incrementally. We better know it’s not going to happen in the big picture, though, because the ingroup vs outgroup mentality is probably… biological! It’s an inherent weakness of how the mind works across most of the human race that we must accept will keep all this going. You see this when they, like most groups, don’t falsify the very beliefs they’re presenting even as they talk about falsification of beliefs. That they and their opponents have this weakness… like all of us… means it’s even more important to legitimize disagreement, eh? And yet, the same trait is why each groups’ sides that are highly emotional and/or dogmatic don’t want to allow that. They want all disagreement silenced in some way. (throws hand up) What can be done… (other than call out each sides’ BS when it shows plus encouragement of better paths)

                            1. 2

                              Corner case in undeleting - it doesn’t also apply any edits in the form. I’ve added it.

                          2. 4

                            I did flag this off-topic, personally. While I’ve always been a supporter of total free speech[1], and while I’m not comfortable with the direction free speech is going those days, I don’t see how this is related to tech or the culture around it in any way.

                            [1] as opposed to “free speech” where people mean “I (myself) should be able to say what I want while others should shut up” (on both side alt-right and/or SJW)

                            Edit: after @pushcx’s edit of the story, with the timestamp, this comment is now false (and I removed my flagging)

                          1. 4

                            Aha, glad to see more people thinking of replacing prelude, especially Snoyman!

                            The Foundation project aims towards the same goal, but I guess having a FP-complete backed alternative cannot hurt!

                            [edit] Right, posted this comment too soon! This is a different approach, they plan to actually reuse the existing libraries. This is definitely nice, hopefully the prelude problem will definitely be fixed in 2~3 years from now.

                            1. 3

                              What “Prelude problem” ?

                              1. 5

                                The project README more or less states the problem:

                                The RIO module works as a prelude replacement, providing more functionality and types out of the box than the standard prelude (such as common data types like ByteString and Text), as well as removing common “gotchas”, like partial functions and lazy I/O. The guiding principle here is:

                                • If something is safe to use in general and has no expected naming conflicts, expose it from RIO
                                • If something should not always be used, or has naming conflicts, expose it from another module in the RIO. hierarchy.

                                Snoyman and FP-complete are trying to move Haskell more in the direction of a batteries-included solution for software development. The Haskell Foundation project mentioned by @NinjaTrappeur above is attempting the same thing.

                                Many of the changes RIO makes as a Prelude replacement solve problems beginners don’t know they have until they’ve been coding a while in Haskell. Using String rather than Text or ByteString is one of the most common mistakes beginners make. And why shouldn’t they? It’s right there in the “base” of the language. And then you learn, often after months of coding, String performance is a disaster.

                                Whether RIO is the right solution, time will tell. That it’s a step in the right direction, is beyond doubt.

                                1. 5

                                  I personally use Protolude. The problems it solves (for my projects, on my computer, for my use cases) are:

                                  • head :: [a] -> a becomes head :: [a] -> Maybe a (and all the other partial functions that throw error "message", like tail and so on…)
                                  • everything is Text
                                  • convenience functions that I used to copy in all my project, for example: toS which convert from any string-like (Text, String, ByteString, …) to any other string-like.
                                  • foldl, head, … are on traversable not just lists
                                  • a lot of other stuff, that I’m missing at the top of my head
                                  1. 2

                                    afaik, it’s the issues connected with the standard prelude, either concerning inefficient data structures (String is defined as [Char], ie. a linked list) or simple lack of utilities, which are then afterwards commonly installed by many uses (eg. Data.Vector). Many other “alternative” preludes have tried to replace the standard, but most of them can’t manage to get any significant adoption.

                                    That’s at least what I understand when someone says “Prelude problem”.

                                    1. 2

                                      The Foundation README gives some information about this “problem”, RIO gives other arguments. The two main issues people have with Prelude is partial functions and Lazy IO, as fas as I can tell.

                                      1. 1

                                        @akpoff, @zge and @lthms pretty much summed up the problem.

                                        I would also come up with another problem class: “legacy semantics”.

                                        [EDIT] The following statement is wrong.

                                        The most notable offender is the Monad typeclass. As it is defined in base (prelude is re-exporting parts of the base library), Applicative is not a superclass of monad. Those two typeclasses are actually completely unrelated as it’s implemented. In other terms, you could end up with a Monad not being an Applicative. Some people are trying to fix that directly in base, some are trying to fix that in external libraries such as Foundation.

                                        In the end, it is not such of a big deal for an intermediate/experienced developer; however, it is quite confusing for newcomers. Not knowing what you can safely use from the standard library is not a really nice user experience in my opinion.

                                        [Edit] As a side note, I am saddened to see that the return keyword is preferred over pure. This keyword has a totally different meaning in procedural languages (ie. 90% of the languages), using it in this context is just a constant source of confusion for newcomers…

                                        1. 1

                                          Applicative has been a superclass of Monad for quite some time in GHC base. I disagree with the change (breaks compatibility) but understand why they did it.

                                          1. 1

                                            Oh yes, you’re right, my bad!

                                            See monoid and semigroup, the problem is quite similar.

                                    1. 7

                                      Ada, as unsexy as it is, is in this category.

                                      Edit: Although its option/discriminated union types are less robust and pervasive than Rust et al.

                                      Honestly Rust is probably your best option, syntactic quirks aside, if it has the semantics you want. Everything else either lacks some of your features or has a precariously small user base.

                                      1. 2

                                        Add SPARK to that for more safety than about anything can give you outside dynamic allocation. Ada doesnt have Rust-style protection for that.

                                        1. 1

                                          I don’t mind a small user base, as I explained I’m looking for a community. On the other hand this is for a hobby, not for professional development.

                                        1. 20

                                          I think what I’m looking for is Rust, but I don’t like the syntax, I’m looking for a language without any garbage collector, with option types (instead of exception or return codes) and algebraic data-types.

                                          You’re looking for … Rust. Not to be rude, but since when was syntax a good reason to exclude the exact thing you’re looking for? Particularly a very standard syntax at that.

                                          1. 1

                                            If the syntax is an issue then I’d say it’s not the exact thing that they are looking for.

                                            1. 10

                                              I guess my meaning is that syntax really should not be an issue when it comes to choosing a programming language. It is literally superficial, compared to everything they are looking for.

                                            2. 1

                                              Yes, you’re right, the syntax is the last thing I don’t like about the language.

                                              What I don’t like the most is the community. (it sometimes reminds me of the Rails community) Of course the community doesn’t do the language, but it does the libraries that I’m gonna use. And the Rust community is composed of a big chunk of inexperienced clueless programmers wrapping everything they can’t figure out in unsafe blocks. I don’t have an example in my hands, but I’ve seen many library written by people not understanding programming 101 (if bool { true } else { false }, …)

                                              I was hoping for a language like Myrddin (which I’m really following, but it still have manual memory allocation) with community à la suckless.

                                              I also don’t like how Rust solves some of its design problems with unsafe blocks. Add to this the community and the syntax (ability to do the same thing with 5 different syntax), and you have an okay language with cool concepts, but it doesn’t excite me.

                                              1. 7

                                                What I don’t like the most is the community. (it sometimes reminds me of the Rails community) Of course the community doesn’t do the language, but it does the libraries that I’m gonna use. And the Rust community is composed of a big chunk of inexperienced clueless programmers wrapping everything they can’t figure out in unsafe blocks. I don’t have an example in my hands, but I’ve seen many library written by people not understanding programming 101 (if bool { true } else { false }, …)

                                                I’m sorry. You don’t like a global community, probably because some of the head figures stem from the Ruby community, but you don’t have an example at hand?

                                                Gosh, It’s a new language, just gaining traction. It’s natural that people tip their toes and it’s great that people that previously didn’t touch systems programming or a functional-like language do it.

                                                Many core libraries (especially the regex libs and all the stuff in nursery) is top notch, Servo is a huge project and we have reached a level of integration - for example into build and cross-compile toolchains - that only Go can currently match in that space.

                                                I’m happy we are not like the suckless community - no one would care about us then, because elitists don’t spread a language well.

                                            1. 9

                                              Ats? ats-lang.com

                                              Tries to unify formal specification with the implementation.

                                              1. 2

                                                The Documentation link on that webpage doesn’t work …

                                                Edit: Here is the latest website: http://www.ats-lang.org/

                                                1. 1

                                                  Yes, I don’t know whether I’m gonna use it. But this is this the kind of language I’ve never heard before, that I was expecting from this thread. It looks pretty cool. Thank you.

                                                  1. 2

                                                    I have some writings on ATS if interested. It’ll give an idea of what it can do.

                                                1. 17

                                                  I might just be a French person who can’t grasp all the intricacies of the racial issues in the US society. But I’m not seeing the problem here…

                                                  If your company wants to sell cosmetic products for natural long blond hair, you’re not going to advertise to black men, I’m pretty sure you want to advertise to white women to reach your market.

                                                  Now, I am indeed bothered by the fact that Facebook is a world database of people classified by their names, religions, skin color, and political opinions. But maybe this is just me being a European who’s been told since middle school that this kind of practice is the root of all evil because Nazis and Soviets did it.

                                                  1. 9

                                                    I think this gap in sensibilities and perception between the US and Europe is only widening.

                                                    It’s as if tracking the most intimate details of people’s lives for profiled advertising is ok, but once you sell ads to a black/white/other ethnicity, then the ethical line is crossed? That line has been crossed long ago, sadly.

                                                    1. 7

                                                      I might just be a French person who can’t grasp all the intricacies of the racial issues in the US society. But I’m not seeing the problem here…

                                                      Well, leaving aside moral issues, in some categories, like advertising housing, any form of discrimination based on race is simply illegal.

                                                      1. 7

                                                        In the united states there is still a huge problem with racial discrimination. Racial seggregation did not end until the 1964 civil rights act. That was only 52 years ago, and of course it took a long time for people and governments to actually change to catch up with the law. There are still people alive today affected by seggregation, jim crow and share cropping. (which was also still ongoing into the 50’s) If facebook gives people the option to avoid advertising to black americans becuase they are racist and don’t want black customers, it is a huge deal becuase people already do this offline. Its illegal to discriminate based off race, and it is still a somewhat common thing that happens.

                                                        1. 2

                                                          Legal segregation didn’t end until 1964. Unofficially it continued on, in parts and in places, until today. We’re heading in the right direction, and for the most part our hearts are in the right place, but we don’t always take the most direct path to an improved world…

                                                          1. 1

                                                            Yeah I think this is the big important detail that non-americans don’t get about our culture. There are people alive in america today whose parents were slaves because of their race.

                                                          2. 1

                                                            “Now, I am indeed bothered by the fact that Facebook is a world database of people classified by their names, religions, skin color, and political opinions.”

                                                            You’re not the only one. Many Americans feel the same way where we fought for private alternatives as long as we could before all these kinds of services dominated. Many won’t share anything too personal on Facebook. Others don’t use Facebook. Others don’t carry a cellphone for fear of tracking or recording. These privacy-oriented crowds are a small niche that seems to get smaller over time. There was a slight boost in the numbers post-Snowden but most won’t migrate off the surveillance platforms since there’s a networking cost. All their friends, data, or favorite activities are on the thing they need to leave. Many of them are putting more activities on a similar platform right as I type this. ;)

                                                            Anyway, Facebook is so bad some groups even joke about it similar to what you’re describing:

                                                            https://www.youtube.com/watch?v=cqggW08BWO0

                                                            1. 1

                                                              This feature could be used to upcharge one race over another which is of course illegal. It’s one thing to have ads that are for one particular demographic, it’s another entirely to have ads which can only be seen by one demographic.

                                                            1. 2

                                                              I mean, owen already explain the downside of UUIDs, but I’m surprise people don’t react to “Over normalization”, that just makes me cringe. I agree you shouldn’t over normalize (going NF7) but BCNF should be the target IMHO.

                                                              The example given is even worse: “In the above case categories could very easily just be an array of varchar fields on a post”. What does it mean? Coma separated in a VARCHAR field? I don’t understand. Or a postgres array? I mean, in my opinion both are bad, the VARCHAR coma separated field prevent indexing, and easily query for: “all post in category X”. And the postgres array just lead to duplication. And a JOIN with the right indexes is pretty fast and cheap.

                                                              1. 1

                                                                I have to admit that I’ve read enough articles about databases written for an audience who self-define as not knowing better, that I find them hard to concentrate through. :) Properly justifying opinions about database practices tends to require a lot more detail than this sort of thing goes into. As such, I didn’t react to this one really.

                                                                I totally agree with you about BCNF. Is NF7 a real thing, or is it a joke about an imagined progression past 3NF?

                                                                1. 2

                                                                  It was a joke about an imagined progression past 6NF.

                                                              1. 2

                                                                “Interdiction” is a bit of an unusual word in English. You should translate it into “banning”, which is more common.

                                                                1. 2

                                                                  Ahhh… I can’t edit the original post anymore :( . If an admin can s/interdiction/banning/ that would be great. Thank you JordiGH for the suggestion.

                                                                  1. 3

                                                                    Oh, no, no, it’s okay. Just, you know, for next time.

                                                                    I like this essay about the translator’s task.

                                                                1. 4

                                                                  Maybe I’m pessimistic. But the thing that bugs me is that he had a clear position about the public WiFi, but he never answered the question about Tor.

                                                                  1. 6

                                                                    It’s a pretty safe bet he had no idea what “Tor” is and didn’t want to make statements in ignorance. I wouldn’t worry too much until we get an official statement (or official actions) that mentions it.

                                                                  1. 3

                                                                    I use Telegram, not by choice. Text secure has been removed from F-droid., and I refuse to install any google app (including google play) on my phone.

                                                                    I don’t use Telegram for encryption, I use it because it’s the only open source messaging app à la whatsapp available on f-droid. If you want to use it for security reasons, I wouldn’t recommend it.

                                                                    I’m in the process of switching to Conversations with my own XMPP server and OTR.

                                                                    1. 1

                                                                      sweet. I will have to try this so that I can convince more people to write web servers in C++. People laugh at me, except that my shit is always faster, cleaner, and more memory efficient than theirs.

                                                                      1. 2

                                                                        I somehow doubt your shit is cleaner than the Express, Flask, or Sinatra equivalent for, say, a simple endpoint.

                                                                        Example?

                                                                        1. 1

                                                                          I’m not talking about my own HTTP web server. I’m talking about Python code on Flask vs say C++ on Seastar.

                                                                          1. 2

                                                                            I’m not sure Seastar is the same thing as Flask. Flask would be Wt or CppCMS (which by the way uses asio). But Seastar, from my undertanding, is more like asyncio or twisted/trollius, it’s to write network/tasks stuff, not web stuff.

                                                                            People have this tendency to think that server = web server. You would write a PostgreSQL, MongoDB or Nginx with Seastar, not a website.

                                                                      1. 4

                                                                        I can’t disagree, but containers are only the messenger; they make this obliviousness to trust issues visible. The author does say that, though!

                                                                        1. 6

                                                                          Trust is not the main issue here. The real issue is the culture of blobs and pinning libraries' versions. Part of the problem is the lack of backward compatibility in software and libraries.

                                                                          So you end up with software depending on very old libraries (version of the said librairy which is insecure). On the other hand, in a distribution ecosystem, libraries are shared between programs, and kept up to date.

                                                                          The blob culture is docker, vm disk images, nix, wget | sudo bash,…

                                                                          1. 8

                                                                            I think there’s a cultural problem, yes, but it’s largely a result of the design of Unix no longer being fit for purpose, given the way that technology has evolved from the ‘70s. Much of the accumulated wisdom of sysadmins is dealing with decisions taken when Bell Labs was full of swinging neckbeards and VAX 11/750s, and has little to offer to the world where there simply aren’t users in the Unix sense any longer.

                                                                            People are flopping around like gaffed fish not because they want to but because the received knowledge no longer fits the facts and they are being asked to make decisions without any confidence in what they know. We as an industry simply do not know how to build complex systems; the world of Unix software has finally tipped over the edge of the curve from “useful if obscure” to “pointless cargo-cult nonsense” in the minds of many.

                                                                            1. 3

                                                                              I’m somewhat befuddled how the problem reappeared in such a virulent form. Upgrades vs. compatibility are an issue, yes, but that’s what interface-version numbering addresses. If a new library version is compatible in interface, you upgrade in place; if it has incompatible changes, you bump the soname and install alongside, without replacing the old one. At some point you have to decide when to retire support for old versions, but until then they can live side-by-side. For example there is no problem on Debian with having libfoo2 and libfoo3 both installed. In the web world, REST interface design even seems to sort-of follow this approach.

                                                                              I don’t see how baking in some foojs1.2.3 into my Docker image helps this. Either 1.2.3 is an interface that is still supported, still gets bugfixes, etc., in which case you could give it a distinguishing interface-version name and just have it live in the parent image. Or it is not supported, in which case it is not safe for me to have it baked into an image at all. Is it some deficiency of version handling in tools like npm/CPAN/etc.?

                                                                              1. 2

                                                                                I mean, version pinning is a defensive move. Unfortunately, library creators differ very dramatically in their attitude towards backward compatibility. Yes, it would be ideal if nobody ever used libraries that can’t be trusted to be stable and well-tested… but even in that scenario, nobody wants to spend a month making sure that dependency upgrades don’t introduce regressions, three months into a tight six-month timeline. Version pinning makes a lot of sense at that timescale, as long as there’s a plan to not let that turn into versions that are years old…