1. 12

    I recommend Emacs instead: it is a full-blown text-oriented operating system built atop Lisp, with a ton of useful packages building on decades of work.

    It even comes with vim compatibility, if you want it!

    1. 3

      “it is a full-blown text-oriented operating system built atop [x]” actually sounds like a scary antifeature?

      1. 3

        Yeah, it could as well have been. By a miracle stroke of luck, it actually works out really well for Emacs. Think less JavaScript, more JVM.

        1. 1

          I believe that’s a reference to the joke

          Emacs is a great operating system missing only a decent text editor

        2. 1

          I’ve been using emacs (spacemacs) for a few months, and there are some things I like about it. However the “vim mode” is clearly not desgned by vim users. By default it jumps all over your file highlighting things as you search! I had to write nontrivial lisp to fix that, there is no config option.

          I also still haven’t found a way to make my tab key behave sensibly. I figured out how to neuter the awful indenting in prog mode, and set tabstop+shiftwidth and not insert spaces when I push tab… but every new mode I use may require redoing all this work. More than once I’ve opened a new type of file, made a trivial edit, sent it off only to find emacs had inserted whitespace errors facepalm

          1. 2

            I think before slamming Evil mode you should try it on its own, without all of the other Spacemacs stuff. Spacemacs notoriously adds a lot of things that they (and, I guess, many of their users) think are nice, but it’s far from plain Evil mode. Plain Evil mode is indeed desigend by Vim users, and any incompatibility with Vim is a bug, not a feature.

            1. 1

              I will try it, but from my reading if the code both of the problems I list are not spacemacs extras.

              1. 1

                Then i urge you to filé a bug report. The Evil maintainers are serious about compatibility.

                1. 1

                  I filed one of them https://github.com/emacs-evil/evil/issues/1304 and got the help needed for a workaround.

                  Everywhere I look for “how to make tab key behave” is just people asking why one would want that, but I guess since it’s a regression from vim I coukd try to file it for evil…

        1. 9

          Because it’s the one text editor that doesn’t murder me with RSI.

          1. 4

            Same. I tried using Emacs for a while and the constant need to hold down modifier keys made it physically painful.

            1. 3

              As an Emacs user I have to agree. It’s just that the benefits I get from using Emacs outweigh the pain…

              1. 3

                vim user rolls eyes… Causing physical pain in a completely avoidable way imho means that emacs is not meeting very basic prerequisites, however great the rest may be :)

                1. 2

                  Ever heard of Evil mode? It is possible to get the best of both worlds, and I have trouble understanding why someone wouldn’t want that.

                  1. 1

                    I don’t know if it’s avoidable, beyond taking breaks from time to time. I’ve tried emulation packages (viper, evil), and different editing ideas (lispy, objed) but they always confuse me.

              2. 1

                I had this problem with Emacs until I learned how to press Ctrl key with the palm instead of the pinky finger.

                1. 5

                  Wait, doesn’t everyone remap caps lock to control when they set up a new computer?!

              1. 3

                also related: just use / to search or :tag to jump to ctags on vim’s own prompt without needing to exit vim first :P

                Opening a file with colon and line number doesn’t work for me; i think some plugin is mentioned but i don’t get the name. I would love that feature, but much rather have this on the :e command within vim, to copy paste error locations. For that I use :make and the :clist command family instead.

                I’m always thrilled to find out hidden vim gems i was ignorant about, but this one wasn’t it.

                1. 1

                  Vim-fetch is what you’re looking for :)

                  BTW I’ve got show-notes for all the plugins etc. used over here: https://www.semicolonandsons.com/episode/Vim's-Versatile-CLI

                  1. 1

                    found the file:line plugin that works from cmdline and :e, so i did get something from it after all <3

                    https://www.vim.org/scripts/script.php?script_id=2184

                  1. 12

                    Lots of us still use 80-column terminals every day, but sometimes Linus’ arguments are just “I don’t like it so it’s bad”. This is one of those times.

                    Furthermore, his argument essentially boils down to “my monitor is big and my eyes are still functional so fuck you if yours aren’t”.

                    1. 6

                      no, the argument is “we use longer variable names and function names, as well as large indenting, which is more important for readability than 80 chars” … and isn’t it in fact hard to find screens on the market that physically limit to 80?

                      1. 1

                        Not everyone wants their code up full-screen. Most of my screen goes to a web browser with an 80-width terminal next to it so that I can see the results live-reload in real-time.

                        1. 1

                          then I hope you’re not using Java.

                          It all depends on the language you’re using. I’ve used some where 80 is completely fine. And sometimes you kinda need 100 to not get an unreadable mess.

                          1. 1

                            I’m not that kind of masochist, no.

                      2. 6

                        Furthermore, his argument essentially boils down to “my monitor is big and my eyes are still functional so fuck you if yours aren’t”.

                        Exactly. As I said in my other comment, why should people who have these conveniences get even more, at the expense of people who have less?

                        1. 2

                          By choice or by necessity?

                          I doubt there are really many out there, whose equipment literally can’t display more than 80 columns. Maybe you are one of the few.

                          If by choice, then you are really just arguing that your personal preference on how to work is more valid or important than Linus’.

                          I generally aim for 80 chars myself, because I’m old enough that this is a habit, but prefer to use tools like black to avoid even thinking about it.

                          1. 1

                            Even when I only have one window up, I still keep a thin window by choice Longer lines cause eye strain over longer periods of time. This is similar to how most well-designed news and other content oriented sites are designed to show somewhere around 76 characters per line.

                            For instance, look at Twitter in full-screen. There is a maximum width of a tweet… At least until their designers ruin that like the rest of their recent UX changes.

                        1. 3

                          This article reads to me: “I never use branches, except I use branches”. “My local master” is already using branches. Should have named the key concept of avoiding branch merges by rebase. We also do that at osmocom.org. Avoiding branch merges works well and gives nicely trivial linear history. But rebase-separating patches can turn out to be a massive, sometimes prohibitive effort, when the patches touch same code paths. If you branch-merge, you resolve conflicts only once in the end. If you rebase to get linear history, you potentially get conflicts for each and every branch commit. Like this I’ve ended up with practically unseparable code bombs several times already at osmocom.org, usually for larger refactoring work.

                          1. 1

                            wonder about the bias of using github for this. I’d assume it’s biased towards both english-speaking countries and countries with a strong open source culture.

                            Also find it suspicious that the GDP chart seems to be absolute rather than per capita? I’d assume GDP (total) and number of developers both mainly correlate with a country’s population

                            1. 2

                              …and also a huge bias against properly self-hosting projects, against closed software, sole non-sharing hackers and countless other things. github makes hardly even slightly close to representative data for studies titled “.* of the world”

                            1. 24

                              The real problem is that Google marks stuff as malicious using their mysterious ML shizzle and provides no clear motivation or recourse. Basically, this is the same as Google banning uncommon browsers we saw a few weeks ago.

                              That Google doesn’t offer any explanation is probably because … it doesn’t have one. ML is inscrutable beyond the simplest cases, so even Google doesn’t know really why it blocks something, which is the reason these things keep being flagged. There are similar problems with YouTube’s copyright detection system. I think this raises some serious ethical questions about the usage of ML for this sort of stuff.

                              The lack of explanation and recourse is probably the worst, and I think they should be held accountable for clearly wrongful classifications. For example my friend’s employer got completely blocked by Google safebrowsing a few weeks ago with no warning or explanation about what’s wrong at all. Eventually it was probably traced to attachments in their email hosting offering (emphasis on probably), but this kind of stuff cost the company real financial and reputation loss. It can literally destroy businesses.

                              1. 19

                                The real problem is that Google marks stuff as malicious using their mysterious ML shizzle and provides no clear motivation or recourse.

                                No, the real problem here is that we’ve allowed essential internet infrastructure (search, and increasingly browsers) to be completely monopolized. Monopolies serve shit sandwiches with no recourse or alternative by definition; what you’re calling “the real problem” is merely a detail of how their particular ML-flavoured shit sandwich is made.

                                1. 6

                                  Maybe, I don’t know. The “immediate problem” is the ML stuff, the “bigger picture problem” is that these are genuinely hard problems to solve. I’m not so sure if things would be significantly better if Google had only a 30% market share, for example. Whose to say that the bigger competitors wouldn’t do more or less the same? And a lot of these issues aren’t really visible to most users, so only a limited number of people would switch anyway.

                                  That doesn’t mean that we don’t have problems with Google monopoly; I’m just not so sure if this is one of them, or a big part of it.

                                2. 8

                                  Same thing with their email “spam” filtering.

                                  1. 1

                                    the more AI we see employed to make decisions, the less decisions made will be explainable. figuring out how an AI reaches a conclusion is a science upon itself.

                                  1. 1

                                    funny joke how this website asks me in a popup whether i want to sign up for a google account. seriously??? even google critics can’t manage some uninfested web space to publish on?

                                    1. 1

                                      On the other hand, if you were going to call out one of the most influential tech companies, would you want to do it on your own site and risk unrelated search-ranking changes accidentally sending your stuff to page 37?

                                    1. 1

                                      nice idea to learn something new. Only, point-and-click to write shell commands just drives me insane. (also impossible on a mobile screen)

                                      1. 2

                                        completely useless and fun to read :)

                                        1. 3

                                          Cast all function arguments??? No way, that is surely not a good idea. The type passed should match, taking care of conversion, but just casting all of them is asking for unmaintainability and weird range errors. Somehow the text reads outdated. VAX? 386? 32bit? Library not declaring return values????? o_O

                                          1. 1

                                            It’s surely outdated, but not as much as one might wish. A lot of this was still relevant well into the mid 2000’s… you may not need to write code that accomodated such things, but you would certainly encounter code written with it in mind in the wild. You still can, if you look in the right places; there’s a lot of it.

                                            C99 sort of unintentionally stands as a quiet but firm symbolic barrier separating us lucky souls from such horrors of the past.

                                            1. 1

                                              Can you say more about this? I’m curious, and what did C99 add that made this practice unnecessary?

                                              1. 1

                                                The way I meant it, it is more symbolic. If you’re writing C99, then you are acknowledging that your code will not work on SunOS 3 or a VAX or such and that you’re OK with it. You’re no longer trying to appease Old Testament compilers or libc’s that, for instance, don’t actually declare the prototypes of standard functions. This may just be my own take though.

                                                1. 1

                                                  Oh, okay. That makes sense. I was genuinely asking. I’ve written very little C89 in my day, and no amount of C that came before that. (My first copy of K&R was the second edition.)

                                          1. 1

                                            Obviously written by a Marketing Lead. Where is the technical meat?

                                            1. 10

                                              I mean, the RFCs are linked right in the first paragraph.

                                              1. 6

                                                i was expecting this reply, but of course an article like text comparing JMAP to IMAP with perf statistics is what I’m looking for, instead of reading the dreary bare specs and deriving the real world implications by hard thinking.

                                                1. 10

                                                  You know, that’s fair. My response was too glib, and I apologize. The JMAP homepage might have better info. As far as I can tell, it’s a more “webby” HTTP API, that doesn’t require a persistent socket, and has changes for use cases that are more common now than when IMAP was standardized. Too, it also handles sending mail from the client.

                                                  I’ve thought about implementing it, or at least some of it, just to see. But it’s pretty ugly, and I really mislike the HTTP style, so, I’ll probably just continue free-riding on other people’s work.

                                                  1. 1

                                                    There is no performance involved with a protocol. Implementations have.

                                                    Protocols might be designed with performance in mind though.

                                                    1. 1

                                                      Anecdotal, but Fastmail web via JMAP is the fastest, most responsive email client I have ever used (other than pure-text ones like mutt).

                                                1. 6

                                                  I thought I would be reading something about a programmer’s mind, this is just a rant about the AbstractFactory pattern. I like the quotes best.

                                                  1. 3

                                                    I am missing a discussion of the actual tradeoff: what about timing critical programs? What about dependencies / library coverage? Binary compatibility (e.g. kernel modules)? embedded platforms? This reads as a single-dimensional sales pitch and hardly even mentions the reasons why a memory-safe language might be unfeasible. The single axis here is that safety is good and unsafety is bad. IMHO too naive / not that interesting.

                                                    1. 2

                                                      usually a commit should be atomic, but there is a point where rearranging the history to achieve nice and small meaningful patches becomes prohibitively difficult: for large refactoring, especially with the API going back and forth or with interleaved cosmetic changes, rebase conflicts become extremely complex and take days to sort out. So, even though i am an atomic-commit evangelist, on rare occasions our team has agreed to merge huge code bombs instead of spending another month on creating intermediate refactorings that still pass all test suites.

                                                      1. 1

                                                        This looks cool but it’s inaccessible on a phone with touch and drag controls.

                                                        1. 1

                                                          Yeah, also tried to play on a touch device with Fennec browser, and dragging an item is rendered at like 2 fps, and grabbing the arrows is almost impossible. i once built a half adder to count from 0 to 7 using minecraft redstone, so i guess i’m pretty permissive on UI, but here, I gave up on the 20th attempt to drag a gate to the litter bin to remove it. This would be fun without the annoying drag and drop UI! Why not just touch source, touch target? And make the target areas larger? (Also dreaming of a text mode version.)

                                                          1. 1

                                                            I emailed the author earlier and suggested an interface in which you tap the source then tap the destination to create links. He responded that it was a good idea.

                                                          2. 1

                                                            It has been updated so you can tap to play instead of drag to play.

                                                          1. 1

                                                            SSH keys. :)

                                                            1. 1

                                                              For website logins?

                                                              1. 1

                                                                I rarely log to websites. <- The fact I can write this is a counter-example.

                                                                But unfortunately, not.

                                                            1. 6

                                                              Some drawbacks:

                                                              • now google even knows your private credentials to all the other services it hadn’t controlled yet, great.
                                                              • the openid login we require with our gerrit always requires me to login at the redmine first, go back to gerrit, log in there picking openid, and then to again click ‘yes’ on the redmine that i allow it to trust gerrit. Suddenly the usual one-step password-manager-and-done becomes 4 steps that can never be automated the way the pw manager automates your normal logins.

                                                              So maybe private managers of secrets are better than outsourcing them.

                                                              1. 1

                                                                Your first bullet indicates that you misunderstood how this works. There are no credentials.

                                                                1. 1

                                                                  There are supposedly no credentials you enter on a website for the openid client, but you outsource them to an openid service, in our case redmine. There obviously still are credentials! Now i need to still tell gerrit (openid client) which openid service to use. I need to enter/click that EVERY time, pw manager will not help me there. Plus i need to make sure to already be logged in with redmine. In daily work the supposedly easier openid login becomes a major click orgy to reference the credential service, where other non-openid logins are me hitting enter (after unlocking pw manager once per browser session) and that’s it.

                                                                  1. 2

                                                                    what happens when you want to switch browsers or platforms or devices?

                                                              1. 3

                                                                Sounds promising, but so far seems to be a huge amount of sideways meta talk. I don’t really want to spend hours listening to what bitwise might be about later, i’d want to see him dive right into it.

                                                                1. 4

                                                                  When reading this, either i’m too dense to catch it, or this text doesn’t actually say anything. What’s your point? Can you pin it down instead of talking past and around it, for us dense people?

                                                                  1. 5

                                                                    The project is six months late. Management brings in the fixer to find out why. The fixer determines that the convoluted spaghetti mess of json generating xml generating lisp macros is slowing things down and they’d be better of with six lines of awk. The team working on the late project cries foul, the fixer doesn’t understand the problem, and the only reason the problem is late is because the fixer is so stupid they wasted days explaining things and they still don’t get it.

                                                                    At this point, the fixer either has (air) support from management, who tell the project team to shape up. Or they don’t, and the fixer gets a bad mark in their file.