HNHacker News
TopNewBestAskShowJobs

eggsnbacon1

488 karma · joined September 18, 2019

submissionscomments
eggsnbacon1··on QEMU should move from C to Rust
It definitely doesn't. Rust needs a GC for certain use-cases. I've been hoping for a while that somebody will do a port of Shenandoah or ZGC to Rust. It would be a lot of work but give Rust the best of both worlds
eggsnbacon1··on What's new in PHP 8?
Lol I remember seeing this timeout issue years ago and immediately deciding I would never use Go for HTTP (which is what it was designed for). This makes Go vulnerable to numerous slow attacks and there's no way around it besides "use a proxy".

My guess as to why this issue is left open? Google has global timeouts set on all the network edges so they don't want each service to use its own. Whats good for Google overrides whats good for the supposedly open source project.

This is pervasive in most of their projects. Google open source is like the Reapers from Mass Effect series. They leave some crumbs behind to ensure the software ecosystem develops along desired paths. Not out of charity, they do it to ensure a successful harvest.

eggsnbacon1··on QEMU should move from C to Rust
I've used a decent amount of Rust, that's not the case this time. Rust is a game changer. The effect of borrow checker and automatic RAII everywhere is profound. I'm convinced its going to fundamentally change low level language design. Borrowing semantics will be mainstream someday, whether its through Rust or otherwise.

It has all of the safety characteristics of a VM language but its low level with no runtime. Its a direct replacement for C with all the performance and modern design of languages like Java and Go. And it uses LLVM so FFI with other languages that compile to native is simple and zero overhead. You can even do whole program optimization (LTO) on the combined binary, that's huge. Trust me the hype about Rust is real.

Much more real than the hype around Go, which to me just feels like yet another GC language. The hyped AOT compilation is nothing profound. Since the GC forces Go to have a runtime anyways IMO they should have gone all the way and just used JIT. And Go doesn't use existing C compilers so FFI has overhead, can't be optimized together at a bytecode level

eggsnbacon1··on When Should You Not Use Rails?
now that everything is using SLF4J all you do is import it and put a config file in one of various supported places in project
eggsnbacon1··on When Should You Not Use Rails?
IMO its happening to languages that are no longer popular enough to maintain multiple frameworks. The difference with Ruby is that it was always mostly rails. I'm worried Ruby will descend into a Rails death spiral. Depending so heavily on one framework stops innovation
eggsnbacon1··on Latest Firefox rolls out Enhanced Tracking Protection 2.0
try spoofing Chrome user agent with an extension. Google is becoming 90's Microsoft and knowingly degrading user experience on non-Chrome browsers
eggsnbacon1··on Latest Firefox rolls out Enhanced Tracking Protection 2.0
Firefox is notably slower on many Google properties. Usually because they send you a crappier interface if you aren't using Chrome.

Try one of the many browser extensions that spoof Chrome useragent. For me it makes a big difference on Google search results and Youtube

eggsnbacon1··on Google’s top search result is Google
they're promoting their own products when they have over 80% of search eyeballs
eggsnbacon1··on Why Are Plants Green? To Reduce the Noise in Photosynthesis
I think our disagreement is over blue pigment vs blue appearance. Lots of things in nature use structural coloration https://en.wikipedia.org/wiki/Structural_coloration

Microstructure interference can create blue, but perhaps not the flower pigments themselves

eggsnbacon1··on When Should You Not Use Rails?
to me, this sounds more like "Ruby tools don't have sane defaults unless you use Rails"

Some examples from crufty Java world. You magically get connection pooling with any JPA provider. If you import a logging library, it magically works. Flyway and Liquibase db migration tools have built-in failsafes, and "just work" with defaults.

I think Ruby suffers immeasurably from most things being built for Rails. In Java and Python, there's so many options that everything is forced to be modular when running standalone and play nice with various frameworks.

Ruby is loved for Rails, but Rails is slowly killing the langauge by making it hard to do anything without it. For most purposes, Ruby is Rails. To me this is a good reason to use a different language where I have flexible options

