1. 1

    I used mostly-not-configured fish for many years. Fish is nice; I really liked it. A minor con is that if a tool requires a line or two of .rc, you might have to adapt it from a bash example.

    A few years back I switched to mostly-not-configured zsh in order to stay somewhat more immersed in POSIX. Looking back, I do value having spent more time with standard syntax for pipelines and subshells and so on. But if you feel like you’ve got all that internalized, go fish.

    1. 1

      The Swift standard library itself does not provide any specific transport. Instead, it focuses on defining the language model and extension points that transport implementations can use to implement particular transports for distributed actors.

      Oh no. :(

      1. 2

        But then,

        Today, we are announcing the open source release of the Swift Distributed Actors library - a fully featured framework for building distributed systems Swift. It is an implementation of the above mentioned ActorTransport protocol, and can serve as a reference implementation for other transport authors.

        So there just isn’t one end-all-be-all transport, and yet, all of them get to hook into language-level support.

      1. 1

        Swift keeps focusing on long term foundational things to be built on, and delivering certain parts of them not just as libraries, but at the language level. If this keeps up it will be a very distinctive and useful backend language.

        In the past I’ve thought the language group needs to be less Mac-centric in order to attract developers to Swift on the server. Now I think they’ve just been warming up, and that it would have been a small-time move to focus on broad usage at the beginning of this process.

        1. 5

          I’ve been working with the understanding that NPM package dependency hierarchies are deep because the browser API environment did not provide much in the way of a standard library. Therefore tiny packages are useful enough to distribute and get versioned instead of ignored, and large packages will bring many others with them. The platform is low, so the stack goes high. Then packages get versioned at high frequency, often cascading through dependency trees.

          But that’s just how it went, because despite its limitations, the JavaScript environment is the web, and the web is where it’s at. Location, location, location.

          A way out of the mess is for the language to level up so we don’t feel the need for Babel, and for the most wanted third party things to be added as standards, like web components. That has been happening, but the mess of packages is still there and growing. We need to wean ourselves off of huge dependencies that bring the kitchen sink with them and get on standards for our dependency graphs to become shallow and livable.

          1. 5

            This is a long argument, but I think programmers should avoid “pyramid-shaped” and hard-coded dependency graphs.

            Package managers like npm and Cargo encourage this style of programming (“pile some more stuff on top”) with their notion of transitive dependencies. I also had a lot of experience with this at Google – people would always complain why building a low level web server linked in code maintained by the maps team, or things like that. Or why changing an application header unexpectedly caused you to need to rebuild the world.

            It was always a transitive dependency problem. (Incidentally, that’s the genesis of the “include what you use” tool that was on the front page yesterday.)


            What results in smaller and more stable software is if you program to interfaces rather than implementations, in the style of dependency inversion. Unfortunately it seems like there is no package manager that works like that.

            sqlite and Lua are 2 examples of pure libraries that “invert” all their dependencies. They make them all optional and have well defined and documented interfaces.

            They don’t depend a huge pyramid of libraries – you can build them with just a C compiler.

          1. 2

            I’m having trouble picking up what you’re laying down, because the high-level reason feedback loops are bullshit wasn’t stated as a sentence I could locate. Maybe the argument is about the inadequacy of high-level statements, so it had better not have one? There’s a joke here about causal relationships in blogging, but I can’t put my finger on that either.

            1. 1

              With apologies for my terseness, you are assuming that there are high-level and low-level loops, and that somehow as we move lower we remove all of the ambiguities to get to the “real” items which are not bullshit.

              My point was that any sort of terminology put into a diagram is not going to work [again, with the exception of math and physical systems], so it’s not just a matter of being more specific. The use of a one-dimensional symbolic system, words, based on internalized abstractions is never ever going to map to a multivariate probably web universe. It’s like trying to draw a tesseract on a piece of paper. We can sketch some ideas out, maybe enough to be useful for a particular job, but it’s not the same thing. Never going to be.

              1. 3

                I appreciate the reply! This reminds me of the way in some Eastern traditions the most fundamental truth is impossible to speak, because all concepts you could invoke to speak them would lead the wrong direction, toward concepts. Or the way you don’t make representations of the prophet because (as I naively understand it) no representation can express the real thing. Or maybe it’s Gödel, but I could never manage to finish that book.

                1. 2

                  Representations of the prophet is in opposition to idolatry, making sure people worship the applied abstraction instead of the representation of the abstraction.

                  1. 1

                    Much obliged.

                  2. 1

                    So here’s the thing: intelligent, sentient creatures create abstractions internally pre-language. Once we communicate, we assign labels, signals, signs and so forth in order to get the message across. Language is designed only to transmit as little information as possible to allow common toolmaking over the generations.

                    But as soon as we start communicating, we want to create abstractions. However my idea of “pointy thing to kill sheep with” is not exactly your idea, even though maybe it’s good enough for now. This makes human language an infinitely recursive performance art where people take the life experiences they have coming in and continuously modify their own language and various group languages to meet whatever needs they have.

                    But no matter how hard we try, we’ll never get those universal abstraction like we carry around pre-language inside of us transmitted to the inside of another person or persons. We can always only be good enough. (And up until we started creating extremely complex systems of logic on a regular basis, this really wasn’t that apparent) We continue to try, and through that trying we’ve created math, which does work like that. Yay! The job of the programmer is to live in both of those worlds, math and language, and create bridges between the two. Programming is applied philosophy.

                    No mysticism required, just an understanding that we think of abstractions upside-down. There’s good reasons for it, though. It’s the way we’re wired.

                    1. 2

                      Ok, this has made it relatively clear to me, thanks for simplifying. We can’t model reality, we can only model an approximation of it. Now, where do feedback loops come into the story? What do they do, what do I think they do for me? And why are they bullshit?

                      And I saw in another comment, you’ll want to propose the solution to the problem. Looking forward to reading and not getting that one as well :)

              1. 19

                You’ve rediscovered Petri nets (WP, nLab).

                It’s a cycle, not a straight line. … In fact, the more we looked at it, the more we realized that there never was really any such thing as cause and effect, it was simply a useful fiction. … We are forced to use cause and effect because we can’t process things otherwise.

                Cause and effect come from the causal structure of spacetime. It is true that our personal perceptions of significant causes are fictional, but the physical transfer of information between regions of spacetime does induce a causet, a special case of DAGs.

                This is crucial for demystifying the topic. Actions in space can form feedback loops, but actions in time are acyclic. There is a deep connection arising from the idea that each feedback loop can be decomposed into discrete actions; it does not mean that the concept is bullshit, but that a feedback loop requires both space and time in order to function. For a vivid graphical example, look at the animations for circular polarization; we see moving waves in time and static circles in space.

                As far as we know, every atom in the universe is gravitationally affected by every other atom.

                Once we consider that time and space behave differently, then the possibility of gravitational waves arises, and we have experimentally determined the speed of gravity. It is not enough to notice that everything is connected; everything is moving in time, creating waves and signals.

                1. 2

                  No, I didn’t want to include them, but you are correct that we’re talking about Petri nets, or rather a form of them.

                  Great dive-down on the science side of things. I may steal this and expound on it. I could take physical systems to this lower level and write the same essay. Not sure if this would make it easier or more difficult to consume.

                  I am interested in the way you misunderstood me. Thank you.

                  1. 11

                    I read through the essay and I don’t think I understand what you’re trying to say either. Is your argument that mathematical models are always simplifications? Or that programming languages and flow charts are a poor way of describing the behavior of system dynamics?

                    1. 1

                      Formal, consistent, computable, complete symbolic systems (we’ll just call that “math”) are by nature context-free. In other words, 1+1=2 is a useful statement in many cases no matter what the actual numbers and symbols represent. We are quite lucky in that vast swaths of mathematics map directly over to observed reality. However, it’s humans and our language ability that does that mapping, not the math. The math stays the same. We’re the one attaching labels and doing the mapping. That turns out to be much more important than many people realize.

                      Everything we’ve learned so far says that life is multivariate and complex, working through probability webs. We’re stuck, however with describing things in simple ways: language, text, pictures, graphs, etc. Such is the nature of human communications. [yes, we are able to string together long chains of this type of communication into more complex things. The purpose here is to discuss the process of commonly reasoning about and discussing complex things, not whether they are ultimately knowable or not] This means that what we consistently do, as in the SAFe example, is put together various words we have into some sort of pseudo-mathematical diagram. Then we view such sets of symbols as reliable as the 1+1=2 set we mentioned earlier.

                      This leads us to all sorts of problems. I can look at a flowchart, for instance, and reason about cause and effect. Looking at abstractions and guessing the details, after all, is one of the things that makes us intelligent. But the exact thing I map the flowchart to determines whether or not it maps well to reality. One drop of water plus another drop of water equals just a bigger drop of water. My first statement wasn’t wrong. It depends completely on how people map the words to the situation. We’re off-the-rails already with simple math. It gets worse from there.

                      My argument is neither. Mathematical models are not always simplifications, they’re actually existing outside of our personal conception of reality. I don’t think the labels “true”, “false”, and so on have any application here. Yes, programming languages and flow charts are a poor way to describe system dynamics, but math [as defined previously] is all we have and all we’re ever going to get.

                      This is not a nihilistic position. It’s just a restatement of the problem so that I can continue forward with a solution. If folks don’t agree on the problem, they’ll never agree on various proposed solutions. Math is very useful to explore reality. Yay science. Now I need to explain how that’s done.

                      1. 3

                        Everything we’ve learned so far says that life is multivariate and complex, working through probability webs.

                        Probability webs are just another mathematical formulation of the system. If you really believe that formal mathematical methods are inadequate to describe the world then there isn’t any particularly good reason to think that describing things as “probability webs” is any better than any other descriptions.

                        Perhaps rather than deliver your critique in such a way as to suggest you think there is a problem with mathematization or modeling, you could just say that you think DAGs or other structures are inadequate to most common engineering tasks. That indeed seems to be what you are getting at later in the essay, but the introductory philosophical material really confuses and obscures the point.

                        1. 2

                          I don’t think he’s critiquing mathematical structures so much as highlighting the fact that any structure that truly fully models a problem will be too large for us to comprehend.

                          1. 2

                            Yeah, but that isn’t really true except in a trivial kind of way. There are many, many, many problems so amenable to mathematical and/or computational modeling that humans will almost certainly never run out of them.

                            1. 2

                              You are correctly identifying that for most cases we can definitely model a “good enough” system to make progress. But it’s also certainly true that you are ignoring, to good effect, a very large part of the system when you do that. It’s just that those parts are not necessary to understand to make progress on the problem usually.

                              1. 1

                                You may be interested in this interview with a cognitive neurologist: https://www.youtube.com/embed/4HFFr0-ybg0

                                Isomorphism and correlation work great for all kinds of things. We should never get them confused with what’s actually happening.

                          2. 3

                            In my book ‘Into the Sciences’ (https://madhadron.com/into_the_sciences.html) I called out the idea of primitive notions, which are the elements of a theory we use mathematics or other formal language to relate, and that we use trials to measure values of. We have some notion of an idealized trial that links the primitive notions to the world, and reasonable practice to do our best to approximate idealized trials.

                            In terms of communicating this stuff, the key notion I have found is from Wittgenstein’s ‘Philosophical Investigations’: our communication is made up of language games and we have a capacity for rule following to try to cooperate in playing those games. Communicating an understanding of systems is about leading someone reproducibly into the same language games that you are using. ‘Philosophical Investigations’ is one of the best books on software design I’ve ever read, honestly.

                            1. 1

                              Most def Wittgenstein is the go-to guy here. Having said that, I don’t think his work stands alone without a similar look at C.S. Peirce. Peirce’s tripartite semiotics really closes the loop between interior and exterior qualia. It is our desire and need to assign symbols that both allows mathematics and limits our ability to use it as well as we might. It is the language games we play that make it all hang together.

                              Thanks for the book link.

                      2. 2

                        … but actions in time are acyclic

                        Until you introduce economics / strategy / betting.

                        1. 2

                          Is that the case? When I make a prediction, I’m doing so with only past knowledge. When I think many moves ahead, that’s still an event that happens at the present time.

                          1. 1

                            You speak in the first person with a concept of “present time” but time is relative with many actors and can be cyclic when you have an economy because you are “pricing in” all available information and equilibriums are formed by routine-following zealots on each side. Really you could say the theory of yin and yang is a “cyclic time” concept… but I like things like “the one electron theory” so I guess it depends how you want to model things.

                        2. 1

                          Thanks for this. I’ve been using DAGs as a model for causal relationships for a while, but I was perturbed that cycles often appeared when I’d try to use them to communicate about process. Your comment helped me separate the idea of a process plan from how its instances play out over time.

                          1. 2

                            Yeah. Sometimes this is called interactivity. We could imagine two processes evolving in spacetime such that they meet for a while, then move apart in space for a while, and then meet again. Each time they meet, they have a window of spacetime where they can interact with each other, exchanging information and quanta. The cycles that you saw were topological indicators of where the interactive portions must occur.

                        1. 5

                          As an aside, I really love it. Sometime ago I wanted to bring in a greasemonkey script to load pushcx’s css and just never got it done. Super impressed and happy with the work that was done. Much appreciated.

                          1. 9

                            Thanks! (I did those PRs.) I like how dark mode turned out after revising it with everyone’s feedback, and I think following the OS theme via the media query is the best default behavior. Nonetheless, it was clear from the bikeshed thread that an override setting would make some people happier when using one of their favorite sites. I’m all for it.

                            1. 3

                              Thank you for your positivity and receptivity to feedback even in the face of criticism. :)

                              1. 2

                                The buck butthurt stops here.

                          1. 3

                            In the mid-to-late 2000s, you either knew, or were, that kid in grade school.

                            Grade school, really? In the late 90s this was true of high school.

                            1. 38

                              Lobste.rs group hug

                              In addition to style feedback, thanks to everyone who’s confirmed whether it functions properly on their platform + browser. I did my testing on macOS Safari 15, macOS Firefox, and iOS Safari 15.

                              Update

                              Besides feature requests, early feedback has identified a few topics that I want to recognize:

                              • Visited links aren’t colored differently anymore. That’s a bug, sorry.
                              • The contrast between the dark background and the lightest text color (like this body text) is too high in the opinion of many.
                              • On a multi-window desktop, the pure black background color is unusually dark and doesn’t fit in. See this screenshot.
                              • Against black, the blue color of links needs improvement.

                              I have thoughts about actions to take, but I’ll wait and let more feedback come in during this day/night cycle.

                              1. 7

                                Another update: I’ve prepared a revision PR, attempting to address the points above. Thanks to everyone for your feedback.

                                1. 3

                                  Thanks for doing this, it’s a great start!

                                  For another data point, dark mode YouTube: https://imgur.com/a/UIZNDfY

                                1. 10

                                  Thanks! I hate it, can I disable it?

                                  1. 8

                                    If it’s on for you, it’s because your browser reports that you prefer a dark color scheme via the prefers-color-scheme media query. The site will still be in light mode when your browser’s environment doesn’t ask for dark mode. That probably means your global OS setting is the switch you’re looking for.

                                    This first effort didn’t build in a manual override, but that there is demand for it is not a surprise. It feels more and more likely that that will be added later.

                                    However, if you do prefer dark color schemes but you hate this one, some more details could help us revise it.

                                    1. 4

                                      Yeah, I use dark mode on the cellphone but don’t care for it much on websites. I upvote a manual switch for forcing it one way or another, but to be fair, I’m probably not gonna care that much one way or the other.

                                      1. 2

                                        Yeah, I was also looking for an option to turn it off. I like that the OS theme is dark, but I prefer webpages to be in light mode. 🤷

                                    1. 2

                                      I consider myself a power user, but I can’t figure out how to avail of this new dark mode. I understand that the implication is “it will detect it based on either your browser or your OS”. I do believe I am in dark mode at the OS (WM) level. Chromium 94 under KDE Plasma.

                                      1. 3

                                        Chrome on Linux has non-existent detection of OS level dark mode settings AFAICT, though with the multitude of WM/DE combinations and the myriad ways of interacting with them, it’s hard to fault Chrome for it.

                                        1. 3

                                          My understanding is that there’s an XDG dark-mode standard forthcoming, but I can’t find where I thought I read that. Firefox on Linux seems to guess based on your GTK theme, which… ¯\_(ツ)_/¯

                                          Another gotcha I just discovered is that if you have “resist fingerprinting” turned on in your Firefox privacy settings, prefers-color-scheme is ignored so that you can’t be sorted into a “dark mode” bucket.

                                        2. 1

                                          The site uses a CSS media query with prefers-color-scheme. If you can figure out how that can be set by your browser on your desktop environment, it ought to take effect on this site. I’m afraid I don’t have any insight about how Chrome consumes environmental settings from Plasma.

                                        1. 2

                                          There is a huge issue that with the dark theme, you can’t see links that were already clicked. They are all the same color when they shouldn’t be. In light theme and most other websites, already visited links are marked as such. Perhaps that’s a bug?

                                          Thank you for adding the theme though. Also would love a manual white setting even when in dark mode.

                                          1. 1

                                            That bug has been reported and logged, thank you!

                                          1. 104

                                            I’m not a big fan of pure black backgrounds, it feels a bit too « high contrast mode » instead of « dark mode ». I think a very dark gray would feel better to the eye. n=1 though, that’s just a personal feeling.

                                            Thanks for the theme, it’s still great!

                                            1. 29

                                              Agreed, background-color: #222 is better than #000.

                                              1. 15

                                                I’ll just put my +1 here. The pure black background with white text isn’t much better than the opposite to me (bright room, regular old monitor). I’ve been using a userstyle called “Neo Dark Lobsters” that overall ain’t perfect, but is background: #222, and I’ll probably continue to use it.

                                                On my OLED phone, pure black probably looks great, but that’s the last place I’d use lobste.rs, personally.

                                                1. 18

                                                  Well, while we’re bikeshedding: I do like true black (especially because I have machines with OLED displays, but it’s also a nice non-decision, the best kind of design decision), but the white foreground here is a bit too intense for my taste. I’m no designer, but I think it’s pretty standard to use significantly lower contrast foregrounds for light on dark to reduce the intensity. It’s a bit too eye-burney otherwise.

                                                  1. 7

                                                    You have put your finger on something I’ve seen a few times in this thread: The contrast between the black background and the lightest body text is too high. Some users’ wishes to lighten the background are about that, and others’ are about making the site look like other dark mode windows which do not use pure black, and therefore look at home on the same screen at the same time. (Both are valid.)

                                                    1. 10

                                                      For me pure white and pure black is accessibility nightmare: that high contrast triggers my dyslexia and text starts to jump around, which starts inducing migraine.

                                                      As I default to dark themes systemwide and I couldn’t find way to override detected theme, this site is basically unusable for me right now. Usually in these cases I just close the tab and never come back, for this site I decided type this comment before doing that. Maybe some style change happens, manual override is implemented or maybe I care enough to setup user stylesheet.. but otherwise my visits will stop

                                                      1. 1

                                                        No need to be so radical, you still have several options. Not sure what browser you’re using, but Stylus is available for Chrome/FF:

                                                        https://addons.mozilla.org/en-US/firefox/addon/styl-us/

                                                        It allows to override the stylesheet for any website with just a few clicks (and few CSS declarations ;))

                                                        1. 9

                                                          I don’t mind the comment. There’s a difference between being radical because of a preference and having an earnest need. Access shouldn’t require certain people to go out of their way on a per-website basis.

                                                          1. 6

                                                            It’s not radical, it’s an accessibility problem.

                                                    2. 8

                                                      That’s great, thank you.

                                                      I wonder if I am an outlier in using the site on my phone at night frequently. Alternatively, maybe we could keep the black background only for the mobile style, where it’s more common to have an OLED screen and no other light sources in your environment.

                                                      1. 2

                                                        I don’t use my phone much, especially not for reading long-form content, so I wouldn’t be surprised if I was the outlier. That sounds like a reasonable solution, but it’s not going to affect me (since I can keep using a userstyle), so I won’t push either way. I will +1 the lower-contrast comments that others have posted, if it remains #000 though - the blue links are intense.

                                                        1. 1

                                                          The blue link color brightness is a point that not many have made. I think the reason I didn’t expect it is that I usually use Night Shift on my devices, which makes blue light less harsh at night. Do you think we should aim to solve this problem regardless of whether users apply nighttime color adjustment? Another way to ask this question: What do you think about dark mode blue links in the daytime?

                                                          1. 2

                                                            Sorry if I’m misunderstanding, but to clarify, my above comment is in a bright room; I try to avoid looking at screens in dim light/darkness. The blue links just look kind of dark, and intensely blue. Just a wee reduction in saturation or something makes it easier to read.

                                                            Thanks for your work on this btw. I looked into contributing something a while back, but was put off after it looked like the previous attempt stalled out from disagreement. I’d take this over the bright white any day (and it turns out this really is nice on my phone, dark blue links withstanding). The css variables also make it relatively easy for anyone here to make their own tweaks with a userstyle.

                                                            I feel like I’ve taken up enough space complaining here, so I’ll leave a couple nitpicks then take my leave: the author name colour is a little dark (similar to links, it’s dark blue on black), and the byline could do with a brightness bump to make it more readable, especially when next to bright white comment text.

                                                            1. 1

                                                              I appreciate the clarification and other details :)

                                                        2. 1

                                                          My laptop is OLED and I’d still appreciate #000 there

                                                          1. 1

                                                            +1 to separate mobile style.

                                                        3. 4

                                                          I strongly agree.

                                                          I can’t put my finger on why, but I find very dark gray easier.

                                                          1. 1

                                                            #222 is way better! thank you

                                                          2. 14

                                                            I strongly disagree, and this black background looks and feels great to me! No one can ever seem to agree on the exact shade or hue of grey in their dark themes, so if you have the general UI setting enabled, you end up with a mishmash of neutral, cooler, hotter, and brighter greys that don’t look cohesive at all. But black is always black!

                                                            For lower contrast, I have my text color set to #ccc in the themes I have written.

                                                            1. 6

                                                              Another user pointed out that pure black is pretty rare in practice, which makes this site stand out in an environment with other dark mode apps:

                                                              Here’s a desktop screenshot with lobste.rs visible - notice that it’s the only black background on the screen.

                                                              Does that affect your opinion like it did mine? I do see value in pure black, but suppose we treated the too-high-contrast complaint as a separate issue: Darkening the text could make the browser window seem too dim among the other apps.

                                                              1. 3

                                                                I prefer the black even in that scenario. The contrast makes it easier to read imo.

                                                                1. 2

                                                                  Not all. If it gets swapped out for grey I will simply go back to my custom css, which I have used to black out most of the sites I visit, so no hard feelings.

                                                              2. 8

                                                                Feedback is most welcome! Would you please include the type of screen you’re using (OLED phone, TFT laptop…) and the lighting environment you’re in (dark room, daytime indoors with a window, etc.)? And do you feel differently in different contexts?

                                                                I’ve got some comments about how I selected the colors in the PR, if that helps anyone think through what they would prefer.

                                                                1. 4

                                                                  Sure! I’m on my iPhone 12 so OLED phone. I tried in with dimmed lights and in the dark, but in both cases I think I’d prefer a lighter background color.

                                                                2. 7

                                                                  I disagree. Black is black. These off-gray variants just looks dirty and wrong to me.

                                                                  I love this theme.

                                                                1. 5

                                                                  “Great research on colorschemes and contrast guidelines”, you say? #000 background and blue links?

                                                                  1. 5

                                                                    Above all, do no harm ;)

                                                                    1. 6

                                                                      The bg should be lighter, between #111 and #222 or something. And I would have chosen a warmer link color, orange or yellow - green even for that old terminal feeling. If they absolutely have to use blue, at least make it lighter.

                                                                      1. 6

                                                                        The research kevinc did included resources like the WCAG contrast guidelines. Do you have some you could point to on how these changes would improve readability?

                                                                        1. 7

                                                                          The WCAG 2.1 contrast guidelines is about minimum contrast. A bg color of #000 and a fg color of #FFF would get full score in that respect. My point is that the contrast is too much and that dark mode is about making it easy on the eyes.

                                                                          I understand that I’m being a bit picky here and I do see that you have put a lot of work into this, but compared to popular dark mode color themes or applications defaulting to dark mode, they usually have contrast ratio at 10-12, not 16.

                                                                          And using very saturated colors for text against a dark background will make the colors vibrate and make the text hard to read. This is kind of dark mode 101 and the reason for my initial snarky comment - which I apologize for :) An easy fix is to desaturate the color and make it lighter.

                                                                          That being said, I do appreciate you taking the time to implement this!

                                                                          1. 5

                                                                            Thanks for that. I took the tactic of keeping the same contrast ratios for different cases of black and white text as in light mode. WCAG AA had to do with the least visible text, for instance, the footer links and upvote counts were darkened in light mode to hit 4.5:1. Colored text did become paler for dark mode, just not by a lot.

                                                                            By now many people have cited body text contrast being too high, and I’m inclined to agree that it doesn’t need to be as high in dark mode as in light mode. Whether to lighten the background has more to do with fitting into the OS environment alongside other dark mode apps and sites. Up to now that was a non-goal; I put the phone dark mode experience first. But I should not be surprised that so many Lobste.rs users prefer dark mode on their desktops in the daytime. :)

                                                                          2. 3

                                                                            Most people’s physiology perceives lower contrast between black and blue than between black and other primary colors. I do appreciate the effort you and kevinc made and I get that design by committee is super frustrating generally not a recipe for success. But it does take tweaking to get a color palette to fit a perceptual model better than RGB.

                                                                            Sources:

                                                                          3. 3

                                                                            My goal for this PR was not to invent a new color palette but to choose dark-background appropriate variants of the existing palette. Entirely new colors were just out of scope this time.

                                                                            Lightening the background is not an unexpected request, but we will want reasons. For examples of what we’ve thought through, check the pre-merge discussion in the PR.

                                                                            1. 8

                                                                              “A dark theme uses dark grey, rather than black, as the primary surface color for components. Dark grey surfaces can express a wider range of color, elevation, and depth, because it’s easier to see shadows on grey (instead of black).

                                                                              Dark grey surfaces also reduce eye strain, as light text on a dark grey surface has less contrast than light text on a black surface.”

                                                                              Material guidelines

                                                                              I find it hard to read white on black, as it looks like headlights on a pitch black night to me, and I can’t see the text clearly, but I know it’s also the case that others need more contrast. When I’m reading dark-on-light, I need more contrast.

                                                                              With a ‘softer’ look than black + white, the user should theoretically be able to set higher contrast as an option in their OS, but I have no idea how widely this is supported. I’ve just tried it with duckduckgo in Safari on MacOS and it did seem to work - though I’m not sure the page did anything itself.

                                                                              “Prefer the system background colors. Dark Mode is dynamic, which means that the background color automatically changes from base to elevated when an interface is in the foreground, such as a popover or modal sheet. The system also uses the elevated background color to provide visual separation between apps in a multitasking environment and between windows in a multiple-window context. Using a custom background color can make it harder for people to perceive these system-provided visual distinctions.”

                                                                              Apple guidelines

                                                                              I’m not sure you can find/use the system colours on the web.

                                                                              Here’s a desktop screenshot with lobste.rs visible - notice that it’s the only black background on the screen.

                                                                              1. 2

                                                                                Thanks for these details. In particular that screenshot is helpful.

                                                                                It’s true that on your phone at night, the site may be your only light source. A goal of mine was that if any site is suddenly too bright for you, it shouldn’t be this one. But on your desktop, the site shares a lit environment with your other windows. The most common background color is perhaps a bit driven by fashion, but that’s a fact of life, so let’s deal with it. It is probably worthwhile to get along with the other windows on our screens.

                                                                                Given that we already theme mobile CSS with a media query, what do you think about the phone use case?

                                                                                1. 5

                                                                                  I don’t think you should rely on detecting mobile to target OLED screens. OLED screens are gradually becoming available on tablets and larger screens, and not all mobile screens are OLED. I’ve been trying to figure out a way to target OLED for web design and I don’t know of a good way to do it.

                                                                                  It’s a shame that the prefers-color-scheme options are just light and dark, rather than e.g. light, dark, and black. It seems like some people want pure OLED black and some don’t, and I’m not sure you’ll ever get them to agree.

                                                                                  Personally I’ve decided to err on the side of assuming everyone has OLED, because I’d like OLED screens to get the energy savings when possible, and I just personally like the aesthetic. If it’s good enough for https://thebestmotherfucking.website/ it’s good enough for me.

                                                                                  1. 2

                                                                                    Very dark gray is also efficient on OLED. It’s not a binary like #000 saves power and #222 is suddenly max power. I think power is just proportional to brightness?

                                                                                    1. 2

                                                                                      Interesting; I hadn’t known that about OLEDs. Your statement is correct according to this 2009 Ars Technica article citing a 2008 presentation about OLEDs:

                                                                                      power draw varies pretty linearly with mean gray levels

                                                                                      The article also has a table showing the power used by an OLED screen to display five example images of varying brightness. For mostly-white screens, OLEDs are actually less power-efficient than LEDs.

                                                                                  2. 2

                                                                                    I don’t usually have dark mode set on my phone but I’ve just tried it and… it’s surprising.

                                                                                    The black background doesn’t have the same problem here. I can read text without it looking like headlights at night in the rain!

                                                                                    Maybe it’s due to OLED, or maybe something to do with the phone seeming to dynamically adjust brightness? No idea but it’s fine.

                                                                                2. 2

                                                                                  Thanks for the link. I’ve read through the discussion and I understand now that you have put some thoughts into this. That’s good enough for me :)

                                                                          1. 3

                                                                            The style change appears to have broken visited links. Now there is no visual distinction between an unvisited link vs. a visited link, and I find it rather distracting.

                                                                            1. 2

                                                                              Thank you! That’s a bug. I’ve filed it here.

                                                                            1. 19

                                                                              Is it possible to force the previous theme in the profile? On my desktop I have no problems, because I use my own Stylus override anyway, but on mobile my eyes hurt from this black/white contrast. I actually prefer to have a dark theme set up globally, but dark does’t mean it’s pitch black ;)

                                                                              1. 9

                                                                                A manual setting was out of scope this time, but it could happen next if there is demand and a volunteer.

                                                                                1. 2

                                                                                  I can present to you how I solved it in my own project (similar in scope to lobste.rs) at https://littr.me. To see it in action, you click the “Invert colours” link in the site’s footer.

                                                                                1. 1

                                                                                  The lobsters crowd seem to be bad at bikeshedding today, or maybe they’re just lazy.

                                                                                  The colour scheme reminds me of something — some SaaS/editor I used briefly, I think? Can’t quite remember what. Was it inspired by anything specific?

                                                                                  Thank you.

                                                                                  1. 5

                                                                                    I’d say I was influenced by my experience with macOS and iOS dark modes in stock apps, Apple’s design guidance on that topic, and some color contrast goals. I avoided inventing a new palette and just made adjustments for a dark environment. So for instance, colored text is a bit paler as if it emits its own light, rather than being a pigment on a lit page.

                                                                                  1. 7

                                                                                    Looks lovely! My only suggestion would be to somehow add a toggle using some browser-local storage for folks (like me) who don’t have OS-level dark mode toggles.

                                                                                    1. 9

                                                                                      A manual user theme setting was deemed out of scope for this change, but that doesn’t mean it can’t be added next. This is a great time to see if there is demand and maybe inspire someone to do it.

                                                                                      1. 3

                                                                                        Makes sense, I imagine the user setting is just an additive setting on top of this change.

                                                                                    1. 7

                                                                                      Literally whatever the student thinks is cool about computers. If they love the web, start with web technologies. If they love games, start with games. Go after the real thing. Their excitement is the limiting factor, not your choice of material.

                                                                                      When you really have an intrinsic drive to learn something, no teacher has to coerce you into learning or threaten you with bad grades. Instead the teacher’s job is just to make space for learning and keep the A’s coming. You want to foster that drive by prompting them to follow their nose, and supporting them wherever that leads.

                                                                                      After practice takes hold of them, offer the benefits of theory. Theory expands their creative options for practice. Having practiced, they’ll understand what’s valuable about theory. Then you guide them to stay hungry for both and remain in that virtuous cycle.

                                                                                      1. 3

                                                                                        I want to do a color contrast pass in order to finish dark mode for Lobsters. And maybe some more Tetris with podcasts.

                                                                                        1. 1

                                                                                          This looks great! Thanks for putting in the effort.