1. 38

    Why are these kinds of articles almost always predicated on the authors being completely unaware of Option/Result types?

    It’s the old “beating down the exception strawman” – that no one is even interested in defending.

    (I wonder what happens to all these similar articles when Go gets generics and people start using Option/Result types?)

    1. 14

      The author does give lip service to Option/Result types:

      EDIT: Exceptions are definitely not the only way other languages deal with errors. Rust, for example, has a good compromise of using option types and pattern matching to find error conditions, leveraging some nice syntactic sugar to achieve similar results.

      But in a way that suggests they’re something he’s heard of, rather than personally used. If you’re already used to working with ADTs that contain errors, I can’t imagine finding Go’s system of basically mandatory 2-tuple return types for all error-prone functions to be ergonomic.

      1. 11

        Agreed. Plus all the fun in figuring out whether you actually need to handle the value and error case, because the signature doesn’t tell.

      2. 8

        As someone who was an adamant gopher for like 7 years. Rust’s Option and Result types changed the way I see programming, especially once I fully grokked that Result is basically a monad.

        1.  

          Same, although I had that realization when encountering the equivalents of those types in Haskell, rather than Rust. A lot of what I like about Rust is that it’s a mainstream language (more mainstream than Haskell in any case) that lets you easily define and use ADTs.

        2. 8

          It’s the old “beating down the exception strawman” – that no one is even interested in defending.

          I dunno, having used Go as my main development language for eight years now, I encounter people defending exceptions far, far more often than people advocating for option types.

          1. 5

            Isn’t it that, at this point in time, most people familiar with option types for errors are developing in Rust and not really in the Go world anymore ?

            Somebody coming from a language with exceptions to Go might say he prefers his old way. And there probably aren’t, today, many people coming from Rust to Go.

            1.  

              sure, I think there aren’t many people coming from Rust to Go, that’s … kinda my point? soc is mad that the article is not written specifically for him, and is instead written for an audience that is more representative of who the author is actually encountering. The idea that exceptions are a straw-man nobody is defending is … honestly a little ridiculous. People defend exceptions all the time. The majority of programmers work in JS, Python, Java, C#, and PHP, all of which have error-handling semantics built around exceptions. A lot of those programmers really do make arguments defending exceptions. Few of them read lobste.rs for recreation. And you know, the few that DO read lobste.rs for recreation need articles like this to learn about things they haven’t encountered yet.

              I also find it so hilarious that someone flagged my prior comment as “incorrect”. I described my lived experience and someone flagged it as “incorrect”. lol

              In reality, most people just code because it’s a job. This article is not written for people looking to find self-actualization in a type system.

              1.  

                I also find it so hilarious that someone flagged my prior comment as “incorrect”. I described my lived experience and someone flagged it as “incorrect”. lol

                Looks like all my comments on this thread have received at least one flag.

                I don’t know what it is about Go that induces such rage in some people, it’s completely fine (even reasonable!) to not like Go, but Go threads have a tendency to turn in to dumpster fires in a way that I don’t see in other languages (including PHP and JavaScript).

                1.  

                  I don’t know what it is about Go that induces such rage in some people

                  classism.

            2. -7

              I’d assume that people with higher language quality standards usually don’t intermingle with Go devs.

              Communicating with Go devs certainly forced me to reevaluate the minimal amount of knowledge I assumed to be absolutely necessary to be a functioning programmer.

              1. 10

                Communicating with Go devs certainly forced me to reevaluate the minimal amount of knowledge I assumed to be absolutely necessary to be a functioning programmer.

                Dude, what the fuck? This has no place here.

                1.  

                  I don’t think you need to get emotional over this.

                  I reported my experience, just like other people have in this thread.

                  1.  

                    I did not downvote your comment, because I did not get emotional over it. What happened here I think is that people read “Go devs” and instinctually took your rather laconic criticism of the technology to be criticism of the members (i.e., themselves) belonging to the said group.

                    It is easy to become a target of put-down by aggravated members of any group if you are not vigilant with your words.

                2.  

                  “Enable fresh graduates to contribute effectively” was a core design goal for the language.

                  It’s not surprising, then, that there’s no shortage of beginners to be found there.

                  1.  

                    In my experience/interactions there are actually comparatively few new programmings in Go; much of the documentation and resources also tend to be aimed more at people who already know how to program in another language, I’ve seen quite a few people complain about the lack of entry-level jobs, the community is not always very welcome to beginners, etc. Generally speaking, I wouldn’t recommend it as a first language.

                    This is just my subjective impression; I don’t have any numbers to back this up and could be wrong.

                  2.  

                    The Rob Pike quote (which seems to have come from this talk: https://channel9.msdn.com/Events/Lang-NEXT/Lang-NEXT-2014/From-Parallel-to-Concurrent ) was:

                    “The key point here is our programmers are Googlers, they’re not researchers. They’re typically, fairly young, fresh out of school, probably learned Java, maybe learned C or C++, probably learned Python. They’re not capable of understanding a brilliant language but we want to use them to build good software. So, the language that we give them has to be easy for them to understand and easy to adopt.”

                    And this left a bad taste in my mouth when I read it originally. Either Rob Pike is right about the sorts of people he needed to optimize for when creating Go, implying that Google hires fresh out of college aren’t skilled enough programmers to deal with things like ADTs; or Rob Pike was wrong about who he was optimizing for and made a language that deliberately limits the tools you have to write correct and concise software because he mistakenly thought those tools were too hard for people to use.

                    1.  

                      Go is a language designed for software engineering in the large. At scale, there are no good or bad programmers, there are only average programmers, by definition. So it’s appropriate for a language to cater to that invariant. If you’re not programming at scale this design decision makes less sense for you and that’s fine, one tool doesn’t need to be all things to all people.

                      1.  

                        Agreed.

                        It really feels like Go creators think nothing of value was invented/discovered since they left Bell labs.

                        Also, using one of their team members as the language mascot is kinda weird.

                        1.  

                          Also, using one of their team members as the language mascot is kinda weird.

                          Huh? The Go Gopher was based on one of their team members?

                        2.  

                          What alternative do you think is worse?

                          I think the first one is the correct one, and Pike and the team that created Go knew exactly what kind of language that Google needed - seeing as they worked there, and presumably had talked to a number of stakeholders in the company.

                          “FizzBuzz” is a meme for a reason. A lot of people with CS degrees literally cannot program. Presumably Google is big enough and prestigious enough to filter those out, but that doesn’t mean the rest is automatically fluent in Haskell or something.

                          1.  

                            the fact that you find that quote upsetting is rooted in either class dysphoria or class chauvinism. One can only find that statement upsetting under one of the following two conditions:

                            • class chauvinism: you think that programming should be reserved for an intellectual elite, and that opening programming to the labor class is a form of class betrayal by an intellectual elite. What you reject is not the design or implementation of Go itself, but the goals that the Go team has laid out when attempting to create the language. That is, the frustration is with the very goal of creating a programming language that can be used by the unwashed masses because programming should be reserved for the privileged.

                            • class dysphoria: you reject the idea that the majority of software is written by a labor class, and that you are a member of that labor class. You are upset by the phrase “to use them to build good software”. This is only upsetting to you if you don’t accept your position that as a person selling their labor to make a living, your employer is interested in leveraging your labor to serve a business goal, and not because you are in some way special beyond the output of your labor. A person that digs holes for a living would not be bothered by the phrase “to use them to dig a hole”, because they understand the nature of the exchange being made; they understand that they are being used to accomplish somebody else’s goal in exchange for cash.

                            Both of these cases are rooted in hatred of the labor class, because both of these cases are rooted in the idea that members of a laboring class are without dignity. If you are a member of a labor class with an awareness of the fact that you are a member of the labor class and you feel solidarity with the laboring class, Go’s goals seem perfectly reasonable. I like Go because I think it helps me perform my role as a laborer creating software as part of a collective effort. As a manager and team lead, I enjoy that it makes onboarding programmers to a new codebase very easy, and that it makes it easy for my developers to write mutually-intelligible code.

                            If I were rich, I would not write Go for myself for enjoyment unless I was doing so expressly with the goal to turn what I was building into a business, and for the code to be passed on to future wage-earning programmers. Go is not, from my perspective as a person who has been writing Go since 2011, a great tool for writing beautiful, expressive poetry; it is a great tool for building information-processing machines that will actually be used.

                            Go is designed by a corporation to pursue the goals of that corporation. It says as much on the tin. It is hard to argue that Go is unsuccessful at its own goals of being a programming language with which a large labor class can construct stable software. Go is tremendously successful at fulfilling those goals, and its success causes one to deal with issues of socioeconomic class. If you have never thought about class, this can be disturbing, as it lays naked the reality of classism in society, and one’s place within that system.

                            1. 7

                              I don’t like Go because it was designed for the average programmer or a contempt of them, I don’t like it because it’s a paternalistic and reactionary language that assumes the average programmer is too stupid to handle after anything that wasn’t status quo in 1995.

                              The average programmer might not have a CS degree, but you don’t need a CS degree to have sum types and pattern matching make error handling less error prone, making their lives (and everyone else’s) easier. Go rejects this premise, because worse is better and Bell Labs got it right - dooming us all to deal with the sharp edges we keep getting cut on.

                              1.  

                                This sounds reasonable, and I completely understand this perspective.

                                As a counter-point, I rather like this approach as it allows me to focus on what I’m doing and not the language; I’ve rather taken a liking to the “dumb” approach in Go (Stockholm syndrome? Perhaps 🙃)

                                I’ve also programmed a lot with Ruby in the past, and even after several years there were still corner cases and surprises in the language. Don’t get me wrong, I still like Ruby (actually, I miss programming in Ruby, it’s a fun language) but that approach does come with some downsides. Perhaps Go will be “obsolete” in 10 or 20 years when newer languages such as Rust, Zig, or some other have matured and stabilized a bit more (although I’m not sure if I will ever truly like Rust, since some design elements don’t particularly jibe with me, but I’d have to program more in it to be sure).

                                1.  

                                  “I’m too smart to program with something that dumb people can program with”

                                  1. 8

                                    It’s not a matter of elitism, it’s a matter of being a dumb person (I’ll admit this - a lot in CS makes my eyes glaze over, I see so many people that are smarter than me), I want smart tools to help me be a more productive programmer, instead of struggling with common mistakes or writing menial boilerplate. I hate that there’s so many new ideas on the horizon, but they remain out of touch in the distance to the average programmer. As an industry, we should be bringing making new ideas and tools more accessible, instead of worshipping what has been already done poorly.

                                    I’m smart enough to know we could have things so much better, but not smart enough to do it by myself.

                                    1.  

                                      I hate that there’s so many new ideas on the horizon, but they remain out of touch in the distance to the average programmer.

                                      I dunno, that doesn’t really resonate with me all that much because I don’t feel like anyone is discouraging me from learning those things. You can use Rust or Haskell or Lisp or whatever, all of that stuff is freely available to you. Nobody is creating barriers to using or exploring those things.

                                      As an industry, we should be bringing making new ideas and tools more accessible, instead of worshipping what has been already done poorly.

                                      On the one hand, I sorta think that’s what Go does. Structural typing, CSP, and getting rid of exceptions are pretty major changes from the C++/Java/C# model. Go was designed specifically to deprecate C++ and Java at Google. Go is just supposed to be a better Java. It really seems to succeed at that.

                                      On the other hand, I think you’ve twice conflated “new ideas” with “good ideas”. A lot of new ideas are actually bad ideas. Inheritance was a new idea once. Turns out it’s bad. Go isn’t trying to have a lot of ideas or a lot of new ideas.

                                      As for sum types specifically (which is both a good idea and an old idea): if you look at the long arc of the language, one of the driving principles is orthogonality. Each part of the language is expected to have as little overlap as possible with the other existing parts of the language. There is a large surface area of overlap between sum types with pattern matching and interface types with type switching. I’m not saying those are the same things; they are not the same things. Add sum types, cool! They’re useful! But you now have two mechanisms for looking at a value and switching on its type that can be checked at compile time. The design philosophy of Go attempts to reduce instances where different aspects of the language have that much overlap. A major thing that pattern matching does is enforce that the match be exhaustive, and the fact that type switches aren’t exhaustive is a huge source of sneaky and annoying bugs. Type switches will never be exhaustive because, for example, the number of possible types implementing interface{} is innumerable. As it turns out, this is a huge bummer both in theory and in practice.

                                      I’ve been programming Go since r59; before Go 1.0. The discussion about sum types has been around since then. The open proposal to add sum types to the language has many links to past discussions. https://github.com/golang/go/issues/19412

                                      Practically speaking, there is exactly one place where I really wish I could say (T | error), and that’s when managing unreliable procedures over channels. If you have to fan out an operation to N goroutines, but that operation can fail such that you collect all the errors and all the values on a single channel, you wind up having to create an ad-hoc product type every time you do that for the channel, and that’s really damned annoying.

                                      1.  

                                        It’s sad that this kind of insightful comment is buried under a comment that’s flagged to invisibility…

                            2.  

                              yes all programming languages exist on a single dimension of performance called “quality”, that’s definitely how the industry works 👍

                              1.  

                                Ah, yes, the “all options are perfectly equal!” approach that already worked so well in your last presidential election. ;-)

                                1.  

                                  that’s not at all what I said. I’m saying different languages are good for different things. The idea that there’s a language that’s just “the best” is, quite frankly, juvenile.

                          2. 5

                            It’s the old “beating down the exception strawman” – that no one is even interested in defending.

                            It’s not a straw man when a large percentage of competing languages actually do use exceptions. There are very few mainstream languages that use Option/Result types. Actually, I think Swift might be the only one? And maybe Rust, but I’d argue that’s probably not a mainstream language, not yet anyway.

                            1. 9

                              Isn’t it a problem in Go culture that it is content in comparing itself with mainstream languages from an earlier century instead of actively investigating what can be done in contemporary non-mainstream languages?

                              This attitude often leads to solving the wrong problem.

                              1.  

                                That sounds about right. Go is not designed to break any new ground in computer science or language design, but rather to implement concepts that have been proven to work in various languages and are well understood. I think there is value in this: it gives a stable, reliable, and boring language, which may not be optimal in all respects, but it doesn’t have a lot of “sharp edges” and idiomatic Go code from 10 years ago is quite similar to Go code today. Especially if you want to write an application intended to be maintained for a long period of time (>10 years) then the Go approach can give you some good advantages, I think.

                                I think there’s a lot of value in the more experimental approach in e.g. Rust too, by the way. Not all languages need to be the same.

                                Either way, I personally wouldn’t call this a “problem”, just a design ethic.

                                1. 6

                                  That sounds about right. Go is not designed to break any new ground in computer science or language design, but rather to implement concepts that have been proven to work in various languages and are well understood.

                                  Haskell and OCaml have both been around since the 90s, and those are just the two most obvious examples I could come up with of languages that have been used a fair amount in production and which also provide ADTs. So I’m not sure how your assertion makes sense.

                                  1. 8

                                    Seconded. The “experimental” part of Rust is the borrow checker, the rest (a bit of type inference, sum types/enums, match) is extremely well known and robust stuff that has been around for > 40 years. Go ignores a lot of well known things, not just new ground.

                                    1.  

                                      And both are also functional programming languages that most people struggle with and see quite little real-world use in the industry.

                                      1.  

                                        Both languages are used extensively in production and have been for a long time, regardless of how their usage compares to C or Java or what-have-you. And ADTs are quite well understood at this point, and Maybe/Option types specifically even moreso; we’re not talking about these languages’ learning curves here. Maybe/Option has been introduced (badly) into Java, for example, and is present in Kotlin, Scala, Rust, etc. So I don’t see how your comment here contradicts my original point.

                                        1.  

                                          We could argue at length on what is and isn’t “well understood” and “widely used”; but it’s not a binary thing, it’s a scale. And it’s also not completely objective either and there is quite some subjectivity involved.

                                          Go has a very conservative take, which certainly isn’t perfect and you do miss out on some things, but as mentioned I think there is value in this approach too. YMMV.

                                2.  

                                  I don’t really feel like defending the 90ies poor error handling approach against a language from the 60ies. ¯\_(ツ)_/¯

                                  The people who care have moved on from such inferior approaches, and those who are still stuck in the last century can’t be helped anyway.

                              1.  

                                I think the usual flags (spam) are a good first step.

                                1.  

                                  I concur. They’re pretty easily noticed and attract spam flags quite readily at the moment.

                                  1.  

                                    This especially true if it is caught early, based on the patterns I have seen.

                                1. 5

                                  Do we have a lot of Lobsters on Windows? I keep debating doing a “Windows is Not Unix” guide for people who are moving to Windows + WSL2, but I keep convincing myself there’s no interest. The fact this is so high on the front page makes me wonder if I’m wrong.

                                  1. 4

                                    I use a Surface Book pretty regularly and run WSL2 on it. Although I also have a Linux desktop and a work-issued Macbook Pro.

                                    1. 2

                                      I use Windows at work.

                                      1. 2

                                        Ditto.

                                      2. 2

                                        I switched full-time to Windows about a year ago. I avoid WSL as much as possible, even going so far as to send PRs to open source projects that assume a Linux environment. I actually find it quite rewarding!

                                        1.  

                                          I do that but for BSD instead of Windows ;)

                                        2. 2

                                          I’m interested. I use Linux as my primary desktop computing environment, but some things I do some of the time (e.g. building games for Unity) go better on Windows. And every time I try to adopt Windows for a few days, I’m a bit stymied. I feel like so many people use this, there must be something wrong with my workflow that’s making it feel so wrong to me.

                                          This article is helpful and kind of sniffs around the edges. But I’d really be interested to learn more about what a really “Windows Native” workflow looks like and what people who use that all the time consider appealing about it. So if you post it, I hope it gets some attention here. Because even if I won’t ever be a “Windows person” I think I’m making myself suffer needlessly when I do use it, and I’d like to be educated about how to be more effective on it.

                                          1. 1

                                            For what it’s worth, I think your experience is very common (which is why ‘Windows’ gets followed immediately by ‘WSL’.)

                                            As far as I can tell - and for no good reason - Linux users have a good command line and tend to use it, and Windows developers end up with a good IDE and tend to use it, and in both cases the thing not being used is neglected. So switching platforms is really about switching cultures and embracing a very different workflow. People going in both directions see the new platform as “inferior” because they’re judging the quality of tools used to implement their previous workflow.

                                            As someone who really loves the command line, Windows has often felt like it required me to “suffer needlessly.” Personally I ended up writing my own command processor to incorporate a few things that the Linux command line environment “got right” and it ended up being extended with many interactive things. I haven’t felt like I’m suffering or missing out by using Windows after that, although clearly there’s a personal bias since those tools are designed for my workflow. If you don’t like mine, then it pays to learn Powershell, which is also a big cultural adjustment since the basic idioms are very different to textual Posix shells.

                                            To me the most “appealing” part of being a Windows developer is WinDbg, which also has a steep learning curve but it’s far better than anything I’ve used on Linux and is much more capable than Visual Studio for systems level debugging. It’s one of those “best kept secret” type things that’s easy to get - once you know it exists and that it makes serious development much easier.

                                          2.  

                                            I reluctantly use Windows, but I try to avoid it. There’s rarely anything I want to use that is only available on Windows with no viable alternative. Still, there are times I have to use it. I haven’t bothered with WSL2 but I would still read something like this if it existed.

                                            1.  

                                              My work/play machine at home is Windows. Always has been. (Because games, obviously, and I don’t like dual boot.)

                                              I detest working on Windows though and WSL hasn’t improved anything for me yet, that’s why I still do most of my work via PuTTY on a linux box if possible. (work means any ops/programming work I do in my free time).

                                              Work machine is Linux and I’m actually glad I couldn’t work on Windows so no one can push me :P

                                              1. 1

                                                I’ve recently committed Linux apostasy :) partly on account of WSL2, and I’d definitely be interested in that. I haven’t used Windows, except to run putty to log in to a remote server, in a very, very long time (in fact, save for a brief period between 2011 and 2012, when I worked on a cross-platform tool, I haven’t really used it in 15+ years, the last version I used regularly was Windows 2000). I’m slowly discovering what’s changed since then but 15 years is a lot of time…

                                                1. 1

                                                  I’m on Windows and routinely browse lobsters by looking at the ‘windows’ tag.

                                                  That said, I really don’t understand the point of moving to Windows to then run WSL2. Using WSL2 is using a Linux VM, and for the most part, the issues there are not about Windows. If you want a Linux VM, you can run one on any platform…

                                                  1. 4

                                                    Well, it’s a damn convenient VM :). I’ve tried it as an experiment for a month or so – I’m now on an “extended trial” of sorts, I guess, for 6 months (backups over the network, all Linux-readable – if I ever want to go back I just have to install Linux again). I use it for two reasons:

                                                    • It’s a good crutch – I’m sure everything I could do under Linux can be just as easily be done under Windows but 20 years of muscle memory don’t get erased overnight. It lets me do things I haven’t had time to figure out how to efficiently do under Windows in a manner that I’m familiar with. I could do all that with a VM, too, but it’s way better when it works out of the box and boots basically instantaneously.
                                                    • It gets me all the good parts of Linux – from mutt to a bunch of network/security tools and from ksh to my bag of scripts – without any of the bad parts. Of course, that can also be done with a VM – but like I said, this one works out of the box and boots instantaneously :).

                                                    I don’t use it too much – in the last two weeks I don’t think it’s seen six hours of use. I fire it up to read some mailing lists (haven’t yet found anything that handles those as well as mutt – even Pegasus Mail isn’t as cool as I remember it…), and I fiddle with one project inside it, mostly because it’s all new to me, and I want to work on it in a familiar environment (learning two things at a time never goes well).

                                                    I still haven’t made up my mind on keeping it, we’ll see about that in six months, but I’m pretty sure I’d have never even considered the experiment without WSL2.

                                                  2. 1

                                                    My monitor + video card setup is aimed at gaming and is almost entirely unusable on Linux period. I’m looking at replacing the graphics card in the future, but until that happens, Windows is the only tolerable OS.

                                                    1. 1

                                                      I like to play video games, which almost always means “you need windows”.

                                                      I used to dual boot Debian but nowadays I tend to just ssh into a cloudish instance thing that I use as a kind of remote workstation. That combined with vscode’s wonderful remote support means outside of work most of my personal-hacking-stuff still takes place through the window of… well, windows.

                                                    1. 3

                                                      Isn’t caps lock ->control the canonical remap? On the home row, not good for anything else…?

                                                      1. 2

                                                        Yeah, I really don’t understand why people are advocating for remapping extremely useful keys like enter or A to control. That seems like it would cause way more problems than it solves.

                                                        1. 5

                                                          The article says that it’s a dual-function remap - holding enter causes it to act like control, but merely tapping it causes it to continue to act like enter.

                                                          1. 2

                                                            That’ll teach me to skim, I guess.

                                                            I still dislike this though. I don’t like keys that simultaneously act as regular keys and modifier keys. The Windows key on PCs is a prime example: there are a bunch of shortcuts bound to Windows+, but tapping Windows alone causes the start menu to come up. When using Windows, I frequently find myself going for a keyboard shortcut, typing Windows, changing my mind, releasing Windows, and then having to deal with the annoyance of the Start menu appearing.

                                                            Given that enter is used as a “submit” key on a huge number of programs, I expect it would be even worse.

                                                            1. 4

                                                              That’s an implementation problem, not a conceptual problem. The way that xcape (and theoretically any other implementation of this) works (or could work) is that if you hold down the key long enough, even if you release it without pressing anything else, it acts like the modifier key and doesn’t send the “tap” event. My xcape is configured to have a 250 ms delay - if I press left shift as part of a chord, and then change my mind, if I just make sure that I hold the shift key for the required quarter of a second, the left parenthesis (tap functionality) is not emitted.

                                                              1. 1

                                                                The way I see it, the existence (and arbitrariness) of that 250 ms parameter is strong evidence that it is a fundamental conceptual problem. I’m with @Kronopath in that having both modifier and non-modifier functionality on the same physical key drives me thoroughly up the wall.

                                                                And for anyone else who feels similarly, a Firefox setting I was relieved to stumble across a few years ago: in about:config, set ui.key.menuAccessKeyFocuses to false. And if (as I do) you keep the menu bar hidden, note that it will unfortunately auto-revert this setting to true if you show and then hide the menu bar manually (e.g. via a right-click on the tab bar), though you can use F10 to show it temporarily and avoid that particular quirk (or bug?).

                                                                1. 1

                                                                  I don’t quite see how the existence of a timeout parameter implies a fundamental conceptual parameter - could you clarify? The universe, and programming, are filled with timing-related parameters, such as the TCP connection timeout parameter, the length of time you have to hold down a key before it is repeated, or the oscillation frequency of a Josephson Junction when exposed to a particular voltage. This particular parameter isn’t actually arbitrary, either - I chose it myself based on my preferences and after some experimentation to find a comfortable value. This is no more arbitrary than you picking your mouse’s DPI.

                                                                  It’s unfortunate that the functionality “drives you up a wall”, but that doesn’t actually mean that it’s a bad idea. For instance, vim-style modal editing is very unpleasant for some people (mostly people who eventually switch to emacs) - but that doesn’t have anything to do with the soundness of the idea, nor its efficiency.

                                                                  1. 1

                                                                    Sure, it’s not arbitrary for any given individual, but overall it’s a magic number with no clear “right” value, whereas otherwise it’s a simple matter of which keys were pressed and released in which order, no guessing or heuristics involved. Adding time durations as semantically-significant signals where they otherwise didn’t factor in at all is a fundamental change to the signaling mechanism.

                                                                    And I’m not arguing against time-based behavior in general (certainly there are contexts in which it’s appropriate) but I find predictable, synchronous behavior highly preferable unless there’s a very compelling reason to introduce asynchrony. The sort of time-based behavior you’ve got is, ultimately, a race condition – and for people who are okay with it that’s fine, but I don’t like it when software (e.g. Firefox, or Windows as mentioned upthread) bakes it in.

                                                                    1. 1

                                                                      a magic number with no clear “right” value

                                                                      I don’t think that this is right. I see a clear “right” value - that which works for you. Actually, it’s a range of values, bounded on the lower end by how quickly you tap individual keys, and on the upper end by how long you want to have to hold the modifier key in case you decide to “back out” of a chord.

                                                                      no guessing or heuristics involved

                                                                      There’s no guessing or heuristics involved here, either. You know exactly how long you have to press a modifier key for in order to send the “hold” command, as opposed to the “tap” command. The fact that humans don’t have very high precision on their internal timers in order to measure that duration is irrelevant - you can just hold the key until you’re sure it won’t act like a tap. Most people can’t tell the difference between 250 milliseconds and 260, but they sure can tell the difference between 250 and 1000 - and since you can train yourself to rarely decide to back out of key chords, the extra 0.75s is insignificant.

                                                                      Adding time durations as semantically-significant signals where they otherwise didn’t factor in at all is a fundamental change to the signaling mechanism.

                                                                      A fundamental change that is useful, makes perfect logical sense, and is easy to adapt to. I cannot recall the last time that I accidentally emitted a parenthesis by accident using space-cadet shift keys (tap to emit parenthesis, hold to act like shift) over the past few weeks, and it’s pretty obviously useful to take a key that does nothing when you tap it by yourself (e.g. shift) and make it do something when tapped by itself, in a way that doesn’t reduce the functionality of your computer in any way whatsoever.

                                                                      I find predictable, synchronous behavior highly preferable

                                                                      You can prefer it, but that doesn’t mean that dual-function keys have a “fundamental conceptual problem”. That’s what I’m arguing against - not what you prefer to use, but the idea that there’s somehow something wrong with the idea itself.

                                                                      a race condition

                                                                      This isn’t a race condition. The Wikipedia page on race conditions[1] defines it as “the condition of an electronics, software, or other system where the system’s substantive behavior is dependent on the sequence or timing of other uncontrollable events”. The order in which you press keys are not “uncontrollable events”. You have complete control over the order in which you press keys using your fingers - or, rather, that’s the model of human hands that most people operate under.

                                                                      Edit: I think I see where you might be getting the idea that this is similar to a race condition - you might be thinking that if you don’t hold a key for the threshold e.g. 250 ms, it registers as a tap, even if you press another key. The way that actually it works is that there are three cases: (1) if you press the key and then release it sooner than THRESHOLD later without pressing another, it registers as a tap (2) if you press the key and don’t release it less than THRESHOLD later, it acts as a modifier (nothing happens) (3) if you press the key and then another key (a chord) before letting go of the first, it acts like a normal chord, regardless of whether you held the dual-function key for longer or shorter than the threshold. That is, you do NOT have to hold the chord for the threshold duration in order for the key to be counted as a “hold”/modifier instead of a “tap” - if you hold the key and press another, it acts like a modifier, no matter whether you hold it for longer or shorter than the threshold.

                                                                      Windows as mentioned upthread

                                                                      As also mentioned upthread, that’s an implementation problem, not a conceptual problem. You’re taking a bug in an implementation and conflating that with the idea that is represented by the implementation.

                                                                      [1] https://en.wikipedia.org/wiki/Race_condition

                                                        2. 2

                                                          A great many Emacs users remap the infrequently used CapsLock key to Control to alleviate partially the problem with the accessibility of the control keys. That, while useful, is not sufficient for the optimal typing experience, since that way you’re breaking the key symmetry on both sides of your keyboard. Also - your right pinky has to go much further than your left one, while you’re typing. Many people seem to be using only the left Control and I guess they’re not particularly bothered by this, but touch typists like me are generally quite bothered by such things.

                                                          1. 1

                                                            Who are you quoting?

                                                            1. 2

                                                              @bbatsov in their previous article that they link to in the opening note:

                                                              Note: Check out my original article from 2013 about the rationale behind this remapping.

                                                            2. 1

                                                              Thanks, I missed that link/follow in the original. I still don’t understand though.

                                                              I don’t see how using Enter instead of capslock is more symmetrical. If anything it is less? the enter key is further from the letter home row than capslock is.

                                                              Also - your right pinky has to go much further than your left one, while you’re typing

                                                              So having the left little finger go a little more to the left (for capslock) is more symmetrical, right? And it already does this for shift anyway (just below capslock).

                                                              Sorry if it seems like I’m trying to pick nits, I’m really not getting the argument.

                                                          1. 11

                                                            I’ve definitely reconsidered my commenting since getting the warning. I used to reply to people who I felt were wrong instead of flagging, but since doing that just attracts flags that adds to my quota I’ve starting flagging instead.

                                                            1. 3

                                                              Without knowing the character of your replies (which is to say, if the replies in question are nasty and toxic, I would not feel this way) it seems at first blush that the change this inspired in you is not a constructive one.

                                                              1. 3

                                                                In the cases where I was flagged heavily my comments were neutral in tone.

                                                                1. 17

                                                                  Flagging is not always done out of good faith. People may flag your otherwise neutral comment if they get personally offended. And mods explicitly wont listen to your feedback.

                                                                  IMO this whole “Reconsider your behavior or take a break” injunction is pretty stupid and condescending.

                                                                  1. 6

                                                                    Flagging as implemented on this site seems to be way too prone to abuse. Their open visibility encourages pile-ons, and the automated warning is confusing and raises umbrage. Flagging users who are trolling or spamming should be a signal to the moderators, not to the rest of the community.

                                                                    1. 1

                                                                      I think the time and point threshold to show scores is a great thing here but could perhaps be tweaked to help. Maybe make it a bit higher/lower before it shows the scores, or make comments age a bit longer before showing a score?

                                                                      The overall moderation model here seems solid enough. But if we wanted to get real wild Slashdot’s moderation/meta-moderation system could be an interesting fit ;)

                                                                      1. 1

                                                                        Trouble with the time delay is that highly engaged (ie controversial) topics stay on the front page for a lot longer than most posts.

                                                            1. 3

                                                              Does anyone know what the spikes in user sign ups correspond to?

                                                              1. 8
                                                                1. 2

                                                                  TIL about the invitation queue. Someone should build a site map for the site that details all these pages :-)

                                                                  1. 8

                                                                    It’s been disabled for years, though the code exists for sister sites.

                                                                2. 2

                                                                  The other two are mentions on high-volume sites and people bringing in their buddies. An example of high-volume site that probably feeds over here is Hacker News with 20 million hits a month. We had a bit of cross-posting and shared users which increases exposure to both sites.

                                                                  I’m sure some comes from sites posted here whose members end up here. Perhaps a Lobster comments on their site saying they saw it on Lobsters. Traffic follows. I know it happens but don’t have data on what it generates.

                                                                  1. 1

                                                                    Probably when the site is mentioned/promoted somewhere else.

                                                                  1. 4

                                                                    Nice project!

                                                                    Reminds me of this amazing piece of civil engineering: https://en.wikipedia.org/wiki/Old_River_Control_Structure. As noted in John McPhee’s The Control of Nature, this is the Army Corps of Engineer’s war against geography, and is probably doomed to fail.

                                                                    1. 2

                                                                      The McPhee book is excellent, strong recommend for anyone interesting in engineering vs. nature alongside Seeing Like A State.

                                                                      1. 1

                                                                        McPhee’s article on the structure is available online: https://www.newyorker.com/magazine/1987/02/23/atchafalaya

                                                                    1. 17

                                                                      That’s all email is to me. They’re mostly unimportant messages that I receive, deal with, and move on.

                                                                      I’m 38, and I’m feeling 83 right now. An old fossil that remembers that distant time in my youth, where email was the main, sometimes the only way people could contact me online. To this day, I cannot afford to not check my emails. Many are important. So I tend to assume, by default, that people treat their inbox the same way. Or at least that they should.

                                                                      10-15 years ago, a friend of mine asked me to get a Facebook account, so we could keep tabs on each other. I subscribed, tried it, then quickly shut it down: that thing was clearly a glorified second inbox, and I already had one. Why would I have two inboxes to check, when I can have only one? And I certainly don’t want 10 notifications a day about distant friends petting their cat.

                                                                      Still, Facebook has taken over. Or Twitter. Or Instagram. Or whatever. A couple years ago, I was part of an orchestra, and they set up a Facebook group (even forced me to join), because “nobody reads their email”. Like, Facebook, whose notification items fall from your wall faster than you can check them, where messages are often missed even if you’re dilligent, is more reliable than email in practice because people just don’t use their email to communicate.

                                                                      Has email become little more than a gateway to subscription services now?

                                                                      1. 2

                                                                        I feel with you, tough I am several years younger. But I still experienced the pre-facebook Internet era.

                                                                        Has email become little more than a gateway to subscription services now?

                                                                        It depends on the persons involved. With enough care it is possible to get many people to write you e-mails; I have got nearly all of my friends to do that by now. Problems arise if people want group functionality – someone will always set up a Facebook group or a WhatsApp chatroom. Many people today are unaware of mailing lists as they should be used (many open-source projects still use this medium properly). When they hear “mailing list” they think it refers to advertisement mail. It is also problematic for non-technical people to set up a mailing list. Services like freelists.org exist, but they’re only available in English. Then, getting people to abstain from thread hijacking and do quoting right is a fight against windmills. It’d help tremendously if email clients stopped quoting the entire message on reply and just give a blank editing window. Why has this copy-on-reply ever been invented?

                                                                        1. 4

                                                                          Mailing list software hasn’t really kept up with the times. Ideally one should be able to create them in a few clicks - select a name/topic, add some addresses, and away you go. Each email can have a footer with links for the individual addressee to manage their “subscription”.

                                                                          (This sort of subscription might already exist. The point is that most people can easily create a group (private or not) on Facebook. Doing the same with email is not as easy).

                                                                          1. 2

                                                                            I understand that your criticism is mostly targeting UX issues rather than the underlying bits and pieces. In that sense, I more or less agree. However, with regards to almost everything related to what’s happening underneath the hood, I would even go so far as calling email is the most fundamentally broken piece of critical infrastructure we have (… well, that I am more intimately familiar with anyway). And there is no reasonable escape. No open protocol will be able replace it. But it badly needs to be replaced.

                                                                            In the late aughts, I was a college student, and our department begun transitioning away from mailing lists. I really liked the concept of mailing lists and loved using my mail clients for reading lists, but even then the experience to make lists was horrible. When I was a TA, managing the lists was also quite annoying. The web clients were also terrible.

                                                                            (This sort of subscription might already exist. The point is that most people can easily create a group (private or not) on Facebook. Doing the same with email is not as easy).

                                                                            Agree. I think there’s a lot of mileage to be had by the open source world by improving the experience of mailist lists or usenet sites.

                                                                            1. 1

                                                                              What you describe is in fact possible on Google groups already. I don’t think that’s the issue though.

                                                                          2. 2

                                                                            Has email become little more than a gateway to subscription services now?

                                                                            Yeah. I’m 26 and was interested in Hey, but even if it was $50/yr it wouldn’t be worth it to me. I really don’t receive many emails. If I do, they’re newsletters, receipts, or bank transfer confirmations. I still keep my email open all day but I wouldn’t blame someone my age if they didn’t check it.

                                                                            You’re correct that people don’t want a second or third inbox. The problem for you is that email is no longer anyone’s first inbox.

                                                                            1. 2

                                                                              Amazing how different lives a few people can lead. I’m in a similar age bracket and read about 300 emails on a quiet weekday (down to just a few dozen on weekends). It’s mostly not social, that stuff I keep in person as much as I can.

                                                                              And Facebook sucks as an inbox. Try keeping more than a few dozen notifications; they silently get dropped so you never have too much clamoring for your attention.

                                                                              1. 1

                                                                                The problem for you is that email is no longer anyone’s first inbox.

                                                                                What is then? It would seem there are quite a few popular “first inbox”, which would basically force me to have several outboxes (I can manage), and several inboxes so I can see the replies. Pity, really.

                                                                            1. 25

                                                                              A few things that were missed: POSIX / the Single Unix Specification require vi. That’s a big part of why it’s ubiquitous, every *NIX system that aims for POSIX compliance needs some vi clone. *BSD shipped nvi, because it’s small and they have a separation of base system and third-party things, so people who want a richer editor can install one (including vim) and only pay a tiny cost for nvi being installed. Linux distros picked vim. I have no idea why this was (early Linux distro creators liked it? They assumed everyone would want a richer vi clone?), but once it became the standard Linux vi, everyone learned it. I was hoping that the article would give some insight into this.

                                                                              The first shell and editor that you use seem very sticky. I still use bash and vim on pretty much every system, even when they’re not the default on a system (neither is on FreeBSD). The SSH factor is still the main thing keeping me in vim. If the VS Code remote extension weren’t so tied to x86/Linux, I’d probably use that, but since it doesn’t work with ARM, MIPS, FreeBSD, and so on, I can’t rely on it everywhere and so I don’t want to have to switch between tools.

                                                                              1. 5

                                                                                I also find this post very sparse on information. For example, it doesn’t really make any sense of the path of punch cards to line editors. Line editors existed because early terminals were not “glass terminals” as we have them now, but hard copy terminals in which you interacted with a printout, one line at a time appearing as you typed in the commands, at which point it makes sense you don’t have a full-screen editor; there wasn’t even a screen.

                                                                                1. 3

                                                                                  Another reason was that other options (such as Emacs) used to cost a lot of money and effort to get installed, because there were no simple package-distribution mechanisms as we now have.

                                                                                  1. 12

                                                                                    And if you go even further back, to the days when it was really just “vi” instead of “vim”, Emacs was FAR more resource-intensive, which mattered a lot on shell hosts you were sharing with a bunch of other users. When I was in college, we joked it stood for Eight Megs And Constantly Swapping. Obviously not an issue at all these days but that was one of the things that steered me away from Emacs when I was first learning to use UNIX.

                                                                                    1. 5

                                                                                      When I studied at KTH in Sweden in the early 90s the Sun dickdiskless workstations we used had 2 windows open when an X session started: a shell (I believe it might have been tcsh but this was before I actually cared about these things) and an Emacs session. All documentation regarding how to edit text assumed Emacs.

                                                                                      I guess my Emacs usage started there. I played with Emacs-like editors on the 386 I had at time (running Windows 3.1) just to keep the keybindings.

                                                                                      I know enough vi to be able to edit a local apt-source list to install Emacs ;)

                                                                                      1. 1

                                                                                        That probably confirms the point David was trying to make: defaults stick with us.

                                                                                        Lovely “typo” and how you left it in btw :)

                                                                                      2. 2

                                                                                        I was actually thinking of the pre-vim times, AFAIK it as already possible to distribute the Emacs source via FTP when vim started to become popular.

                                                                                        1. 1

                                                                                          emacs - eight megs and constantly swapping

                                                                                          1. 3

                                                                                            My first PC had 2 megs so I couldn’t run Emacs on it - nor install Debian, for that matter.

                                                                                      3. 2

                                                                                        *BSD shipped nvi, because it’s small and they have a separation of base system and third-party things, so people who want a richer editor can install one (including vim) and only pay a tiny cost for nvi being installed.

                                                                                        One other minor point - *BSD ships with nvi because the original vi (although originall Berkeley-developed) contained encumbered AT&T copyrighted source code. nvi is a re-implementation of vi by Keith Bostic, based partially on elvis, and included initially with 4BSD.

                                                                                        1. 2

                                                                                          The first shell and editor that you use seem very sticky. I still use bash and vim on pretty much every system, even when they’re not the default on a system (neither is on FreeBSD).

                                                                                          I’d imagine you’re half-right about this. If only vi is available on some system, many choose to install vim. But I think it is less common even to notice that the shell is not bash.

                                                                                          1. 4

                                                                                            The first thing i do after installing Void linux is changing from dash to bash and vi to kakoune.

                                                                                            Dash is just unusable as a day to day interactive shell. It is probably not meant to.

                                                                                            After learning kakoune i can’t stand using any type of vi.

                                                                                            1. 3

                                                                                              How many years did you use vi?

                                                                                              I’ve tried to use kakoune but there are many vi(m)-isms which stop me. It’s not the plugins; I use like 2.

                                                                                              For me, vim-sneak is the biggest one for movement. Can kakoune do similar movement?

                                                                                              1. 3

                                                                                                I don’t know. I’ve been using Linux since Mandrake Linux almost 18 years ago and always used vim because it was the default. I just recently started programming so i never used vim intensely in the past, it was always simple tasks so i never acquired too much knowledge in it. Just wrote some bash scripts.

                                                                                                When i tried kakoune it simply felt more natural for me and the instant feedback and multiple cursors is wonderful. It’s when i started learning programming.

                                                                                                I don’t know about vim-sneak. Looking briefly at the website, it seems that you perform a search and it highlights the results and you can jump around? If i search for “as” i can jump to the third instance by typing ‘3n’. If i hold shift it selects all the instances in the way. So 3 + shift + n will select the next 3 instances.

                                                                                                1. 2

                                                                                                  I used Vim daily for like twenty years before trying Kakoune, and after a couple of months (which, I admit, were a bit awkward and frustrating) I can’t go back.

                                                                                                  I don’t know of any equivalent to vim-sneak (although there is an easymotion plugin) but because of the way Kakoune deals with selections instead of cursors movement has a very different feel — it’s not just about moving the cursor to the right place, but also moving the anchor (the other end of the selection) to the right place at the same time. When I started out, it felt a little bit like playing that Snake game on old Nokia phones, always being conscious of where your tail was.

                                                                                                  My suspicion is that a Kakoune equivalent of vim-sneak wouldn’t be nearly as useful as it is in Vim. On the other hand, it’s pretty easy to build Kakoune plugins, and that might be a decent tutorial project.

                                                                                                2. 2

                                                                                                  As far as I remember the ksh in OpenBSD was surprisingly usable as a daily driver despite having only like 3 features: line editing, tab completion of command names and tab completion of file names.

                                                                                                  1. 0

                                                                                                    This is a tangent but for anyone with a passing knowledge of Greek or French etymology “kakoune” is an unfortunate name.

                                                                                                    1. 4

                                                                                                      Here, broaden your linguistic horizons a bit.

                                                                                                      1. 1

                                                                                                        Interesting. Is “{en|in}close” specific to how the editor works? I thought it was a modal editor with alternative verb/noun nomenclature than vim.

                                                                                                        As much as I’d like to learn Japanese, learning French was hard enough, and I can’t unsee kakoune as a (ungrammatical) gloss on “the shitty one”.

                                                                                                        1. 5

                                                                                                          Kakoune’s major innovation relative to vi(m) is specifying the object before the action, which also neatly enables (SublimeText-style) multi-select. You enclose some text and then operate on it. Japanese puts nouns before verbs too.

                                                                                                          But on the shell, it’s usually just called kak. So, yeah, kind of a cuss… kek!

                                                                                                      2. 2

                                                                                                        My understanding is that the primary author of Kakoune is from French-speaking New Caledonia, where the word means “a hard punch”. I don’t know if that’s a meaning borrowed from some Polynesian language, or a novel invention, but I’m sure the author was aware of the variant reading you’re thinking of.

                                                                                                    2. 1

                                                                                                      I think that depends on what the other shell is. OS X used to ship with tcsh as the default (and the rest of the BSD family still does). Installing bash was one of the first things I did on a Mac and apparently this behaviour was so common that Apple switched to bash as the default shell some time around 10.3ish. Solaris, last time I used it, shipped with an incredibly minimal POSIX shell by default, so bash was one of the first things I installed. If I use a system where the default shell is zsh, for example, I typically don’t care.

                                                                                                    3. 1

                                                                                                      Linux distros picked vim.

                                                                                                      Not all of them! My beloved Slackware defaults vi to elvis and vim is a separate command. I actually kinda like elvis - it has a kind of wysiwyg html mode that is somewhat cool among other little thing. Lightweight too.

                                                                                                      Though vim i my main editor for bigger jobs.

                                                                                                    1. 1

                                                                                                      Can someone ELI5 why this is interesting? Or maybe ELI66. I don’t understand.

                                                                                                      1. 2

                                                                                                        It’s a take/parody on sites like http://isitfridayyet.net/, but you don’t have to set up your own domain. Hence “as a service”.

                                                                                                      1. 3

                                                                                                        The part about Apple helping with the ARM laptops made me laugh.

                                                                                                        They won’t even support otheros, apparently. They’ll boot into nothing but Apple code.

                                                                                                        1. 5

                                                                                                          That’s not true. Safe Boot can be disabled. They made that point last time during this years WWDC in the platform state of the union

                                                                                                          1. 3

                                                                                                            By disabling they mean allowing non-latest versions macOS. Federighi said in an interview that they will not allow non-Apple OSes on Apple Silicon, and virtualization should be enough.

                                                                                                            1. 3

                                                                                                              Understood. I’m not much of an Apple fan, so I did of course skip WWDC.

                                                                                                              I do hope you’re right and that they do not go back on their word. Else these machines would be dead weights once Apple decides not to support them anymore.

                                                                                                            2. 4

                                                                                                              otheros

                                                                                                              Wasn’t that something for the Playstation 3 ?

                                                                                                              1. 2

                                                                                                                I read somewhere that they would support a Chromebook-like “unsigned boot” option that would allow alternative OSes.

                                                                                                                1. 2

                                                                                                                  What I had read is:

                                                                                                                  https://www.theverge.com/2020/6/24/21302213/apple-silicon-mac-arm-windows-support-boot-camp

                                                                                                                  From this article:

                                                                                                                  Update, June 25th 7:45AM ET: Article updated with comment from an Apple VP confirming Boot Camp will not be available on ARM-based Macs.

                                                                                                                  I thus suspect these will be very locked down.

                                                                                                                  1. 10

                                                                                                                    Bootcamp is for running windows and providing windows drivers. Microsoft only licenses ARM windows to its hardware partners which apple isn’t one of. So there is no point in providing windows drivers if you can’t get windows.

                                                                                                                    Secure Boot can be disabled by booting into recovery mode. Then the Mac does and will continue to boot whatever you want

                                                                                                                    1. 2

                                                                                                                      Hopefully Apple will indeed allow booting non-signed systems and Microsoft will re-evaluate their policies regarding non-x86 platforms.

                                                                                                              1. 1

                                                                                                                This is a very nice explanation and gives me fond memories/flashbacks to numerical analysis at uni.

                                                                                                                Tangent: what is the font for the code examples? I like it a lot apart from the excessively slashed zero…

                                                                                                                1. 2

                                                                                                                  I have that on the about page. That is Triplicate, which was designed by Matthew Butterick. I agree with the zero.

                                                                                                                1. 6

                                                                                                                  German perspective: You’re an engineer after getting a university degree in an engineering program (e.g., bachelor of science in information technology). You’re only allowed to call yourself an engineer after graduating. But then immediately.
                                                                                                                  Depending on school, program that may or may not involve lots of meta/how-to engineer courses.

                                                                                                                  No extra test but also no way for non-academics to become an engineer unless they go to a university. :/

                                                                                                                  1. 5

                                                                                                                    Similar in Sweden. The term “civilingenjör” covers all engineering, not just civil engineers (that degree is called “civilingenjör väg och vatten”) and is a protected term. You’re not allowed to present yourself as such unless you have graduated from an accredited institution (nor are you allowed to purchase the special ring you’re entitled to).

                                                                                                                    1. 3

                                                                                                                      Similar in France. “Ingénieur” covers all engineering and is also a protected term. But a lot of people are obsessed by degrees here in France and it kinda sucks.

                                                                                                                      1. 2

                                                                                                                        Not exactly.

                                                                                                                        “Ingénieur” (Engineer) is not protected. It is a job title and can be given to you as long as your job corresponds.

                                                                                                                        The protected constructions are things like “Diplôme d’Ingénieur”, “École d’Ingénieur” and “Ingénieur diplômé” (Engineering Degree, Engineering School and “Engineer with a degree”, respectively). They are regulated by a body called CTI.

                                                                                                                    1. 9

                                                                                                                      If you’re thinking of learning Perl or starting a new project in Perl, you might want to reconsider.

                                                                                                                      I don’t see anything controversial with this statement. You can apply it to any number of languages, not just Perl - Common Lisp, Pascal, COBOL. And I say this as a Perl aficionado.

                                                                                                                      Most languages never make it past compiling themselves. Perl has had a great run and is still super-fun and useful for those that know it.

                                                                                                                      1. 6

                                                                                                                        Hey, I start new projects in Common Lisp! It’s still a great choice.

                                                                                                                        1. 3

                                                                                                                          And I start personal projects in Perl… it doesn’t mean that corporations with multi-year maintenance horizons do, though.

                                                                                                                          1. 2

                                                                                                                            AFAIK google uses lisp and has contributed to sbcl. And fastmail uses perl.

                                                                                                                            1. 2

                                                                                                                              If Google uses lisp it’s for something incredibly specific and obscure. You absolutely could not start a new lisp project at Google.

                                                                                                                              1. 4

                                                                                                                                The shambling corpse of ITA Software perhaps?

                                                                                                                                1. 1

                                                                                                                                  I actually don’t know. I could look it up, but I couldn’t say if I did. ¯\_(ツ)_/¯

                                                                                                                      1. 3

                                                                                                                        I know I’m doing my part to kill this beast as fast as possible. At work, there is still this giant ~25k LoC code generating perl script that I haven’t even begun to unravel.

                                                                                                                        Perl and Python have always come pre-installed on Linux. If I remember well, there was actually a Posix specification or something that had it as a requirement.

                                                                                                                        I think the author was referring to Linux Standard Base

                                                                                                                        In terms of the question:

                                                                                                                        It’s only a matter of time before other distributions follow. The next logical step is for Perl to go away, the only question is when?

                                                                                                                        As long as Git still depends on perl based modules, I don’t think it will be permanently gone any time soon. Maybe someone will reimplement them in not-perl, but I don’t know if anyone is working on that. Actually I’m not even sure perl is ootb in RHEL.

                                                                                                                        1. 8

                                                                                                                          Git has been steadily rewriting the parts in shell script and Perl in C for years. I haven’t been following closely, so I don’t honestly know where that situation is, but I somewhat doubt that Git’s going to be Perl’s saviour by 2023.

                                                                                                                          1. 11

                                                                                                                            Current git master contains 13k lines of Perl code in 41 files, which is actually not all that much compared to 281k lines of C code. Much of it actually seems related to GIT:SVN, git-cvsserver, gitweb, and other stuff that’s not used all that frequently. The only fairly common things are git send-email and git add --interactive, but I think vast swaths of people have ever used either.

                                                                                                                            Either way, from the looks of it, you can create a perfectly functioning git build without Perl already. The Makefile has a NO_PERL flag for it.

                                                                                                                            1. 3

                                                                                                                              I recently discovered the add.interactive.usebuiltin setting, which uses a C implementation for git add --interactive. It is not enabled by default since I guess it is still experimental, but I haven’t run into any problems so far.

                                                                                                                            2. 5

                                                                                                                              OpenBSD’s packages system is largely written in Perl IIRC.

                                                                                                                          1. 4

                                                                                                                            I got fired from one of my jobs just before the pandemic hit. I had another job that I have been doing for the past 16 years but that might be drying up as well since it was a small department, and the digital team was just me and my boss, who had a stroke and even though, thankfully, he is alive, the is not expected to go back to work. My tasks there now have trickled to maintenance and small stuff. That adds a bit of anxiety and pressure. I’m trying to use this upheaval to point my life towards what I actually enjoy doing which is writing books, making videos, and creating small tools for people. I hope to release a couple books in the next few months, and just mentioned here in another thread my new project to keep in control of my book publishing process.

                                                                                                                            I’ve been a remote worker for close to two decades, so the pandemic new workflows are easier for me than they are for many other people. I’m trying to cope with being locked up by learning how to make better coffee and catching up on fantasy and science fiction books I’ve been wanting to read for ages. I still go a bit depressed from time to time, but participating in cool communities like this one helps a lot.

                                                                                                                            1. 1

                                                                                                                              What good science fiction have you found? I have been enjoying Neal Stephenson. Fall; or Dodge in Hell, was a wonderful read. Stephenson turned me off at first and I refused to read his books. But Fall; introduced me to Snow Crash, which was also a great read.

                                                                                                                              1. 1

                                                                                                                                I love Neal Stephenson, I have all his books except for “Fall; or Dodge in Hell” which didn’t really attracted me by its description, but I’ll double check it again, good praise from you might just be the data point I needed to check it out. To be honest, I loved all his books, so I’m guessing I will like that one too. I have most his books in paper (some in hardcover even), that is how much I enjoy his work. But, as you read more of his stuff you’ll quickly notice that Stephenson has a particular way of making the endings of his books. The end of the book is not necessarily the end of the story, it is the end of the story he wanted to tell you, and in many occasions that that leaves you wondering what happened next. His books do not end in those “let’s wrap everything tidy” kind of practice that most books do, and that detracts many people from his works. It is up to you to deal with that, personally, I don’t mind at all, I understand how and why he does it, and I can still enjoy all the rest.

                                                                                                                                If you enjoyed “Snowcrash”, then pick “The Diamond Age” that has a similar vibe but is placed a bit ahead in the future. Travelling all the way to the past with the Baroque Cycle trilogy is also a very good read, but be aware that those books are huge. The hardcover versions are so large that I often used them as furniture. Two of his books that I don’t see people talking often but that I really like are “REAMDE” and “Anathem”. I don’t know if the “Cryptonomicon” still has the impact it had when I first read it ~20 years ago, but it was fun.

                                                                                                                                I don’t know what subgenre of science fiction you enjoy, buuuuut, if you’re game to trying new things, I’d recommend the Iain M Banks books from “The Culture” series, just be aware that the first two books are not as strong as the rest of the series. They are not really chronological, as in you can read them out of order but the author builds more and more into his universe as the books are written so picking a book from the middle or late Culture series will be a bit harder because he is assuming you already know a ton about the tech, ethos, and ways of things. I think that my favourites on that series are “Player of Games”, “Excession” and “Use of Weapons”.

                                                                                                                                Two other authors that filled the void in my life after Iain M Banks passed away were Peter Hamilton and Alastair Reynolds. They have many books and some series. The Commonwealth Saga and Revelation Space series are quite dear to me and I expect other people to love them to.

                                                                                                                                Oh man, I could go on forever but I have already typed a lot here. Feel free to reach out if you need more recs! :D

                                                                                                                                1. 2

                                                                                                                                  I suspect you may be interested to know this, I am 266 pages deep into this book and I am enjoying it thoroughly. The confucian quotes add to the appreciation, but the storyline is on par with snowcrash. I will confess, the storyline to Fall; or Dodge in Hell is still my favorite of these 3 books from Stephenson that I have read. Thanks again for the great suggestions my friend.

                                                                                                                                  1. 1

                                                                                                                                    I’m so happy that you’re enjoying it. I think that the Diamond Age is my favourite Stephenson book (I kinda like them all but The Diamond Age has a special place in my heart). As soon as I finish with the current two books I’m reading, both fantasy — Oathbringer and The Lies of Locke Lamora — I’ll pick Fall; or Dodge in Hell.

                                                                                                                                    Also, if you’re here on Lobste.rs and you might appreciate his old essay In the Beginning was the Command Line. It is at the same time a bit dated and still relevant, IMHO.

                                                                                                                                  2. 1

                                                                                                                                    Hello my friend, thank you for the thoughtful response… timing is odd in life, this comment picked me up when I needed it so thanks mate. Awesome, I have started reading the Diamond Age, so far it’s pretty gripping and feels similar to snowcrash, dytopian technical society. For sure, I’ll check the other authors out as well Obrigado muito bom. Tudo bem?

                                                                                                                                    Fall; is clearly written by the same author, but has a must more positive overtones than snowcrash, which was more gritty and gnarly. But Fall; is without a doubt a magical storyline, I do vouch for it being a great read.

                                                                                                                                    1. 1

                                                                                                                                      Stephenson didn’t do endings - maybe he’s better now but he wasn’t then.

                                                                                                                                      Other good British SF authors are Ian McDonald, Ken MacLeod and Paul McAuley. Despite all having Scottish surnames they’re based in Northern Ireland, Scotland and England.

                                                                                                                                  1. 11

                                                                                                                                    I generally dispute all claims of the sort ‘we should not fund A because the money would be better spent on B’ on the grounds that it is usually possible to do both. The reason we haven’t solved poverty, climate change or eradicable infections is because we simply don’t give those any priority, not because we don’t have the money, and certainly not because of the space program or the LHC.

                                                                                                                                    Having said that, I am not suggesting that everything should be funded and nothing is a waste of money, and I do think that discussion is an important one to have with regard to the new collider. I am leaning towards going ahead with it personally but I am far from an expert.

                                                                                                                                    A more pertinent waste of money in my opinion is the majority of military expenditure, and also inefficiencies and corruption in the financial markets.

                                                                                                                                    1. 4

                                                                                                                                      Except that what gets (emergency) funding is very often dirty industries. We don’t need to research climate change as much as we need to put into action what has already been learnt about it (*). Is this thing “expensive”? Quite probably. Is it more expensive than this year’s relief packages for oil-based companies? Nope.

                                                                                                                                      (*) actually we might need to do more research on the topic in the future but that’s because we still haven’t put into action anything we’ve learnt about it.

                                                                                                                                      PS: don’t forget that social change brings more climate change improvements than anything else because the poorest in developing countries don’t need to burn down forests in order to be able to eat.

                                                                                                                                      1. 2

                                                                                                                                        A few years ago I was talking to a professor at UT Austin. He pointed out that the Superconducting Supercollider, before it had been cancelled, had built two of the enormous superconducting electromagnets that were meant to deflect particles around the ring. Each one of these cost the US government more than the total amount of US government funding for computer science ever. Physics is important but it receives an insanely disproportionate amount of research funding.

                                                                                                                                        1. 10

                                                                                                                                          That’s not really surprising though, IMHO. Advances in computer science often yield profitable work very quickly, so there’s an incentive for private industry to pick up funding soon after the government has gotten something off the ground. Physics, especially blue-sky physics research, often takes decades to yield “profitable” science that can be profitably funded by the private sector…if ever.

                                                                                                                                          The government should fund things that are important but not profitable. The government’s job isn’t to make money, but to promote the general welfare (and, IMNSHO, knowing the ultimate nature of reality is important to the general welfare…).

                                                                                                                                          1. 3

                                                                                                                                            This wasn’t always the case, but then physics research became necessary for making nuclear weapons and the rockets to deliver them. Were it not for that then physics would probably get about as much research funding as any other science.

                                                                                                                                            1. 3

                                                                                                                                              I agree - I believe pure and applied physics was in the right place at the right time to get all the funding it needed during the Cold War.

                                                                                                                                              “Well sir, I hear the Russians are working on this project too… it would be a shame if they finished it first.”

                                                                                                                                            2. 1

                                                                                                                                              Part of this is just how insanely expensive it is to do experimental work. The laser I use in my lab cost ~$50k to build from scratch. Buying a turnkey version, like a national lab would, costs ~$500k. Some groups that do my kind of research use fast CCD cameras, which cost tens of thousands of dollars. You may also need a fast oscilloscope, which can run $30k (I’ve seen $100k-$200k ones, but have never needed one). I do biophysics research, so I’m not even doing something incredibly high tech apart from the laser I use.

                                                                                                                                              For theoretical physics you really just need to pay salaries and for time on a cluster. I would guess that computer science research is similar.

                                                                                                                                              1. 1

                                                                                                                                                It’s also expensive to do some bits of computer science research. If you’re doing computer architecture research, taping out a chip is a good $30m, minimum. Research councils don’t fund anything like this, so only a couple of departments in the world ever do it. Even doing systems research, to do it well you need to employ a handful of research software engineers, but grant funding doesn’t let you do this at anything close to an industry-competitive salary.

                                                                                                                                                As a result of this under funding, blue-skies computer science research in a number of core areas is done almost entirely by a handful of industrial research labs.

                                                                                                                                                For the CHERI project, the total cost of the research so far is over $20m and we haven’t even taped out a chip. By the time we get to the end of the Digital Security by Design programme, the total spending between government and industrial funding will be over $300m. That is incredibly rare for a computer science research programme, there are hundreds of ideas that deserve the same level of investment that no one is funding and industrial research is not touching because it wouldn’t lead to a competitive advantage.

                                                                                                                                                1. 1

                                                                                                                                                  That’s a good point, I wasn’t thinking about those kinds of expenses at all.

                                                                                                                                          1. 3

                                                                                                                                            I am interested in joining the indieweb community however I am finding it really hard to find a lightweight setup for self-hosting. I feel like I should be able to use a static site generator and a couple of endpoints on nginx to capture webmentions. Am I missing something? I have found it a little difficult to quickly grasp the typical scope of the indieweb.

                                                                                                                                            1. 2

                                                                                                                                              This site seems to have a lot of resources, this is the page for nginx: https://indieweb.org/Nginx

                                                                                                                                            1. 3

                                                                                                                                              I’m curious, has the indieweb landed on microformats for a reason? Even if it’s a tad more verbose my preference would tend to RDFa; is there some form of adoption for that or is it a big no-no for reasons unspoken?

                                                                                                                                              1. 3

                                                                                                                                                I might be way off base here, but RDF was a big part of the push for “Web 2.0” - which I see as the spiritual precursor to today’s IndieWeb. The problem was that the entire process bogged down into standards wankery. It doesn’t help that RDF is pretty damn weird, and the proponents didn’t do a great job explaining why the overheard was required.

                                                                                                                                                I think microformats (which are basically HTML+CSS classes) is a reaction to that overcomplication.

                                                                                                                                                1. 4

                                                                                                                                                  I’m not actually sure what the rationale was for landing on Microformats.

                                                                                                                                                  As far as I know, it’s only Microformats that have been adopted within the Indieweb. I don’t recall reading anything about other platforms within their documentation.

                                                                                                                                                1. 5

                                                                                                                                                  This article gives a good short summary about creating an indieweb profile.

                                                                                                                                                  I’d like to see a complete overview whitepaper of the “indieweb”: indieauth, micropub, microsub, and a somewhat working setup of them, and their interactions. I have a blog hosted in AWS S3/Cloudfront, with an RSS feed, deliberately no way to comment for readers[justification] . I have checked these topics but found them overwhelming, and actually overly complicated and needing a more costly setup, but maybe I had an incorrect impression.

                                                                                                                                                  I know that not all of the indieweb (non-)“standards” are needed to be supported at the same time, these are loosely coupled things, but I don’t see why would I choose any of them, and the barrier of entry seems too high for no gains (for me at elast), so I’d like some justification. By justification I don’t need the bullshit of “freedom” [on-fediverse freedom], control [on-control], etc, as I have evaluated those, and the pros didn’t outweight the cons (eg. needing a server app for some features, instead of a dumb static host). I have my blog for that already, which gives me freedom, and what I need, and I only see extra cost for unneeded, half baked, constantly evolving, non-standardized anti-features.

                                                                                                                                                  Now this is getting a totally unstructured rambling, but I’d like to see a technological overview with respect to how these thing make up a working user experience. Journeys from user and publisher workflow perspective. Infrastructure needs. And only then the ideological seasoning, with an analysis, how those are served and how those are still limited/at risk even with the indieweb. I don’t expect such an objective and exhaustive overview from the advocates, and I find it overwhelming, to create one just to get the conclusion, that I don’t want this, and get targeted by a flame war. So I stay on my web 1.0 site. Maybe start a webring.

                                                                                                                                                  [on-fediverse-freedom]: Freedom, the main banner-word for the fediverse… where censoring is a central topic every now and then. On my blog I don’t need any censorship, neither for myself (that would be really sad), nor for the commenters (because they are an empty set, see below.).

                                                                                                                                                  [on-control]: Indiweb site tells me bigco won’t control my content. I have an impression of supporting all Indieweb stuff overwhelming, but luckily I can pay for a service to get my presence, eg. for miro.blog. But then I also lost control. Also lets not mention the limited control one still has, as cloudfare or other bigco can decide to remove you from the net by infrastructure denial, if they find that you are controversial, and may hurt their image, or ideology… If you publish only non-controversial stuff, or support any such decisions, why would you choose the indieweb instead of better polished free solutions with better content-consumer reach?

                                                                                                                                                  [justification]: there were times in my country when a site owner had to take responsibility for every content, including comments, and it created an unwanted overhead and legal minefield for site owners. Also most comments are spam or rude talk nowadays, even if one requires FB/Google or other personally identifiable authentication. Lets not talk mention GDPR then, I don’t want to consider anything such for my hobby blog.

                                                                                                                                                  1. 5

                                                                                                                                                    This article gives a good short summary about creating an indieweb profile.

                                                                                                                                                    But it’s missing the other part - how do other sites find you and mention you? If I were to reference the blog post in my blog, what actions would I need to take to ensure the original blog is notified?

                                                                                                                                                    It’s all very well for interested parties to set up h-cards and whatnot, but how the hell does the rest of the parts fit together?

                                                                                                                                                    1. 4

                                                                                                                                                      Yo managed to summarize the question in my head, instead of formulating which I just posted a rambling mind-dump. Thanks!