eggsnbacon1··on Why Are Plants Green? To Reduce the Noise in Photosynthesis
I have seen many blue flowers personally but since this is a trustworthy internet forum I believe you
eggsnbacon1··on Microsoft Joins the Blender Development Fund
I used blender since the beginning. It makes me so happy to see it evolve over the years, first to open source then to a widely supported project.

Donating my meager highschool pocket money to help buy the source code ended up being the most impactful thing I've done in life so far.

eggsnbacon1··on TheirTube – How do the recommended videos look on their Youtube home page?
lol so true
eggsnbacon1··on Google’s top search result is Google
Competitors have a hard time getting off the ground because the dominant player is promoting its own products. Classic monopoly. Competition won't be good if nobody uses them.

Google maps might be a good example, MapQuest and Terraserver used to be better for navigation and satellite photos. Did they fail because of business reasons or self promotion? Hard to know, but Google pulled the same shit as MS got antitrust for. Bundling their own maps app pre-installed on their dominant mobile OS

eggsnbacon1··on Y Combinator has lost its soul: A YC founder's perspective
yeah a lot people can't do that. Specifically anyone caring for someone, so like 50% of adult population. A huge proportion of adults are caring for a parent or child.

Its also impossible if you have any health problems, or need to save for retirement or have student loan debt.

Its really only possible if you're young and healthy, so this would filter out probably 80% of adult population

eggsnbacon1··on OpenAI should now change their name to ClosedAI
that's not what happened with OpenAI though. They're not a non-profit anymore, they changed to a "controlled profit" (lol) model.

I didn't know this was even possible/legal. Start as a non-profit for all the tax advantages and convert to for-profit once you've got a saleable product? Maybe startups should start doing this

eggsnbacon1··on Huawei 5G kit must be removed from UK by 2027
If you think Adrian Zenz is some kind of fraud there's nothing I can post that will convince you so sources are pointless. Google "China re-education camps" and you'll find hundreds of articles on the subject from news organizations all of the world
eggsnbacon1··on H.266/Versatile Video Coding (VVC)
That's 1% of the cost of windows, for a video codec when there's already dozens of free alternatives
eggsnbacon1··on HotSpot compiler: Stack allocation prototype for C2
For fast languages like C# and Java many benchmarks are finished in a few seconds. By their tests, the warmup adds ~.3 seconds to these tiny programs. That's a long time, 10-20% in some benchmarks!

In a couple benchmarks Java would probably be faster than C++ if the JVM was allowed to warm up

eggsnbacon1··on HotSpot compiler: Stack allocation prototype for C2
Benchmarks game doesn't do JIT warmup, which is extremely frustrating. The results are useless for long running server applications. It essentially benchmarks which VM can compile fairly fast code quickly, not which one produces the fastest code.

Long running VM's like Hotspot in "server" mode do a lot of expensive optimizations over time. Benchmarks game makes no attempt to warm up these VM's, so it doesn't actually measure how fast a VM is in practical hosting scenarios.

Anecdotally, I have heard that Java is still faster than C# in most benchmarks when both VM's have had time to do a full JIT. I've also heard that Golang is much slower than C# and Java when their JITs are allowed to fully warm.

I've been meaning to build a "warmed up" version of benchmarks game specifically for testing VM languages but never got around to it. If someone else wants to pick up the torch I would be eternally grateful!

eggsnbacon1··on HotSpot compiler: Stack allocation prototype for C2
I wonder what Oracle will think about this. Isn't this one of the "big" optimizations you only get with Graal EE $$$ right now? Its going to be ironic if external contributors keep C2 as on par with Graal EE.
eggsnbacon1··on Hong Kong: UK makes citizenship offer to residents
This has and will be debated forever. Given the choice though, I think its much clearer that letting in wealthy educated people is a net benefit.
eggsnbacon1··on Hong Kong: UK makes citizenship offer to residents
Hong Kong was a British colony for generations and is still strongly influenced by western culture. Probably why China has such an obsession with crushing it.

