HN user

Symen

12 karma
Posts0
Comments14
View on HN
No posts found.

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 !

RSS is undead 8 years ago

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...

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...).

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.

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.

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.

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)
    )

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.

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).

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.

Signal Desktop 11 years ago

Do you have IPv6 in your home network ? Many devices (such as all the Samsung one) stop responding to ICMPv6 packets when in sleep mode (which completely breaks long-running TCP connections over v6), supposedly to save power. This breaks push notifications of every apps using GCM, but there is no way to disable IPv6 without root, and no way to only use GCM over IPv4. I find it mind-blowing that this issue has been known for 3 years and nothing has been done to fix it...

Issue from 2012: https://code.google.com/p/android/issues/detail?id=32662

Thread starting in 2013 on Samsung dev board: http://developer.samsung.com/forum/board/thread/view.do?boar...