HN user

SCLeo

622 karma
Posts16
Comments198
View on HN
OAuth for all 28 days ago

I cannot agree more. Cloudflare has some services that are really cheap (r2) to lure you into their worker "ecosystem", which is just serverless. Once you are vendor locked into their absolute garbage custom JavaScript runtime, you are pretty much forced to use their distributed database Cloudflare KV if you want good performance. Cloudflare KV is so extremely ridiculously absurdly expensive that make predatory pricing of vercel that HN likes to complain about feel like child play.

Frequency of actions matter, especially for security changes. If we are talking about git, I agree. If we are talking about npm, I bet 95%+ times people install packages in order to use them, not just to admire the code.

Someone else in this thread mentioned that npm can be used to manage pure front end libraries, which is a fair point.

Thanks for the explanation. Honestly, your explanation is better than the entire video. - I watched it in full and got really confused. I completely missed the part where he said the light is pulsing at 30kHZ and was really puzzled at how he is able to move the mirror so fast to cover the entire scene.

Where do you even get the $3,000 standing desk? I am don't even compare prices and I got mine from Amazon for $200-$300. Sure the quality might not be the best but I just can't see there are people buying $3000 standing desks.

And as someone who's into spy stories, I know that a big part of tradecraft is of formulating your questions in a way that divulges the least about your actual intentions and current information.

Not necessarily disagreeing with you, but if everyone started doing this, we will be in XY problem city.

Yeah, the commonjs to esm transition has been the python 2 to python 3 transition of JavaScript, except the benefits are limited (at least compared to the hassle created).

There are many libraries that have switched to esm only (meaning they don't support commonjs), but even today, the best way to find the last commonjs version of those libraries is to go to the "versions" tab on npm, and find the most downloaded version in the last month, and chances are, that will be the last commonjs version.

Yes, in a vacuum, esm is objectively a better than commonjs, but how tc39 almost intentionally made it incompatible with commonjs (via top-level awaits) is just bizarre to me.

This explanation is extremely misleading. For many of my projects, vast majority of the operations do not use the database . And the few that does, contains long running huge joins/aggregates. Using the sync API is just straight up terrible because the task will block literally everything else that does not use the db in js, meaning generating a report in the background can literally prevent you from handling any requests. (I did end up using better sqlite 3 because they are personal projects and getting stuck for 2 seconds when the scheduled report generation happens is ok ish for the a few people using it. But I will not consider using better sqlite 3 for any future projects)

Smallest Typeface 3 years ago

Oh wow, this is probably the most creative thing I have seen for a while. Thanks for sharing.

Was Rust Worth It? 3 years ago

If you have a namespace, can't people just globally-claim namespaces instead? like serde/serde or something similar. I feel if you really don't want people claim whatever they want, you have to do the Java package style where namespaces are tied to domain names.

In all seriousness, what fuck is going on in Fandom? It has soooo much ads!

I just turned off my ad blocker and literally only 21% of the page is content and the remaining is ads. After 2 seconds, it got replaced by a full screen ad. What? How? What are the people at fandom thinking? This is completely unusable without adblockers!

Don't believe me, here are the screenshots I just took: https://imgur.com/a/sNg3IlJ

Honestly, I'm incredibly frustrated with this issue; it's just pure idiocy. Commenting out a part of the code and observing the effects is such a simple and useful debugging technique, yet this "feature" of Go prevents you from doing so effectively.

What's even more frustrating is that when you search for solutions, you come across two kinds of (pardon my language) completely brain-dead responses:

First, there are those who argue that unused variables/imports lead to bugs and worse performance in production, so they should always be fixed. But that's completely beside the point; I've never seen anyone argue that allowing unused variables is good for production. It's always been about facilitating the development process and debugging. Yes, I am aware now there are unused variables, but please just let me see what does removing this part of the code do.

Secondly, people suggest using a dummy function like UNUSED or a blank variable _ to solve the problem. But again, these suggestions miss the mark entirely. Changing variable names or adding UNUSED calls to "disable" the rule is even worse than what we've been doing to temporarily "circumvent" the rule, which is simply commenting out the declarations, test, and undo afterwards. Not only it involves more effort, but more crucially, you might actually forgot to revert those changes and leave in unused variables.

Frankly, I believe this is just a bad design decision, and it seems like the Go team is stubbornly doubling down on this mistake due to ego.

(Sorry, I just have a very strong opinion on this topic, and I am deeply frustrated when the tools I am using think they know better than I do and are adamantly wrong.)

Anti-sandbox tricks

Something not commonly seen in JVM malware that is present here is a class titled VMEscape. It checks if its in a sandboxed windows environment by checking if the current user is WDAGUtilityAccount, which is part of the Windows Defender Application Guard. If this condition is met, an attempt to escape the sandbox system is made.

The process is roughly as follows:

- Start a repeating thread to run the following actions:

- Create a temporary directory using Files.createTempDirectory(...)

- Iterate over FileDescriptor entries in the system clipboard (Supposedly this will be accessing the contents of the host)

- Create a shortcut that looks like the original file (using icons from SHELL32) but instead invokes the malware

- Assings this shortcut to the clipboard, overwriting the original file reference

Thus, if a user copies a file and goes to paste it elsewhere they will instead paste a shortcut that looks like their intended file, but actually runs the malware.

This is just evil.