Adopting HK citizens is a far easier sell than Syrians. They already speak English, are highly educated, wealthy, westernized, and have special status in UK law.

Letting a ton of refugees in is a large burden on the host country. They don't share British culture and values, tend to have no education or marketable skills, are in poor health, don't speak the language, need a lot of government support, and depress wages for already poor citizens of the host country. It should still be done for humanitarian reasons but there's a lot of pushback from citizens for reasonable concerns.

eggsnbacon1··on How Rust Lets Us Monitor 30k API calls/min
GC is like malloc() but automated and done on multiple threads.

With how low the pause times are with Java's new collectors (categorically not longer than malloc()), the only faster alternative is not allocating at all. Which you can do in many languages.

I agree your point the memory allocation and GC is expensive, but that's something you see in any language when allocating. It's not unique to the GC. You either pay the price with GC or malloc()/free(). Its the same price but one is much easier to deal with than the other.

If pause times lower than 10ms are important you could write your app in Rust which makes it much easier to systematically avoid allocations using borrowing.

I guess my point is that the new collectors make Java memory management roughly comparable to C, and if you care so much about performance that allocation costs are important, you should just use a language like Rust where its easy to avoid allocation completely. The performance gap between allocating in C vs Java is, for practical purposes, gone.

eggsnbacon1··on Angular 10 Now Available
Having used Angular for years, I share the same experience. Everything is hulking complex and opaque. Compare it to React, which is simple enough in principle that you can actually understand whats going on to push your code to browser.

Angular is the J2EE/Plan9 web framework. They just keep layering on complexity when they find use cases that don't work. Instead of ratcheting down to give you more control, you get even less. The cycle repeats. Its way more than a web framework now. The templates you write are barely related to HTML and JS, an order of magnitude more divorced from reality than JSX

eggsnbacon1··on How we launched our MVP in 3 weeks
3 weeks is laughable. It takes a few days to get a project properly configured with linting, CI, version control, database on front and back.

3 weeks is the reason that innovative projects usually die on the vine at established companies. PM's and bean counters never want to spend more than a few weeks on a "sprint task" that might not work out. The exact opposite of the mindset you want in a startup

eggsnbacon1··on Show HN: Blunders.io, a tool to profile JVMs in production
AdoptOpenJDK provides builds for JMC now https://adoptopenjdk.net/jmc.html

New versions of VisualVM can also open flight recorder files

eggsnbacon1··on How Rust Lets Us Monitor 30k API calls/min
> But those GCs also don't guarantee all garbage has been collected, nor how much processing time you'll get before they run again. So op could still end up stuck with their code barely executing, due to memory and CPU pressure, and throughput/latency drops to zilch.

You could malloc() and free() so much that the code doesn't have time to do anything too. And these operations aren't bounded in time either. Just using C doesn't save you from memory allocation, its just done manually instead of automatic. In every system I've worked on you won't have this kind of GC pressure unless you do something profoundly bad

> The vast majority of shops" is an interesting metric given the vast majority had to pick a language before Rust existed.

true

eggsnbacon1··on How Rust Lets Us Monitor 30k API calls/min
Go's GC is notoriously low tech. Its design dates back to papers published in the 70s. Java's Parallel collector is most similar to Go's GC and its deprecated for removal due to poor performance.

Go collects VERY frequently to keep average pause times low, which hurts throughput. It also has pathological worst-case pause times, which is what the author ran into.

My suggestion of Java is just because its been used for high performance REST for decades. Rust has Actix and a few other frameworks, in Java you have 20+ options. Its a lot easier to get something off the ground when you're 99% sure you won't have to build anything except some glue code. Yes, Rust is faster, but is 30% better performance worth treading the wilds while you're trying to keep a startup afloat, I don't think so personally.

Using Java with Shenandoah or ZGC collector would directly handle their GC issue with rather boring technology

eggsnbacon1··on How Rust Lets Us Monitor 30k API calls/min
> There are some general tricks that are language-agnostic, like allocating a huge "buffer" object when the app starts

I've only seen this done in Go :)

← PreviousPage 2 of 5Next →