Threads for acdw

    1. 11

      IMHO it’s very exciting to see how Emacs is getting modernized without loosing its ethos.

      package.el added a lot of dynamism to the community. Without package management, it was very cumbersome to install things, track dependencies and keep them up to date.

      use-package is now more or less a de facto standard for package configuration, and I think merging it into Emacs would bring lots of benefits (spoiler, it seems it might happen [1]).

      The end goal should be make it possible to run a modern Emacs with plenty of features yet a tiny .emacs or init.el.

      [1] https://lists.gnu.org/archive/html/emacs-devel/2022-09/msg01690.html

      1. 4

        my biggest problem with use-package is that it hides away a lot of the implementation details, which I think is a barrier between being a user and a programmer of emacs.

        1. 6

          I found the macrostep package incredibly helpful to understand what use-package was doing and to help track down issues.

          (use-package macrostep
            :after elisp-mode
            :bind
            (:map emacs-lisp-mode-map
                  ("C-c e"   . macrostep-expand)
                  ("C-c C-e" . macrostep-expand)))
          

          Of course it’s (e)lisp, so you can do the same with the built in macro expansion facilities and introspection, with finer control. This package makes it trivial to explore macros.

          1. 2

            Love macrostep! Tho the problem I have with use-package is also that it expands to pretty (imo over-) complicated code. I prefer a package like setup.el or even my own thing I’m playing around with that’s more of a progn around a related block of configurations.

          2. 2

            In what sense? I find it very neat to standardize trivial things and avoid cluttering my configuration. E.g.:

            (use-package notmuch
              :bind ("C-x m" . notmuch)
              :config
              (setq send-mail-function 'sendmail-send-it
                    mail-host-address "gnu.org"))
            

            One can always default to plain Elisp. Before package.el and use-package, it was hard to maintain complex configurations.

            1. 2

              I agree that packages are great, and that keeping related stuff together in a toplevel form is good. I just don’t like how use-package does it, I think … like I prefer pkal’s setup.el (see my comment above for a link) or more transparent idioms….

              I almost feel like use-package is a packaging equivalent to cl-loop, with its own DSL you have to learn.

              1. 2

                I guess the main thing for me is I never saw the problem with the old style that use-package is meant to replace. Maybe back before with-eval-after-load existed, granted the old eval-after-load was clunky, but there’s no reason to use that nowadays.

                The use-package style is a little more concise but not enough to justify installing a 3rd-party dependency, at least for me.

                1. 1

                  I’m curious, how do you use with-eval-after-load? I got started with use-package, so not really familiar with the core facilities unfortunately.

                  1. 2

                    Well, for example:

                    (with-eval-after-load 'fennel-mode
                      (add-to-list 'fennel-mode-hook 'paredit-mode))
                    

                    If you put that directly in the top level it would error out when it was first evaluated because fennel-mode-hook isn’t a list. Previously you would have done:

                    (eval-after-load 'fennel-mode
                      '(add-to-list 'fennel-mode-hook 'paredit-mode))
                    

                    …which is fine in this example because there’s only one form but often you have to toss a progn in there for nontrivial examples and it looks ugly.

                    1. 2

                      Thanks! Looks pretty reasonable for most of my configs.

              2. 2

                The one thing I don’t like about use-package (although I do use it myself) is that, if you use its conveniences like :bind, :hook, etc, it becomes more awkward to just eval config changes, without doing the entire use-package form. I’ve moved to doing everything in :config; I miss out on a bunch of the nice features, but I greatly value the ability to incrementally change config stuff with ease.

          1. 1

            I’m looking forward to the JavaScript tutorial!

            1. 2

              I’ve been trying to think if this is doable in POSIX make, as underpowered as that is… sadly my make-fu is not strong enough. I don’t think it has those good functions in it.

              1. 2

                Much more interesting than FizzBuzz: https://nullprogram.com/blog/2016/04/30/

                1. 1

                  omg incredible. so it can be done!

              1. 4

                This is great - the level is much better than the many shallow tutorials which only explain the quirks of prefix notation and what cons is etc. One typo:

                REPL> (for-each (lambda (str)
                                  (display
                                   (string-append "I just love "
                                                  (string-upcase str)
                                                  "!!!\n")))
                                '("strawberries" "bananas" "grapes"))
                ; prints:
                ;   I just love ICE CREAM!!!
                ;   I just love FUDGE!!!
                ;   I just love COKIES!!!
                
                1. 3

                  Also in section 12:

                  We can also make a lambda and apply it. Let’s make one that can perform square roots:

                  actually calculates a square.

                  1. 2

                    I still find myself wanting a tutorial on the messy, everyday usage like reading, writing, and parsing strings from/to ports, but I enjoyed that!

                    1. 3

                      I still find myself wanting a tutorial on the messy, everyday usage like reading, writing, and parsing strings from/to ports, but I enjoyed that!

                      I wonder if there would be any interest in a Real World CHICKEN Scheme book about practical programming, in the spirit of Real World Haskell et al. I have an urge to write one.

                      1. 3

                        Please do! There’s been a long standing TODO of writing such a book.

                        1. 2

                          I would definitely read this book. this is the stage of my scheme understanding, and is greatly benefit from a real-world book.

                        2. 1

                          I had considered a section on ports, but wasn’t really sure if it would make things too large. Heck, I considered following up the metacircular evaluator part with one with implementing a simple scheme read (from ports) in a similarly small amount of code but thought, that’s probably getting to be too much and in the way of this feeling like a document someone can complete in a short amount of time. What do you think?

                          1. 1

                            Do you know of any existing articles/tutorials which fill that gap? If yes, you could link to them; if no, you could always write a separate article. I think you’ve got the length about perfect as it is.

                        3. 1

                          Great catches! I’ve updated the documents with the fixes. Thank you so much!

                      1. 6

                        Nice, this looks like one of the better tutorials out there. Most tutorials are either written by non-Schemers (or rank novices who are just figuring things out themselves) or severely outdated. On that note, I was a bit dismayed to see define-macro make an appearance, but I’m glad the hygienic alternative is presented right away.

                        1. 6

                          Thank you so much! And yes, heh, I suspected some schemers wouldn’t love define-macro making an appearance at all, but it’s much easier to understand how macros in general, including the hygienic ones we love, work by seeing the one that’s “just manually manipulating a list”, and then pushing the user towards pattern matching (which I have found requires more of a suspension of disbelief). What do you think?

                          1. 3

                            Yeah, I fully understand why you would want to do that. The explicit/implicit renaming macro system or syntactic closures would possibly be better in that regard (especially if the user wants to explore those further), but Guile and Racket don’t support those I think.

                            1. 2

                              as someone who’s written macros in emacs lisp but hadn’t grokked scheme’s yet, this approach was extremely helpful to me. thanks!

                          1. 8

                            As usual with accessibility, going really hard in one direction is often not great site everyone. Here’s another article about why you really want to keep grey / lower contrast for accessibility reasons: https://blog.tiia.rocks/web-apps-why-offering-a-low-contrast-mode-makes-you-more-accessible-not-less

                            1. 18

                              If only there were some kind of style sheet, that could cascade in priority depending on where it was defined.

                              There’s no reason for this to be handled by the developers of every single website. This should be handled by the browser. If a user wants high contrast mode, there’s absolutely no reason there can’t be a setting on the client that forces text to a high contrast setting. It’s just numbers in a configuration file. Those numbers can be changed, automatically.

                              1. 12

                                I wish there was some way of saying to browsers, “use modern defaults; I don’t care what they are, or if they change over time; I won’t touch the style; just make the page look good based on the semantic markup.”

                                1. 1

                                  could this be accomplished with a stylus style sheet or something similar? maybe an addon that just removes all style tags and links to style tags?

                                  1. 4

                                    There are generic Firefox addons like this but they are generally quite CPU hungry.

                                    I end up just doing:

                                    • disabling all custom or web fonts
                                    • setting minimum font size to 12
                                    • setting default zoom level to 120 %

                                    For web apps that I need to use for work (Outlook web app, Jira, &c.) that have bad contrast, I do try to add custom style sheets to fix some text that’s still unreadable to me after all this.

                                    For articles, I can generally use “reader mode” that does switch to black-on-white, since, you know, that’s the best for reading, but that’s generally not helpful on web apps.

                                    In short, I’d be very happy if it was practical to make a stylesheet or plugin to do this, but currently I would say it’s not, or someone would have made one already.

                                    It seems unlikely ranting at web developers will help with this, so I think it would need to be fixed in browsers, However, I see that as an unlikely development, given that e.g. disabling custom fonts is becoming harder and harder, with for example Firefox for Android removing the ability to disable custom fonts.

                                    1. 3

                                      https://github.com/jayesh-bhoot/enforce-browser-fonts is an add-on that disables custom fonts, and it works quite nicely on Firefox for Android if you’re using Nightly or F-Droid that supports custom add-ons.

                                2. 2

                                  This is the reality. Firefox has allowed, and continues to allow, forced colors. Go to about:preferences -> Colors, and activate “Manage Colors”. In the menu that pops up, set your preferred colors and set the “Override the colors specified by the page with your selections above” pref to “Always”. This feature is a lifesaver for me, as I deal with overstimulation and can’t stand having a new palette thrown at me every time I open a new page. It’s also replaced my dark mode addon; anything that gets rid of privileged addons is a win in my book.

                                  On Windows, you can enable this system-wide with High Contrast mode. Contrary to the name, WHCM isn’t necessarily for high-contrast themes; you can set any palette you want. Every decent program will then receive a forced palette.

                                  1. 1

                                    I would like to use this, but it’s regrettably not practical. As an example it prevents me from seeing the upvote arrow on your comment, and whether I’ve voted already.

                                    1. 2

                                      This is something that browsers (all 3? 4? of them) can improve, though, rather than asking a billion web content creators to behave nicely towards any of hundreds of access concerns.

                                      1. 2

                                        Yeaaah…I used to be a fan of the lobste.rs interface before I started learning about accessibility. This is far from the only a11y issue on this site.

                                        I try to avoid complaining things before filing issues properly and leaving constructive feedback, so here are two I just filed:

                                  2. 13

                                    Why not just lower the screen brightness?

                                    1. 4

                                      You could, but then you get extra-lower-brightness for other apps/pages which don’t buy into the white/black idea. I don’t think we’ll get the perfect solution either way.

                                      And even if you adjust brightness, it can be a bad experience. I don’t get any actual health/sight issues from brightness or high contrast, but even with everything turned down to minimum on my phone, that medium post is tiring to read because of the white background.

                                      1. 5

                                        So it actually is low contrast that causes the problem.

                                        1. 6

                                          Only if you can adjust all screens to both go down in brightness low enough and without destroying the colour accuracy.

                                          We’ve got a system with at least 3 interdependent elements in it (defaults, preferences, design ideas, hardware capabilities, accessibility limits, …) - you can’t just point so one of them and say that causes all the problems. (Well, you can, but that’s oversimplification and doesn’t solve any issue)

                                    2. 10

                                      …and I immediately had to flip that article into reader mode in order to read it. Which is not to say it’s wrong, but the contrast between the author’s experience and mine is illustrative, and one-size-fits all probably just isn’t going to work here. As she points out there are media queries, but:

                                      @fly suggested in another comment here that this really should just be the browser’s responsibility, not the page’s, and I agree. For articles I tend to flip into reader mode at the first sign of trouble, but for apps I don’t really have that option. But for desktop apps developers mostly don’t have different styles of buttons; they just use the OS’s widget toolkit and accept what the OS vendor has decided. (of course, that’s changing as everything seems to be electron these days anyway…)

                                      1. 10

                                        This is one reason why the APCA (next generation contrast algorithm) recommends against excessively high contrast, especially for dark themes.

                                        It’s not just halation and migrations: overstimulation is another issue that I personally experience quite a bit. Foreground colors that have excellent contrast against dark backgrounds, like yellow, can cause overstimulate if they’re not appropriately de-saturated.

                                        Special palettes that respond to media queries requesting dark/light schemes and more/less contrast are good, but I believe that defaults should also be as accommodating as we can make them; not everyone is okay with the fingerprinting potential of all these media queries. An APCA contrast of ~90 LcP seems to do the trick. You can go lower if you bump up the font size to compensate.

                                        1. 2

                                          Typo: s/migrations/migraines/

                                          s/cause overstimulate/overstimulate/

                                        2. 9

                                          The goal of accessibility design is not making things “great [for] everyone”. It is ALLOWING people to make things great FOR THEM. Some users will have needs that require high contrast. Some users will have needs that require high contrast. Others won’t particularly care at all, and just want things to be pretty. Others don’t care about the contrast because they’re using a screen reader.

                                          You can’t make things accessible by choosing colors. We have to enable users to configure their interfaces with the colors that they, personally, need or want. This has to be done largely at the browser level, although of course stuff like clear, semantic HTML that doesn’t use clever tricks to do things purely visually is a big part of the ask. But developers shouldn’t be forced to worry about colors. We should be forced to worry about allowing browsers to configure those colors.

                                          1. 1

                                            Agreed. I think a better message here would be “use grey text responsibly”.

                                            I often set body text to 65–75% opacity and reserve 100% opacity for headings, etc. It helps build visual hierarchy while retaining a good amount of contrast. This produces both a nice appearance as well as readable content.

                                          1. 1

                                            could this work for lisp? or is lisp basically just space bound?

                                            1. 2

                                              Works fine for lisp, if you have a lisp style that believes in indentation. Some lisp styles are all alignment all the time in which case using spaces technically complies with this, but not in an awesome way.

                                              1. 1

                                                well now I feel like I need to research lisp indentation schemes!

                                            1. 3

                                              What a great post!

                                              As a minor aside, it’s true that the curly quotes are archaic, but so are straight quotes.

                                              1. 3

                                                I’m not sure how to reply to your post, but the annoyances with smart quote pasting led me to write an org-unsmartify function, lol

                                              1. 5

                                                I have some extremely pedantic thoughts about this question: “Which programming, scripting, and markup languages have you done extensive development work in over the past year, and which do you want to work in over the next year?” (and the similar questions about technologies/frameworks/etc)

                                                I switched jobs earlier this year so I went from using Typescript (which I loved) to Clojure (which I also love). I marked that I used Typescript in the last year. Do I want to use Clojure in the next year? Sure, yeah, it’s a primary reason I chose this job, but it’s also now… fixed for me. Whether I want to use it or not, I’m gonna be entrenched in Clojure for the foreseeable future. There are languages I decidedly do not want to work in, but beyond that, I tend to use the language and tools of whichever ecosystem I’m inside of. If I had taken the offered Elixir job or the offered Ruby on Rails job, I would be deep inside those ecosystems and probably spend the next year “wanting” to use them and learn them deeply too.

                                                So anyways, I marked Clojure and Rust and Typescript because I can see myself doing hobby projects/open-source work in them and not in other languages I’m interested in, lol. Love to overthink simple questions.

                                                1. 3

                                                  I also wish there was like a, “what did you kinda look at in the past year”/“what do you think you might check out for, idk, a couple weeks before getting busy with work next year?” because I could answer those much more honestly

                                                1. 41

                                                  How favorable are you about blockchain, crypto, and decentralization?

                                                  Why is the general concept of decentralisation lumped in with blockchains and “crypto”? Because I have very different feelings on each. 👀

                                                  1. 12

                                                    I kinda snarkily feel like the cryptocurrency buffs aren’t satisfied with stealing the word ‘crypto,’ but want to steal ‘decentralised’ too.

                                                    1. 6

                                                      Cryptography: Hell yeah! Cryptocurrency: No thanks.

                                                      1. 5

                                                        How favorable are you about blockchain

                                                        It’s a great data structure to use for logging or any other kind of append-only record structure. Some of the things that people build with this (e.g. cryptocurrencies) are a total disaster.

                                                        crypto

                                                        Everything should be encrypted in transit, at rest and (if run on someone else’s computer) in use.

                                                        decentralization

                                                        A great way of building reliable systems.

                                                        Because I have very different feelings on each.

                                                        Completely agreed.

                                                        1. 4

                                                          Ugh I skimmed right past that word. I, too, have very different opinions on these two. I’m disappointed that my distaste for blockchain and crypto will reflect poorly on decentralization which I am very supportive of.

                                                          1. 1

                                                            I’m glad I’m not alone here. they are not the same thing!

                                                          1. 3

                                                            i don’t see anything wrong really with @condition or @otherwise. enough of css is weirdly verbose as it is that I don’t think a little more is a big deal. besides, don’t we have completing text editors now?

                                                            1. 3

                                                              Thank you! But also

                                                              (setq backup-by-copying t)
                                                              (setq sentence-end-double-space nil)
                                                              (global-set-key [(control h)] 'delete-backward-char)
                                                              (keyboard-translate ?\C-h ?\C-?)
                                                              
                                                              1. 2

                                                                I feel like I’m the only person who has sentence-end-double-space set to t — I like it because it allows me to easily navigate sentences, and it doesn’t matter because when I export the document to another format the spaces get properly minimized.

                                                                1. 7

                                                                  Hi acdw!♥

                                                                  I felt like setting it to nil (which I didn’t realize until after a few years) unlocked super powers of Emacs I had only dreamt of before, M-a, M-k, transposing sentences etc, even in text I didn’t originally author, and it does a really good job.

                                                                  Also, with this set to nil, it works with one or two spaces; with it set to t it can’t find sentence boundaries if there’s only one space. I can’t believe that’s the default.

                                                                  1. 2

                                                                    Hi there :) Nice to see you on lobsters!

                                                                    Oh my god, you’ve actually convinced me to turn sentence-end-double-space to nil … I honestly did not realize that it’s telling Emacs to recognize single-spaced sentences, which honestly makes so much sense.

                                                                    I think the only place I want to set it is when filling paragraphs, so it fills the “proper” (to my eyes anyway) two-spaced sentences, which of course I can just add some advice to to fix. Thanks for the mind-changer, snan!

                                                                    1. 1

                                                                      PS. I’ve made a small dumb package to correctly fill even with sentence-end-double-space set to nil:

                                                                      https://github.com/duckwork/fill-sentences-correctly.el

                                                                      I hope it’s okay I quoted you.

                                                                      1. 2

                                                                        🧕 I wouldn’t exactly call it “correctly” since I favor the single spaced style. I don’t mind the quotes ofc.

                                                                        1. 1

                                                                          hahahahah I’ll make sure to mention you’re not in favor :P

                                                                        2. 2

                                                                          So if you can make it clear that I’m not an advocate for double-spacing, that’d be great ♥

                                                                      2. 4

                                                                        Can not sentences be recognized without double space? If some text starts with a capital letter and ends with punctuation followed by a space or the end of the line, then that should do the job, right?

                                                                        1. 8

                                                                          Dr. Spock might want to have a word with you. Mr. Smith might also chime in.

                                                                          1. 1

                                                                            In all seriousness, I’ve never heard about them. Is this something local to the US?

                                                                            1. 2

                                                                              I was giving an example of a sentence that would be mis-parsed by assuming all sentances end with a period followed by a single space.

                                                                              As for the names, Dr. Spock was a rather famous medical doctor in the U.S. and wrote a popular book about having babies (I think in the 60s?). There was also a character on a science fiction TV show (Star Trek) where there was a character named “Spock.” As for Mr. Smith, the last name “Smith” is one of the most popular (if not the most popular) last name in the English speaking world.

                                                                              1. 2

                                                                                Yes, it’s an US thing. They even use period as a decimal marker (!).

                                                                                1. 1

                                                                                  That’s crazy talk right there!

                                                                            2. 4

                                                                              Yeah. Setting it to nil, it can recognize sentences either way. Leaving it in t means it only recognizes double spaces.

                                                                            3. 2

                                                                              I’d be a lot more likely to enable this if everyone else had it enabled, but when I’m working on documentation it’s more important for my style to match the project itself than for me to have it work the way I like personally.

                                                                              1. 1

                                                                                I think I was able to get away with it because I generally only write for myself, but you’re right that most people are single-spacers. grumble :P

                                                                              2. 2

                                                                                You’re not. Even vi does it. ;)

                                                                              3. 2

                                                                                Disabling the help shortcuts seems like a real bad idea to me?

                                                                                1. 1

                                                                                  F1 ftw!

                                                                                  Having a homerow key combo that’s delete-backwards-char in almost any other app split the window and pop up help stuff is pretty cumbersome. I do F1 m, F1 k, F1 f all the time. Pretty great.

                                                                                  1. 2

                                                                                    Hm; I guess if I didn’t have a keyboard that put backspace on the thumbs that’d be more appealing. I use C-M-h a lot more than backspace in Emacs tho.

                                                                                    1. 3

                                                                                      You made my keyboard ♥

                                                                                      But

                                                                                      1. I hate using my thumbs (other than space) so I didn’t put any important keys there.
                                                                                      2. It’s also not just about adding access to backspace but about decreasing the “minefield factor” of having a help popup.
                                                                                      3. On the Atreus specifically, I have a layer switcher in the outer lower corners, which + h sends literal backspace so I don’t need change in my .emacs anymore. + works in other apps too.
                                                                                      1. 1

                                                                                        I have a layer switcher in the outer lower corners, which + h sends literal backspace so I don’t need change in my .emacs anymore. + works in other apps too.

                                                                                        I have a similar thing but in my WM instead; if I press C-i or C-m it will send a tab or enter character in any program, even outside Emacs. Indispensible!

                                                                                        1. 1

                                                                                          I have i, m, h, j, f, n, p, b, v etc but because it’s on a layer switch I can send actual C-i when I need to (for example invert selection in some drawing apps). ♥

                                                                              1. 31

                                                                                Python is as messy, if not messier, than Node

                                                                                I’d say Node is, like, not messy at all. Due to Node being younger, its ecosystem developed and matured in an age where per-project isolated local dependencies were becoming the norm.

                                                                                Python is arguably uniquely messy due to the invention of virtualenv. I’m not aware of any other language community where the default way to make isolated projects for ages was a thing that made a whole local prefix with symlinks to the interpreter and whatnot and a script you’d have to run to bring it into $PATH. Python’s closest cousin (in terms of 2000s web dev evolution anyway), Ruby, did it all correctly relatively early on — the Bundler experience is just like npm/cargo/stack/etc.

                                                                                But forget virtualenv, the real messiness of Python packaging is the freaking layering. Distutils, setuptools, pip, virtualenv (or the new project-based managers) — it’s all there and which part is handled by which layer gets confusing quickly.

                                                                                1. 10

                                                                                  The thing that worries me is that I don’t think the core Python devs get it: the packaging situation is so bad that it very well may kill the language. It should be all hands on deck, this is the most important thing for us to fix. But I don’t see that happening at all, and instead there’s fiddling with esoterica like walrus and match…

                                                                                  1. 13

                                                                                    So one interesting twist here is that many core devs work for big companies that use their own build and deployment systems for Python. (e.g. I worked with probably a dozen core Python devs at Google many years ago.) So they may not feel the issue on a daily basis. I certainly feel it more now that I do more open source, although I was aware of it back then whenever I had to install NumPy, etc.

                                                                                    From what I hear Jane St. is in a similar situation with OCaml and OPAM. They sponsor the open source package manager, but they don’t actually use it themselves! Because they use a monorepo like Google. monorepo means “no version constraint solving”, which simplifies the problem drastically (it’s an NP complete problem).


                                                                                    I also think the problem is more complicated than “core devs don’t get it”. It’s more like the solutions being very constrained by what happened in the past. For a long time the import system / algorithm itself was a very big wart and there was a huge effort to clean it up.

                                                                                    I will say that I think most of these problems were known before Python 3, and I wish there was a hard break then, but that was already 12-15 years ago at this point. And then people would have probably liked the 2->3 transition even less, etc.

                                                                                    1. 5

                                                                                      So one interesting twist here is that many core devs work for big companies that use their own build and deployment systems for Python. (e.g. I worked with probably a dozen core Python devs at Google many years ago.) So they may not feel the issue on a daily basis. I certainly feel it more now that I do more open source, although I was aware of it back then whenever I had to install NumPy, etc.

                                                                                      This is definitely the case with my cloudy overlords, although I will say that this may be changing. I think some people are recognizing that there is wisdom in not rolling their own and allowing devs to leverage familiar interfaces for packaging.

                                                                                    2. 4

                                                                                      For what it’s worth, this is the #1 reason I keep not trying Python. It’s just a huge headache and I can’t care enough about it.

                                                                                      1. 6

                                                                                        I’ve been using Python professionally since 2010, I used to absolutely love it, and I’ve finally just reached the point where I no longer consider it an acceptable choice for a greenfield project of any scale, no exceptions. Someone will always come around to suggest that it’s open source, and you should fix what you don’t like, but it’s been my experience that the community culture has settled into a state that no project or ecosystem ever recovers from, which is when issues start being responded to with justifications along the lines of “this can’t change because of fundamental technical deficiency X, which because of its magnitude we’ve decided to stop treating as a technical deficiency in favor of treating it as a fundamental invariant of the universe, in spite of ample evidence that there are better ways to do it.” Either that technical deficiency is truly unsurmountable, in which case the tool is de jure broken and I have no good reason to use it, or that technical deficiency is surmountable but there will never be any will to fix it, in which case the tool is de facto broken and I have no good reason to use it. I feel deep sadness about this, but at this point there is too little that is exceptional about Python to justify putting effort into fixing what’s broken. No tool lasts forever, maybe we should just accept that it’s time to sunset this one.

                                                                                        1. 1

                                                                                          Thats a great point, and a good answer to “Why don’t you just fix it yourself” that is thrown anytime you complain about any open source project, especially established ones like Python.

                                                                                          Python especially has this cultish mentality “All if perfect how dare you suggest otherwise”

                                                                                      2. 3

                                                                                        The thing that worries me is that I don’t think the core Python devs get it: the packaging situation is so bad that it very well may kill the language. It should be all hands on deck, this is the most important thing for us to fix. But I don’t see that happening at all, and instead there’s fiddling with esoterica like walrus and match…

                                                                                        Python’s governance is pretty transparent. Do you have concrete suggestions for improvement? If you do, consider coming up with even a proof of concept implementation and creating a PEP.

                                                                                        Be the change you want to see in the world :)

                                                                                      3. 8

                                                                                        the real messiness of Python packaging is the freaking layering. Distutils, setuptools, pip, virtualenv (or the new project-based managers) — it’s all there

                                                                                        Yup +100 to this … This is why I sometimes download tarballs with shell scripts and use “python setup.py build” instead. That’s only one layer :)

                                                                                        That approach doesn’t work all the time, e.g. if you have a big NumPy stack, or a big web framework with transitive dependencies.

                                                                                        On the other hand, if it works, then you know exactly what your dependencies are, and you can archive the tarballs somewhere for reproducible builds, etc.

                                                                                        1. 3

                                                                                          the Bundler experience is just like npm/cargo/stack/etc

                                                                                          Thatk’s mostly splitting hairs, but for me there’s a big difference with cargo when it comes to experience: cargo run / cargo build just work, while bundle exec, npm run require running install command manually.

                                                                                          1. 1

                                                                                            There’s a lot that node gets right simply by virtue of being a younger language and community than Python or Ruby by a long shot, so it could benefit from observing the effect of critical decisions over time.

                                                                                            Unfortunately that lack of maturity can express itself in various ways, some merely cosmetic, some less so.

                                                                                            Overall even as someone like myself who doesn’t love the language, having now learned it I can appreciate that there’s a lot of interesting work going into that community that bears watching and learning from, whatever your first choice in programming languages may be.

                                                                                          1. 1

                                                                                            Can someone who has migrated from vim to nvim recommend a guide for doing so, or if it’s really just as simple as changing to init.vim? I’m also wondering if folks keep compatibility layers in dotfiles repos, or anything like that.

                                                                                            1. 5

                                                                                              We added a skeleton init.vim so you can just use your normal vimrc when we started using nvim: https://github.com/braintreeps/vim_dotfiles/blob/416912bb64a034241a40906693c0298dc5d8ea49/config/nvim/init.vim

                                                                                              Then you can just start vim or nvim depending on if you want to shave yaks or to be classically productive.

                                                                                              1. 2

                                                                                                If I recall correctly (I used nvim a while ago, I think the latest was 0.2), you can start by just changing your .vimrc to init.vim, and then go from there.

                                                                                              1. 4

                                                                                                Isn’t there an Emacs clutch somewhere too? Honestly that makes more sense to me, given the RSI complaints.

                                                                                                1. 3

                                                                                                  Using pedals for Emacs is not really that uncommon, e.g..

                                                                                                  1. 2

                                                                                                    That’s what I thought! I thought I’d read or heard somehting before about an emacs pedal.

                                                                                                    (BTW, if you tried to add a link, it didn’t come thru for me)

                                                                                                1. 5

                                                                                                  I’m going to work on my blog, I think – I’m redesigning it right now!

                                                                                                  I also might make some bread

                                                                                                  1. 1

                                                                                                    Neither https://acdw.net/ nor https://www.acdw.net/ seem to resolve for me, have you taken your blog down while you redesign it? I got the link off your lobste.rs profile

                                                                                                    1. 1

                                                                                                      Should be up now, sorry!

                                                                                                  1. 19

                                                                                                    [the man directory] contains the generated man pages. Because it’s adjacent to bin (which is on my path) the man program automatically finds the man pages as expected.

                                                                                                    Whoa! I just tried this: my $PATH contains ~/dotfiles/bin, so I creating a simple text file ~/dotfiles/man/man1/mytest.1, and typed man mytest, and it worked! Finally I can easily create & install man pages, rather than implementing a response to a -h/--help flag.

                                                                                                    1. 1

                                                                                                      I just discovered this poking around in the manual page for manpath, or whatever the man config file is. It’s pretty neat! You can also set MANPATH.

                                                                                                      1. 1

                                                                                                        So, I actually also tried, yesterday, to find the docs for the ‘$PATH -> man path’ auto-mapping in the manpage; but unlike you, I couldn’t find it. If you have an occasion, could you perhaps post the man page / excerpt you found, so I can know what I overlooked? No need to reply if you don’t have an occasion.

                                                                                                        I ran man 1 man 1 manpath 5 manpath and read through those manpages; and I read through the comments in /etc/manpath.config; but the closest I could find was set of directives like MANPATH_MAP /bin /usr/share/man, which only map specifies specific man dirs to specific PATH dirs. I couldn’t find anything documenting the rewriting rule ‘for any directory in $PATH, look in a sibling directory called man.’ Pointers welcome!

                                                                                                        1. 3

                                                                                                          Linux man pages do not describe this, but freebsd manpages do.

                                                                                                          1. 2

                                                                                                            On Linux, old man (1.6g) documents this as well, only modern man-db does not.

                                                                                                          2. 1

                                                                                                            I have no idea what I was thinking about with the PATH -> MANPATH conversion, lol

                                                                                                            However, I do know that you can set $MANPATH with a leading : to have it append directories to the auto-generated MANPATH, or with a trailing : to have it prepend them. So that’s what I do.

                                                                                                      1. 3

                                                                                                        Oh neat! See also, gemini://flounder.online, though this is a little different from a first look.

                                                                                                        1. 2

                                                                                                          Thanks!