1. 2

    Great advice. If I had to generalize, I’d say this: good programmers focus on the people. Bad programmers focus on the technology. This guy had a people-problem, the dang app was too slow. Everybody in the org had that problem. But because they had split work up based on technology, nobody wanted to go into somebody else’s code and fix things. Everybody cared about their thing. Nobody cared about things in general. Thanks!

    1. 5

      In that case, I’m quite excited to hire some bad programmers in future.

      1. 4

        I think the (admittedly hyperbolic) question is this: do you want a supremely-able technical coder who isn’t able to intuit what the users want? Or do you want a programmer who guesses what the users want before they even know it and has problems figuring out how to make that happen?

        1. 2

          I’d take the programmer that intuits that users want graphics that are 100 times faster, and is able to deliver that. It’s rather hard to find someone so bad with people that they can’t figure out what would make a program beter.

          1. 3

            It’s not hard at all; I’d argue that is in fact the typical case, sadly.

          2. 1

            Maybe I misinterpreted the article, but I didn’t think that was the dichotomy. As I understood, the author was technically able and made a significant performance improvement. I don’t think any user is going to want their software to ever perform worse.

            As I understood, the author’s improvement was shunned for ego and “office politics” reasons. I don’t think he had a “people-problem”. Quite the opposite.

            I’d love to build a company where office politics just aren’t a thing.

            1. 7

              I’d love to build a company where office politics just aren’t a thing.

              Yeah, but who wants to work solo?

            2. 1

              Ideally, you have both of them & they work together.

        1. 2

          I don’t think I could see myself moving to a laptop without three physical buttons. A trackpoint isn’t an absolute must, but it’s a big plus. Non-glossy high resolution screens are also a big deal to me.

          1. 8

            No “generic” library or framework I’ve seen ever has been able to deliver 100% re-usability. Even string libraries aren’t entirely reusable; for example, constant-time comparison is required in many security applications, but non-security applications tend to favour raw speed. Of course you could add a flag to make it more generic and re-usable.

            If you keep adding flags like this for components that are large enough you end up with so many flags for each different kind of sub-behaviour (or so many versions variants of the same component) that it becomes unwieldy to use, maintain and performance will suffer too.

            That’s why “use the right tool for the job” is still great advice, and so is Fred Brooks’ old advice to “build one to throw away, you will anyway” when building something new.

            1. 4

              I’ve always worked toward the “guideline” that an abstraction should shoot to cover 80% of the problem, but should be very easy to “punch through” or “escape” for that last 20%

              If possible, I won’t “add a flag” to support a feature, but will instead try to write the library in a way that allows it to be disabled or skipped when needed. Suddenly the worry of the “perfect abstraction” goes away, and you are left with a library that handles most cases perfectly, and allows another lib or custom code to take over when needed.

              1. 3

                That’s a very good approach. I also like the opposite approach, which is the “100% solution” to a narrowly (but clearly!) defined problem. The Scheme SRE notation is an example of this, as is the BPF packet filter virtual machine.

                This allows you to make a tradeoff to choose whether a tool fits your needs.

                1. 1

                  I’ve always worked toward the “guideline” that an abstraction should shoot to cover 80% of the problem, but should be very easy to “punch through” or “escape” for that last 20%

                  I always liked Python’s convention of exposing everything (almost; I’m not sure if the environment of a closure is easily exposed), and using underscores to indicate when something should be considered “private”.

                  I emulate this in Haskell by writing everything in a Foo.Internal module, then having the actual Foo module only export the “public API”.

                2. 1

                  This seems like something that should be solved outside the library that deals with string manipulation. For example, in Clojure I’d write a macro that ensured that its body evaluated in a constant time. A naive example might look like:

                  (defmacro constant-time [name interval args & body]
                    `(defn ~name ~args
                       (let [t# (.getTime (java.util.Date.))
                             result# (do ~@body)]
                         (Thread/sleep (- ~interval (- (.getTime (java.util.Date.)) t#)))
                         result#)))
                  

                  with that I could define a function that would evaluate the body and sleep for the remainder of the interval using it:

                  (constant-time compare 1000 [& args]
                     (apply = args))
                  

                  I think that decoupling concerns and creating composable building blocks is key to having reusable code. You end up with lots of Lego blocks that you can put together in different ways to solve problems.

                  1. 6

                    To me that smells like a brittle hack. On one hand you might end up overestimating the time it will take, thus being slower than necessary, or you could underestimate it, which means you’d still have the vulnerability.

                    Also, if the process or system load can be observed at a high enough granularity, it might be easy to distinguish between the time it spends actually comparing and sleeping.

                    1. 1

                      I specifically noted that this is a naive example. This is my whole point though, you don’t know what the specific requirements might be for a particular situation. A library that deals with string manipulation should not be making any assumptions about timing. It’s much better to have a separate library that deals with providing constant timing and wrapping the string manipulation code using it.

                      1. 6

                        Except in this case constant time is much more restrictive than wall-clock time. It’s actually important to touch the same number of bits and cache lines – you truly can’t do that by just adding another layer on top; it needs to be integral.

                        1. 1

                          In an extreme case like this I have to agree. However, I don’t think this is representative of the general case. Majority of the time it is possible to split up concerns, and you should do that if you’re able.

                          1. 5

                            But that’s the thing. The temptation of having full generality “just around the corner” is exactly the kind of lure that draws people in (“just one more flag, we’re really almost there!”) and causes them to end up with a total mess on their hands. And this was just using a trivial text-book example you could give any freshman!

                            I have a hunch that this is also the same thing that makes ORMs so alluring. Everybody thinks they can beat the impedence mismatch, but in truth nobody can.

                            I guess the only way to truly drive this home is when you implement some frameworks yourself and hit your head against the wall a few times when you truly need to stretch the limitations of the given framework you wrote.

                            1. 2

                              My whole argument is that you shouldn’t make things in monolithic fashion though. Instead of doing the one more flag thing, separate concerns where possible and create composable components.

                              Incidentally, that’s pretty much how entire Clojure ecosystem works. Everything is based around small focused libraries that solve a specific problem. I also happen to maintain a micro-framwork for Clojure. The approach I take there is to make wiring explicit and let the user manage it the way that makes sense for their project.

                              1. 3

                                Monolithic or not, code re-use is certainly a factor in the “software bloat” that everyone complains about. Software is getting larger (in bytes) and slower all around – I claim a huge portion of this is the power of abstraction and re-using components. It just isn’t possible to take the one tiny piece you care about: pull a thread long enough and almost everything comes with it.

                                Note that I’m not really making a value judgement here, just saying there are high costs to writing everything as generically as possible.

                                1. 1

                                  You definitely have a point here, on my first job I was tasked to implement a feature, this was a legacy WinAPI app. It involved downloading some data via HTTP (iirc it downloaded information on available updates for the program). Anyways, I was young and inexperienced, especially on the windows platform. The software was pure C mainly, but a few extensions had been coded in C++.

                                  So when I wrote my download code, I just used STL iostream for the convenience of the stream operators. Thing is, I was the first C++ code in the code base to use a template library, all the other C++ code was template-free C-with-classes style. The size of the binary doubled for a tiny feature.

                                  I rewrote the piece in C, and and the results were as expected, no significant change in size for the EXE. Looking back it makes me shudder what I was tasked to implement and what I implemented. However, I am also not happy with the slimmed down version of my code.

                                  Nowadays the STL is just not a big culprit anymore, when you look at deployment strategies that deploy statically-linked go microservices within fat docker images onto some host.

                    2. 1

                      That constant time comparison doesn’t work, because you can still measure throughput. Send enough requests that you’re CPU bound, and you can see how far above the sleep time your average goes.

                  1. 34

                    This is exactly what I thought when I heard the rumour. A lot of people were keen to tell me that “Google already dominates web standard committees”, and while this is true, it is just another symptom of the same illness.

                    I understand that for a company, building a browser engine is expensive and might not be worth it, but Microsoft giving up the browser engine game means we only have one alternative to Blink/WebKit left, Mozilla Firefox. And while I am a loyal Firefox user, I can’t help but notice that year after year, our numbers get fewer.

                    The web is an open platform only because we have multiple implementations of the standards. If we move to a single engine, the standard doesn’t even matter anymore, only the implementation does.

                    And how long before other vendors have only a token handful of developers working on integrating Blink into their branded shells? How long before Google decides that in fact, they are altering the deal (much like they did with Android) and are moving the new parts into proprietary extensions that can only be used with Google’s approval? How long before they make it impractical to use any Blink based engine without phone home circuitry or without logging in to an account linked to their wider ecosystem? Having a single entity control both the user agent and the major services puts the user in a much weaker position to resist such pressures.

                    Google has already shown they are changing from the “do no evil” company they at least pretended to be a decade ago. They have also shown they will not shy away from requiring their browser for certain features of their services (for a while, you could not make calls in Hangouts without Chrome).

                    But regardless of whether you believe Google will betray the public interest, do we really want to put all our eggs in the same basket, no matter who owns the basket?

                    1. 19

                      The web standards are baroque, the process byzantine, and the implementations often dumb.

                      This is the future we deserve, given the choices we failed to contest and the horses we decided to trade.

                      1. 3

                        When Google said it’s time to kill IE6 (2010), I was still using a browser without javascript support for my daily browsing. The web was quite usable. That started to change pretty soon after, and the experience got miserable due to the number of sites that would just not work any longer. When I complained, people just told me to fuck off.

                        I don’t think I ever had a real chance to contest.

                        1. 2

                          Similar experiences here, and the state of noscript web is not much to celebrate. Most of my spare time is spent getting rid of as much ‘web’ (!= internet) as possible from the everyday of my life; admittedly thwarted by an increased forced dependence on e-gov here for basic infrastructure.

                          The current browser/javascript management setup I have settled on is basically a set of “volatile” nodes on AlpineLinux (config system fits this purpose well) that pre-boots into a ‘one-time use’ / PXE chrome instance. “spawning a tab” means remoting into one of the nodes and when the connection is severed, the node reboots. Suspicious crashes gets collected for later study.

                        2. 2

                          Google is going to forge ahead with technologies that improve their products with or without standards. The result of more stringent standards would be a browser that supports cool new features that no other browser does, resulting in a monoculture anyway.

                          1. 5

                            Time, then, to disband the w3c, since its job is apparently to describe Chrome’s features.

                            1. 4

                              To be brutally honest, the W3C has always seemed a little silly as a standards body.

                              They started out chasing the browsers, and they’re still chasing the browsers. There was that little period with HTML5/XForms/XHTML where it looked like they were going to create their own thing, but the browsers ignored them, so they went back to standardizing the existing behavior.

                        3. 12

                          we only have one alternative to Blink/WebKit left

                          It doesn’t make any sense to me to lump together Blink and WebKit like this. One may be a fork of the other, but they’re controlled by separate companies that have, at best, wary attitudes toward each other. The fact that they share code is irrelevant when we’re talking about the danger of a web-engine monoculture.

                          How long before Google decides that in fact, they are altering the deal (much like they did with Android) and are moving the new parts into proprietary extensions that can only be used with Google’s approval?

                          I agree that this is a danger, although it seems like it would be way easier to resist bad Blink changes via the “lazy dev’s fork” of simply continuing to use the older version. If worse came to worst the community could create an actual fork; the code is still a mixture of LGPL- and BSD-licensed, after all. The tricky part is that I don’t know if there is currently a “the community” of people who rely on Blink/Chromium, and it seems like it would be difficult to coalesce one absent some widely-condemned action by Google. I’m not sure what the solution to this is, although as I mentioned elsewhere in the thread, perhaps Mozilla should be looking closely at the “embedding Chromium in other things” market and coming up with a Servo-based alternative.

                          1. 6

                            “It doesn’t make any sense to me to lump together Blink and WebKit like this.”

                            Im with you on that. Didnt make sense. I’ll add they’re not only wary: they’re very opinionated with their own OS’s, new languages, and so on. Despite shared code, that should maintain some diversity in the engines.

                            1. 3

                              However, they still share enough code that what works in one is more likely to work the same way in the other than, say, Gecko.

                          1. 31

                            I thought this was going to be about small websites, in the sense of individuals putting together a non-commercial, unmonetized page to talk about the things that they enjoy on the public internet. Gems like stormthewalls.dhs.org, or hovercrafter.com. This kind of site seemed to be everwhere in the 90s through the late 2000s, but they seem to have retreated behind walled gardens, or gotten squeezed out of search results by large commercial pages with far worse content. They’re run by hobbyists, and can’t compete with SEO.

                            I miss them.

                            1. 3

                              That’s what I was expecting to and was sorely disappointed to see it was not that.

                              1. 1

                                likewise. i would have loved to read that article, and the lobsters discussion around it.

                              2. 1

                                https://neocities.org/browse turns up fun stuff like that sometimes.

                              1. 5

                                Please - the word you wanted is “lose” and not “loose”. “loose” is the opposite of “tight”, not of “gain”. (I realise you’re probably not a native English speaker and I wouldn’t complain, but it’s right there in the title and it reads wrong - because the words are pronounced differently).

                                I too am concerned about the web browser monoculture. I personally continue to use Firefox, although some of the practices of Mozilla occasionally irk me, I still find it preferable (and far easier to build) than Chrome. The question is, though, what can we actually do about it? Chrome is very successful and has a lot of resources behind it. But web renderers are far from trivial; it’s not like it’s an easy to produce a quality feature-complete competitor. That’s why webkit is doing so well - it’s packaged as a component, not a full browser. (Just as Firefox has Gecko, or whatever its current incarnation is called, in theory).

                                So: what do we do? How do we avoid blinking?

                                1. 12

                                  I think we lost when we allowed web standards to get so complex that they can’t be independently implemented without a billion dollar company funding a large team. I don’t think that this is solvable. The existing players are so far ahead that there’s really no catching up.

                                  1. 3

                                    Servo is not a billion dollar project.

                                    1. 6

                                      Mozilla’s annual revenue is half a billion dollars. Since it’s a non-profit, there’s no real valuation that I’m aware of, but just going off of typical P/E ratios, that would make them a multi-billion dollar company.

                                      1. 1

                                        Mozilla Corporation is a for-profit corporation owned by Mozilla Foundation, a nonprofit. That means the private part does have a value. They usually do profit times 10 in straight-forward sales of businesses. Using their 2016 financial, here’s the numbers to look at:

                                        Revenue: $520 mil

                                        Development cost: $225 mil

                                        Marketing: $47 mil

                                        Administrative: $59.9 mil

                                        Net gains: $102 mil (if I’m reading it right cuz it’s different than ones I did in college)

                                        They’re worth somewhere between $1-5 billion if looking at operating profit or revenues with no consideration for up/down swings in the future. Also, there’s two numbers there that look inflated: development cost; administrative. For the former, they use a lot of developers in high-wage areas. They could move a good chunk of development to places where good talent, esp their real estate, is cheaper to free up money for more developers and/or acquisitions. For administrative, that’s a big number that’s above their marketing spending. I think that should be other way around. More money into marketing might equal larger share of users.

                                  2. 6

                                    So: what do we do? How do we avoid blinking?

                                    It seems that Mozilla’s answer to that question is the Servo project. I guess we could start contributing.

                                    1. 6

                                      While I like rust and servo as a research project - mozilla does not hold a good track record when it comes to providing a browser as an reusable component. It has been a long time since Gecko could be easily embedded in other browsers, and this does not seem to be a priority for servo either.

                                      FWIW I think the main competitor to Blink is actually Webkit in the sense that it is the easiest open source browser for someone to modify. I would prefer to see people put their effort there.

                                      1. 13

                                        GeckoView is an upcoming embedding API. It’s supposed to fix that and already used in some Firefox products, most notably Focus.

                                        1. 2

                                          This needs to be on desktop platforms, too, though, not just Android. But I’m happy to see the progress.

                                          1. 2

                                            I haven’t seen any code using GeckoView on the Desktop, is it Android only or can it be used to build Desktop browsers?

                                            1. 6

                                              It runs a where Gecko runs. Which is Linux/Windows/OSX on Intel, ARM, ARM64 etc.

                                              First iterations happened to be in mobile because we need to cash in on the Quantum improvements on mobile. That’s not due to technical constraints.

                                              1. 3

                                                oh that is awesome news. I was looking at the repo but could only find examples for Android and it being mentioned as an Android component. I wish there was a sample for the Desktop, something like QtGeckoView would make it quite popular.

                                                1. 1

                                                  Is it Java, though? Because, if so - ick. It would be much better to have a C, C++ or Rust API - something that doesn’t automatically add a large runtime overhead. I don’t foresee many desktop browsers being built on top of a Java API no matter how powerful/easy-to-use it is.

                                                  (Not that I think Java doesn’t have its place, I just don’t think it fits this niche particularly well, except for the obvious case of Android).

                                                  1. 1

                                                    No. On Android, we use embed GeckoView within a Java projects (obviously). This is mostly based on our Android Components.

                                              2. 1

                                                That also looks incredibly easy to use. That’s cool.

                                          2. 1

                                            Thanks for the feedback. I’ve realized the mistake about that typo too late and unfortunately the URL is tied to it. Fixing it makes a new URL and I can’t edit the URL here. :-(

                                            I agree with you, building an engine as a component that is easy to embed and build upon is the reason why WebKit became the dominant force here. I wish Mozilla paid more attention for the embedability of Gecko (which I’ve heard is a mess to build your product on top of). There is no easy way out of the current mess we’re in, people who are concerned about that can basically throw some effort and action towards Mozilla strengthening the remaining engine before it is too late.

                                            1. 1

                                              Fixing it makes a new URL and I can’t edit the URL here.

                                              Can you add a redirect?

                                              1. 1

                                                I will look into crafting a redirect tomorrow as I don’t want to disrupt the little server today. This is not a jekyll blog. I think that adding a redirect using .htaccess should work but as the server is being accessed a lot right now, I am a bit afraid of breaking the post and potential readers reaching a broken URL.

                                          1. 30

                                            LOL @ 100 MB being considered small. Just yesterday, I was working on my gui lib (which, granted, has zero mobile support, so totally unfair comparison.. but still) and I was like “eh, that 2.4 MB RAM usage is a little fat”.

                                            How low have standards fallen in the mobile world?

                                            1. 11

                                              This is the RAM their replacement for the Android simulator needs. So that’s including debugging/hot code swapping support, I suppose. I’d be interested in the non-debugging case.

                                              1. 8

                                                I’m skeptical: 2.4 MB of ram is barely enough to contain the pixels for a single 640x480 window with double buffering. While there’s the Flutter example could almost certainly use less memory, I think you’ve got some sort of accounting error here.

                                                1. 1

                                                  I have a buffer for 500x500 there, since that was the window size in my test program, so that accounts for 1 MB… but that isn’t actually strictly necessary (and the operating system will have another for the desktop compositor, and the screen framebuffer itself, but those are on the OS side and thus is apples-to-apples on any user framework). You can redraw in response to the WM_PAINT messages too and avoid keeping the additional buffer. This isn’t an arcane technique - it is the way native desktop apps have basically always worked!

                                                  My library is 150 KB, and actually uses native stuff so… that’s about all there is to it.

                                                  1. 6

                                                    You can redraw in response to the WM_PAINT messages too and avoid keeping the additional buffer. This isn’t an arcane technique - it is the way native desktop apps have basically always worked!

                                                    You seem to be on Windows, so I want to clarify things a little bit:

                                                    Yes, since Windows 7/Server 2008, Windows automatically keeps an off-screen buffer for you, and that’s what you’re actually drawing to when you respond to WM_PAINT. But (at least as of Windows 8) that buffer is subject to the same drawing rules that used to apply for direct screen rendering—specifically, if you’re drawing “directly” to the screen, then your double-buffered image can still sheer, giving you exactly the same artifacts you used to get on Windows 3.1 if you didn’t double-buffer.

                                                    (If that has changed, I’m curious how. My guess is they would implicitly do buffer-swaps at the conclusion of handling WM_PAINT.)

                                                    1. 1

                                                      Well, what I meant there was you can just respond to the message and get a working program, but yeah, I use a bitmap buffer too and just blit that over to paint (and in the window size I had at the time, it was a ~1MB buffer).

                                                      But this is a fraction of what flutter (and electron) devour.

                                                2. 5

                                                  One big point of desktop apps is to not eat an imperial shit-ton of RAM, so this struck me too.

                                                  Oh well, memory is relatively expensive so computers don’t ship with a lot of it, but people seem content with blowing it all on a browser and a browser-based app or two :(

                                                  1. 1

                                                    Well, RAM is plentiful… until you have 80 tabs. 80 * 1 MB is doable. 80 * 100 MB is suddenly memory pressure. And that isn’t that uncommon!

                                                    1. 4

                                                      Err… my ancient desktop, which is so old it barely has USB3, got 32G without breaking financial sweat. This back in the day, not current discount offers. But if I wanted to upgrade my current workstation up from 8G I’ll not only pay myself sick, but get in line to even buy anything.

                                                      Thanks, mobile phones, for eating up the world’s DDR4 supply, I guess.

                                                      Despite that, I’m a heavy user of tabs, famously sticking to an old and insecure browser for Tab Mix Plus + Tab Groups, until Mozilla unfucks its product.

                                                      I don’t have nearly all tabs loaded and occasionally I shut down the browser.

                                                      Not just to conserve memory but to keep me from being distracted while working with proper desktop apps.

                                                      1. 4

                                                        Ram isn’t exactly cheap today however. I recently bought some more ram for my pc, and it cost double what I paid for the same amount of ram 2 years ago. It’s jt that expensive, but often other parts get prioritized over more ram.

                                                        1. 1

                                                          Err… my ancient desktop, which is so old it barely has USB3, got 32G without breaking financial sweat.

                                                          On Desktops you can upgrade, but laptops are a different story. I have 32GB in my ThinkPad X220, but I can’t just upgrade the 16GB MBP that I am typing on. Similar to my phone, where upgrading RAM is not possible either. I guess I need to throw it away now and buy a new one…

                                                  1. 5

                                                    Using the assignment operator = will instead override CC and LDD values from the environment; it means that we choose the default compiler and it cannot be changed without editing the Makefile.

                                                    This is true, but really, if you want to ensure variables are set in a Makefile, pass them as overrides (make ... CC=blah ...), don’t set them in the environment. The environment is a notoriously fragile and confusing way to specify all these things. (They certainly don’t work with the GCC and binutils stuff I work with on a regular basis!)

                                                    My advice for Makefile is be explicit. It’s tedious and boring, but so much easier to debug.

                                                    1. 4

                                                      The reason that setting things in the environment is fragile is because people follow advice to ignore the environment. It’s very useful for cross compilation to simply set the appropriate environment and go.

                                                      1. 1

                                                        There’s also no easy way to pass arguments and options to a makefile except through environmental variables. You can also play games with the target, but there’s only so much you can do with that.

                                                        1. 2

                                                          I don’t believe that’s true. You can also pass macro definitions as arguments to make; e.g., make install PREFIX=/opt/tools

                                                          1. 1

                                                            Yes, overrides passed on the command line can be arbitrary expansions.

                                                            % cat Makefile
                                                            STUFF = 1 2 3 4
                                                            
                                                            all:
                                                                    @echo $(FOO)
                                                            % make 'FOO=$(firstword $(STUFF))'
                                                            1
                                                            
                                                            1. 0

                                                              Yeah, but environmental variables are turned into make variables in the same way as variables after the make command. The only difference is that they also get placed in the environment of subcommands.

                                                              1. 2

                                                                I’m reasonably sure that is not true either. From my reading of the manual, an explicit assignment of a macro within the Makefile will override a value obtained from the environment unless you pass the -e flag to make. The manual suggests the use of this flag is not recommended. In contrast, a macro assignment passed on the command line as an argument will override a regular assignment within the Makefile.

                                                                Additionally, some macros receive special handling; e.g., $(SHELL), which it seems is never read from the environment as it would conflict with the common usage of that environment variable by user shells.

                                                                1. 2

                                                                  As far as I can tell, they both get placed in the environment of subcommands. The manual is (as per many GNU manuals) unclear on the matter: “When make runs a recipe, variables defined in the makefile are placed into the environment of each shell.” My reading is that anything set in Make should be passed through, but this does not appear to be the case.

                                                                  % cat Makefile
                                                                  FOO = set-from-make
                                                                  
                                                                  all:
                                                                          @sh ./t.sh
                                                                  % cat t.sh
                                                                  echo "FOO is '${FOO}'"
                                                                  % make
                                                                  FOO is ''
                                                                  % FOO=from-env make
                                                                  FOO is 'set-from-make'
                                                                  % make FOO=from-override
                                                                  FOO is 'from-override'
                                                                  
                                                                  1. 1

                                                                    IMO the GNU make manual is pretty clear on this.

                                                                    https://www.gnu.org/software/make/manual/html_node/Values.html

                                                                    Variables can get values in several different ways:

                                                                    • You can specify an overriding value when you run make. See Overriding Variables.
                                                                    • You can specify a value in the makefile, either with an assignment (see Setting Variables) or with a verbatim definition (see Defining Multi-Line Variables).
                                                                    • Variables in the environment become make variables. See Variables from the Environment.
                                                                    • Several automatic variables are given new values for each rule. Each of these has a single conventional use. See Automatic Variables.
                                                                    • Several variables have constant initial values. See Variables Used by Implicit Rules.

                                                                    https://www.gnu.org/software/make/manual/html_node/Overriding.html

                                                                    An argument that contains ‘=’ specifies the value of a variable: ‘v=x’ sets the value of the variable v to x. If you specify a value in this way, all ordinary assignments of the same variable in the makefile are ignored; we say they have been overridden by the command line argument.

                                                                    https://www.gnu.org/software/make/manual/html_node/Environment.html

                                                                    Variables in make can come from the environment in which make is run. Every environment variable that make sees when it starts up is transformed into a make variable with the same name and value. However, an explicit assignment in the makefile, or with a command argument, overrides the environment. (If the ‘-e’ flag is specified, then values from the environment override assignments in the makefile. See Summary of Options. But this is not recommended practice.)

                                                                    1. 1

                                                                      Yes, I don’t disagree with any of this and it’s consistent with usage. My point was about variables getting into the environment of shell commands in recipes. The wording suggests all variables are put into the environment, but based on the first result in the example that’s clearly not the case.

                                                                      1. 1

                                                                        Oh I see. The manual is less clear on that point:

                                                                        By default, only variables that came from the environment or the command line are passed to recursive invocations. You can use the export directive to pass other variables.

                                                                        It should probably say “passed to child processes through the environment” or something similar.

                                                                        $ cat Makefile
                                                                        VAR1='hi'
                                                                        export VAR2='hi'
                                                                        test:
                                                                                echo $$VAR1
                                                                                echo $$VAR2
                                                                        $ make
                                                                        echo $VAR1
                                                                        
                                                                        echo $VAR2
                                                                        'hi'
                                                                        
                                                                        
                                                          1. 3

                                                            ARM has Jazelle for this purpose too, although I don’t think it’s very popular.

                                                            1. 1

                                                              There’s also Java processors like aJile and JOP. JOP’s comparison page lists more. I’m not sure how often they’re used. I can see the benefits of some, though.

                                                            2. 1

                                                              Yeah, but I am pretty sure that it is dead because sitting to regular arm code was faster.

                                                            1. 8

                                                              The browser is the new operating system. An operating system where code is automatically downloaded and run.

                                                              Our desktop OS’s are the old operating systems. Code must be manually downloaded, often then manually installed, and then run. Package managers make this a little easier, but still require lots of intentional and consensual steps

                                                              If we ignore all of the security and trust issues of this new model of OS, it’s interesting to think about and compare. It’s winning because it’s what users want: less barrier to entry, less effort.

                                                              Is this barrier useful to have for other (eg social) reasons too? Would it make people think more if they had to download and install services such as Facebook, slack, youtube, github, etc before they used them?

                                                              1. 11

                                                                The irony is that the “old” way of doing it is difficult in large part because it’s such a bad idea to automatically download and run applications. It’s not like it can’t be done - ActiveX was basically a native application downloaded and run automatically inside a browser, but it was so unsafe Microsoft eventually killed it.

                                                                1. 5

                                                                  Circa 1998, I went out and wrote a web-based version of Notepad using ActiveX and VBScript, just to prove how terrifying ActiveX should be to people. I had to build it to social engineer its way past the “hey, are you sure you want to do this?” confirmation box, but that’s easy- I popped up a series of Alert/Confirm boxes before loading the ActiveX component. Click fatigue meant everybody just okayed their way through.

                                                                  This was the 90s, though. I’m sure users of today are way more savvy. /s

                                                                  (I mean, honestly, Facebook has to have warnings that pop up if you bring the dev tools up because people were social engineered into copy/pasting code into the debugger!)

                                                                  1. 1

                                                                    Wow. Used win32 apis and everything to draw the widgets?

                                                                    1. 1

                                                                      It was using ActiveX to draw the widgets, so under the hood, yeah, there were some Win32 API calls but my app wasn’t making them directly. ActiveX was crazy, and symptomatic of Microsoft’s approach to everything at the time: ours does more and thus is better and oh, also, completely proprietary to our ecosystem. Don’t use Netscape/Mozilla. Use IE, because it has ActiveX which is WAAAAAAAY more powerful than JavaScript!

                                                                      1. 2

                                                                        Absolutely beautiful.

                                                                        The forest of abandoned projects and legacy DLLs in Windows is a bit like a gameworld. So much still left around in ways that’s not useful or reliable to most but still lot’s of fun to play with. “Paint the walls with executable code” they must have shouted.

                                                                        Case in point: Windows isn’t just the world, it’s also the sun and the moon. Try this one in your Run dialog (if you trust me :P):

                                                                        rundll32 loghours.dll ConnectionScheduleDialog

                                                                        A very unique interface for (what I think is) scheduling modem dialing hours. This dialog oozes with intrigue, and the versions in Win7 and later even have updated icons. I wonder if there are people in MS who maintain short lists of some of these DLLs. Probably not, the icons might be incidental.

                                                                        Not as obscure, but an intriguing old and forgotten feature:

                                                                        rundll32 infocardapi.dll ManageCardSpace

                                                                        I’m glad it still steals your whole screen. How important this project must have been! No other work you were doing at the time could compare.

                                                                        I wonder what the fallout of this feature being forgotten was. Someone, somewhere still has a congratulatory custom deck of playing cards tucked away.

                                                                        I’ve been brute forcing my way through Windows’ DLL collection to find these (I have a long list of more). My poor VM has sustained quite a bit of permanent damage from calling every exported function in every DLL, but I’m still going. I think I’m up to ‘W’.

                                                                        Next I want to try and find a way to call the non-rundll32 compatible functions in these DLLs. A proper compiled language (C or AutoIt) is a copout, I want to find a nice hacky way of doing full calls from batch, vbs or similar. Then I’d be able to make full win32 GUIs from nothing but a portable script file and my life would be complete.

                                                                  2. 3

                                                                    Yes, but people want to actually do stuff with their computers. If the only way to do it is to manually download and install a win32 app, that’s what’ll happen. If the only way to do it is to click through the JavaScript-is-dangerous warnings, that’s what’ll happen.

                                                                    The new macOS sandbox is baked into the Open File dialog; the app can’t access a file unless it goes through the OS-provided file picker, and the proposed web API is going to work the same way (though, obviously, there’s still arguments about replacing bashrc and such). As the Mill people put it: security needs to be ubiquitous, unavoidable, and efficient, or it won’t get used.

                                                                    1. 3

                                                                      I don’t see what you’re getting at.

                                                                      To take my previous comment a step further, it seems moving as many apps as possible into a web browser hasn’t achieved much except setting us back ~20 years in terms of performance and usability. At best we just added a bunch of new problems (malware, tracking, advertising) to the ones we already had.

                                                                      Just one example: compare Office 98 with the latest version of Office 365, and Office 98 is better in almost every way - more features, better UI, better keyboard shortcuts, better performance.

                                                                      Office 365’s only win is that it’s cross-platform, but that’s a marginal advantage because there was a Macintosh version of Office 98 and it ran in Wine.

                                                                      1. 2

                                                                        I’m arguing that requiring users to manually install apps, instead of automatically downloading and running them, is not an effective security barrier. If clicking through a warning is perceived as necessary to get to the desired end-state, then the warning will be clicked through; malware authors will happily guide someone through setting the browser or operating system to developer mode if that’s what’s needed.

                                                                        1. 2

                                                                          On that I agree with you. Poorly educated users are a big security vulnerability.

                                                                        2. 2

                                                                          Exactly. Most stuff on my Windows 98 box was better than most web stuff today. It ran on a Pentium 2 with 64MB of RAM. I dont expect that efficiency with today’s higher requirements. I do expect a better developer and user experience with resource use commensurate with what that takes.

                                                                    2. 8

                                                                      Would it make people think more if they had to download and install services such as Facebook, slack, youtube, github, etc before they used them?

                                                                      For many of those things they still have to on smart phones. They are even told what the app will have permission to access. And they still blindly allow whatever it is.

                                                                      1. 4

                                                                        The high-assurance, security community has stayed working on securing browsers. They mostly just isolated them on separation kernels in dedicated VM’s. However, a few teams applied similar principles to secure, browser architectures. At least one, IBOS, was both an OS and browser. I had a list in this comment.

                                                                        1. 1

                                                                          Would it make people think more if they had to download and install services such as Facebook, slack, youtube, github, etc before they used them?

                                                                          I wouldn’t download them because I don’t trust them with my data.

                                                                        1. 72

                                                                          Ethics are inseparable from technology, since technology enables and inhibits actions, which are subject to ethical consideration; ergo, the creation of technology is an set of actions subject to ethical judgements.

                                                                          1. 34

                                                                            I’d go even further than that, attempting to exclude “ethics”, broadly construed, has helped to enable a social environment within technology circles that has legitimated a great deal of what people are now rightly reacting to, the surveillance, the effects the brain of using gambling machines as a design template for websites, the unwillingness of corporations to take any responsibility whatsoever for the effects that their products have on society at large, Uber (all of it), and on and on.

                                                                            1. 14

                                                                              I agree with both of you. On the other hand, I also kinda see the point of wanting a space that’s focused in technical aspects, and understand OP’s fear of ethical/political discourse dominating this forum. And in the other other hand, I also feel that not speaking about the ethics of technologies, and actively discouraging this kind of discussion, is, in and of itself, a way of speaking about it, agreeing with it.

                                                                              So, yeah, that’s hard. I got no solutions.

                                                                              1. 8

                                                                                Regarding the “fear of ethical/political discourse dominating this forum”—I understand, but we wouldn’t have to have all of these discussions if people would just stop being unethical :-) The more discussions we have now on this topic, the fewer we’ll need to have in the future. But if we don’t talk about it then, as you point out, things are only going to get worse.

                                                                                1. 13

                                                                                  I think there’s a bit of a difference between discussing the ethics of a company and aggressively attacking a person.

                                                                                  The main top comment raises some points and actually encourages discussion, which admittedly doesn’t really happen in that thread. A large portion of the top upvoted comments are people chiming in and (essentially) saying “me too”. The top comment responding to a maintainer is incredibly aggressive towards the maintainer who stepped forward, only tangentially relates to the parent comment, is arguably a personal attack against that person and discourages discussion through the tone. Yet it’s more upvoted than the technical comments below.

                                                                                  In addition. it’s easy to forget that there are people on the other side of these usernames. It reminds me quite a bit of This is Phil Fish, a case study on how people can associate people with something larger, sometimes in damaging ways. It’s not quite the same, but I see similar parallels in how the community tends to treat employees of certain companies (yes, like Palantir… but Google also comes to mind).

                                                                                  I’d like to see more comments that encourage discussion, like the most upvoted top-level comment, and less comments saying “me too”, “I agree with this”, or borderline attacking the poster, like the most upvoted response to the maintainer.

                                                                                  1. 10

                                                                                    The more discussions we have now on this topic, the fewer we’ll need to have in the future. But if we don’t talk about it then, as you point out, things are only going to get worse.

                                                                                    That’s an interesting theory. I haven’t seen any evidence to support it on any of the other discussion forums I’ve used, but I suppose it might be true somewhere. I think friendlysock’s take is more accurate: by encouraging (tolerating? normalizing?) aggressive and reflexive positions on non-technical issues, we will get more of them here, not less. And eventually, the “bad money” will drive out the good, just like it does everywhere.

                                                                                    1. 6

                                                                                      Indeed - I think we have a plethora of examples of politics taking over, and few (none?) of political discussion settling debate so that everyone can move on.

                                                                                    2. 8

                                                                                      The more discussions we have no on this topic, the fewer we’ll need to have in the future.

                                                                                      I disagree with this in so many ways. We cannot possibly come to some end resolution where everyone agrees on a certain set of ethics, and even if that magically happened, we cannot all agree on the best way to act upon those ethics. Political conversation already permeates way too much of society. I don’t need to see it in a forum for technical discussion. If we’re going to try to think of ways for technology to be abused, we’re not going to produce anything. Further, I think we’re totally dismissing all the great things that same technology has done and can continue to do because it can be abused. If someone wants feedback on their submission, I don’t personally want to see politically-oriented discussion around it in this particular forum.

                                                                                      If the broader group of folks here wants this to become a political-friendly abyss, I’m fine with stepping away. But I don’t get that feeling right now.

                                                                                    3. 3

                                                                                      This is basically my opinion, too.

                                                                                      (I haven’t posted more in this an the other meta threads this week because I’ve been very busy starting a new job, but as I’m catching up today I’ve really appreciated all the thoughtful discussion exploring these questions that don’t have easy answers.)

                                                                                  2. 36

                                                                                    I think you have a point here that is both truth and lacking utility, but may be getting upvotes because hey, who wouldn’t upvote ethics in technology?

                                                                                    Here are some of the practical issues with supporting debates about “ethics”.

                                                                                    First, what do we mean by “ethics”?

                                                                                    Are we just wanting to talk about right and wrong? That’s often a matter of aesthetics. When I was born, it was pretty commonly held that homosexual acts were Evil, that psychoactive drug usage was Corrupt, and that democracy was unquestionably Good. None of those things are unerringly true anymore.

                                                                                    You might say “But friendlysock, those are matters of morals, as opposed to organized systems of beliefs that are analyzed in the context of practicing agents!”, and I would agree. That being the case, what is the point of having discussions that end up going basically:

                                                                                    • “You’re immoral!”
                                                                                    • “No, you’re immoral!”
                                                                                    • “You both act in clear hypocrisy of your professed morals!”

                                                                                    That discussion leaves everybody angry, takes up a lot of space, and doesn’t teach anybody anything. Worse, it breaks the operating regime of the site, because people will inevitably just blindly upvote the folks whose aesthetic matches theirs, and downvote or flag those that don’t–or worse, devolve into namecalling.

                                                                                    Okay, well, what about big-E Ethics?

                                                                                    So, we skip out on thinly-veiled callout threads and we’re just gonna limit ourselves to talking about big-E Ethics. Academic/philosopher stuff like meta-ethics and normative ethics and subtopics like utilitarianism and virtue ethics and state consequentialism and so forth.

                                                                                    And those are really fun topics. We have problems with those as the basis for subthreads though:

                                                                                    • Hardcore philosophy (despite our having a tag by that name, since that usage is looser) is off-topic.
                                                                                    • Most users (myself included!) are completely underskilled to talk big-E Ethics without a lot of clarifying back-and-forth and education in threads. Even assuming we have the skill to do all of that in a subthread (we don’t) and that we avoid falling back into moralizing (we won’t), such conversations suck all of the air out of the room for the technical discussion. That Palantir thread had us scrolling to the very bottom to get anything involving code or tech.
                                                                                    • We’re gonna end up having the same discussions over and over again, as the big-E Ethics questions are, rather famously, undecidable.

                                                                                    Okay, fine, what about professional ethics?

                                                                                    Sure! If people want to talk about how a given thing violates professional ethics, then I think that is healthy. Here is the ACM Code of Ethics. Use that as a starting point in a subthread.

                                                                                    Note though that we still don’t have professional organizations in the sense of, say, Professional Engineers. Our profession isn’t organized enough for that. So, talking about “professional” ethics is kinda hard.

                                                                                    ~

                                                                                    Overall, I just don’t think that the “ethics” discussions are what people are actually after here. I think people want to callout and shit on other folks, and that they want to show to their friends solidarity in an aesthetic. This damages one of the only good venues for safe technical discussion on the ’net today.

                                                                                    And I won’t stand for that.

                                                                                    1. 30

                                                                                      I would, gently, point out that adjucating morals to aesthetics (the study of beauty, and of which the current post-Romantic admits a separate aesthetic for each individual) is not a stance that is particularly admirable.

                                                                                      Simply keeping “Lobsters about tech” is a big E ethics decision, with ramifications that ripple out.

                                                                                      If you want to demand that people treat other people well, that is a stable ethical choice that is supportable and relatively decidable.

                                                                                      ~

                                                                                      But to be clear, working for Palantir - or other major enabler of violence & repression that generates widespread sideeye, is both a technical and an ethical choice; pointing this out and pushing back against consuming technical material from such an enabler seems perfectly reasonable.

                                                                                      We can debate whether working for Palantir is ethical - it probably also enables benefits to LEOs working complex cases and addressing real social harm. Many times on other social media sites, employees of ethically tangled companies will comment and discuss the complexity and reality of working in these environments. There is a very real debate, it’s not an open and shut thing where some group of activists come in and screams.

                                                                                      I reiterate: technology and ethics are intertwingled. While some contexts are more neutral than others, very few are pure neutral.

                                                                                      1. 12

                                                                                        @pnathan I didn’t want to wade into this muck, but you seem genuine. In my mind is not whether debates about ethics is good or bad, but rather what is lobste.rs for? There are PLENTY of places on this big internet to get on a soapbox and yell about whatever gets your goat. I want a quiet corner where I can just read about technical things. Code, decisions behind code, some PLT, some math and the occasional bit of humor. Perhaps the people here saying, well Kaushik, its time to go away somewhere else because that’s not what lobste.rs is for any more, and I will join the stragglers as we exit out of yet another refuge inundated by the loud and obnoxious soap box crowd.

                                                                                        1. 10

                                                                                          I’m 100% with you here. I see way too much soap boxing and bickering pretty much everywhere else on the internet. This was a safe haven for technical discussion without the political theater. If it’s going to become that, I’ll be happy to leave and try to form yet another community where we are trying to avoid this kind of stuff.

                                                                                          1. -2

                                                                                            leave and try to form yet another community where we are trying to avoid this kind of stuff

                                                                                            I’ll wager that ethical questions will inevitably follow you there, as they are inextricably part of the human experience, whether or not the primary topic is tech.

                                                                                            1. 4

                                                                                              I’m not trying to avoid them entirely, I just want a forum for technical discussion. Not everything has to be polluted with other topics and agendas

                                                                                              1. 1

                                                                                                You might find the more focused discussion you seek in a special-interest forum. General-interest fora will attract general topics of conversation.

                                                                                                1. 11

                                                                                                  Lobsters has been that forum for me until recently.

                                                                                                  1. 0

                                                                                                    That’s interesting. I hear many voices in this thread expressing the same. I never saw this website as something like that, I just saw it as a place where some relatively niche computing topics are aggregated.

                                                                                                    1. 8

                                                                                                      You’re also relatively new here compared to some of us, so that probably feeds into it. The site has grown quite a bit since I joined.

                                                                                                      1. 1

                                                                                                        I was reading this website for a long while before I got an invitation, but it is fair to say my account history is relatively new. When I started reading, most posts seemed to get an average of 1 or 2 comments. It’s hard for me to reconcile this—some folks are lamenting that recent discussions are not in keeping with the historical tone of the site, but the site has been historically silent on most topics.

                                                                                                        1. 5

                                                                                                          Try looking at it from a different perspective. Perhaps the absolute level of good quality comments hasn’t moved too much, but perhaps the absolute level of low quality comments has increased. If that’s true, it increases the signal-to-noise ratio and can lead to the “we used to have more good quality content here” observation.

                                                                                                          1. 2

                                                                                                            I was being very generous with the comment count. Even today, when I posted that comment, half of the front page articles had zero comments. Perhaps the signal level is just too low to begin with. Maybe there’s no consensus on what the signal is.

                                                                                          2. 4

                                                                                            you seem genuine

                                                                                            That’s one of the nicest things someone not my wife has said to me for some time. :) Thank you.

                                                                                            My basic thought is that I also want a corner where we can seriously talk about highly technical things, but we should be aware and also talk about the broader ramifications of our work, because we have the technical background to get the implications of our work and be correct about how it works, and to talk about the ethical implications of how a specific capability works/doesn’t work (whereas I have deep suspicions of an arbitrary op-ed columnist whinging about tech and begging for regulation).

                                                                                            To ask for a soapbox free zone seems completely ok - to ask for an ethics-free zone is an ethical choice that selects for specific social choices (as non-obvious as that may seem). To be specific: I’m not sure discussing the ethics of a new compiler gets us anywhere, but if its produced by Dr. Evilheart Murder Enterprises, maybe we need to discuss if using it supports D.E.M.E., and if we can redeem the technology from its production in the context of D,E.M.E. I don’t think that this is some lefty social justice agenda I’m asking for…. Maybe I’m wrong.

                                                                                          3. 12

                                                                                            I acknowledge the intertwingling, abstractly. But it seems you’re not addressing friendlysock’s actual concern. Is an announcement thread by a new user who happens to be the maintainer of an open source project an appropriate place to have the “very real debate” about whether working for that person’s employer is an ethical choice? When a commenter on that post engages in a blatant personal attack and is rewarded with upvotes aplenty, is the “very real debate” being furthered?

                                                                                            1. 10

                                                                                              I would say so: it’s an opportunity for the software developers of Palatir to make a case that they are acting in an ethical fashion, that the world is complex and they are producing a net good. When I worked for a Famously Bad Reputation company, we were encouraged to defend the company. This would have definitely been a place where the maintainer could have defended themselves - if company policy allowed, of course.

                                                                                              One of the interesting bits of social psych is conformity matters. If the general community shuns X group, to the point where its a permanent black mark on the record generating firings/no-hirings and it’s not something anyone is comfortable around at church, marrying family members, etc, then the X group diminishes into the fringe. Whether you are conservative or liberal, you wind up having a conformity and a social order. I’m not personally sure where to draw that line and place the mark, but Palantir is a popular target for placing that mark.

                                                                                            2. 8

                                                                                              I would, gently, point out that adjucating morals to aesthetics (the study of beauty, and of which the current post-Romantic admits a separate aesthetic for each individual) is not a stance that is particularly admirable.

                                                                                              Why not? There’s a huge variation in morality within our own culture, let alone looking across cultures. You can find people that believe that it’s immoral for two people with the same groin-endianness to get married, and others who think that it’s immoral for to accumulate a large amount of money. You have people who think that allowing dictators to abuse their people is immoral, and others who think that intervention is a bigger evil. You have people who think that it’s important to protect the freedom of users with copyleft licenses, and people who think that copyleft immorally restricts commercial use of software. You have fights between which supposedly divinely inspired book written thousands of years ago by uneducated sheep herders/traders/warriors/… is the primary authority on how to live your life. The list goes on, and all of them have people who believe one thing or the other.

                                                                                              The shifting scene of prevailing ethical thought really does make it more like aesthetics than people are often comfortable admitting. Yes, it has longer term effects on people’s lives, and yes, it’s got some underlying principles, but it’s certainly not some sort of fixed beacon of truth.

                                                                                              Why do you think that there is a universal set of ethics that people subscribe to? And if you don’t, do you really want this site to be either the battleground for deciding this, or a community of yes-men who boringly signal that yes, they are indeed a part of the in-group?

                                                                                              There are lots of valid and interesting discussions to have on these topics, but to me, they detract from lobste.rs.

                                                                                            3. 2

                                                                                              The book that revived virtue ethics as a viable project, MacIntyre’s After Virtue, points out how (and explains why) contemporary ethical debates have a peculiarly shrill and interminable character.

                                                                                              1. 2

                                                                                                This is a weird use of “aesthetics”. I don’t really know what you’re trying to say.

                                                                                                1. 2

                                                                                                  I read “aesthetics” as, roughly, “something that a group of people has decided to call ‘basic human decency’, with the various external trappings this entails”.

                                                                                              2. 21

                                                                                                Yet I somehow suspect if I ask “What are the ethical implications of creating a webassembly backend for ocaml?” that I won’t receive quite as many upvotes.

                                                                                                1. 6

                                                                                                  If the answer to the question “What is it built for?” is “for missile guidance systems”, we are in a different territory pretty quickly, though! Nothing technology lives without context.

                                                                                                  To turn this into something more tangible: when DARPA invested around 10 million for https://c2rust.com/, it definitely raised some eyebrows and sparked a couple of discussions.

                                                                                                  1. 9

                                                                                                    ARPA/military were behind the Internet, GPS, Tor, and (via defense contractors) majority of contributions to Linux kernel. Yet, most people discuss them without warnings or ethical debates in threads.

                                                                                                    It’s just specific things that are also talking points in liberal media.

                                                                                                    1. 2

                                                                                                      You are making it seem like these things have not been discussed, which is definitely not the case. Also, we’re not liberal media, we’re a community.

                                                                                                      1. 2

                                                                                                        Most of the statements read like they were pulled out of the liberal media. Pop-culture politics. People that actually care about popular politics here, say inclusion of under-represented groups, would have people from those groups, esp women, in the main teams (eg Rust compiler/libraries), be submitting work from such underrepresented people here to Lobsters instead of white/asian males, linking to write-ups by the same in the comments, and so on. There’s just one or two people doing that consistently off the top of my head.

                                                                                                        Inclusive politics here mainly equals writing comments and language policing to such people, not actually highlighting work by or bringing in underrepresented. Aka what they’d do if it really mattered. Same with employers, eco-friendliness, etc where someone could call out an OP in the majority of threads every day about the ethical ramifications of what they’re submitting. They only do on specific, popular, talking points, though.

                                                                                                        I make an exception for you since your community work probably does a lot of good in inclusion. A lot of good period. On Lobsters, though, most people voting for prioritizing politics for social justice certainly aren’t boosting minorities or even ethical suppliers. So, I call BS on it really mattering to them past ego value from social signaling, virtue and shaming.

                                                                                                    2. 9

                                                                                                      So if somebody builds a webassembly backend for missile guidance and puts it on github, is it ethical to use it for protein folding research? Or is it forever tainted?

                                                                                                      1. 1

                                                                                                        That’s a different question, and yes, it’s an interesting one. It’s also not like things on Github are just there. They still have a maintainer, a hosting organisation, and a leadership.

                                                                                                    3. 2

                                                                                                      Thats a cute non-sequitur, given that no one is inserting ethical implications into things like that. Seeing as this thread was sparked by the discussion around the ethical implications of software labor being used to further the work of a surveillance contractor, its not just a worthless message-board retort, its actively muddying the waters around issues that are inseparable from ethical questions.

                                                                                                    4. 18

                                                                                                      You’ve got to go about asking these questions in a way that actually enables the OP to respond. Instead, we got a massively passive-aggressive jab at the OP’s company:

                                                                                                      I guess it may be possible to work at a seedy company and still do good stuff […] Regardless, thanks for releasing this as free software.

                                                                                                      After which, the top commenter is hailed as a hero, and, to no one’s surprise, the OP didn’t respond.

                                                                                                      A reword that might have actually elicited a response might have started with “Thanks for releasing this as free software!” rather than the “yeah, your company sucks, but thanks anyway” angle.

                                                                                                      1. 9

                                                                                                        the creation of technology is an set of actions subject to ethical judgements

                                                                                                        Assuming that it is true - is it possible to have a small place (e.g. lobste.rs) which is for discussing technology without ethical implications and all the rest of the net for discussing whatever you want (also ethical aspects of technology)? Is this something you can imagine being possible or do you think that such place can’t exist? (this is a serious question)

                                                                                                        1. 32

                                                                                                          That’s certainly an important question.

                                                                                                          I think that it’s certainly possible to mention technology without explicitly mentioning ethics. I also think that engaging in that way is an ethical position. You can separate them at the surface level of discussion, but not in the substance.

                                                                                                          That said, I can certainly imagine a community in which technology is discussed but ethics is never explicitly mentioned. I would not want to be part of such a community; I would find it deeply unsettling. I do think that some people might like it, and there are a variety of reasons for that and I wouldn’t want to make assumptions about any particular person’s reasons.

                                                                                                          1. 7

                                                                                                            I think the problem with ethical discussions on a technical forum is that there’s not really a shared basis for those discussions. We might have a bunch of members from various religions and cultures who subscribe to widely different ideological frameworks and ethical principles. These different backgrounds are likely to be incommensurate, incompatible, and irresolvable.

                                                                                                            In that way it’s similar to discussions like “Are static types good or evil?” or the famous editor wars—so called “religious flame wars” which are known to ruin communities if left to fester.

                                                                                                            So indeed it is a kind of ethical decision about the norms of the community—whether ethical claims and disagreements ought to be encouraged in comment threads. There are pretty good reasons against.

                                                                                                            Let’s say I’m a committed socialist or communist or anarchist. There are many such people who are programmers. Now I have very good reason to enter threads about commercial activity and ask the involved people to justify their clearly immoral participation in the tyrannical, plutocratic, deeply unjust system of capitalism. I would of course encounter a bunch of dirty capitalist apologists trying to argue against my ethical position… and we could go on for a long time… almost certainly to the detriment of the community.

                                                                                                            1. 5

                                                                                                              “I think the problem with ethical discussions on a technical forum is that there’s not really a shared basis for those discussions. We might have a bunch of members from various religions and cultures who subscribe to widely different ideological frameworks and ethical principles. These different backgrounds are likely to be incommensurate, incompatible, and irresolvable.”

                                                                                                              You nailed it. That isn’t hypothetical: it happens in every political thread. The ending, minus rare exceptions, is everyone ends up believing what they already believed with some shunning their opponents in some way. Lobsters doesn’t work for political discussion that’s about actually changing people’s mind.

                                                                                                              Of course, many of you are starting with the foundation that people wanting politics want a political discussion. They mostly don’t as evidenced by their comments in such threads. If you’re curious, I just described here the evolution of politics and behavioral patterns on this site from when I first came to where we’re at now. Given the same environment, political discussion is and will continue to be impossible because the dominant group intends for it to be. They want compliance and conversion, not discussion.

                                                                                                              1. 3

                                                                                                                I don’t necessarily know that changing people’s minds should be the goal, but I also don’t know that it’s impossible. I think you’re describing what happens when everyone reacts defensively. It’s indeed not possible to change someone’s mind if they aren’t willing to open up and have a real conversation, so I wish the world in general would be more open to interacting in ways that aren’t so resistant to real dialogue.

                                                                                                                I’m an optimist, and I believe that when people try, they can engage with the goal of at least leaving each other with something to think about.

                                                                                                          2. 6

                                                                                                            I’ll suggest this (mainly tongue-in-cheek) but it might be a good solution: for every submission provide another link next to ‘reply’ called ‘ethics-reply.’ The links go to two separate discussion areas. That way, people can dip into the tech or ethics discussions as they like.

                                                                                                            1. 6

                                                                                                              If such a place did exist, I think you’d have trouble finding a lot of people who would want to hang out there. I’ll just jump immediately to the most extreme possible example: if someone posted an article about the technology used by the Nazis to organize the Holocaust, but discussing the attendant ethics was strictly forbidden, would you be happy participating in that discussion? Would you want to spend a lot of time talking to other people who would be happy participating in that discussion?

                                                                                                              1. 14

                                                                                                                if someone posted an article about the technology used by the Nazis to organize the Holocaust, but discussing the attendant ethics was strictly forbidden, would you be happy participating in that discussion?

                                                                                                                I am a jew who was raised by holocaust survivors. My answer is yes. In fact, I think it’s the only way that one could have a discussion about the technology used by the Nazis that wasn’t immediately dragged off topic.

                                                                                                                And, honestly, an ethical discussion would either be abhorrent or boring, since a vibrant discussion implies a difference of opinion, and anyone who has significant differences in belief with me on the ethics of systematic mass murder is someone that I don’t expect to have a productive discussion with.

                                                                                                                1. 12

                                                                                                                  Yes to both, to be honest. I did a bit of research for a point the other day, and something occurred to me.

                                                                                                                  Technology, especially computing, is all about solving problems at scale and efficiently. For the most part of the 19th and 20th centuries, the domains that actually had the scale to justify theoretical work and practical development tended overwhelmingly towards things like military applications (standing armies tending to be some of the largest organized groups around) and demographics/census/taxcollecting work.

                                                                                                                  For better or worse, note that IBM was really good at tabulating census data, something that the Nazis took advantage of. I personally would be happy talking about techniques for tabulating that data and managing it, in hopes that it could be applied to more positive uses. Similarly, I’d be happy to learn about rocketry from von Braun, even though most of what he learned he learned by dropping explosives on British civilians.

                                                                                                                  1. 5

                                                                                                                    Let’s take the specifics. Is Palantir stuff that remarkable to be worth the inevitable fallout in the comments and personal ethical compromises? Is it really that seminal and groundbreaking?

                                                                                                                    It is a dilemma when we talk about say an SS officer who also happened to run the US Moon programme. But Palantir is adtech’s meaner sibling, what is there that makes it worth picking the turd pile?

                                                                                                                    1. 9

                                                                                                                      The drop in the level of technical discussion is the issue, not the company being discussed. I’d prefer to let posts on unethical companies die in silence, rather than make this site a worse place to discuss technology.

                                                                                                                      1. 2

                                                                                                                        Another reason is highlighting the bad gives you less time to create the good. Most people that care can look up a company to see if there’s anything messed up. The bad or at least going with the flow are also the majority. If we’re talking companies, I’d rather people put more effort into highlighting ethical ones with useful tech or products. Basically, anything that can be a fit here on technical grounds with them also mentioning in a comment that the person, company, product, etc is good/beneficial for (reasons here). Maybe they mention some bad examples with it if trying to shame companies. Just optimize to promote more tech and examples of public benefit over just calling out bad companies who are the perpetual default.

                                                                                                                        Easy example: Prgmr.com over Digital Ocean, AWS, Google, or Azure if fits use case due to ‘straight-forward offerings, great service, some nice people, and freely hosting an excellent site for deep, technical discussion.” The submission might even be about something else entirely that’s merely hosted on the ethical product/service. Then, they add a quick note about it that barely distracts from the focus on technical content. Just all flows together for the reader.

                                                                                                                      2. 8

                                                                                                                        the inevitable fallout in the comments

                                                                                                                        The fallout is not “inevitable” - it is not a force majeure. Actual, specific, individuals CHOOSE to make it about the “ethics”. You’re asking people to appease these individuals.

                                                                                                                      3. 2

                                                                                                                        Would you be also ok to discuss methods of performing deadly medical experiments on people with Nazi concentration camps staff? Would you be ok to advise them how to improve the scale and speed? Would you still want to keep such discussions ethics-free? How about diacussing effectiveness of guns with the Zodiac Killer? Or advising Ted Kaczynski on bombs?

                                                                                                                        edit: Please note my intention here is not to seed outrage; I’m sincerely interested in your answer, as I find it hard to imagine setting really no ethics limits, so I’m curious to gauge where would you actually set them? Or would you really want no limits?

                                                                                                                        1. 6

                                                                                                                          I’ll pick on your first example, because I don’t see benefit in addressing the others (I read you as making the same category of point, with those added for emphasis).

                                                                                                                          Would you be also ok to discuss methods of performing deadly medical experiments on people with Nazi concentration camps staff? Would you be ok to advise them how to improve the scale and speed?

                                                                                                                          Let me turn that around on you:

                                                                                                                          Would you prefer they do them inefficiently, if you knew they were going to do them regardless? Would you prefer that the innocent lives lost in the nominal science of these experiments be done in vain because somebody screwed up their data collection? Would you prefer that, for the same data, they use extra prisoners because they suck at statistical power analysis?

                                                                                                                          I don’t support immoral behavior, such as mass murder and torture. I do recognize that whether such things are legally or ethically permissible (again, not morally) is something that transcends individual opinion, and that where those acts fall is a function of the zeitgeist of the times. Sloppy engineering, science, and math will always be sloppy, aesthetics of the time be damned.

                                                                                                                          We can’t get to identifying and fixing/discouraging/pillorying that sloppy behavior if we can’t engage with it. We can’t even get close enough to try and reclaim those lost souls if we can’t engage with them on (nominally objective) material civilly.

                                                                                                                          1. 6

                                                                                                                            Thanks for the interesting reply! So, I think in shortest words I could express what I think about this the following way: I would indeed prefer for them to do this ineffectively - I’d say that is the principle behind sabotage. As far as I know, sabotage works. And that’s indeed what I’d hope to be able to say I’m doing against actions I believe to be significantly unethical. (Though trying to keep my own integrity in means employed to that end.)

                                                                                                                            1. 9

                                                                                                                              I’m not sure sabotage always works the way one hopes. When you destroy the results of human experimentation, the data is recreated by repeating the experiments on a new set of humans. That seems like a bad outcome for those involved.

                                                                                                                              I think the problem is we too often define success as hurting the bad people, and yes sabotage hurts them, but we too should consider the collateral damage of our actions.

                                                                                                                              1. 6

                                                                                                                                It’s not about hurting bad people. It’s about making their evil work harder and less efficient at actually hurting good people, while also trying to convince evildoers to not do the evil in the first place, and preferably do good instead and thus become good people. If doing evil is easy for them, it won’t make them do less of it, but rather more of it. They will always invent new experiments to do on a new set of humans anyway. Appeasement policy did not work on the onset of WW2. A bully must be stopped, not let continue the bullying. A child doing bad things must be reprimanded and informed/educated about bad consequences of their deeds, not spoiled.

                                                                                                                                1. 1

                                                                                                                                  Well put.

                                                                                                                        2. 5

                                                                                                                          if someone posted an article about the technology used by the Nazis to organize the Holocaust, but discussing the attendant ethics was strictly forbidden, would you be happy participating in that discussion?

                                                                                                                          Interesting example - you are asking if I would be interested in (discussing) e.g. technological aspects of IBM products around Second World War. Yes, this might be very interesting. I can also imagine other Nazi tech related topics that I wouldn’t find interesting (but see no reason for others not to be interested in) and in such cases I would use the hide button. Hopefully such place wouldn’t be all war tech from Nazi Germany or modern day USA ;)

                                                                                                                          1. 4

                                                                                                                            I would absolutely be hanging out there. That was kind of how this place has been for the most part.

                                                                                                                            As to your question about Nazis, yes I would want to discuss the technology, and I’d be happy to discuss it with people in those threads. If it were completely neutral politically, there is the potential to have great technical discussion.

                                                                                                                            1. 3

                                                                                                                              I think you’d have trouble finding a lot of people who would want to hang out there

                                                                                                                              I agree, but that’s not a bad thing, is it? This is not some sort of mass movement.

                                                                                                                            2. 0

                                                                                                                              s it possible to have a small place (e.g. lobste.rs) which is for discussing technology without ethical implications and all the rest of the net for discussing whatever you want

                                                                                                                              No. Even if it were, this would not be it.

                                                                                                                              1. 1

                                                                                                                                Even if it were, this would not be it.

                                                                                                                                How do you know this?

                                                                                                                                1. 0

                                                                                                                                  Because this site is full of intelligent people.

                                                                                                                                  1. 9

                                                                                                                                    Ah. You’re implying that “discussing technology without ethical implications” is exclusive to stupid people. Do I understand you correctly?

                                                                                                                                    1. 2

                                                                                                                                      I’m chewing on my keyboard right now!

                                                                                                                                      1. 1

                                                                                                                                        Discussing technology without coming up against ethical issues is impossible. I don’t think intelligent people would just skirt around them when they come up.

                                                                                                                              2. 5

                                                                                                                                Do you have an example of an action that would not be subject to ethical judgements? In trying to understand your claim, but I don’t sufficiently understand the definitions you’re using to determine whether you’ve made a falsifiable statement or not. Will you spend a little time describing the limits of your statement or what empirical observations support it?

                                                                                                                                1. 6

                                                                                                                                  I would argue that there is a class of actions, e.g., selecting one knife over another in the kitchen for cooking, that has neither inherent ethic or no ethical consequence. Now, the ethic selected for consideration will affect whether you consider something to be of consequence. If, e.g., there is an ethical judgment on the Proper Utensils To Use, then that becomes of ethical consequence. Generally, societies consider actions such as killing adult humans to have inherent ethics.

                                                                                                                                  Suppose we choose gcc or clang - then you are supporting, ever so mildly, one development philosophy & license over another. Those licenses are widely considered to have ethical entailments. The FSF has very strong ethical stances about licensing.

                                                                                                                                  Now, with respect to empirical observations, I suggest weapons systems: they are an obvious technology which carries ethical implications. Other technology might be: AirBNB (affects housing), Uber (affects taxi operators), factory robots (replaces factory workers). Each of those affects jobs and thus the ability of many members of society to be fed and housed, a clear ethical question.

                                                                                                                                  I hope those presents samples that adequately points towards the answer you are looking for.

                                                                                                                                  1. 7

                                                                                                                                    I would argue that there is a class of actions, e.g., selecting one knife over another in the kitchen for cooking, that has neither inherent ethic or no ethical consequence.

                                                                                                                                    Interesting. Why do you believe that the methods that knife companies use to exploit their workers and the labor conditions of their employees would not be something to discuss? Do you believe that the environmental implications of importing knives from China rather than buying them locally has no ethical impact? What about the historical implications of Western expansion and influence in Japan, and the resulting western style Gyuto knives supplanting Sujihiki style kitchen knives? In fact, not only are there ethical implications, there are deep historical forces involved in your selection of kitchen knives.

                                                                                                                                    Of course there are ethical considerations in picking kitchen knives. But you might not want someone to bring them up every time you try to discuss paring potatoes, because they may be considered to be off topic by some.

                                                                                                                                    1. 4

                                                                                                                                      Ah, this is the problem with language: I was contemplating grabbing one knife out of my kitchen bin versus another. “Selection” is a polymorphic verb over multiple objects dispatching… and yes, actual purchasing of knives exercises an ethical choice regarding the supply chain and who gets my infinitesimally small dollar choice.

                                                                                                                                      It’s a bit tiring, as a friend said to me once, there is no ethical consumption under capitalism(even if you disagree with my Lefty friend there, you can get the spirit of the statement) - sometimes you do just need to get the Thing done. One has to care the appropriate amount, and respond in the proportional manner.

                                                                                                                                      1. 10

                                                                                                                                        there is no ethical consumption under capitalism

                                                                                                                                        I’d go one step further: There’s no such thing as an unquestionably ethical action. The economic model doesn’t matter – everything is an ethical trade off. With that realization, it becomes clear that ethical debates can be shoehorned in anywhere, which is why a space where discussions on ethics are deemed off topic can be valuable.

                                                                                                                                        (Edit) High quality discussion on ethics would be interesting, but quality is subjective, and discussions are prone to turn into flame wars and shaming, especially in today’s internet climate, so I’d rather have them declared off topic, at least in this little corner.

                                                                                                                                        1. 8

                                                                                                                                          If politics is encouraged in every applicable thread (it is now) and I wanted to join that practice (I don’t), I could be calling folks out in many (sometimes most) threads here each day on ethics around employers, code maintenance, energy use, disposable products causing environmental harm, using tech that’s non-inclusive cuz few understand it or CPU/RAM requirements price out the poor, and so on. It would be ridiculous even when true since it distracts so much from the kinds of technical submissions that brought many people to Lobsters in the first place. Especially those actually building interesting stuff vs just submitting.

                                                                                                                                          It’s why I was for either ban on politics or a tag so it would be in specific threads folks could filter. Both got shot down. Here we are.

                                                                                                                                2. 6

                                                                                                                                  You’re absolutely correct.

                                                                                                                                  Hell, Portland State University’s CS program even has a requirement class “CS 305 Social, Ethical, and Legal Implications of Computing”[0]. I suspect this is not an anomoly..

                                                                                                                                  1. https://www.pdx.edu/computer-science/cs305
                                                                                                                                1. 12

                                                                                                                                  It’s a lost cause on politics, friendlysock. The vast majority of votes in most threads favor political activism in both submissions and comments. They also favor a specific kind of leftist politics over others with consistent responses, positive and negative, over about a year. The recent thread prioritized political action, up to pushing a person to quit their job, over the technical content by around 6 to 1 votes when I last looked. Situation is similar for others. Also, low-content, political comments get more support at times than high-content, technical comments.

                                                                                                                                  Conclusion: the Lobsters community isn’t what it was when you wrote What Lobsters Is and Isnt. It is now a community that prioritizes leftist, political activism over all other activities with a small, chunk of dissenters. It’s also a link aggregator whose content is a mix of that, stuff in your Is list, and stuff in your Isnt list. It’s dishonest to say anything else that doesnt reflect what majority of voting users promote and commenters do here.

                                                                                                                                  Ill be updating my description of the site in near future to match its current mix of deep tech, HN/Reddit-like news, and leftist activism. Im also going to stop all poitical comments counter to that leftist style of politics since the dominant group has consensus that they’re not welcome here and therefore too low-impact to matter. I will note they weren’t censored: a strength of Lobsters’ moderation. Ill only comment like that further where it impacted or is aimed at me. I might also modify my submissions to reflect this community’s priorities putting the others somewhere else (eg a blog). I’ll note the changes in my profile so people in Lobsters’ minority, folks like us, can still follow that stuff if they choose.

                                                                                                                                  I’ll probably start the process next year since November and December are so busy for me. I have some other ideas that might improve things further for both political opponents and minority folks (esp anti-politics for Lobsters). I think 2019 will be an interesting time for Lobsters.

                                                                                                                                  1. 9

                                                                                                                                    Im also going to stop all poitical comments counter to that leftist style of politics since the dominant group has consensus that they’re not welcome here and therefore too low-impact to matter.

                                                                                                                                    I don’t think this is true, especially since you are the one of the few who call out the inconsistencies when you see them. The marginal value is especially important when there are few, going down from 5-4-3-2-1 against the endless horde of leftist posturing and virtue signaling makes every step the more damaging to reasons and honesty.

                                                                                                                                    The reasoning that the dominant group has consensus isn’t even an argument in my mind. To follow this line of reasoning, one should only voice one’s opinions, or the truths if they agree with the consensus view. That is clearly a bad place to be in.

                                                                                                                                    At the end of the day ethical questions will always be more relevant and more voted on. Because it impacts everyone, while technical issue can be both beyond your grasp (i.e. you don’t know enough about this particular tech to talk about it) or simply boring. Add to that the highly emotionally charged nature of ethics and politics, we shouldn’t really count number of votes and comments as to be metric by which to value opinions and discussions. I’m not going to stop speaking English because there are 15 billions or however many Chinese speakers (in some timeline).

                                                                                                                                    1. 6

                                                                                                                                      Thanks for the encouragement. Especially from someone who doesn’t back down on their own politics in this space. I agree with most of your comment. I’m even continuing to do the dissent in places where it counts (aka mostly real life). I’m just cutting it off for Lobsters. Maybe most of these online forums with low numbers of people with leftist activists in control. Which they definitely are now.

                                                                                                                                      You see, your post presumes two things: this is a place for actual, political discussion; the old Lobsters is worth fighting for. I disagree with both with the 2nd following from the 1st.

                                                                                                                                      The site was a low-noise, technical site with occasional, political scuffles. The first meta where I put strong arguments for no politics or free speech had a huge number of people supporting my position. They were both putting time in with arguments (most important) and upvoting (peripherally important). There were many people on opposing side, too. Their side wanted specific kind of politics in every thread, mostly downvotes/insults anyone that disagrees (some were nice), and occasionally some would want a CoC that would let them ban dissent(ers).

                                                                                                                                      During and after the mass invite, the people in the leftist activist crowd invited a lot more people. As I fought their false claims and demands for no dissent, more people on no politics and free speech sides droppped off in both comments and votes. Seeing patterns from other sites, they decided that Lobsters would be politically dominated and not worth further investment. Some for just politics, others for whole site. Eventually, we had a moderator and admin with similar beliefs as the crowd with most mindshare. Add to that some long-running members were telling them they’d quit Lobsters if (a) politics wasn’t allowed everywhere or (b) it became “like HN, Reddit, etc.” by allowing non-left folks to post their own links those leftist abhorred. What hypocrisy if goal is actual, political discussion and evolution. That overall combination sealed the fate of the technically-focused, less-political Lobsters.

                                                                                                                                      Now, that site is gone. Look at the current vote counts and moderator statements on various positions here. Still consistent with my claim it’s changed. Now, if that is the environment, next question is, “Is political action worth effort?” Prior conversations indicate these people are not here for discussion. Their type of politics believes they’re already correct about the fundamentals (a religion), that people are getting harmed (mostly imagined) by every dissenting statement/action, and their moral imperative is to convert everyone to their beliefs to reduce that harm and promote the good they believe in. They’re evangelists, not philosophers or conversationalists, at least when it’s about politics. That kind of view is also why they act like a mob on anyone disagreeing even with civil posts, often with accusations of harm or discrimination. You’ll also see them throw low-effort comments while people like me in outgroup wanting actual discussion might put 30 min into making ours thoughtful and civil. That was really draining. Which was the goal, deterrence of dissent, which worked since the numbers shifted with high participation from people with their beliefs but almost zero participation from those of us with alternative beliefs.

                                                                                                                                      Conclusion: the political aspects of Lobsters are now an echo chamber for a specific kind of politics with everything else to be heavily penalized and shunned. Most of their action is virtue signaling and/or outgroup shaming since it achieves nothing in the real world toward their goals. The actual, political discussion they intend is among people in their group evangelizing their beliefs, hashing out differences they tolerate within parameters of shared beliefs, developing plans for increasing conformance in more spaces (online/offline), and so on. Although for some it’s intentional, others seem to be just going with the flow since that’s what they believe. After increasing participation by non-leftist-activist Lobsters, turning the site around would require changing the beliefs of one moderator, maybe the admin, and maybe 40-80 voters based on last action I saw. Then, Lobsters would immediately loose key members who will quit on political grounds. The people you’re convincing value those members, too. So, that’s a monumental effort to either get politics off Lobsters or shove it into dedicated, political threads. It’s possible the latter happens as a compromise without monumental effort but I’m not holding my breath: admin probably won’t do something that makes the people who will quit follow through with their promise.

                                                                                                                                      Conclusion 2: If I’m not extremely busy, you’ll see it by 2019. Meanwhile, I’ll be done discussing politics after a transition since Lobsters isn’t a site for political discussion: it’s a leftist-activist site dedicated to evangelizing their politics and correcting non-conformance while also enjoying reading and commenting on some technical stuff. There’s a dissenting group doing other things. They’re not in control or increasing in number, though. Do what you want on your end. Just know you’re doing it in a church expecting religious renouncement rather than a political conversation expecting evolution of thought.

                                                                                                                                      1. 2

                                                                                                                                        yeah, you convinced me.

                                                                                                                                    2. 8

                                                                                                                                      There are a string of sites that I’ve abandoned (Tumblr, Twitter, HN, Reddit) for similar reasons that you outline. Up until relatively recently, Lobste.rs. seemed to be a sane corner of the internet where most discussions could take place without devolving into moral posturing.

                                                                                                                                      I’m unsure if ceding the territory to the hyper-political is the right answer. From a mental health perspective it certainly is, but from of societal perspective it appears to just lead to more isolation and polarization.

                                                                                                                                      1. 7

                                                                                                                                        The admin and one moderator support what I describe along with most of voters in those threads and comments. It’s already done. The environment is fixed to that situation at the moment. We have to integrate with or reject that situation. There’s at least two choices:

                                                                                                                                        1. Ignore the politics to focus on the technical content.

                                                                                                                                        2. Contribute to the politics to further the goals of the new, community politics while improving one’s standing in it. This will reinforce the current situation with that type of politics and focus going up from here.

                                                                                                                                        I’m doing 1 for now after this thread unless pulled into a discussion. I’ll be doing some of 2 due to overlap between their and my politics in terms of benefiting people. Thinking about various possibilities. Retreating from political discussion in a place where it goes nowhere outside specific groups’ beliefs and practices, the community’s majority position, makes the most sense just purely on an effort/impact basis. There were some great moments that came out of all that work, though. I won’t forget them.

                                                                                                                                      2. 10

                                                                                                                                        For what it’s worth, I really appreciate your comments about security and building things that are reliable. I’ve learned a lot from your comments, and I hope to learn more in the future.

                                                                                                                                        It’s pretty taxing for me personally to read your posts that go into politics. In my reading, your tone changes pretty dramatically from the endless-well of experience and good-natured sharing of knowledge to a more condescending, defensive one.

                                                                                                                                        Things are more politically interesting than they were when I found this site a few years ago. Things are less stable, and we are in an increased state of conflict. Conflicts on this scale will permeate more and more of our lives until they are resolved. To the extent that this is a space of low-friction discourse, the conflict will act itself out when two sides decide to play the game. People are saying “oh, isn’t it such a bad thing that the palantir OP couldn’t respond to the top comment?” but It’s not. They chose not to play that particular game. I think you’re right to identify that your conflicts are those of your choosing.

                                                                                                                                        1. 13

                                                                                                                                          “For what it’s worth, I really appreciate your comments about security and building things that are reliable. I’ve learned a lot from your comments, and I hope to learn more in the future.”

                                                                                                                                          Thank you! I’ll stay at it!

                                                                                                                                          “It’s pretty taxing for me personally to read your posts that go into politics” … “to a more condescending, defensive one.”

                                                                                                                                          I appreciate your honesty. Given you bring it up, I figure I’ll explain one last time unless asked again. I can at least tell you where that defensiveness comes from that ties into Lobsters in at least two, major ways:

                                                                                                                                          1. Black students and administrators at a black school with similar beliefs and practices, esp disagreement = offense or personal attack, used them to justify silencing, shouting at, slandering, and physically beating white students on a daily basis. I endured this for years like other whites did at every black school I asked about. I got PTSD from the effects of beatings, esp having to see them coming from a mere glance. They simultaneously talked up our privilege, their oppression, and so on despite them having all the advantages and power which they used to hurt us. That led almost all white students (except a few like me) to believe similar stories in media were lies perpetuated by an aggressive race of people. The few, really-good students and teachers plus me wanting to get along kept me non-racist (biased at worst). Liberals of Lobsters’ type and blacks told me from then onto today that structural oppression against whites doesn’t exist, our claims don’t matter, and/or just perpetuate “real” racism against minorities. So, the psychological damage, PTSD cases, discrimination, and resulting racism among white victims will continue until such systematic racism against whites is exposed, squashed where possible, and sympathy extended to victims rather than denial of their existence. People said same stuff here, too, so I fought it for a while. One that switched positions floored me: it’s so, so, so rare.

                                                                                                                                          2. Prior threads where I expressed civil disagreement with examples got me hit with personal attacks and people that misrepresented my comments on purpose. There were usually many of them at once with some having high upvotes. When a non-leftist or non-PC-leftist did that, they’d usually get slammed by the same people talking about comment quality and inclusiveness should stay up before the comment was collapsed. That difference happened a lot. Knowing there’s people watching with intent to do that either creates a chilling effect or increases agitation/resolve in most people who sense it. Even greater in me since I grew up in a murder capital with micro and overt aggression making me optimized to react fast and hard to it. I’m still so toned down compared to how folks in Mid-South, esp minority members, usually respond to personal insults tied into politics, esp racial. For the rest here, it was largely a chilling effect: many people contacted me over time after Lobsters got super-political saying they didn’t feel safe voting or commenting on political stuff since they thought they’d loose their account. A few thanked me for representing dissenting opinions. Some left.

                                                                                                                                          Put those two together and I was still getting personal attacks, I got a little defensive when talking about the same things with the same people. It’s only natural even though I hate it had to be painful experience for onlookers who weren’t involved in such behavior. I should mention that some people here put in a lot of effort to be civil. A few even would message me links helping me understand their side of things. @pushcx and @Irene particularly handled lots of tough situations well: their responses prioritized civil discussion, tolerance of dissent, and remedial action wherever possible. The political discussions (and battles) taught me which Lobsters had good to outstanding character in difficult situations. I’ll remember them in the future if opportunities knock.

                                                                                                                                          This is all historical, though, since I’ll be done with my form of politics on this site soon or by the end of the year. Could be a few more discussions left since there’s ongoing meta and transitional effects I might not see coming. I’m minimizing it, though, while still posting those security and reliability papers/tips yall love. We have a great, little, security/verification community here with folks good at theory, some at practice, and some that do both. Gotta keep building that up on top of other communities. There’s possibilities to bring in more experienced and CompSci people in things like UI/UX that are highly important, but get less attention.

                                                                                                                                        2. 10

                                                                                                                                          “Leftist political activism” is a weird way to characterize caring about our social milieu.

                                                                                                                                          That said, I’ve seen a lack of engagement by those with contrary political views, other than to bemoan talking about any issue that isn’t narrowly technical.

                                                                                                                                          1. 9

                                                                                                                                            The highest-voted, leftist views are about what constitutes racism/sexism, transgender identity, political correctness with language policing, focus on inclusive behavior prioritizing non-whites/males, and telling people to quit Palantir (but not Google or Apple/Foxconn). These kind of views are most dominant in terms of upvotes and replies. When described, most people say leftist, social justice, and so on.

                                                                                                                                            I’m open to other phrases so long as the label will indicate most or all of the above to a centrist, conservative, or other person that doesn’t closely follow such politics.

                                                                                                                                            1. 3

                                                                                                                                              I would disagree with you on one premise. There are hardly any “leftist views” here. I would classify most of them as “right of center but not too right”. The discourse has gone so far right in the last 30 years, that fairly conservative views of old are now “leftist”. I would argue that most conservatives wouldn’t be able to identify leftist views. In fact, I find most conservatives are pretty comfortable with some of them. The ideals of freedom were often historically leftist ideas, for example. It’s pretty surprising to most Republicans that Lincoln corresponded and read Marx, and that communists joined the Republican party early on instead of creating their own. History is easily forgotten, especially in the tech world.

                                                                                                                                              1. 5

                                                                                                                                                This is a semantic argument. I’m sure if you go back long enough white means black or w/e.

                                                                                                                                                Right now leftists are interested in what was described.

                                                                                                                                                1. 0

                                                                                                                                                  It is a semantic argument, with substantial differences in perspective on how its decided. I happen to agree with mempko, there are hardly any leftist views here, either in an economic or cultural sense. Being of the left isn’t a free for all, it has very real and substantial poles around which it organizes its ideology, and I was actually taken aback to see mempko’s comment given that I agreed and usually (almost always actually) I feel very much alone in settings like this. Just because someone supports, say, civil rights does not necessarily make them of the left. Same I might add for gender issues.

                                                                                                                                                2. 2

                                                                                                                                                  Of Democrats and Liberals in U.S., a huge chunk of them push these views. Some don’t. No Republicans or Conservatives do that I’m aware of at least for these contexts. It would be pretty fringe. The Democrats and Liberals are Leftists or Left-leaning. Therefore, they’re Leftist Views at least to Americans.

                                                                                                                                                  The situation might be different to people outside of America. The Europeans on both Hacker News and Lobsters sometimes have interesting comments about what’s called socialist here vs over there.

                                                                                                                                                  1. 3

                                                                                                                                                    It’s true that Europeans have different ideas of what leftist views are. But this is because Europeans still have a large base of leftists in the public sphere. But what I’m saying is that even by American standards, someone like Bernie Sanders would have been a moderate republican 50 years ago. That shift to the right has been so dramatic that people believe Democrats are “leftist”, when historically in America they are clearly right of center. 50 years of propaganda does a lot to change public views.

                                                                                                                                                    So yes, you are right to say Democrats are “leftist” because that’s what convention says they are. But this almost blinds people to actual leftist views.

                                                                                                                                                    I also think the newest generation will once again change what that means.

                                                                                                                                                    1. 3

                                                                                                                                                      That all makes sense. I have to use the current terms since that’s what everone is using. It enables wider understanding.

                                                                                                                                                      1. 1

                                                                                                                                                        My issue with a lot of conservatives is that they use the term “leftist” as a derogatory term. Which is sad because a lot of leftist ideas should appeal to conservatives. It’s almost as though words have the opposite meaning in the US as they do in the rest of the world. For example, the word Libertarian used to be synonymous with anarchist, and anarchists are strictly hardcore leftists. I feel the words “conservative” is similar now because to me a lot of modern conservative views are pretty extreme. I think conservatives have a lot in common with real leftists if they look closely. Many conservative talking points are basically Marxist! For example, the idea that you should be paid what you are worth. The ideas of freedom and individuality. Many leftists are against some Liberal ideas like cultural relativism. I’m sorry but genital mutilation is wrong.

                                                                                                                                                        1. 1

                                                                                                                                                          I agree again that lots of groups are more similar than different in some ways and their classification changed over time.

                                                                                                                                                          Ill add to you first line that liberals bash conservatives incessantly in every forum I see, including here. It’s impossible for most of them to have a real, political discussion if things are that antagonistic. There’s a few of us doing actual discussion here now. Most threw votes for or against on reflex to push their views with the least participation and communication possible. People, esp on HN and Lobsters, have constantly reminded me it’s part of human nature (tribal instincts).

                                                                                                                                                          So, folks have to confront that part, say “it’s about us, too, not just them,” constantly read other side’s views/evidence, and constantly re-assess. Most important, they have to learn to fight the instinct to attack the other side in discussions. Second that happens, it becomes an emotional fight where rational arguments have no effect. If folks keep at that, they’re just bullying and dominating, not doing discussion.

                                                                                                                                                          I appreciate you mostly staying on actual, civil discussion in our conversations despite our beliefs being far apart. I always enjoyed them even if they got stressful. I still appreciate at least one person sets standard for science on improving people’s potential/happiness even though my view is more pessimistic. ;)

                                                                                                                                              2. 6

                                                                                                                                                “Caring about our social milieu” is a weird way to characterize leftist political activism.

                                                                                                                                                I’ve seen a lack of engagement by those with contrary political views, other than to bemoan talking about any issue that isn’t narrowly technical.

                                                                                                                                                That’s pretty consistent, wouldn’t you say? Though “bemoan” is a rather impolite way of putting it.

                                                                                                                                                (edit: on second reading, the post I’m replying to is actually some sort of low-key insult. disgusting.)

                                                                                                                                                1. 2

                                                                                                                                                  That said, I’ve seen a lack of engagement by those with contrary political views, other than to bemoan talking about any issue that isn’t narrowly technical.

                                                                                                                                                  I don’t hold particularly contrary political views, but I have to wonder if you’d actually welcome this kind of discussion from people with opposing political views, varying views on ethics, and similar?

                                                                                                                                                  1. 0

                                                                                                                                                    Why not?

                                                                                                                                                2. 0

                                                                                                                                                  Your comments in that thread were not ‘counter to leftwing activism’. They were counter to common decency. You accused someone of being a hypocrite with no basis whatsoever.

                                                                                                                                                1. 7

                                                                                                                                                  @friendlysock, the post in question was going to be problematic regardless of our community health at the moment it was posted. Just look at the vote counts you highlighted. Crustaceans clearly have strong feelings about that company.

                                                                                                                                                  That being said… yes, this would be a good time to inoculate new comers, re-inoculate old-timers, and push out those that resist.

                                                                                                                                                  …I don’t know how to reply or otherwise respond to the chronologically first comment on your post. I have many skills, but not-making-it-worse is not one of them. Help? I want to say something like “No, just no. We’re doing a thing here. Watch us and do like us, or leave.”

                                                                                                                                                  1. 11

                                                                                                                                                    @friendlysock, the post in question was going to be problematic regardless of our community health at the moment it was posted. Just look at the vote counts you highlighted. Crustaceans clearly have strong feelings about that company.

                                                                                                                                                    Having strong feeling is one thing, knowing which places are good to discuss them is another. It seems to me that with each passing month more and more people think that lobste.rs is good place to discuss anything they find interesting/important.

                                                                                                                                                    Part of the problem, is that there are no explicit content rules - it’s hard to ask others to stop posting any kind of content if there are no guidelines what is and isn’t accepted here.

                                                                                                                                                    1. 7

                                                                                                                                                      One part of @friendlysock’s post struck me:

                                                                                                                                                      This site is for practicing technologists and for people trying to learn about technology and better themselves as engineers and developers.

                                                                                                                                                      I think it would be helpful if this or something similar was added to the story submitting guidelines on the Submit Story page. It would be more explicit than the current “if no tags apply, your story is off-topic” suggestion.

                                                                                                                                                      1. 8

                                                                                                                                                        Keep in mind, that is @friendlysock’s line, not an “official” Lobsters policy. I happen to agree with them, but I think that the truth is closer to @tt’s remark that this has always been a “place to discuss anything [the users] find interesting/important. Unspoken rules have but little force.

                                                                                                                                                        1. 3

                                                                                                                                                          It’s his view, not Lobsters’. I think, could be misremembering, there used to be more people agreeing with his view. The submissions were consistent with it when I came in. The votes went the other way in a later meta after they did for representative threads and comments. I’m guessing most people doing mass invite brought in people like them. Most of people that came in have the newer leanings about political posts. There were many before, though.

                                                                                                                                                          Now, the majority opposes friendlysock’s position in day-to-day use of the site, votes, and comments. It’s why my welcomes that use the What Lobsters Is and Isn’t write-up don’t say it’s our rules or official policy: I just encourage them to focus on What Lobsters Is for high-quality, technical submissions that will be well-received by people focused on that.

                                                                                                                                                        2. 7

                                                                                                                                                          This only makes sense if that actually is the sole purpose of the site, but I don’t believe there’s agreement on that point, despite @friendlysock continually speaking as if there is, and as if he speaks for the community as a whole.

                                                                                                                                                          1. 6

                                                                                                                                                            for people trying to learn about technology and better themselves as engineers and developers.

                                                                                                                                                            In particular, the implication that bettering yourself as an engineer is unrelated to understanding the ethical implication of your work is deeply disturbing to me.

                                                                                                                                                            1. 8

                                                                                                                                                              Do you believe that the posts in question actually furthered our understanding of the ethical implications of the work? To me, it read more like low effort shaming, or an attempt to stroke a sense of moral superiority.

                                                                                                                                                              Out of all ethical discussions on this site, what portion do you think further our understandings of ethical implications?

                                                                                                                                                              1. 4

                                                                                                                                                                That is not the implication I get at all. What I read is that “understanding the ethical implication of our work” is something we could agree to do elsewhere.

                                                                                                                                                                1. 2

                                                                                                                                                                  I don’t see how what you said can be true without what I said.

                                                                                                                                                                  If understanding ethical implication of your work is part of being a better engineer, then it’s a suitable topic for a site whose purpose is “trying to […] better themselves as engineers”.

                                                                                                                                                        1. 2

                                                                                                                                                          This approach feels wrong. I think a better approach would be to have all syscalls become async, including sleep, and then provide a blocking ‘wait’ syscall that waits on multiple events. From the last time I looked, this even fits nicely into the plan 9 internals.

                                                                                                                                                          So, something like this:

                                                                                                                                                            int rr = read(fd, buf, n);
                                                                                                                                                            int tr = sleep(timeout);
                                                                                                                                                            int id, r;
                                                                                                                                                            r = wait((int[]){rr, tr}, &id);
                                                                                                                                                            switch (id){
                                                                                                                                                            case 0: /* timeout */
                                                                                                                                                            case 1: /* read result */
                                                                                                                                                            }
                                                                                                                                                          

                                                                                                                                                          This also means that you get pipelining of read requests and the ability to hide latency, and remove the need to remember checking for timeout.

                                                                                                                                                          1. 1

                                                                                                                                                            It also means most “calls” (except “wait”) can become messages rather than procedure invocations. Isn’t this how a microkernel is supposed to work?

                                                                                                                                                          1. 10

                                                                                                                                                            Note: some controversial, and somewhat decisive, opinions follow.

                                                                                                                                                            Some of the changes in this list are really exciting:

                                                                                                                                                            • redefinition of {u,}intmax_t to allow implementations some leeway for bigints and extended integer types (maybe I can finally have uint128_t!)
                                                                                                                                                            • enum type-specifiers for better control over storage allocation (I get moar control!)
                                                                                                                                                            • clarification that anonymous structures inside unions maintain their structure (an ambiguity that’s nice to have resolved since the committee seems to have a consensus that this was always intended)
                                                                                                                                                            • decimal floating-point arithmetic extensions (kiss some rounding error goodbye!)

                                                                                                                                                            I am incredibly excited for some of these (and I have a few things I’d like to eventually propose to the committee myself, though I don’t think I’ll even have them hammered out by the time C2x is standardized). But there’s something that, to me, feels almost sinister going on underneath some of the proposals; namely, N2269 and nullptr.

                                                                                                                                                            So, here’s what happened, WG14 (the working group behind the C standard) stated in the C2x charter a renewed set of principles to guide the language moving forward. One of those principles was minimizing deviations from modern C++. This, to me, is a horrible idea. C++ hasn’t been a strict superset of C since C99. Maintaining source-code compatibility is strictly impossible without changes to the C++ standard or removals from the C language which are widely used. Furthermore, if C balloons into C++, it will be a tragedy.

                                                                                                                                                            • N2269 (adding attributes) is an interesting idea but explicitly chooses to not to just use _Pragma (already part of the language) because it’s too limited in power, nor _Attribute (the natural choice) because it would deviate from C++ in favor of new syntax (taken from C++) that includes a construct :: that doesn’t exist anywhere else in C.
                                                                                                                                                            • nullptr. C’s definition of NULL has changed a couple of times, and now matches C++’s definition ((void * )0). As I understand it, C++ benefits from nullptr because C++ has multiple types of pointers (references, unique_ptr, etc.), templating, overloading and a variety of other tools that make using NULL ambiguous or unsuitable. C has exactly none of these, and I seriously hope it never shall.

                                                                                                                                                            These changes are not yet voted on, as far as I know, but I seriously hope the Committee is wise enough to not take “minimize deviations from C++” to mean “implement everything that a C++ programmer might want in C”. The affects would be disastrous otherwise.

                                                                                                                                                            1. 6

                                                                                                                                                              I mostly agree – although I think that decimal floating point is also a mistake. It seems appealing, but it’s almost never what you want. The #1 thing that I want from the C committee – the gradual removal of undefined behavior – also seems to be missing here.

                                                                                                                                                              1. 3

                                                                                                                                                                Not only are they not removing undefined behavior, but they are adding all sorts of unthought out extensions to C, like decimal floating point each on of which comes with additional prospects of undefined behavior.

                                                                                                                                                            1. 4

                                                                                                                                                              A bug in the kernel takes down the whole system. The more code in the kernel, the greater the chance the whole system goes down. Don’t put things in the kernel that aren’t absolutely necessary…

                                                                                                                                                              1. 1

                                                                                                                                                                I’d say understanding error messages is absolutely necessary

                                                                                                                                                                1. 5

                                                                                                                                                                  Error reporting is necessary; The error message can be generated from the report when being sent to to the user interface.

                                                                                                                                                                  1. 2

                                                                                                                                                                    Hence internationalization is necessary. Internationalization is error reporting. User interface part is called localization, and I agree it can be done outside the kernel.

                                                                                                                                                              1. 1

                                                                                                                                                                I would like to try it under OpenBSD on a x86_64 machine, does anyone know if there is a webpage or repository for the project? Google threw me this but it seems stalled since 2015.

                                                                                                                                                                1. 2

                                                                                                                                                                  It runs on Plan 9. I’m not aware of any Unix ports.

                                                                                                                                                                1. 4

                                                                                                                                                                  Might help with playing around with lock/wait-free algorithms, too. People often say they’re easier to implement if a GC is present.

                                                                                                                                                                  1. 4

                                                                                                                                                                    Unless your lock/wait-free data structure must have strong reference cycles, you’d likely be better off using Arc. As mentioned in the article, though, something like this could be a nice off-the-shelf solution for cases where you really need tracing GC. It would be nice to eventually have both single-threaded and multi-threaded variants, so that you can take advantage of the reduced overhead in single-threaded contexts.

                                                                                                                                                                    I look forward to reading the rest of this series!

                                                                                                                                                                    1. 4

                                                                                                                                                                      Reference counting in concurrent code is a recipe for cache line ping-pong.

                                                                                                                                                                      1. 1

                                                                                                                                                                        Fair point. I guess it depends on details of the data structure and use case. If there’s a lot of count churn, you might be better off with a tracing GC. Of course, you will also need to account for any latency requirements.

                                                                                                                                                                      2. 1

                                                                                                                                                                        Thanks for the tips!

                                                                                                                                                                    1. 4

                                                                                                                                                                      No. Because C is not how your computer works. It’s not how anybody’s computer works, nor has it been in about 3 or 4 decades.

                                                                                                                                                                      C is how a PDP-11 works and bears about as much resemblance to an x86-64 chip as it does to ENIAC.

                                                                                                                                                                      https://queue.acm.org/detail.cfm?id=3212479

                                                                                                                                                                      1. 14

                                                                                                                                                                        I don’t think that’s really true.

                                                                                                                                                                        The assertion that “C is how a PDP-11 works and bears about as much resemblance to an x86-64 chip as it does to ENIAC” doesn’t really stand up to scrutiny. C is fairly good at providing a window into any machine with a flat memory space and a conventional call stack - ie. segmented memory models aren’t a good fit and machines without stacks aren’t a good fit. x86-64 chips are a good match for this model and C is no better or worse at programming them than it was the PDP-11 it was originally written for.

                                                                                                                                                                        1. 6

                                                                                                                                                                          C is how a PDP-11 works and bears about as much resemblance to an x86-64 chip as it does to ENIAC.

                                                                                                                                                                          C is within epsilon of the distance from x86-64 assembly and x86-64 implementations. The differences that this article talks about are largely present in x86-64 assembly too.

                                                                                                                                                                          1. 4

                                                                                                                                                                            I’d say this is because “how modern computers work is shaped by how C works”.

                                                                                                                                                                        1. 5

                                                                                                                                                                          I think there is a lot of room still between TUIs & GUIs. TUIs shouldn’t have to be restricted to characters only IMO (although that would admittedly imply losing compatibility with terminals), also TUIs shouldn’t need to mimick GUIs, going as far as rendering drop down menus, window borders etc. Ideally there should be a generic canvas app that renders UIs for professional/experienced users that are not restricted to character display, and be mostly key driven (i.e. such apps would require some time investement upfront to gain more productivity benefits later [although context sensitive help for possible key combinations would be ideal]). These apps should should be composable and easy to customize/extend (think of an ‘edit source’ option instead of merely ‘view source’).

                                                                                                                                                                          1. 11

                                                                                                                                                                            One example of such UIs is GUI version of Emacs. It’s mostly text-based, but without downsides of terminals and with ability to draw pictures and set multiple fonts.

                                                                                                                                                                            Each time I tried keyboard-oriented UIs, but made of native widgets (for example Total Commander, IDEs), I had lots of problems and had to use mouse anyway. Focus changed wildly, there was bad indication where focus is, there were hundreds of tab stops.

                                                                                                                                                                            I think it would be cool to have GUI toolkit like Electron, but with terminal-like drawing (but with multiple fonts and images) instead of web browser.

                                                                                                                                                                            1. 1

                                                                                                                                                                              Exactly, a very lightweight and fast Electron like toolkit that is optimized for UIs for professionals that isn’t restricted to text-only. It could be cell-based for example (more like a spreadsheet instead of arbitrary x, y positions) but still allow for bitmap images and 3D renderings within a cell range. And it wouldn’t need a ‘toolkit’ with buttons, dropdowns, navbars and the like, because everything is keyboard-driven (with context sensitive help for keybindings in a specific UI state).

                                                                                                                                                                              Good point about (GUI) Emacs though.

                                                                                                                                                                              1. 10

                                                                                                                                                                                Exactly, a very lightweight and fast Electron like toolkit that is optimized for UIs for professionals that isn’t restricted to text-only

                                                                                                                                                                                Emacs?

                                                                                                                                                                            2. 2

                                                                                                                                                                              One of the older ones were NLP-like schemes that let you just say what you wanted to do in a restricted subset of English. They were often used in databases but sometimes outside. So, you didn’t need menus, hierarchies, etc. Just a keypress to activate a text field followed by the command.

                                                                                                                                                                              Just throwing it in there as an example of an alternative. Such NLP schemes aren’t always appropriate.

                                                                                                                                                                              1. 1

                                                                                                                                                                                Interesting, do you have examples of or links to such alternatives? I am curious to learn more about it.

                                                                                                                                                                                1. 1

                                                                                                                                                                                  They’re not in my bookmarks. I studied them a long time ago as part of AI research. A quick Google gives this project as an example of the kind of steps involved. Obviously, you wouldn’t use Java for the terminal version. :)