Hacker Newsnew | past | comments | ask | show | jobs | submit | Symen's commentslogin

For a moment I felt as if I was with them in 1969, amazed by our achievements as humans and looking forward to our next steps. It was a nice, inspirational afternoon.

Thanks for this great website !


In Firerox you can add the Subscribe button back to the toolbar using the personalization UI. They shouldn't hide this feature as much in my opinion, but it is still much better than manually looking for a feed URI in the source.


> Multi-select tab management (Ctrl+Click, Shift+Click to select, drag, snap and move multiple tabs)

You could try the Multiple Tab Handler[1] extension. It seems a bit clunky and limited if you use it alone, but it integrates well with Tree Style Tabs [2]. Note that you could open the vertical tabs sidebar when you need to manage tabs and close it right after. You can also disable the "tree" feature of tree style tabs.

[1] https://addons.mozilla.org/fr/firefox/addon/multiple-tab-han...

[2] https://addons.mozilla.org/fr/firefox/addon/tree-style-tab/


You are talking about "flat-volumes", I also recommend disabling it. Even forgetting the issue you mentionned, it just makes volumes harder to handle and reason about.

I wonder if they would have ever implemented this "feature" if it wasn't the default (and only) behavior on Windows...


> If for some reason I am not able to block them then I just do not watch them and I am not listening to them (I look elsewhere, say a lalala mantra in your mind).

I've started using a similar strategy on YouTube in order to selectively "protest" against bad ads. Whenever I stumble upon a long unskippable ad or a short very aggressive ad (loud and/or offensive), I mute the video and start reading comments for a while, or I alt+tab to a different video, etc. Sometimes I leave the page if the video (or uploader) is not worth the hassle.

In my mind this can lead to 3 different scenarios:

* Google notices this behavior and decides to enforce heavier regulation on ads (they already killed >30s unskippable ads this year).

* Google notices this behavior and tries to fight it (e.g. by pausing the ad if the volume is not low enough, the Spotify way). In the browser this leads to an arms race that Google can't win. In the worst case I would go back to avoiding all advertising using adblock and/or alternative financing if available (YouTube RED, patreon, etc.)

* Google doesn't react, bad ads lose so much value that most uploaders stop using them. They don't want to alienate their viewers for so little benefit.

We need many people to apply this strategy for this to work. However in the short term content creators still get paid, and I get the personal satisfaction of screwing over bad advertisers.


Google already pause ad play if you change app/tab focus; my perception is (on Android?) this is a recent change. So you have to have the video ad playing to get to the point when you can skip it. So, like you I turn away - it's really annoying, but that just makes it more attention grabbing.


You are right, this does not work as well on mobile (at least on android). There is also no mute button on the YouTube app.

The funny thing is that they also pause videos when changing app/tab (not only ads), because background playback is a YouTube RED "feature". I would understand if YouTube RED was available in more than 5 countries. They have been artificially depriving their users of a basic feature for years and for nothing.

In the meantime I simply avoid watching long YouTube videos on my phone, and use NewPipe to listen to podcasts hosted on youtube (which means no ad revenue...).


But transparent getters and setters can be used to emulate private or immutable properties:

    function Foo() {
      var _bar = 42;
      return {
        get bar() {
          return _bar;
        }
      } 
    }

    var foo = Foo();
    foo.bar
    /*
    42
    */
However the fact that you can transparently replace a simple property by a computed one (e.g. for backwards compatibility or to trigger side effects in observables) does make explicit, Java-style, getters and setters less useful.


But your lambda example would be more clear if collections functions supported chaining. You can add a small comment if you want to be explicit. This way the code reads linearly, you don't have to wonder why a "square" function and "is_even" function are defined before you see how they are used.

    # square even numbers
    range(11)
      .filter(lambda x: not x % 2)
      .map(lambda x: x ** 2)
However such a chaining API is not practical in python, because lambda syntax is voluntarily crippled to one expression only.


Long method chains are impractical in Python because of the line continuation rules. That's orthogonal to the question of whether complex functions should be required to have names.


There are a few gotchas but you can do it. Mostly you need to put you multi-line chain call inside parentheses if it is not already inside a function call or data structure (similarly to generator expressions).

For example I often end up doing:

    something(
        "Template string {thing}"
        .format(thing=33)
    )


It's possible but rarely more concise or clear than just using variables.

    label = "Template string {thing}".format(thing=33)
    something(label)


I guess it is a matter of preference at some point.

Storing each step in variables has the advantage to be self-documenting and nicer when debugging. However in many cases I feel like wasting energy trying to find short and adequate variable names for each steps in a computation, especially when the steps are clear enough by themselves but difficult to describe in 1-2 short words.

You also need to keep the variable names in sync when refactoring, which may cause even more refactoring if the line gets too long with the new name.

IMO it makes sense to use both styles where they feel most adequate.


Well, with some laptop lacking USB-A ports I can see FlyWeb to be more practical for simple, quick and occasional file transfers. Also, most people have cheap, very-slow USB flash drives, so transfering via the network (even wireless) could be faster for larger files.

Another thing to consider if you compare it with cloud solutions is that you don't have to find a second channel to send the shared link (which may require both person to e.g. login on their webmail, spell their email address to one another, etc).


By reading the README I guess that exceptions would be an issue. With fastdom they are thrown asynchronously, so a different API is required to catch them.


Opera Mobile also has great text-reflow, which makes it much more usable than other mobile browsers in my mind. The approach taken by other mobile browsers for desktop websites often yield pretty bad results, and some sites (such as hackernews) are consistently broken.


Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: