HNHacker News
TopNewBestAskShowJobs

dmit

6,769 karma · joined February 21, 2011

submissionscomments
dmit··on The Disinvitation
What if the other six had enough plutonium on them to collectively trigger a nuclear blast? What if one of the Nazis had super powers and wasn't fully committed to the Reich's agenda? What if this comment goes on forever, listing increasingly ridiculous scenarios?

To answer your particular hypothetical question: I can't say for certain, but I sure hope that yes, it would bother me to disinvite that person in that situation. But I don't see how your post relates to the topic at hand.

dmit··on The compositor is evil
> Gamers are actually probably the consumers with the most complex audio pipelines because you're mixing a lot of sound sources in real-time with low latecy, reverb, and other spatial effects.

There's a GDC talk out there about the complexities of audio in Overwatch, a competitive game. Not only do you have invaluable audio cues coming from 12 players at the same time, but also all of their combined abilities and general sound effects, like countdown timers and such.

One of the bigger problems talked about was that in a competitive game you can't just scale the loudness of an opponent's footsteps by the direct distance between them and you. You need to take into account level geometry, and so the game has to raycast in order to determine how loud any single sound effect should sound to every active player in the game.

Edit (link): https://www.youtube.com/watch?v=zF_jcrTCMsA

dmit··on The Disinvitation
> If, <...>, my first thought would be <...>

> Of course, when <...>, you would never consider <...>

Presented without comment.

dmit··on The Disinvitation
There won't be a lawsuit. There was never intended to be a lawsuit. There are no grounds for a lawsuit! This is all about getting exposure and perhaps channeling wallets towards his Patreon (or SubscribeStar, or whatever platform is en vogue with the bob martins right now).
dmit··on The Disinvitation
If I invited a dozen guests to a party at my house and half of them objected to having #7 on the guest list because he's a shitbag, it would not bother me one bit to have him disinvited.

If, on the other hand, I myself were disinvited in such a manner, my first thought would be to reassess my recent behavior rather than suing the house owner.

dmit··on AdoptOpenJDK 8u265 Available
Azul's Gil Tene has a nice talk about the various JDKs available and why one would want to keep up with the recent (more frequent than usual) releases.

https://www.infoq.com/presentations/life-after-java-8/

dmit··on Single Page Applications using Rust
I have. Purescript doesn't have typeclass derivation. BS technically does, but the time I tried it the compiler plugin was so raw it was basically useless to me. BS/Reason don't support operator overloading. Etc etc.

Redex's library selection is anemic compared to Crates.io, and so is Pursuit's. There are a couple of gems in both, but for any given use case it's just as likely you will have to write your own code than find a workable solution in the package manager.

More importantly, Rust has orders of magnitude higher bus factor than Purescript and ReasonML combined. Phil Freeman has long since left his project, and so will eventually Hongbo Zhang, at which point Reason will follow PS's slow downward spiral into open source limbo.

Believe it or not, I actually put a bit of thought into this. And I do firmly believe that Rust is by far the best ML-like language for the web available to the public right now. Perhaps I should finally write that blog post I keep putting off.

dmit··on Single Page Applications using Rust
I think that's the question most people starting to learn Rust ask. The answer is a bit hairy because of how much modern garbage-collected languages normalized data sharing. Whether you're writing Ruby or Java or C# or Python, you can always do `a = BigStruct(); a.name = 'tiny struct'`.

Rust is the first mainstream language that looks at this code and says "Hold on, are you the only one modifying `a.name`?" And the intimidating part is not the question. The question is not for you. The intimidating part is that the Rust compiler asks itself the question, and it always knows the correct answer.

What the Rust compiler is looking at is the same thing the senior programmers are looking at during code reviews at your company. The people who know who should own which data. In C, once you `malloc` a struct someone has to know to `free` it. That's the rule. You acquire a resource? You're in charge of releasing it. Or at least passing the responsibility of freeing it over to someone else.

Rustc is the ultimate code reviewer. Yes, it's super pedantic, but also, hey, it can take any amount of insults you can throw at it and still thrive. If you run out of things to call it and the code still doesn't compile, guess what, the problem is probably on your side.

I repeat, Rustc is the perfect code reviewer you could ask for. And it's available 24/7. Compilation speeds are not very fast? Ok. Compare them to code review times from your peers when using a lesser language. 10 seconds for an incremental compile doesn't seem so bad when the alternative is to get instant feedback and a comment 16 hours later that you missed an edge case.

Sorry for the big post. Thanks if you read the whole thing; kudos if you scrolled straight down. Be kind, work hard, and good things will happen.

