Hacker News new | past | comments | ask | show | jobs | submit | orthecreedence's comments login

Buses can scale with demand and often do. This is a function of planning and has little to do with the mechanism of public vs private ownership.

"This article describes yet another infuriating redesign by the Android design team who cannot seem to stick with a paradigm and improve it for more than a year before trashing it and doing something entirely new for no reason other than boredom."

Shame is a useful social tool. It can be overused or underused, but it's still a tool and people like this should be made to publicly answer for their obnoxious and destructive behavior.

How?

What then do you suggest as a good middle ground between website publishers and website enjoyers? Doing a one-time challenge and storing the result seems like a really good compromise between all parties. But that's not good enough! So what is?


You're not arguing for the honesty of individual companies, you're arguing against the profit mechanism.


As someone who has used both, I much prefer attachments. Something like https://bidetking.com/products/gobidet-gb-2003c-chrome isn't the usual flimy plastic garbage you get off amazon but lets you clean yourself without shoving your hand in your ass on a fully separate unit that takes up half the bathroom.


Finally all the mom and pop chip fabs running out of a garage get a fighting chance.


Can't wait to buy from some west coast hipster with a garage fab now that it's economically viable. /s


But wouldn't it be cool if that were a thing? Miniaturized fab tech that some extreme tech hipster could produce bespoke chips out of the garage?

I wonder if you gave the right people a billion dollars what the best garage sized fab they could develop could do.


Cloudflare?


I was writing a cryptographically-inclined system with serialization in msgpack. At one point, I upgraded the libraries I was using and all my signatures started breaking because the msgpack library started using a different representation under the hood for some of my data structures. That's when I did some research and found ASN.1 DER and haven't really looked back since switching over to it. If you plan on signing your data structures and don't want to implement your own serialization format, give ASN.1 DER a look.


If you are planning to sign your data structures, IMO your first choice should be to sign byte strings: be explicit that the thing that is signed is a specific string of bytes (which cryptographic protocol people love to call octets). Anything interpreting the signed data needs to start with those bytes and interpret them — do NOT assume that, just because you have some data structure that you think serializes to those bytes, then that data structure is authentic.

Many, many cryptographic disasters would have been avoided by following the advice above.


That matches the advice from Latacora[1]. That advice makes a lot of sense from a security correctness and surface area perspective.

There's a potential developer experience and efficiency concern, though. This likely forces two deserialization operations, and therefore two big memory copies, once for deserializing the envelope and once for deserializing the inner message. If we assume that most of the outer message is the inner message, and relatively little of it is the signature or MAC, then our extra memory copy is for almost the full length of the full message.

[1]: https://www.latacora.com/blog/2019/07/24/how-not-to/


There are a few serialization/deserialization systems that are close enough to zero-copy that this has no overhead. Cap’n Proto and FlatBuffers were designed around roughly this idea. Even some protobuf implementations allow in-place reads of bytes.


Does this work with nesting? I guess, if reading the envelope gets you a pointer to the inner buffer, you can pass that to another read operation. If that can be done safely (with the library ensuring the appropriate checks before it casts/transmutes), that would be very powerful.


It should work fine. In C and C++, it's straightforward to YOLO it -- all you need is a pointer and a length. Rust can do more or less the same thing but with compiler-enforced safety. Many GC/ARC languages can efficiently handle slicing buffers, and it mostly comes down to library design. (Even Python can do this, although you generally pay for it in the rather large cost of every other operation...)


It took me a few tries to convince myself, but I think I agree with you that Rust can do this with lifetimes and unsafe. Importantly, the unsafe is self-contained, can be reliably generated by macros or codegen, and the end user doesn't have to muck with it.


> If you are planning to sign your data structures, IMO your first choice should be to sign byte strings

Yes, that is right; but, the byte sequence can be the canonical form of the data structure, and DER is canonical form.


I looked this up and it seems like something from 2008 about mortgages? Can you explain why this important?


I wouldn't say it's important, I'm merey speculating on the likely outcomes of VC bros hitching their wagons to a specific political movement, and the public's demand for action after a financial crisis.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: