HN user

Sidnicious

2,188 karma

https://s4y.us

previously: sdy@{google.com,chromium.org},sidney@{okcupid.com,keybase.io}

[ my public key: https://keybase.io/sidney; my proof: https://keybase.io/sidney/sigs/DJzkNxrS60U9aNarQjjhFWsTBZYcC_LFiMBtGmd67Cc ]

Posts12
Comments387
View on HN

This issue was related to an old macOS optimization called "detached mode" or FSLP (fullscreen low power). There were related bugs in Chrome and Firefox:

- https://issues.chromium.org/issues/41359717

- https://bugzilla.mozilla.org/show_bug.cgi?id=1747999

macOS skipped compositing when only a single fullscreen surface with a black background was being rendered, but there were many ways for that render path to misbehave.

It only ever affected integrated graphics on dual GPU Macs, as far as I can remember.

XSLT RIP 9 months ago

Not suggesting an alternative model here, but I think that Google et. al (based on my own time working on Chrome) don't take that responsibility quite as seriously as they should. Being responsible may be an accident, but being dominant in any given area is not. The forces inside Google which take over parts of the world do so without really caring about the long term commitment.

It is so possible to preserve XSLT and other web features e.g. by wrapping them in built-in (potentially even standardized) polyfills, but that kind of work isn't incentivized over new features and big flashy refactors.

Watt The Fox? 1 year ago

Generally speaking yes, they are different. One pattern is that you do something to create a source of audio, and the layer below you starts handing you buffers to fill. With each buffer you send back you can indicate if you want to keep getting called with fresh buffers — if not, the calls stop until you poke something to resume them.

Another pattern is that you push buffers to the layer below you and there’s backpressure to keep you sending at the same rate they’re being played out. In that case you can just stop sending buffers when you have nothing to play.

Your reasons are correct. There are so many layers between an app (or web page) and the physical layer of sound which all burn power; phones and earbuds owe quite a bit of their battery life to shutting down bits of hardware when unused.

EDIT: this reminds me of a WWDC many years ago — Apple got really excited about timer coalescing and added parameters to all the low level timer APIs which let you indicate how much slop you want to allow for each individual timer. Ideally then the OS can keep the CPU asleep for longer and wake it up to do work in batches. Code that deals with real time sound has tight timing requirements and can’t be delayed as easily, so in a timer-coalesced world distinguishing between playing silence and playing nothing has an even bigger power impact.

I've had an issue with my phone for the past few months that could be solved by erasing it and restoring from backup, but I use Signal a bunch and I'm not currently feeling risky or motivated enough to migrate my whole Signal state to a spare phone and do it.

Lack of backups is not a retention/deletion policy. Signal chats can, in fact, have a deletion policy set. Instead it directly ties retention to "how long can I last without losing or erasing my phone", which is not a useful proxy.

Anyone sufficiently motivated to keep messages forever can (a) set up the desktop client and back up its data store or (b) set up signal-cli and save everything that comes out of it.

No backups doesn't defeat this, it just makes life harder for everyone who relies on scrollback. Imagine if email worked this way.

Plus, successful couples are great advocates for the website that introduced them. You lose two customers in the immediate term but gain more as time goes on. (Also OkCupid, 2012-2015.)

A PDF doesn’t represent a responsive/resizable version of the page so it will look awkward on most screen sizes even if the original would have handled it.

A PDF doesn’t capture scrolling behavior, so a nested scrolling element will lose most of its content, and a page with a chat prompt or cookie notice might have part of its content covered.

A PDF won’t capture even simple interactive elements like image carousels, lightboxes, and collapsible sections, so content may be lost (“oops, I saved it on the second slide of the image carousel, but I really wanted the first one”).

As far as I know, a PDF won’t include embedded audio/video.

Many PDF exporters chunk the document into paper-sized pages (but, to be fair, some don’t).

Not sure if this tool nails all of those cases, but those are reasons why I’ve saved local copies of pages in the past.

The top-level comment you replied to doesn’t mention malware.

In any case, both hardware and software keyloggers exist which would be thwarted by an onscreen keyboard. If I recall correctly, mouse keyboards became popular when keyloggers started being more known, and the following generation of malware took screenshots every time you clicked.

It’s a very obsolete security measure but did make sense briefly.

FYI: I believe this works because it saves the string "false", which is truth-y. You can also use:

    defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool YES

Not the OP, but this is super cool as a way to measure extensions' performance impact (in a super limited way, admittedly). For me…

  Chrome 99.0.4844.51:
  - 1Password + µBlock Origin: 277 ± 2.9
  - No extensions:             303 ± 5.1 (9% faster)

  Safari 15.3:
  - 1Password:     251   ± 2.6
  - No extensions: 280.5 ± 2.6 (11% faster)

I think what the author's getting at is that the function you pass to JavaScript .sort() just returns a number — not special sentinel values — which represents the relative order of two items in the array. By calling that function strategically from a loop, .sort() can sort the array.

Similarly, an SDF returns a number that represents how far a point in 3D space is from an object's surface. And, by calling that function strategically from a loop, you can draw a 3D scene using only that function.

Apple has support statuses for discontinued products which kick in five years ("vintage") and seven years ("obsolete") after the it stops being sold.

It's disingenuous for Google to start counting when the product is released. As the buyer, I don't care when it was released, I care when you sold it to me as new. I could buy a Chromecast Ultra (the current-generation 4K Chromecast, released November 2016: https://store.google.com/us/product/chromecast_ultra) and, by this standard (which may not even apply to Chromecasts, FWIW), they could discontinue it and drop support for it tomorrow.

This loses something important about Keybase sigchains: on Keybase, a sigchain represents an identity and not a single key, which makes it possible to add separate keys for different devices and to seamlessly replace and revoke keys over time. (Non-key-specific sigchains let the Keybase client do interesting things like automatically re-encrypting shared data when someone revokes an old key.)

Tying sigchains to keys seems limiting, and I'm curious if there's a reason for it. Otherwise, I like this a bunch.

This is cool! I have some things like this around my house but via a different approach that I'd like to share: each one is just an old-ish e-reader from eBay or Craigslist, a mix of Kobos and Kindles. Both brands can be made to show a full screen web browser (Kobo: by editing a config file from a computer, Kindle: by jailbreaking and installing Kindle-Web-Launcher), so I have them display a page from a web server on my LAN.

Since the browsers support JS and some mix of WebSockets, EventSource, and, at the very least, long polling, it's possible to send messages out to them to update data in real-time or refresh the entire page when I change it. The screens are sharp and the browsers do partial updates, fast enough that I have some touch-draggable sliders that follow your finger.

They cost me from $16-50 each, depending on model. They tend to be cheaper if there's a lot of wear/damage to the case, but if you put it in a shell or cover the whole thing with gaffer's tape, that's not a problem!

Yes. Last year, I realized I needed glasses, went through two opticians and three pairs of lenses, still wasn't happy, and finally ended up seeking out an office that could measure for free-form lenses (measured objectively with more degrees of freedom in the prescription).

This optician used Zeiss a i-Profiler to make i-Scription lenses (https://www.zeiss.com/vision-care/us/for-eye-care-profession...) They've worked better for me than any of the subjectively-measured prescriptions.

Extensions should act on behalf of users but, like websites, some don't. A questionable or poorly-maintained extension can do more damage than any single website, and browsers can support user agency by replacing APIs with better ones: an effective declarative API for content blocking would majorly speed up extensions like uBlock Origin and make it harder for other extensions to follow users around the web.

That said, we should all fight for changes that let extensions like uBlock maintain feature parity.

Disclaimer: I'm both a Chromium developer and a uBlock Origin user and speak only for myself.

I'm super curious…

a. What in these files triggers the explosion of noise (and whether other people have run into this or the author would mind sharing a representative problem file).

b. Whether an output attenuator (or "resistor") would work to quiet the noise (edit: the hiss, not the explosion) without a powered circuit.

I work at Google, but all statements/opinions are my own.

My understanding is that there were two changes:

1. General responsibility for authenticating to Google services has been moved to Chrome, and being logged into Google is equivalent to being logged into Chrome. If sync is set up, logging back into Google also fixes your sync session, if it was broken (common — the warning in the toolbar is easy to ignore).

2. Sync has been separated from login as a Chrome feature, so that you can log into Google services without syncing Chrome’s data.

Confusion between being logged into Google (the Chrome new tab page looks a heck of a lot like the Google home page) and being logged into Chrome was a real problem. I’m not suggesting that this is the right solution… or the wrong one; this is weird territory.

It raises a question for both users and browser vendors: What does it mean to be logged into a web browser?