dmit··on Single Page Applications using Rust
I see your point, but I think it only exposes the weakness of the terms "high-level" and "low-level" when used to describe programming languages. Rust is both low-level in that it can be used to write code for very small computers, but also high-level thanks to all the useful abstractions it provides.

There is no axis on which JavaScript (with or without Typescript) is a higher-level language than Rust in 2020. Rust offers a richer standard library, much MUCH more powerful facilities for modeling data, state-of-the-art (de)serialization that's one crate import and a one-liner annotation away.

I don't know who came up with asm.js, but that person definitely knew. JavaScript's destiny is to be a building block. Yes, it feels nice to write plain JS without importing any libraries. It's nice knowing the difference between `Array#slice` and `Array#splice` without looking it up on MDN. But it felt just as nice for ASM coders in the 80s to bypass a C compiler, and look where we are now.

dmit··on Single Page Applications using Rust
This is a tangent, but does Fable still require you to manually toposort your module hierarchy in an XML file? That was my experience using the language with VS Code circa a year ago.
dmit··on Single Page Applications using Rust
I start missing Rust approximately 30 minutes into every new Typescript project I work on because there's no good alternative to Rust enums (and other benefits that come with them, like pattern matching). I can't derive basic traits for my data, like specifying equality or a canonical ordering. I can't define math operations for my calendar types, my units of measure, or my 3D graphics structs. (De)serialization of data is a minefield.

In what world is Rust a lower level language compared to JavaScript at this point?

dmit··on Fixing Mass Effect black blobs on modern AMD CPUs
I think ME2's great reviews were mostly driven by the excellent cast of memorable characters you got to assemble throughout the game. Such an upgrade over the BioWare trademark mild soup of forgettables in ME1, and also the biggest reason ME3 was maligned after relegating most of those beloved characters to a 5-minute scene.
dmit··on Fixing Mass Effect black blobs on modern AMD CPUs
20 years later we finally got the answer. Drinking yourself half to death and losing most of your memory in the process can change the nature of a man.
dmit··on iOS14 reveals that TikTok may snoop clipboard contents every few keystrokes
A dictionary app I use looks at the clipboard when opened and automatically displays a translation iff 1) the copied text is new compared to the previous time the app was used; and 2) the text is in the source language.

It's a pretty neat use of the feature, although I'd still gladly let go of it if it means that the other 20 apps I regularly use don't get to rummage through my clipboard for no good reason.

dmit··on Mozilla VPN
Here are the steps I've been following:

1) Sign up for Fastmail.

2) Sync all mail from GMail account to Fastmail (via the Fastmail web UI; you grant FM access to your GMail data through OAuth - once sync is complete you can revoke this access).

3) Set up an auto-forward rule in GMail for all incoming mail to go to your Fastmail address.

4) Set up a rule in Fastmail to put all incoming mail sent to your GMail address into a separate folder (or labeled with a special label if you're signed up for Fastmail's label beta). Any time you get email in that folder, that's a task for you to either unsubscribe or update the corresponding account to your new email address.

I'm currently in month #10 of migration. Most commonly used accounts were updated during the first couple of weeks. But be careful that the tail of services that are still configured to use your old email address tends to be long, and in my experience those are some of the more important emails that you don't want to miss. The ones that are only sent once every couple years.

Also, it really helps if you've been using GMail with a personal domain name (e.g. through Google Apps). In this case migrating is a matter of pointing the MX DNS records to Fastmail's servers. Bonus points: Fastmail allows wildcard recipients, so if you prefer to have unique addresses for each service you sign up for, you don't even need to set up a separate xyz@example.com alias. Just register with <whatever>@example.com and you'll get all email delivered to that address in your inbox, and you'll be able to specify it as the sender's address if you decide to reply to some of those mails. Having a separate email address for each web service also makes looking up who leaked what on haveibeenpwned.com more fun.

dmit··on Reason React 0.8
Please, you're driving me crazy. I have referred to you personally by name in two of my above comments. I know who you are! I also know about JSOO vs BS! I know! And it's super disorienting when every single prominent person from the Reason/BuckleScript ecosystem arrives in this thread just to reply directly to my comments with a canned message that has little to do with my original points.

Yes, OCaml is older! Yes, OCaml circa 2015 is a useful language! But also, yes, OCaml has gained multiple useful features since 2015! In part because its development is driver by many, many people. And no, BuckleScript doesn't have some of those features as of May 2020! And it's not an indictment of Reason, but it is also a true statement that Reason/BS are lagging behind compared to what OCaml has to offer!

dmit··on Reason React 0.8
I think "getting OCaml features at a slower rate than OCaml itself does" counts as "falling behind", yes.

2015 OCaml was an excellent language. 2020 OCaml is exquisite.

