HN user

ardel95

441 karma
Posts13
Comments55
View on HN

1604. One could say we are overdue. I’m not sure about dust or other obstacles blocking it, but based on brightness alone a supernova in our galaxy should be visible with naked eye.

In quantum mechanics, bosons are (often massless) force carrying particles like photons or gluons. Fermions are the massive matter particles, such as electrons or quarks.

So, while I’ve never heard this saying before, I assume it’s meaning is that massless particles like photons are best for carrying information around (rather than electrons we are using in circuits today), while the electrons are best for carrying state, like in a switch.

Note, that in networking we have already made that transition by using fiber optics, rather than electric wire to transfer information over longer distances.

That’s a pretty pedantic interpretation of the word application. In the context of software owned by most teams, that they may decide to run on single vs multiple hosts most applications are absolutely stateless. Most applications outsource state to another system, like a relational database, a managed no-SQL store, or an object store.

And so no, most teams don’t need to worry about the hard problems you bring up.

One of the biggest misses with IP fragmentation was not requiring each fragment to carry the higher protocol header. Or at least do that for UDP.

That decision alone would’ve made fragments so much simpler on network devices and appliances, and much less likely for them to get dropped.

This is a good example of the type of challenges you face as an author of widely used library. I can see a lot of scenarios where an optimization like this would bring benefits. But there are also many where it would hurt performance (not to mention memory usage), including most "collect once read many times" use-cases.

But I think the real thing for me is that this violates the principle of least surprise. If I wanted the type of memory reuse / lazy transformation behavior this optimization introduces, I would be looking at working with an iterator with a bunch of functinoal transforms. And if I'm calling .collect() it's because I want to convert the iterator into a data structure optimized for reads.

But I can also see how others would land on the other end, and hence the challenges for the library authors.

I think one of the most desirable and under-appreciated goals of schema languages and serialization formats is safety. These tools are typically used in places that deal with untrusted inputs, and features and design choices can go a long way in either exposing or shielding developers from potential safety bugs.

My read of Cap’n’Proto didn’t make it sound that safety was the highest priority. At least not above performance.

There is a huge difference between running infrastructure on behalf of a single, well-intentioned business and running infrastructure that needs to deal with high density, adversarial multi-tenancy.

Not saying they can’t do it if they really committed, but the premise of the question that “they already have technical expertise” is flawed.

Btw, this is the similar learning curve that Google went through (and arguably still going through) when they decided that they could expose their awesome infra to external customers.

I really enjoyed the article.

The only thing that stood out was that the argument the author set out to dispel had a much simpler flaw. In the original argument, point number 3 (having less skin in the game leads to bad decisions) is the weakest one.

That statement isn’t really a first principles fact, but at best a hypothesis. IMO, not even a good one. For all we know, having less extreme exposure may lead to better decisions, as the founder may be open to more calculated risks. And even IF true that statement doesn’t address the tradeoffs: maybe bad decisions are outweighed by the ability to outrun the competitors due to influx of extra cash.

While there is certainly some correlation in such arguments, the bar for proving causation needs to be much higher than a pithy statement.

All that being said, I really enjoyed the rest of the argument.

In praise of MIDI 4 years ago

My first home computer had a sound blaster 500 sound card (remember when computers needed sound cards?) which had built-in MIDI support. The thing that absolutely stood out about MIDI is the small file sizes and crystal clear sound quality. All it effectively needed to encode was the meta data about the instrument - it’s analogous to encoding sheet music into a file format! What a blast from the last.

While you are right, we are where we are and there is tremendous leverage in making an extremely common (even if undesirable) thing more efficient. It kind of doesn't matter why millions of lines of code perform memcpys - they do, and we're unlikely to change majority of them anytime soon.

P.S. I work on the type of systems where we obsess over unneeded memory accesses and copies. Minimizing those is not as trivial as it may seem, especially if you care about memory safety.