HNHacker News
TopNewBestAskShowJobs

MikeHolman

430 karma · joined June 17, 2015

submissionscomments
MikeHolman··on W3C recommends WebAssembly
You could already compile programs from other languages to javascript.

https://github.com/jashkenas/coffeescript/wiki/List-of-langu...

Wasm was effectively an extension of asm.js. It makes the experience of compile-to-web better, but it isn't much more opaque than other projects.

MikeHolman··on Robinhood Traders Discovered a Glitch That Gave Them ‘Infinite Leverage’
An 18 year old isn't getting a mortgage. They probably won't be able to afford a home for the next 7 years anyway. They might have a rough time getting a reasonable car loan and opt to instead buy a used car with cash, but that isn't the end of the world.
MikeHolman··on Google’s Play Store gives a worse age rating to Fleksy, a Gboard rival
No, it doesn't link to social media. It's just an internal survey.
MikeHolman··on NBA's China dilemma: $4B at risk as Chinese TV cancels game broadcasts
Mentioning the Civil War is ridiculous. It was a war that happened 150 years ago, and it resulted in the end of slavery in America. It's not like it was an act of oppression.

And by all accounts the situation in Xinjiang is much worse than Guantanamo Bay. To start, Guantanamo Bay at its peak had under 800 people imprisoned. Xinjiang re-education camps are estimated to hold 1-3 million people. So the scale is massively different. It's hard to know exactly what happens in the camps, but the reports of torture and organ harvesting don't paint a rosy picture.

MikeHolman··on Protester shot in chest by live police round during Hong Kong protests
Killing armed rioters would get much less condemnation than killing unarmed protesters.
MikeHolman··on Protester shot in chest by live police round during Hong Kong protests
How do I know if you are responsible? Do your children have access? Are you sure they can't find the key or figure out the code?

A couple months ago a friend of a friend was killed because a boy from school brought a gun from home to their house to show off and was playing with it. He thought it was empty. It wasn't. Now a girl is dead, a boy's life is ruined, and their families are devastated.

This happens all the time.

MikeHolman··on NSA Said to Have Used Heartbleed Bug for at Least Two Years (2014)
I don't think it's only popular in news.

I work on a web platform team, and I've seen many vulnerability reports over the years (well over 100). I've never seen a report from the NSA or US government. Actually, the only government I've seen reports from are the UK, so credit to them for actually doing something to keep people secure. But most reports I see are from project zero or Chinese companies.

Either the US government doesn't care at all about browser security or they are keeping vulnerabilities for themselves.

MikeHolman··on No limit: AI poker bot is first to beat professionals at multiplayer game
All the major online chess websites have anti-cheat mechanisms. They don't publish details of how they detect cheaters though, and I don't know how good they are.

From what I've read, they work by comparing the player's moves against chess engines, and if the player is picking engine's choice too often in positions where there are multiple roughly equal moves, they get flagged.

MikeHolman··on Not even the Hong Kong protests can get past Chinese censors [video]
Just a few weeks ago was the 30th anniversary of the Tiananmen Square massacre, and now you have 2 million people protesting in Hong Kong.

I think it's mostly that there's a lot of newsworthy events going on in China right now.

MikeHolman··on Fixing a Small Calc.exe Bug
Microsoft GitHub projects stopped spamming about CLA a while ago. It will only add a CLA comment to the PR now if you haven't yet signed the CLA and CLA is required. Since this is a one liner, CLA isn't required.

But it looks like the CONTRIBUTING.md file wasn't updated to reflect this change.

MikeHolman··on MDS: Microarchitectural Data Sampling side-channel vulnerabilities in Intel CPUs
It certainly doesn't feel good. But if the home market remained unpatched with a public POC, they would be attacked. The most likely avenue is by writing malicious web pages to steal bitcoin wallets, etc.
MikeHolman··on Dwarf Fortress is coming to Steam with graphics
The problem is that most people act selfishly with that "5 to reshape the world into something you want to live in". The world they want to live in has them lazing on a beach, not providing healthcare for the masses.
MikeHolman··on JIT-Less V8
By allowing JIT at all, a small ROP chain can call VirtualProtect to make a larger payload executable.

Sure you can do everything with ROP, but it is less convenient (and Intel CET might eventually make ROP attacks actually hard).

MikeHolman··on JIT-Less V8
ChakraCore also has the ability to disable JIT. And we have a build configuration that compiles out the JIT so the binary is smaller as well.

I believe people in the community also have a ChakraCore fork specifically made for using Node on iOS.

MikeHolman··on Serious Chrome zero-day
This looks bad for Google. EdgeSpot detected an in-the-wild exploit and told Google about this in December, but Google wasn't going to fix the bug until late April.

Google only released a patch early because the finder blogged about it.

https://blog.edgespot.io/2019/02/edgespot-detects-pdf-zero-d...

MikeHolman··on The pros and cons of placebo buttons
I live in Seattle as well, and last year I saw some lady jay walk right in front of a cop car. The cop yelled out, "Hey maybe use the crosswalk next time." Without even turning around, she flipped the cop off and kept walking.