dmit··on Reason React 0.8
Ah, you're right. I did judge the Reason project by the number of commits its main repo has seen in the past year.

But surely you'll agree that "fast development, fast running, fully type safe programming" has been achieved years ago, and any incremental improvements coming from the BS project are just that - incremental.

dmit··on Reason React 0.8
I think you know what I mean. 4.02.3 was released in 2015. 4.06 was released in 2017.

Like I said, I know the tradeoffs between JSOO and Reason. And lack of features from the past 2~3 years of OCaml development is one of them.

dmit··on Reason React 0.8
Thank you for taking the time to reply, Jordan, but none of what you posted is relevant to my concerns from the above two comments.
dmit··on Reason React 0.8
To clarify, the link in 1) is where I took the number of changes from.

And Re: 2) I have no doubt that Mr. Zhang knows what he's doing. I was just noting how even after the prodigious amount of work he has put into BS over the years, it is still falling behind JSOO which has the benefit of being more tightly bound to the parent OCaml project. I know about the different tradeoffs JSOO and BS have made. All I meant to say is that one super-productive person is apparently (and understandably) not able to keep up with upstream (i.e. Inria + Jane Street + many others) in this case. And then we have the ReasonML project that has seen even less activity recently. If ReasonML in its current state is considered a finished product that requires minimal maintenance, I couldn't think of a better endorsement, to be honest.

dmit··on Reason React 0.8
Reason support in VSCode is very solid.
dmit··on Reason React 0.8
Congratulations on the release! I have a couple questions for you (and any other contributors!) about the project, but I don't know how to phrase them without coming off as combative. Please accept the following as genuine curiosity rather than malice.

1) You called the 0.8 release "huge" in the release notes, even though it adds 11 new functions, removes 2, and updates 2 compared to 0.7, released a year prior. Is there something else about 0.8 that makes it larger than the sum of the API changes?

2) BuckleScript has seemingly been a one-man show for ~3 years. It is lagging noticeably behind the progress of the main OCaml project (including jsoo). ReasonML has a couple prominent contributors, but the overall (public) activity is dwarfed by Hongbo Zhang's work on BS. Is this because the ReasonML project is considered to be in a stable state, sufficient for production work?

dmit··on Chernobyl and the Cost of Lies (2019)
> While there was hope that incident could be contained and radiation levels were low no evacuation were needed

Excuse me, hope? Evacuation was not necessary because there was hope that things weren't as bad as they have turned out to be?

And honestly, as someone who has heard a billion Russian jokes about "volunteers" in the USSR, every time you use that word is jarring to me. I'd share the anecdotes with you, but I suspect you already know most of them.

dmit··on Chernobyl and the Cost of Lies (2019)
> most sources that say this seem to draw it from the HBO series as if it were a documentary

That would be strange, because the series didn't show them die. And one of the epilogue screens said: "It has been widely reported that the three divers who drained the bubbler tanks died as a result of their heroic actions. In fact, all three survived after hospitalization. Two are still alive today."

dmit··on What Is a Game? (2018)
I'm sorry, but that means nothing to me. I have no idea what "clarity of thought" means in this particular instance. Same for "design pillars", regardless of whether it's used at a high or low level.
dmit··on What Is a Game? (2018)
Thank you for the elaborate reply! There's a lot of room for thought there!

But while I'm here... Minecraft is a quintessential roguelike game. You arrive, naked and alone, on a hostile world. You then build yourself up by the skin of whatever. You mine and farm and build, and you acquire food and clothes for yourself. The only rule Minecraft broke is the one that says you can't code a financially viable game in Java.

(I guess there's no ascension, but at that point you've built heaven on earth anyway, so there's no reason to leave.)

> As to why we need those rules in the first place? Because we want to make good games.

I'm sorry, but super no. No game designer has ever feared that they would end up with a good toy, or a great activity, rather than making bank on Steam.

> All categorizations are wrong. No maps are completely accurate.

That's right! "All models are wrong, but some are useful." I was merely wondering what the use of the model presented by GP was.

dmit··on What Is a Game? (2018)
I'm not arguing that all of them are the same thing. I'm 1) wondering why we need to distinguish between them in the first place; and 2) saying there's way to much overlap between the concepts for them to be presented as distinct.
dmit··on What Is a Game? (2018)
> a useful model

Please explain the usefulness of a taxonomy that has "game", "activity", "event", and "toy" as discrete entities.

dmit··on Stripe records user movements on its customers' websites
> The question raised ("Is Stripe collecting this data for advertising?") can be readily answered in the negative.

Are Stripe co-founders paid by the word, or did that message get through about two dozen lawyers before being posted?

← PreviousPage 5 of 11Next →