Newest Comments

  1.  

    Going to be interesting to see what the “browser monoculture isn’t a big deal, honestly” crowd makes of this one.

    1.  

      I’m not a big fan of SPA architecture at all, but the one thing I will say for it is that it makes preview environments SO much easier: if your application’s UI is pure HTML and JavaScript pulling from production web APIs you can turn on Netlify previews and they just work.

      … for client-side code at least. Server-side code remains much harder to do previews for, though Heroku has had this sussed for about a decade now.

      The hardest bit is when there’s a database involved, since you need a mechanism that can provision a fresh database for each PR - not cheap or easy.

      I think this is one of those things though that it massively less expensive if you build it early on. Having preview environments on a young project is hopefully only a day or so of tinkering. Adding them to a large existing application with a lot of moving parts is a whole lot harder.

      1.  

        I didn’t realize it until I adopted Black, but I used to spend a material amount of my time typing code - I’d estimate as much as 5-10% - agonizing over my indentation. And I was using Python!

        I used to have very strong opinions about when to break up a long set of function parameters into new lines, or how to indent a complex sequence of chained function calls.

        I resisted Black for a couple of years because of tiny, trivial differences it had from my very opinionated way of formatting code.

        Then one day I decided to drop that… and suddenly I was liberated. All of that mental energy I had spent agonizing over where to put my new lines… it turns out I could put that to good work somewhere else instead.

        As for code review: my goodness, the HOURS if not DAYS of time I’ve seen wasted on back and forth between the office pedants and junior engineers over how best to format code. I don’t regret eliminating those conversations in the slightest.

        1.  

          Even easier now if you don’t need the advanced features in Consul, Nomad brings its own service catalog.

          1.  

            A workplace of mine once got a datasheet for a five-figure-USD piece of hardware that was in Comic Sans font. We did not buy this hardware.

            1.  

              Automated code formatting

              • As an individual, you get back all of that mental energy you used to spend thinking about the best way to format your code and can spend it on something more interesting.
              • As a team, your code reviews can entirely skip the pedantic arguments about code formatting. Huge productivity win!

              I will happily die on this hill: No. Autoformat is for noobs.

              Even when they use tools like prettier, I constantly have to point out to juniors ways in which their code is hard to read, repetitive, poorly factored, and so on, on the line level. They pick names that are too long. They don’t extract common subexpressions. They nest way too much. The act of tidying up the code by hand gives you time to think about all of this, it forces you to slow down, and to develop good habits so that there is no mess to clean up in the first place.

              Auto-formatters give you only the illusion that you don’t need to care about any of this. In practice, you still do, only now you’ve taught people that it’s a “waste of time” or “nitpicky” to do so. It is a local maximum that keeps you from getting better.

              The worst symptom is when you have two or three pieces of code that are structurally near-identical, but which auto-format forces to be formatted differently because e.g. one line happens to cross some internal auto-wrapping threshold while another doesn’t. Or because autoformat forbids you from lining it up vertically. Now, code that should look the same looks wildly different because a bot was too dumb to do it right, and somebody convinced you that this is the Rule that must be followed.

              Given a piece of code that was nicely formatted and lined up by hand, nobody can seriously argue that the auto-formatted version is better. It is obviously less clear, worse at communicating intent, and mangling it through auto-format is just like trampling all over a carefully manicured garden. If you do use it, auto-format should only apply to changed lines, as a tool to get you to cleaner starting point. Forcing everything to match a linter’s preferences only seems like a good trade-off if you’ve never seen code crafted with precision.

              1.  

                Good idea to have mentioned them, also noticed they’re weren’t mentioned.

                1.  

                  I think it is helpful to look at a fork kinda like a labor strike: a bunch of people get together and refuse to work with someone unless certain demands are met. Ideally, you get a fair contract and start working together again, but failing that, you keep going your own way. But really the best outcome of a fork is also what most striking workers want - a deal with management so they can get back to their jobs, but better.

                  1.  

                    That very quickly means your fork becomes irrelevant, unless you want to independently implement all the new language features added to mainline gcc.

                    Today’s GCC is a rebranding of EGCS. EGCS was a fork of GCC.

                    The scenario you’re describing as impossible has already happened, and GCC lost.

                    Now to be very clear, this is not a result of the commercial appeal of bsd vs. gpl licensing

                    Apple started to fund LLVM as a direct response to GCC becoming GPL3 licensed. They also stopped updating any GNU software that transitioned to GPL3.

                    GCC made bad technical decisions, but the final straw that lead Apple to hitch their wagon to LLVM rather than forking GCC was the license.

                    1.  

                      I have a problem with “either accept this one person’s word as dictatorial fiat for as long as he lives, or build your own equivalent completely from scratch” as the only options on offer.

                      I’m not entirely sure how you’d interpret “fork” as “entirely from scratch”. I’ve been around various people who forked projects so they could take them in a different direction (eg, I was a summer of code student at the time of the Xorg fork, I’m friends with the CopperSpice developers, and I work on 9front and OpenBSD, both of which are forks of other operating systems). Forking is very much the opposite of starting from scratch.

                      Many of the Sun projects that Oracle touched has forked and most have beaten their upstream alternatives in the market place. Many of the ones that haven’t beaten them into the dust are at least strong competitors.

                      Forking has also succeeded with GNU projects – most notably, EGCS was a fork of GCC, which completely replaced the GCC codebase when GNU realized they were losing developers and needed to change course. Lucid Emacs (later, XEmacs) may not have completely taken over, but it did shift the development direction of GNU Emacs. The eglibc fork of glibc was shipped with Debian for many years, and also directly pushed glibc in specific directions.

                      If there’s enough dissatisfaction around the leadership of the original project, contributors from the original project readily jump ship.

                      It’s happened before. It can happen again.

                      1.  

                        There’s an active Emacs fork at github.com/commercial-emacs which already contains big improvements over GNU Emacs.

                        1.  

                          When the FSF was founded, a lot of the people using computers were computer programmers. Almost forty years later, most computer users have no interest in a “freedom to modify” the software they use, because they wouldn’t be able to even if they were allowed to.

                          Which is what’s so infuriating about Stallman as both a political and technical leader. He exists in his own hermetically-sealed techno-ascetic bubble, explicitly insulated from what’s actually happening in the world, and so he clearly has absolutely no clue about it. And never will, because his ascetic bubble is his “solution”.

                          But that doesn’t fight for or increase user freedom at all; in fact, it explicitly surrenders on the whole idea! A true champion of Free Software ideals should want the benefits of those ideals in a rich, modern, full-featured user experience. But Stallman has no evident interest in doing so, because he has his little good-enough bubble of tools that meet his needs, and has fallen so far out of touch that still thinks things like compiler extensibility are the big fights he needs to put energy into.

                          Meanwhile the former GNU project which has done the most to actually try to deliver a rich modern experience in Free Software is GNOME, which explicitly broke from GNU largely due to Stallman’s behavior toward them.

                          1.  

                            Thank you! This is exactly the type of feedback I’m looking for. Greatly appreciated.

                            1.  

                              The handwriting is not bad, but when I checked the transcript page out of curiosity, I immediately thought, “This is a lot nicer to read.”

                              1.  

                                I have a problem with “either accept this one person’s word as dictatorial fiat for as long as he lives, or build your own equivalent completely from scratch” as the only options on offer. I don’t disagree that, as FSF/GNU currently operate, those factually are the only options on offer, but if someone actually cares about the future of the ideals of Free Software, they should feel extremely uncomfortable with that.

                                It is long past time to be recruiting and training up the next generation of leaders and putting them into positions of responsibility, but instead all efforts are bent toward ensuring Stallman clings to sole power for as long as he wants. as I have said over and over, the predictable outcome of this is that the whole thing collapses as soon as Stallman is gone. So, same question as to the other person: is that the outcome you want to see?

                                1. 7

                                  “Why did you choose soda instead of seltzer? If you didn’t consider seltzer, you didn’t choose soda, someone else chose it for you.”

                                  Replace “seltzer” anything you like. Lemonade perhaps. Or water. Or ribena. If you drink soda without considering ribena, you didn’t choose soda.

                                  It is a common fallacy among smart people that they can get perfect information and make a perfect decision. In reality, your decisions have to be made on what you know. Your options are only the ones you have in your head. Maybe you should explore more options, but you don’t need to consider or know about every option before making any choices!

                                  A common mechanism in pursuit of decisions is soliciting advice from others who might know of other, unconsidered options. Do that. But don’t shame others for their sufficiently made decisions.

                                  1.  

                                    When I was a teenager I got pretty excited when I realized that classical public key algorithms and things like Diffie–Hellman key exchange are really easy to turn into code - in a simple don’t rely on it for anything kind of way. I think it would be a really eye-opening thing to do that in school, potentially even in schools that don’t really go into computer science, maybe even as math. I don’t mean getting a secure version, but it would both take away that shroud that almost makes it look mystic, and get people to understand the basic concepts of something that they nowadays interact with constantly.

                                    Of course care should be taken to make sure that a lot of additional things need to be considered to create something you want to use, but I think that is kind of the same in physics and chemistry classes, so I think it should work for cryptography as well.

                                    And when that is covered it can be combined with some security related topics, such as choosing secure passphrases, and what can happen with password reuse. I can imagine these things, when they are taught at a young enough age, before people start to drop out of school in most situations this would really help a great deal with the day to day “X has been hacked” scenarios. Right now companies have people come there every few months or years to get everyone up to speed when it should really be something for everyone using a device connected to the internet.

                                    On a related note I’m often pretty shocked to find a senior developers not knowing the the definition public key cryptography and private and public keys. Randomly pasting private keys everywhere is the next step. But then I don’t know whether that’s more shocking than the amount of people I’ve seen without even reading the error re-trying commands with sudo, obviously not knowing what they are doing. And while I can imagine specific areas where that might not be something they deal with I certainly don’t think that’s okay for most people, because whether you have a web or a mobile app you are pretty much forced to use it in one way or another. If everyone learns in physics leans the basics of how a motor works, I think everyone should learn how security and cryptography work. If it burns down some of security bullshit/theater/snake oil business models even better!

                                    1.  

                                      I have had to warn a client about this before.

                                      1. 9

                                        The dependencies are: …

                                        • trust-dns-server, a library that implements a DNS server,

                                        🤔

                                        1.  

                                          I like that you call it “the plain terminal solution” - to me, embedding a whole terminal emulator seems much more complicated than the “plain” solution :)

                                          Regarding the other issues, I’m not sure why the terminal solves any of them better than a normal text editor window - except the interactive commands, I guess. But I’m not trying to convince you of the merit of my entirely hypothetical vscode extension, just trying to work out if it’s really a terminal emulator that you want rather than specifically the ability to run and manipulate shell commands.

                                          The article is about using terminal escape sequences to build TUIs, which seems like a weird thing to want in a panel inside a real GUI application like VS Code.