1. 3
    1. It can’t do anything technologically useful.
    2. It should be fast at doing what it does, so that it is safe to call LOLWUT on production instances.
    3. The output should be entertaining in some way.

    This is irritating to all of us with open PRs for real improvements, bugfixes, and enhancements that are starved for attention.

    Because of the master-slave fiasco and intense work involved with scrubbing everything, he now needs a diversion to like working on his own project again? That’s great, it’s over – now let’s get back to brass tacks and fix defects, finally finish replication enhancements now being worked on for 2 years, finally wrap up streams (Salvatore’s pet project nobody asked for), and improve performance to play catch-up with other datastores.

    1. 30

      Or, antirez can spend his time as he sees fit, just like any other FOSS maintainer.

      1. 9

        I’m sorry your PRs weren’t getting attention, but it was very important to change a word and the negative discourse associated with that (and this resulting cry for help) were much more critical to spend cycles on.

        You can’t prioritize software quality over Twitter grumping, that’d be silly.

        1. 6

          I haven’t followed the details of the master-slave kerfuffle, but it seems to be simply a failure of community management. As a lazy maintainer, it seems like the proper route is just to say “I acknowledge that people feel so strongly about this sort of terminology and will happily accept PR’s to fix the problem; this seems like a good candidate for new contributors to get their feet wet with” and link to a connected issue tracker.

          Then after a year or two of no nobody submitting fixes you close the issue as WONTFIX and get on with life.

          Edit: That said, taking a break from the stuff you have to do and making something functioning, silly and completely irrelevant in the grand scheme of things can be deeply satisfying. Sometimes you need that sort of thing to remind us why we love doing what we do.

          1. 3

            Yeah, I still don’t understand how Twitter discussions can have this impact on people’s lives.

            Together with just some wording used since the beginning of IT. So why can’t words acquire new meanings? Isn’t that the definition of a living language?

            1. 3

              Because the people are suffering from some kind of delusion.

              I would like to see the budding young DBA-to-be who veered off IT/CS/STEM because he or she got triggered by the word “slave”.

              Or even honest testimonies along the lines of “I was always interested in code, but I’d suffer immense panic attacks when I saw the word ‘blacklist’. I’m a Person of Color so this touches me deeply. The maintainer was kind enough to rename it (we settled on disallowlist) and now I commit a few times a year to the project. I have never felt this included and welcome in my life. Best of all? No one even complained about the broken APIs after the rename!”

              1. 1

                What I find weird is the “matter of fact” tone plus many contributors (not necessarily the maintainer) caving in right away, as if they also felt dirty while typing “git push - u origin master” or felt all the weight of worldwide injustices when the main DB switched to the “slave” one. I was relieved reading sane supporters though.

              2. 2

                Yes words do this constantly. But only in a negative way. Negative connotations tend to hang around. That’s why using these words is problematic. Also impractical, since you’d have to add a disclaimer that you mean the word in the new sense not the broadly known old one. If someone knows an example of some words changing from negative to positive connotations I’d be happy to hear about this.

                For the current example I honestly don’t understand the quarrels people have. Why is dropping language that’s strongly tied to a history of colonisation and oppression a bad thing? Especially when other words can describe the same architectural pattern as accurately as the original words?

                And every programmer knows that choice of words is important, we shouldn’t use them too lightly.

                To turn the question around: So why can’t concepts get new names if the old ones are problematic?

                1. 7

                  If someone knows an example of some words changing from negative to positive connotations I’d be happy to hear about this.

                  • Fun - to cheat or hoax
                  • Smart - a sharp stinging pain
                  • Fond - a fool
                  1. 4

                    “Nice” is one of such words. It meant foolish and silly.

                    The problem isn’t much about naming by itself: you want to use “disallowedList” and “allowedList”? Want to use “primary” and “replica”? Want to use “kaka” and “popo”, do as you wish. But going ahead and picking a project at seemingly random and force them to change words that have been picked as they are (or used to be) the standard name of those elements in a somewhat aggressive way then that’s where I’m drawing the line.

                    Or creating chaos on the issues section or on social media, extending the use of such standard words to the morals of the maintainers, that’s totally disgusting and absolutely useless.

                    What I find even more shocking isn’t the vocal part that enjoys stirring up drama for whatever reason (there is clearly a reason why these groups are doing this and it cannot be to make the tech world a friendlier place, that’s for sure) but it is people who just shrugs them off or who, just like you, now supports their point because they are somewhat technically correct.

                    Let’s start harassing all Spanish speaker developers who use the word “negro” for their black elements, how about the word “sheet” that reads as poo in Swedish, how about the word “pitch” that is extremely similar to a bad word in some Slavic languages, and “git”?

                    That is and would be dumb to do. Also, why is the “American” morality be pushed down the throats of the rest of the world? Just because they still cannot cope with their past, is that a good reason to force everyone to change their behaviour?

                    1. 3

                      I share the idea that this debate is totally dumb. There were intellectuals in the 90s that brought this up with Intel and IDE controllers. PATA went away and that debate didn’t matter, but now we see the same bullshit arising again.

                      The most vocal people in this fight are extremely childish and troll/harass developers. That’s not right. If you take a reasonable stance, you’re a racist.

                      I’m tired of outrage culture.

                      I highly recommend Brendan O’Neil’s speech on offence: https://www.youtube.com/watch?v=BtWrljX9HRA

                      and I also recommend the original post about this debate with ver well reasoned arguments:

                      http://antirez.com/news/122

                      1. 2

                        “In fact, pretty much every leap forward in history… pretty much every freedom we enjoy is a product of individuals having given offense. Having offended against the orthodoxies of their age. Offensiveness is not something we have to begrudgingly accept. Offensiveness is the motor of human progress.”

                        I’ll add the people against offending folks are defending beliefs created by offending folks ranging from speech to progress. Just like he said. They wouldn’t exist if their rules were enforced by the orthodoxy of the day when people were trying to get those reforms started. So, they glorify the reformers who offended piles of people creating their current belief systems but say nobody is allowed to offend their orthodoxies suggesting alternative systems. Double standards are a common sign of bullshit.

                        Edit: Oh, wait, he just said that, too, later in the speech. I’m still watching it.

                      2. 2

                        how about the word “sheet” that reads as poo in Swedish

                        I don’t want to get into the broader discussion again, but I speak fluent Swedish; sheet /ʃiːt/ does not look or sound like skit /ˈɧiːt/.

                        1. 1

                          Can’t argue with you, I just looked up English words which sounded/looked like bad words in other languages. Maybe they had something specific in mind, don’t know :)

                        2. 2

                          IMNSHO the use of the word “slave” isn’t as simple as being “American”. The African slaves were often sold off by their own chieftains, and different types of slavery have existed and (may be argued to) exist around the world.

                          The point about stirring up shit is more relevant. These are homonyms; a word that sounds the same or is spelled the same as another can have different meanings, as rhe examples above.

                          The slave in an IT or mechanical context simply isn’t the same type of slave that picked cotton in the southern states.

                          I’m sure there are plenty of Slavic lobsters here, but I haven’t read a single comment, here or elsewhere, of one of them being triggered by the etymology of that word.

                          1. 2

                            Exactly and that’s because on a global platform, filled with people from all around the world, with absolutely different cultures and languages, people (including myself) are not going to ruin someone else’s day just because they used a word which was/sound/looks/is derogatory in my own language on something totally unrelated.

                            If there was something totally unacceptable, one could look into why such a word was chosen or if it was intended at all, inform them privately of the thing (if, say, they are interested in being known in those countries) and move on. Not starting a debate about something pretty much every single culture in the world has had.

                            This seems to come from the wave of social justice which is plaguing certain countries, where one is offended for someone else and wants to be their saviour, while making everyone more miserable in the process, probably to achieve a “victory” for humanity or just themselves.

                            1. 1

                              It’s not specifically American at all. Human trafficking rings (a polite euphemism for ‘selling people into slavery’) are still being fought by law enforcement around the world today.

                              I’m sure there are plenty of Slavic lobsters here, but I haven’t read a single comment, here or elsewhere, of one of them being triggered by the etymology of that word.

                              Reasonable people aren’t triggered by thousand-year-old etymology.

                              https://en.wikipedia.org/wiki/Human_trafficking#Revenue indicates $150 billion/year in revenue derived from forced labor, globally. Consider that your users might actually include someone who has been enslaved and would rather not be reminded of it at work.

                              1. 2

                                Yet your example is hypothetical. There might actually be someone. People shouldn’t be triggered by homonyms at all.

                                Maybe the next hill to die on is killing or terminating child processes. Many women need to have late abortions and be reminded at work of infanticide.

                                This will never stop unless maintainers put their foot down and say that messing around with APIs because a vocal minority bullies them is not ok.

                                The case would be stronger if the proponents of this had personal experience to share, or other evidence to back it up. Even then, we’re talking about software, not people. Better would be to donate to Amnesty or do something else than change every word and rewrite all the dictionaries.

                                1. 1

                                  People shouldn’t be triggered by homonyms at all.

                                  If only we got a choice about what trauma the world inflicted on us.

                                  Maybe the next hill to die on is killing or terminating child processes

                                  Maybe. But since nobody has, to my knowledge, brought it up - you are raising a ridiculous straw-man (straw-person, ha).

                                  This will never stop unless maintainers put their foot down and say that messing around with APIs because a vocal minority bullies them is not ok.

                                  Of the things that might stop it, that seems like one of the least likely to work.

                                  As noted elsewhere in the thread, “Feel free to submit a complete PR, including all documentation updates” is more than enough to get them to leave you alone. In the unlikely event that someone cares enough to actually do the work, I’d suggest you’ve just gained a hardworking co-contributor.

                            2. 1

                              Please do not conflate my questions or position with abusive behaviour towards others. My post was not about that. I haven’t asked you to do anything, nor have I endorsed abusive behaviour by others. If my questions or position causes so much grief and anger maybe it’s worth exploring why that is the case?

                              Please relax, there’s no need for this aggravating tone here.

                              1. 1

                                Mmm what?

                  1. 1

                    Lack of any feedback from the repo maintainers would be such a let down for me.

                    1. 2

                      The last time this project had significant activity was around 20 days ago. The pull request is aged at 19 days - I think it’s just unlucky timing. Perhaps the maintainer went on for holiday with his family? Perhaps he just finished a lot of work around the project and needs a rest from it? Perhaps he just doesn’t feel like looking at it now - it’s volunteer time.

                      Point is, don’t assume your work is unappreciated because you didn’t get a reply - open source is hard work but once you put things into the public time works for you, someone will see it sooner or later :)

                      1. 2

                        Rubygems.org is maintained by the RubyTogether non-profit, which pays devs hourly for maintenance. The money is nice but it likely means it will take a bit to get approved for work. I’m guessing this also isn’t high priority – Rails 5.1 is working just fine.

                    1. 1

                      Really nice work and writeup!

                      1. -3

                        “Considered Harmful” Essays Considered Harmful (I think “considered dangerous” falls in the same category)

                        It’s not difficult to use C correctly. Don’t blame your vulnerabilities on C when the real culprit is your own sloth.

                        I’ll concede that C (and it’s API) has quite a few foot guns, but I’ve learned how to avoid them pretty effectively, and I should be able to expect the same from kernel devs. The whole “rewrite everything in <insert promising new lang here>” mentality doesn’t work for large projects (like kernels). To rewrite the Linux kernel in Rust would take months (even if you had all hands on deck). And, who’s to say that Rust wouldn’t change incompatibly three times in the middle?

                        1. 21

                          It’s not difficult to use C correctly.

                          [citation needed]

                          There is no evidence to suggest that large codebases written in C can maintain memory safety in the face of that. The counter evidence, that writing code in C/C++ tends to produce large volumes of vulnerabilities, for reasons that are explained by language choice, is plentify. To whit, every major OS (Windows, Linux, macOS), every major browser (Chrome, Firefox, Edge, Safari), every major anti-virus program, every major image parsing library, I can keep going for a while.

                          Denialism about the dangers of memory unsafety is not productive, we need to move on to discussing how we address this.

                          1. 0

                            There is no evidence to suggest that large codebases written in C can maintain memory safety in the face of that.

                            Using C correctly means not making large codebases. C isn’t a language for programming in the large.

                            1. -1

                              there is no evidence that large codebases in any language produces anything better.

                              1. 7

                                Yes there is. The default, failure mode of safe languages doing common things is not potential code injection. The default for C language is. Given same bug count, using C will lead to more severe problems. The field results confirm that from fuzzing to CVE’s.

                                1. 4

                                  Yes there is. The default, failure mode of safe languages doing common things is not potential code injection.

                                  I don’t think this is wrong, exactly, but there’s a 100 exploits related to python pickle, etc. as counterexamples. And java serialize, etc.

                                  1. 3

                                    Do the memory-safe parts have the memory errors of C (a) at all or (b) as much? And do libraries in concurrency safe languages show same or less races as equivalent in multithreaded C?

                                    You’re going to find vulnerabilities in all of them. My side are saying C amplifies that number by default or others greatly reduce it by default. That’s all we’re saying. I think the evidence is already supporting that.

                                    1. 1

                                      amplify requires some comparative numbers.

                                      1. 2

                                        The numbers on using C are that the common operations lead to piles of vulnerabilities with code injection. This happens a lot on average. It happens less with veterans but still happens. That’s irrefutable. The numbers on safe languages show the problems mostly lead to compiler failures or DOS’s from runtime checks. The burden of proof is on your side given your side’s stuff is getting smashed the hardest all the time whether the app is small or big.

                                        What numbers do you have showing C is safer for average developer than Ada, Rust and so on? And I’m especially interested in fuzzing results of software to see how many potentially lead to code injection among new, half-ass, or just time-constrained programmers in C vs the same in safe, systems languages.

                                        1. 1

                                          you don’t even have good examples of large scale systems built using some other language that are substantially safer. Until you do, it’s just folklore.

                                  2. 0

                                    I see a real shortage of example of large-scale systems constructed in any language that are secure and bug free but I am happy to look at references. Like what do we have comparable to Qmail written in something better that has fewer bugs? I know that C has numerous limitations, but in CS we tend to embrace projects that claim a win by hiding a problem by e.g. using pragmas to do the things that are the most buggy as if pushing the problem into the corner made it go away.

                                    And the code injection bugs I see are all example of bad engineering - not of bad programming.

                                    1. 3

                                      There’s bugs and there’s serious bugs that the language causes. The latter are what hackers hit the most. The latter are what we’re talking about, not just bugs in general. The size of the program also doesnt matter since the safe language is immune to the latter by design. Scaling code up just increases odds of severe vulnerabilities in the unsafe, control language.

                                      Java and .NET apps are what to look at if you want big ones. Very few CVE’s posted on the apps of the kind you see in C apps. The ones that are posted are usually in C/C++ runtimes or support libraries of such languages. That just illustrates the problem more. The languages whose runtimes arent C have fewer of those since they’re immune or contain them by design.

                                      1. 1

                                        My impression is that a) the reasons that those c/c++ runtimes show up so much is that these language delegate the most dangerous code such as parsing of raw input or packets or complex interaction with the OS to the C/C++ runtimes where it is possible to do that work and b) the same errors show up in different form in different languages. The massive prevalence of scripting exploits is not due to C but to lazy interface construction where, for example, user inputs are treated as parts of database scripts etc etc. I do not think that “do all the hard stuff in pragmas or C libraries” actually does limit vulnerabilities.

                                        1. 1

                                          “where it is possible to do that work”

                                          The first part is true. That part isn’t. They think lower-level language is better for speed, bit handling, or OS interface. The second part implies you need C to do that work. There’s systems languages which can do that work with more safety than C. So, it’s “possible to do that work” in them without C’s drawbacks. Many low-level programs and OS’s were written in PL/0, PL/S, Ada, Modula-2, Oberon, Modula-3, Clay, and so on. They’re safe by default turning it off only where you need to. C doesn’t do that since it’s designers didn’t care when they were hacking on a PDP-11 for personal use.

                                          “b) the same errors show up in different form in different languages. The massive prevalence of scripting exploits is not due to C but to lazy interface construction where, for example, user inputs are treated as parts of database scripts etc etc.”

                                          Aside from something language-specific, the logic errors that happen in scripting languages can happen in C, too. You get those errors plus C’s errors plus the catastrophic effect that comes with them being in C. Let’s say you wrote the interpreter in Ada or Rust with safety-checks on. Most of the errors in the interpreter won’t lead to hacks. The extensions would have same property if building on base language like how extensions to C-based programs are often in C having same problems. Platforms like Java that built libraries on C are hit heavily in those C dependencies.

                                          Additionally, the extensions could leverage aspects of these languages, such as type or module systems, designed for knocking out integration errors. Finally, if it’s Ada 2012 and SPARK, they can eliminate runtime checks in performance-critical code by using the provers to show they’re not needed if specific pre-conditions pass early on. Unlike Frama-C, they get a good baseline on code they hurried and highest assurance of what they proved.

                                          1. 1

                                            Data would help. These arguments by what seems sensible to different people don’t go anywhere.

                              2. 16

                                To rewrite the Linux kernel in Rust would take months (even if you had all hands on deck).

                                Months? It would take at least 10 years, regardless of headcount.

                                I’ve learned how to avoid them pretty effectively, and I should be able to expect the same from kernel devs.

                                I’m impressed with your abilities, but then something nags me about the order-of-magnitude mistake in your rewrite estimate. Hmm.

                                1. 13

                                  It’s not difficult to use C correctly. Don’t blame your vulnerabilities on C when the real culprit is your own sloth. I’ll concede that C (and it’s API) has quite a few foot guns, but I’ve learned how to avoid them pretty effectively, and I should be able to expect the same from kernel devs. The whole “rewrite everything in ” mentality doesn’t work for large projects (like kernels). To rewrite the Linux kernel in Rust would take months (even if you had all hands on deck). And, who’s to say that Rust wouldn’t change incompatibly three times in the middle?

                                  I suggest you read the linked article first. The title is clickbait but the content is solid. No one even mentioned Rust or anything else… The guy talks on their effort to reduce the foot guns in the kernel code…

                                  Here is a quote for the lazy:

                                  Kees Cook gave a presentation on some of the dangers that come with programs written in C. In particular, of course, the Linux kernel is mostly written in C, which means that the security of our systems rests on a somewhat dangerous foundation. But there are things that can be done to help firm things up by “Making C Less Dangerous” as the title of his talk suggested.

                                  1. 4

                                    I suggest you read the linked article first.

                                    Ok, you got me, I only skimmed the article and I didn’t see any mention of rewrite until the comments (it was literally the first response to the second comment). Although I do hear that mentality about other large projects (such as Firefox) as well. I guess I should’ve said “Clickbait considered harmful” ;-)

                                    I’ve read some more of the article and he seems to know what he’s talking about but I would like to see the original talk.

                                    As far as reducing foot guns, I guess Linux did start out as just one guy so I can understand a lot of foot shooting, but it’s been years and I would’ve thought that things like VLAs would’ve been avoided in the kernel. Then agian, I’ve never worked on a project as large as Linux so i guess I’m not the best judge of such things.

                                    1. 4

                                      Ok, you got me, I only skimmed the article and I didn’t see any mention of rewrite until the comments (it was literally the first response to the second comment). Although I do hear that mentality about other large projects (such as Firefox) as well.

                                      Agreed. It’s annoying as hell, and the loud-mouths never do the work.

                                      I guess I should’ve said “Clickbait considered harmful” ;-)

                                      Funny because the talk is titled ‘Making C Less Dangerous’ - the lwn reporter is actually responsible for the horrible title that misrepresents the content and invites rewrite talks. I think this is the first time I’m using the lobste.rs ‘suggest’ a new title option to rename the link to ‘Making C Less Dangerous’ disrespecting the reporters chosen title. This is an abstract of the talk so keep the title close to the content.

                                  2. 7

                                    Literally 20+ years of unending computer security exploits disagree with you.

                                  1. 4

                                    YAGNI (You Are Not Gonna Need It)

                                    Quibble: it’s actually You Ain’t Gonna Need It

                                    1. 12

                                      The error draft proposals look great – this is a real need.

                                      I would like to see Go’s standard types get useful higher-level list operations like Ruby’s Enumerable, map, reduce, filter, etc but I’m not sure Go needs to expose that for all types. Maybe special casing the standard types gets us 80% of the benefit of generics without further complexity to user code.

                                      1. 2

                                        yield and Enumerable are the crux to building idiomatic Ruby APIs. I love them so much.

                                        1. 25

                                          I give away Sidekiq and sell Sidekiq Enterprise. If you use Ruby/Rails, it’s the standard. https://sidekiq.org

                                          1. 3

                                            it’s the standard

                                            For a very good reason. Wonderful piece of software. Thanks @mperham!

                                            1. 2

                                              Woah thats awesome. I have been using sidekiq lots. Great bit of software.

                                              1. 1

                                                Hey @mperham!

                                                Thanks for all of your code. I’ve used and loved several of your projects.

                                                Out of curiosity what is the current status of Faktory? It sounded like an interesting project, but the rate of development looks like it kind of cratered last Dec.

                                                1. 2

                                                  It’s under active development but summer has been slow due to family issues. Latest:

                                                  https://mastodon.xyz/@mperham/100583959557092421

                                              1. 23

                                                “It is difficult to get a [web developer] to understand something, when [their] salary depends on [them] not understanding it.”

                                                ― Upton Sinclair

                                                1. 4

                                                  My back looks like a pin cushion from all the arrows I received over the years fighting for web that would be more ethical and void of mostly useless crap. Some battles won, too many lost. I lost one just yesterday, but it didn’t occur to me that it was because of my money-induced blindness.

                                                  I actually like this quote and have used it myself before, but while I met many web developers over the years who didn’t care about bullshit described in the article, almost all of them didn’t simply because they were either ignorant of available technologies, didn’t care much about quality of anything they did and most often both.

                                                  1. 1

                                                    Some battles won, too many lost.

                                                    What were some of the wins?

                                                    1. 4

                                                      Example of a small recent one would be Klevio website (as it currently exists, less so after today). I am not linking to it because I don’t want referrals from Lobsters to show up in website’s logs, but is trivial to find.

                                                      Almost everything on this website works with Javascript turned off. It uses Javascript to augment experience, but does not needlessly rely on external libraries. Should work reasonably well even on poor connections. Does not track you and still has a privacy policy handling that tries to be closer to the spirit of GDPR then to what you may get away with.

                                                      It would certainly be easier for me and faster to develop (cheaper for company) if I just leaned on existing tools, build yet another SPA and have not spent more than a week arguing with lawyers about what is required.

                                                      Alas, because unsurprisingly most people do not opt-in to analytics, I am now working on a different confirmation dialog, more in line with what others are doing. It will still be better than most, but certainly more coercive than current.

                                                      And this is in a company that is, based on my experience, far more conscientious about people’s privacy than others I worked for.

                                                      1. 1

                                                        It would certainly be easier for me and faster to develop (cheaper for company) if I just leaned on existing tools, build yet another SPA and have not spent more than a week arguing with lawyers about what is required.

                                                        Is this really true? Not to downplay your craft but I always thought tinkering with HTML/CSS until things look right would be way easier than learning a separate library.

                                                        I checked out that website and it’s pretty refreshing that stuff actually works. If you want a little constructive feedback, the information density is very low especially on a desktop computer with a widescreen monitor. I have to scroll down 7 screens to get all the information, which could have fit on a single screen. Same with the “about us” page. I notice the site is responsive, giving a hamburger when you narrow your window, so maybe the “non-mobile” interface could be more optimized for desktop use.

                                                        1. 1

                                                          I don’t think it is in every case, but in this one I think it would be since everything was handwritten without picking up existing solutions for things like galleries. If you mean the SPA part, then I guess it becomes more moot. It would probably be about the same doing the first implementation, but this one, which is basically a bunch of static files, certainly has a higher cost of maintenance because we (I) didn’t get around to finishing it so page “components” still have to be manually copied to new files and updated everywhere when their content changes. The plan was to automate most of this, but we haven’t spent the time on it yet.

                                                          I agree with everything in the second paragraph. Regretfully that is one of those battles lost.

                                                          1. 1

                                                            so what do your managers feel is the benefit of having such low information density? how do these decisions get made?

                                                            1. 1

                                                              If I remember correctly it was because it supposedly looks modern, clean and in-line with company’s brand. It has been a while so my memory is fuzzy on this.

                                                  2. 2

                                                    I’ve heard this a few times already, but I’ve never quite understood what the implication is. What precisely are web developers not understanding? I get the default examples (eg. oil companies funding environmental research), but just can’t see the analogy in this case.

                                                    1. 22

                                                      You’re on week three of your new job at a big city ad and design firm. Getting that first paycheck was nice, but the credit card bill from the moving expenses is coming up, that first month of big city rent wiped out your savings, and you don’t really have a local personal network to find new jobs. The customer wants a fourth “tag” for analytics tracking. Do you:

                                                      1. Put it in
                                                      2. Engage in a debate about engineering ethics with your boss and his boss (who drives a white Range Rover and always seems to have the sniffles after lunch) culminating with someone screaming and you storming out, never to return?
                                                      1. 8

                                                        Web devs know that auto play videos and newsletter pop ups are annoying but annoying people is profitable

                                                    1. 4

                                                      May I request a better title in the future? Something like “jsoniter - faster than Go’s json”.

                                                      1. 2

                                                        You can directly suggest to change the title, if you think it would be better.

                                                      1. 12

                                                        Fuchsia has already landed Lobsters some months ago.

                                                        I’ve found this article interesting because of this passage:

                                                        Some of the principles that Fuchsia creators are pursuing have already run up against Google’s business model. Google’s ads business relies on an ability to target users based on their location and activity, and Fuchsia’s nascent privacy features would, if implemented, hamstring this important business. There’s already been at least one clash between advertising and engineering over security and privacy features of the fledgling operating system, according to a person familiar with the matter.
                                                        The ad team prevailed, this person said.

                                                        1. 5

                                                          This is the main reason why I trust Apple more than Google. Apple’s and my interests are better aligned.

                                                        1. 20

                                                          Good gravy, my eyes. That site’s style screams “I hate you, reader”

                                                          1. 4

                                                            what happens when disparate applications really do need to know about data in other applications? … Fire off a message saying “CustomerAddressUpdated” and any other applciation that is concerned can now listen for that message and deal with it as it sees fit.

                                                            What happens if the message drops?

                                                            1. 1

                                                              PubSub should guarantee delivery.

                                                              1. 3

                                                                And/or you can make it so that the application maintains the events as part of its service. Then, if there’s an outage, as part of the recovery you can go read the event log and update the data as required. Any solution where event messages aren’t ephemeral will do, I think. I also think “not being able to emit an event message” should also be treated like a fairly critical incident, if you go down that path. I think many things.

                                                                1. 2

                                                                  How? The application can crash between updating the data and publishing the message.

                                                                  1. 1

                                                                    Ah, you mean the publishing app - I’d thought you meant the subscriber earlier. Treat messages the way an offline email client treats newly composed email: stick it in a queue to be sent and only remove items from the queue once read receipts have been received for them. This requires message to be idempotent, of course.

                                                                    1. 2

                                                                      That doesn’t address my question, though: there are two actions happening: update the data in the DB and tell people about it. The app can fail between the first and second.

                                                                      1. 2

                                                                        The message creation (e.g. postgres queue) can be part of the data transaction. Otherwise you need 2PC to guarantee the operation between two subsystems. https://en.wikipedia.org/wiki/Two-phase_commit_protocol

                                                              1. 0

                                                                Talk about over complicating things. There are plenty of ways to make money from software - just ask Oracle, Microsoft, Amazon, Facebook, Twitter, Google, Docker, Red Hat, etc.

                                                                Honestly, the self martyrdom of some FOSS developers is difficult to understand.

                                                                1. 3

                                                                  Software that is being created to be sold, yes. Software that is being created to further society in a way that is beneficial for all, e.g., free software, no. Even the super important projects like OpenSSL aren’t well funded… Everyone makes a lot of assumptions about software—“oh they do this at work, for their jobs”—but my guess is that is the case for only a small handful of the most popular projects, and the rest are doing the work, gratis.

                                                                  1. 1

                                                                    Every single one is VC-backed. Your “plenty of ways” boils down to one way.

                                                                    1. 1

                                                                      I agree with the premise but it’s been a while since MS raised VC, right?

                                                                      1. 1

                                                                        The ones I listed were VC backed, but that’s only because I purposely chose over the top examples where the founders became billionaires. (And also RedHat ;-)

                                                                        But there are tons of smaller companies who aren’t backed by VCs, whose founders and employees make a decent living creating software. Things like Pixelmator, Reaper, Quicken, etc.

                                                                        1. 2

                                                                          whose founders and employees make a decent living creating software. Things like Pixelmator, Reaper, Quicken, etc.

                                                                          None of those examples are open source… No one is making a claim that you can’t successfully sell software…

                                                                          1. 1

                                                                            The concepts of “open source” and selling software for money are orthogonal. The linked article is about a scheme for people who have chosen to give away their software to try making money from it. My point is that they already made that choice when they decided to give it away to everybody for free.

                                                                            I think there’s some short sighted-ness in software developers around FOSS. To use your OpenSSL example, if it’s a “super important project” (which is just an opinion), then it’s important for the project to organize itself in such a way that it’s sustainable, and that means providing for the developers so that they can keep developing it.

                                                                            1. 1

                                                                              To use your OpenSSL example, if it’s a “super important project” (which is just an opinion)

                                                                              I’m basing it’s “super important project” status on the fact that it has 100s of millions of users (or more) given it is linked in popular browsers, and popular web servers. You’re likely interacting with OpenSSL as you load Lobste.rs. So, yeah, it’s “super important.” There are viable alternatives, now, but that wasn’t really the case until recently, and the amount of effort for the 2 developers to keep it up, in their free time, for the benefit of society, has caused issues in the past. See also GPG’s fund raising efforts, and countless others.

                                                                              for people who have chosen to give away their software to try making money from it.

                                                                              No. It’s absolutely not about that. It’s about recognizing that free / open source developers aren’t peons to be trampled on, but, instead, valuable members of our global economy. The chances of this model, or any other model, being sustainable for all contributors is next to nil. Please keep that in mind. Even the most successful of projects that use a foundation model can’t pay their contributors living wages. But, if the original authors choose a different model (than open source) for release, it’d have been very, very, very difficult to make it.

                                                                              As you’ve stated now, multiple times, if you want to make money off of your software, you have many avenues to do so. And, look at @mperham, nginx, puppet, and all the other businesses that have successfully created sustainable businesses from roots in open source. It’s possible, but this avenue isn’t right for every project, nor is it right for every situation. I’m not going to give up my cushy corporate job to struggle to survive on and build a business based on a piece of software I found useful to me. I’d be happy to let others do that if they desire, and I indicate that with the licensing I choose to use.

                                                                              1. 1

                                                                                I’m basing it’s “super important project” status on the fact that it has 100s of millions of users (or more) given it is linked in popular browsers, and popular web servers. You’re likely interacting with OpenSSL as you load Lobste.rs. So, yeah, it’s “super important.” There are viable alternatives, now, but that wasn’t really the case until recently, and the amount of effort for the 2 developers to keep it up, in their free time, for the benefit of society, has caused issues in the past. See also GPG’s fund raising efforts, and countless others.

                                                                                At the same time, 100s of millions of people are using iOS, Windows, and OSX, so by that criteria they are also “super important”, yet none of them are available for free. Price and size of user base aren’t really criteria for determining importance.

                                                                                I’m just pointing out that society in general isn’t going to have much sympathy for people who’ve voluntarily given away all of their work.

                                                                                1. 1

                                                                                  Price and size of user base aren’t really criteria for determining importance.

                                                                                  Just what do you think the word important means, then?

                                                                                  iOS, Windows, and OSX

                                                                                  This logic… is so weird. Yes, they are super important, too. They contribute 100s of millions of dollars in revenue every year to Microsoft and Apple. Do you agree that Microsoft and Apple save millions of dollars a year by not hiring developers to develop proprietary replacements for the libraries and programs they bundle in their distributions? And, at the same time, reap tremendous additional benefits from doing so, by virtue of remaining compatible with other software systems that said, users of those systems want compatibility with?

                                                                                  This post outlines one possible way for them to say thanks. Making a contribution to this type of fund would more than pay for itself in good will and positive PR.

                                                                                  Note: I don’t even know if I agree with the model outlined. Though, I do agree that some monetary compensation to folks contributing to liberally licensed software is healthy for the ecosystem, human/labor rights generally, and the economy

                                                                            2. 1

                                                                              The linked article is about a scheme for letting people who have chosen not sell the software they write can try to make money off of it. My point is that they already made that choice when they decided to give it away to everybody for free.

                                                                              I think there’s some short sighted-ness in the software world around FOSS. If OpenSSL is a “super important project” then it’s important for the project to organize itself in such a way that it’s sustainable to develop it. Forcing the developers to work on other things for their day jobs, or having them beg for money isn’t sustainable, and it really isn’t necessary - it’s a choice they’ve made.

                                                                      1. 3

                                                                        I love the minimal dependencies and easy database. Should make it much easier for hobbyist operators.

                                                                        The advantage of Discourse is the business model. They will be in business and supporting their system 5 years from now. The odds are that this project will not.

                                                                        1. 2

                                                                          Thank you! Glad you love it :)

                                                                          Indeed, that is Discourse’s advantage. All I can say is that this project has already been around for more than 5 years, albeit in a much different form, so it is likely to stick around for another 5. Perhaps I should look into copying their business model, I do find it sorta insane that they are charging $100/month minimum for hosted instances of Discourse, but I suppose that is how they make money to support their project.

                                                                          1. 3

                                                                            You are thinking like a developer, not a pricing expert. There are plenty of cases where $100/mo is quite cheap. As a business, you want to get customers with lots of budget and little actual traffic demand. Customers are thinking of it as a service they don’t need to staff and manage through IT. Think in terms of value you provide, not your costs to provide that value, when pricing.

                                                                            Feel free to join my happy hour some week if you want to talk about building a business on your open source:

                                                                            https://sidekiq.org/support.html

                                                                            1. 1

                                                                              Just saw your reply. Makes a lot of sense! I’ll definitely check out your happy hour, thanks :)

                                                                        1. 2

                                                                          On Linux:

                                                                          cat /etc/<pid>/status | grep VmRSS
                                                                          
                                                                          1. 3

                                                                            Hope he gets a job. I’m just puzzled at the meaning of 5.1 kids.

                                                                            1. 10

                                                                              Surround sound kids. Which honestly could just mean one and some sugar.

                                                                              1. 8

                                                                                The .1 is the woofer, likely a rescue or mutt.

                                                                              2. 2

                                                                                Wife just got pregnant, at a guess.

                                                                                1. 1

                                                                                  Looks like it. So it’s 10% done…

                                                                              1. 5

                                                                                Bash supports CDPATH. It’s not as smart of autojump but it’s everywhere out of the box. Mine:

                                                                                export CDPATH=".:~:~/src:~/src/github.com/mperham:~/src/github.com/contribsys"
                                                                                
                                                                                1. 40

                                                                                  Whenever I read tech articles about reducing keystrokes I tend to roll my eyes. cd‘ing directories already takes up a very small portion of my time—optimization will never be worth it. Now if you can tell me how to make roadmap estimations that don’t put my team in peril, now that’s going to help me to not waste my time!

                                                                                  Edit: It’s a cool tool, just maybe the article is touting it as more of a life saver than it actually is.

                                                                                  1. 12

                                                                                    I mean, I do too, but people do actually take this kind of thing seriously. I’ve had several people say they wouldn’t use ripgrep because the command was too long to type, but upon hearing that the actual command was rg, were much more satisfied. Maybe I missed their facetiousness, but they didn’t appear to be joking…

                                                                                    1. 5

                                                                                      Could they not have just alias’d the command if it was “too long”?

                                                                                      1. 4

                                                                                        The people in question don’t sound clever enough for that.

                                                                                        1. 1

                                                                                          Are you asking me? Or them? ;-)

                                                                                        2. 4

                                                                                          I wonder if these are different people than the ones who complain about short unix command names and C function names…

                                                                                        3. 9

                                                                                          For those of us with RSI, these little savings add up, and can make for a pretty big difference in comfort while typing.

                                                                                          1. 8

                                                                                            Oh please. If you’re really worried about a couple of words and keystroke saving, you’d setup directories and make aliases that will take you specifically where you want to go. Assuming it was even a GUI you were using with a mouse, you’d still have to click through all the folders.

                                                                                            Overall, paying close attention to your workspace setting and ergonomics can go a long way in helping improve your RSI situation than this little jumper will ever do

                                                                                          2. 4

                                                                                            My thoughts exactly. I have often wasted time trying to optimize something which took so little time to begin with, even if I reduced the time to nothing it would have no significant impact on overall performance. And the less-obvious trap is optimizations like this add additional complexity which leads to more time spent down the road.

                                                                                            1. 9

                                                                                              All right, buddy. Cool.

                                                                                              Did I say it a “life saver”? Nope. Did I say it could save you a lot time? Yup. If cd'ing into directories doesn’t waste your time, cool. Move along, read the next blog post on the list.

                                                                                              I’m sorry about your roadmap estimations. Sounds like you’ve got a lot on your chest there.

                                                                                              1. 31

                                                                                                Let me just take a step back and apologize—nobody likes negative comments on their work and I chose my words poorly and was insensitive. I’m rather burnt out and, in turn, that makes me appear more gruff online. I’m positive that someone will find this useful, especially if they’re managing multiple projects or similar use cases.

                                                                                                1. 23

                                                                                                  I really appreciate you saying that. The whole point of this piece was to share something that literally makes me whistle to myself with joy every time I use it. I hope you find some time to take care of your burn out. It’s no joke and I’ve suffered from it quite a bit in the past three years myself. <3

                                                                                                  I know it’s easy to look at everything as “this is just like X but not quite the way I like it” and I don’t blame you for having that reaction (like many here). AutoJump is to me the epitome of simple, delightful software that does something very simple in a humble way. I wish I had spent more time extolling the virtues of the simple weighted list of directories AutoJump stores in a text file and that ridiculously simple Bash implementation.

                                                                                                  The focus on characters saved was a last minute addition to quantity the claim in the title. Which I still think will be beneficial to anyone who remotely has frustrations about using cd often and may suspect there is a better way.

                                                                                                2. 6

                                                                                                  If only there was a way to optimize crank posting. So many keystrokes to complain!

                                                                                                3. 2

                                                                                                  the parent tool is probably overkill but a simple zsh function to jump to marked projects with tab completion is pretty awesome to have.

                                                                                                  alias j="jump "
                                                                                                  export MARKPATH=$HOME/.marks
                                                                                                  function jump {
                                                                                                  cd -P "$MARKPATH/$1" 2>/dev/null || echo "No such mark: $1"
                                                                                                  }
                                                                                                  
                                                                                                  function mark {
                                                                                                  echo "mark name_of_mark"
                                                                                                  mkdir -p "$MARKPATH"; ln -s "$(pwd)" "$MARKPATH/$1"
                                                                                                  }
                                                                                                  
                                                                                                  function unmark {
                                                                                                  rm -i "$MARKPATH/$1"
                                                                                                  }
                                                                                                  
                                                                                                  #if you need it on another os.
                                                                                                  #function marks {
                                                                                                  #ls -l "$MARKPATH" | sed 's/  / /g' | cut -d' ' -f9- | sed 's/ -/\t-/g' && echo
                                                                                                  #}
                                                                                                  
                                                                                                  # fix for the above function for osx.
                                                                                                  function marks {
                                                                                                  \ls -l "$MARKPATH" | tail -n +2 | sed 's/  / /g' | cut -d' ' -f9- | awk -F ' -> ' '{printf "%-10s -> %s\n", $1, $2}'
                                                                                                  }
                                                                                                  
                                                                                                  function _completemarks {
                                                                                                  reply=($(ls $MARKPATH))
                                                                                                  }
                                                                                                  
                                                                                                  compctl -K _completemarks jump
                                                                                                  compctl -K _completemarks unmark
                                                                                                  
                                                                                                  1. 1

                                                                                                    I’ve tried this, but I keep end up making shortcuts and forgetting about them because I never train myself well enough to use them until they’re muscle memory.

                                                                                                    I think I’ll just stick to ‘cd’ and also extensive use of ctrl-r (preferably with fzf)

                                                                                                    1. 1

                                                                                                      And then you go to a work mates computer, or su/sudo/SSH and it’s unusable :)

                                                                                                      1. 1

                                                                                                        well this is one of the most useful shortcuts in my arsenal. type j <tab> or jump <tab> and it completes all the marked directories. If you get over the initial forget to use it curve it’s amazing and simple (just a folder in your home dir with a bunch of symlinks. and a few helpers to create those.)

                                                                                                  1. 4

                                                                                                    Interesting article, however to me this everything that is wrong with open source software, in the good old days (and still around 50% of the time now) open source software (and contributions) come around when people need to solve X problem, and opensourcng your work is a great way to help others, then usually if the code is found to be useful (or in demand) then contributors join in, and before you know it you have some code you wrote to help you out on a project, working for thousands of users in ways you never expected.

                                                                                                    “Necessity is the mother of invention” is a very fitting statement for open source (in my opinion). Creating software for a problem you don’t have (or that doesn’t exist) seems very counter productive, this whole attitude of wanting to create an open source project for “Internet points” absolutely perplexes me. If you want to help the open source community there are thousands of projects that would love the help.

                                                                                                    Marketing open source software? I mean put it on Github with a decent readme and a search engine will take your potential users there, however if you created some software for a problem that doesn’t exist, don’t expect too much traffic.

                                                                                                    Testing is a good point, but usually in smaller scale open source projects (or single maintainers) you write the code to solve a problem you have, maybe there are a few tests, but to me if I found a piece of software that did what I wanted, and had no tests, I would just write my own tests, we have so many users of open source software now that just seem to moan or log issues when it doesn’t work for them, when in reality they should be sending pull requests (or diffs if you took your dinosaur to work) saying “hey, cool project, I used it but noticed you had no tests, I creating the following, hope this helps”. However, I can count on my hand the amount of times I have seen pulls/diffs like this.

                                                                                                    I have gone off on a bit of a tangent, but hey.

                                                                                                    1. 2

                                                                                                      What part of the OP, exactly, implied that open source today is all about “Internet points”? Don’t you think that’s just a tad bit uncharitable of you?

                                                                                                      I also think your thoughts on testing for small single maintainer projects are way off the mark. I wouldn’t be able to maintain the projects that I do if I didn’t have tests. There would just be no feasible way. I would probably need an army of clones of myself working in concert to do it.

                                                                                                      I think basically everything else you said is off the mark too, speaking as someone that has been involved in open source since 2003 or so. I remember the “good old” days before Github, accessible CI, emphasis on docs and testing, etc., and frankly, we are in a much better state nowadays. I mean, those days sucked. Hard.

                                                                                                      1. 1

                                                                                                        Add testing, documentation, build, distribution, marketing…

                                                                                                        Almost like they are building a product but without any plan for sustainability.

                                                                                                        1. 1

                                                                                                          Could you unpack that? All of those things seem beneficial with respect to sustainability.

                                                                                                          1. 1

                                                                                                            Spend hundreds of hours building something polished, lots of users show up asking for support and then burnout happens. Who maintains the maintainers?

                                                                                                            1. 1

                                                                                                              If your goal is to release something that others use and to incorporate feedback from others, then testing, documentation, distribution and all that stuff improves the sustainability of the project.

                                                                                                              If you’re just looking to throw something over the wall and don’t care whether anyone uses it, then don’t polish it in the first place?

                                                                                                              Like, isn’t this whole thing trivially solved by just asking the simple question, “What problem are you trying to solve?” Instead, people seem intent on bantering about “Internet points.”

                                                                                                              1. 1

                                                                                                                If your goal is to release something that others use and to incorporate feedback from others, then testing, documentation, distribution and all that stuff improves the sustainability of the project.

                                                                                                                This is contrary to every small OSS project I’ve ever seen. I’m speaking mostly of single person projects. Perhaps you are thinking of large, multi-person projects, e.g. Rails, Rust, etc but those usually have full-time people paid to work on the project. That’s the key bit to sustain it: a paycheck.

                                                                                                                1. 2

                                                                                                                  Perhaps you are thinking of large,

                                                                                                                  Uh, no, I’m not. I’m speaking from my experience maintaining mostly small single person projects in my free time.

                                                                                                                  1. 0

                                                                                                                    Watch the “Uh”. It’s patronizing. Be kind.

                                                                                                                    At this point I’m not sure what we are discussing anymore so I’ll leave it here. We are likely looking in the same direction but with different angles.

                                                                                                        2. 0

                                                                                                          wanting to create an open source project for “Internet points” absolutely perplexes me

                                                                                                          I think it’s money that has entered the equation, and “internet points” are just an indirect means. An upside is that now there’s an additional incentive to make things. A downside is that now there also is an additional incentive to advertise.