No ticket, nothing.

MikeHolman··on Oceans warming faster than anticipated, study finds
From what you say, they underestimated by 35%. That seems like quite a conservative underestimate.
MikeHolman··on How newlines affect Linux kernel performance
You can't throw away your interpreter bytecode, because the JIT code needs to be able to bailout if a guard fails (e.g. if you specialized a var as an int and you get a non-int).

So you can always use the size of your bytecode as an inlining heuristic (which is what Chakra does).

Of course that wouldn't work before v8 had an interpreter, but they could have used other heuristics. For example, they could have used the size of the AST as a heuristic and saved that even after the AST gets thrown away.

MikeHolman··on How newlines affect Linux kernel performance
You don't want to inline functions that haven't been parsed. If it hasn't been called by the time you are JITing, then it probably isn't going to be on a hot path.
MikeHolman··on Lolbench: automagically and empirically discovering Rust performance regressions
Do you do have any plans to better distinguish between noise and regressions? I run a similar performance testing infrastructure for Chakra, and found that comparing against the previous run makes the results noisy. That means more manual review of results, which gets old fast.

What I do now is run a script that averages results from the preceding 10 runs and compares that to the average of the following 5 runs to see if the regression is consistent or anomalous. If the regression is consistent, then the script automatically files a bug in our tracker.

There is still some noise in the results, but it cuts down on those one-off issues.

MikeHolman··on Lolbench: automagically and empirically discovering Rust performance regressions
I haven't used callgrind, but wouldn't running benchmarks concurrently still lead to cache interference?
MikeHolman··on Why the New V8 Is So Damn Fast
That requires extra bookkeeping for ordering, but it isn't really that common where people will have object literals with the same properties initialized in a different order.

But a much more common case is that properties added after object creating will be added in an inconsistent order, for example:

o = {}; o.x = 1; o.y = 2; o.z = 3;

p = {}; p.y = 4; p.x = 5; p.z = 6;

When executing p.y = 4 you don't know that the object will eventually evolve to have the same properties as o.

MikeHolman··on Why the New V8 Is So Damn Fast
The reason most of the features of the JIT are needed is due to the lack of static typing in javascript. The most important thing the JIT does is figure out what types of things you are using and optimize for them.

There will always be some cost here, because at runtime you need to check if your assumptions still hold. Some of the time you can pull these checks out of loops, but sometimes you can't, and they can be costly.

There are a few things a JIT can theoretically do better. Inlining is the biggest one. For example, a JIT knows not to inline a function that never gets called, and it can also do inlining for indirect calls based on profile data. A JIT could also theoretically move unexecuted blocks out of line for better instruction cache locality. It could also check for aliasing at run time (with a bailout) and then optimize a loop assuming no aliasing.

Unfortunately for JITs, AOT compilers can do a pretty good simulation of most of these things with PGO, that is running a scenario with an instrumented binary and re-optimizing using profile data.

Still can't bailout if an assumption is wrong, so it doesn't work for dynamic languages, but you don't really need bailout for much in static languages.

MikeHolman··on Jeff Bezos Becomes the Richest Man in Modern History, Topping $150B
That's assuming a socialist revolution is unequivocally bad. The world would be so incredibly different, it's impossible to say that it would be worse.
MikeHolman··on What Does “One JS” Mean in a World of Transpilers?
Browsers are already very optimized for JS. Wasm is not currently a good target for managed languages (you would need to implement your own GC on top of wasm memory), and AOT compilation in general is not good for languages as dynamic as JS.
MikeHolman··on Shrinking the kernel with a hammer
In my codebase we put our configs behind if (CONFIG_TOASTER) { ... } statements, and then #define CONFIG_TOASTER true/false.

I think this is a pretty good middle ground, where we still get compile errors to help against code rot, but also keeps code needed for special configs disabled/isolated.

MikeHolman··on Signal partners with Microsoft to bring end-to-end encryption to Skype
>the reason Microsoft broke Skype so badly was because they used centralised servers with backdoors for countries who wanted them.

That seems like pretty unreasonable tinfoil. There is no reason for Microsoft to want to give information to governments. I assume they don't pay, and the cost is consumer trust. Makes a lot of sense to rearchitect such that you can't give in to government demands.

MikeHolman··on Reading privileged memory with a side-channel
Looks like everyone is vulnerable to arbitrary user memory reads, while Intel and ARM are vulnerable to arbitrary kernel memory reads as well.
MikeHolman··on Hardening C/C++ Programs – Executable-Space Protection and ASLR
I implemented an out-of-process JIT for Chakra (JavaScript), and we make heavy use of inline caches.

Why do you think inline caches would be an issue?

MikeHolman··on Hardening C/C++ Programs – Executable-Space Protection and ASLR
CET is coming out soon, and I'm hopeful that this will make ROP much harder.
← PreviousPage 2 of 4Next →