HN user

yoklov

1,767 karma

rust engineer. previously firefox, cloudflare, and some gamedev companies you havent heard of

Posts3
Comments741
View on HN

I'm not sure using pytorch counts as "from scratch" anymore. I'm not saying you should avoid the stdlib or anything crazy, but at the point where you're pulling in for-purpose libraries it really doesn't seem like "from scratch" to me.

Oh, so, I recently had opportunity to play around with this some, a bit over the past week. My initial questions were along the lines of:

1. What's the point? In end-to-end encryption situations usually the concern is around data storage (perhaps), but for just sending messages typically TLS is enough (or seems it, anyway, from my perspective as a non-security engineer)

2. The codebase seems to have separate C, Rust, and Elixir versions. Are they interchangeable, or do they serve different purposes?

Of these I only have rough answers. For the first, it seems like this solves the problem where, say, a single TLS connection isn't enough to get the data all the way to where it's needed (perhaps you need to go over bluetooth, or do multiple steps of HTTP, etc).

And for the second, well, I'm not sure. I think the C implementation might be equivalent, and be being replaced by the Rust one?

GURPS is way to crunchy (numbers focused) for me, personally, but I'm seconding the Sprawl recommendation.

Hack The Planet is another great modern cyberpunk RPG, based on the Forged in the Dark rule set.

Neither really. It doesn’t have direct access to a canvas API or to the DOM, but you can proxy calls through javascript. There’s a plan to allow avoiding this overhead, but it’s fairly early.

Being a global persisted key value store, about:config has a lot of things stored in it that.... do not necessarily make sense syncing, hence it being opt-in. Sync is guilty of this too, and will store things like your last sync time in about config, for example. Clearly not meaningful to sync directly.

A checkbox like you describe was actually discussed in the past, but at this point it’s unlikely. The current design of letting any synced machine change any pref on any remote machine (effectively) has dubious security implications, and has gained an additional hoop you must jump through in nightly.

Hmm, I don't think many have requested we sync user{Chrome,Content}.css. It's possible we'd accept a patch to sync them (I'd be for it, at least), but it's not trivial since we don't already have file syncing code.

Syncing them with dropbox and symlinking does sound to me to be the most reasonable.

Glad you're satisfied other than that!

The storage is more limited for synced extension data than for unsynced data.

IMO this is quite unfortunate, and is mostly a consequence of the implementation of extension storage sync being done separately from the rest of sync (which in retrospect was a mistake, but at the time that wasn't clear). Also, the limits are copy-pasted directly from the limits chrome places on sync, so it's possible there are compatibility concerns as well.

For config (assuming you mean prefs in about:config), you can add your own prefs to be synced with about:config. If you add a new boolean pref with a value of true using the pattern `services.sync.prefs.sync.<pref you want to sync here>` it will be synced. e.g. to sync `browser.foo.bar` you'd create `services.sync.prefs.sync.browser.foo.bar`.

Disclaimer: I work on Firefox sync.

[0]: In the future this may be more complex, and you may need to flip an additional pref to get this behavior for non-default prefs.

I think this is mainly an issue on macOS if you use a vertical sidebar, having to do with supporting it's translucency.

I think there's away to turn this off too, but I don't remember how, sorry.

Sure, but you can't really avoid rerendering every frame with OpenGL.

(Not without a lot of tricky caching, at least, which has it's own costs).

Not saying this is impractical (Personally, I wouldn't bet on it, but I'm sure it's fine for some things), so much as that the cost model here is fundamentally different.

You can still write hacky temp code in Rust, although it does take some experience to get familiar with the ways you can do this without hitting borrow checker errors and etc (well, short of reaching for unsafe, which is generally not a good way to do this).

That said, for getting code written fast, Rust for me has been better than C++ for a while now, even though for most of that I was better at C++ than Rust. The reason for this was largely Cargo, which eliminates the pain points of dependency and build management that plague C++.

Often when people [0] discuss the difficulty of writing linked lists in Rust compared to C++, they mean intrusive linked lists.

These are still very difficult in Rust. I've heard pinning being stabilized makes them possible safely, but I haven't looked further.

[0]: At least, when I was starting Rust, this is what I would mean when I complained about linked lists.