Hacker Newsnew | past | comments | ask | show | jobs | submit | gleenn's commentslogin

Someone has a sense of humor in the reviews section:

"I’ve been using the demo data for three weeks. I don’t own a house. — Aspiring Homeowner"


I didn't see that review in the 4 shown in that section until I refreshed the page... there are some good ones in there, including a Hacker News shoutout :D

I guarantee that's an AI-written joke.

Does it make it less funny? Do you find yourself laughing, but then you get soured because although the chuckle that was made was genuine, it came about from something that was created by a computer, so we have to hate ourselves for chuckling. Is that how it works?

In theory, it's a legal requirement based on GDPR and CCPA as well as many other new digital rights laws across Europe and many states in the USA. SoundCloud is probably big enough to do that correctly otherwise e.g. the GDPR penalty is a highish percentage of the company's total revenue which gives the laws a good amount of "teeth".


> the GDPR penalty is a highish percentage of the company's total revenue which gives the laws a good amount of "teeth"

Under 2% of GDPR complaints even result in fines. And that would require there to be grounds for a complaint - there's no way for an external user to tell whether the delete is actually done, and the DPA won't force them to submit to a third-party source code audit.

The GDPR has zero teeth. But don't take it from me, these guys have a bit more expertise than I do on this subject: https://noyb.eu/en/data-protection-day-5-misconceptions-abou...


Do you have any specifics on what Drive does? Any examples of it fixing embedded virii? Or is this blind assumption?


I assume they mean "upload to drive and use the web based reader to view the PDF," not "upload to drive and download it again"


And what special sauce does the web preview use? At some point, someone has to actually parse and process the data. I feel like on a tech site like Hacker News, speculating that Google has somehow done a perfect job of preventing malicious PDFs beckons the question: how do you actually do that and prove that it's safe? And is that even possible in perpetuity?


> how do you actually do that and prove that it's safe?

Obviously you can't. You assume it's best in class based on various factors including the fact that this is the same juggernaut that runs project zero. They also somehow manage to secure their cloud offering against malicious clients so presumably they can manage to parse a pdf to an image without getting pwned.

It would certainly be interesting to know what their internal countermeasures are but I don't know if that's publicized or not.


It certainly reduces the concern of PDF viewer vulnerability that allows local execution access which is the concern here.


It's an image sent from Google.


If you're implementing immutable DB semantics maybe you should consider Datomic or alternatives because then you get that for free, for everything, and you also get time travel which is an amazing feature on top. It lets you be able to see the full, coherent state of the DB at any moment!


My understanding is that Datomic uses something like Postgres as a storage backend. Am I right?

Also, it doesn't support non-immutable use cases AFAIK, so if you need both you have to use two database technologies (interfaces?), which can add complexity.


Datomic can use various storage services. Yes, pg is one option, but you can have DynamoDB, Cassandra, SQLServer and probably more.

> Also, it doesn't support non-immutable use cases AFAIK

What do you mean? It's append only but you can have CRUD operations on it. You get a view and of the db at any point in time if you so wish, but can support any CRUD use case. What is your concern there?

It will work well if you're read-heavy and the write throughput is not insanely high.

I wouldn't say it's internally more complex than your pg with whatever code you need to make it work for these scenarios like soft-delete.

From the DX perspective is incredibly simple to work on (see Simple Made Easy from Rich Hickey).


Also good real-world use case talk: https://www.youtube.com/watch?v=A3yR4OlEBCA


Thanks, I'll look into it. My current setup for this kind of use cases is pretty simple. You essentially keep an additional field (or key if you're non relational) describing state. Every time you change state, you add a new row/document with a new timestamp and new values of state. Because I'm not introducing a new technology for this use case, I can easily mix mutable and non-mutable use cases in the same databases (arguably even in the same table/collection, although it probably makes little sense at least to me).


It's definitely an interesting approach but the problem is now you have to change all your queries and undeleting get more complicated. There are strong trade-offs with almost all the approaches I've heard of.


With partitioning? No you don't. It gets a bit messy if you also want to partition a table by other values (like tenant id or something), since then you probably need to get into using table inheritance instead of the easier declarative partitioning - but either technique just gives you a single effective table to query.


Pg moves the data between positions on update?


If you are updating the parent table and the partition key is correctly defined, then an update that puts a row in a different partition is translated into a delete on the original child table and an insert on the new child table, since v11 IIRC. But this can lead to some weird results if you're using multiple inheritance so, well, don't.


I believe they were just pointing out that Postgres doesn't do in-place updates, so every update (with or without partitions) is a write followed by marking the previous tuple deleted so it can get vacuumed.


That’s not at all what the child to me was saying in even a generous reading.

But HOT updates are a thing, too.


What do you think they were saying? I don't see any other way to read it.

HOT updates write to the same tuple page and can avoid updating indexes, but it's still a write followed by marking the old tuple for deletion.


> Pg moves the data between positions on update?

I assume they typo'd "partitions" as "positions", and thus the GP comment was the correct reply.


Almost certainly not by default, certainly not in any of the http libs I have used


Long term you couldn't kill more than existed, asymptotically the maximum number of ODs per unit time would be exactly equal to the number created, impossible to be more.


By allowing fentanyl to kill so many so fast we might be (almost certainly are) selecting for those who are less susceptible for whatever reason (less susceptible to addition, less susceptible to even beginning to go down that road, more surrounded by loved ones willing to act, more biologically resistant to the killing effects of ODs, etc.).


Both can be true. I have specifically heard that shoe glue needs to be repeatedly compressed to be maintained or it will disintegrate. Anecdotally as well, I had a pair of quality, lightly used, but old, hiking boots that had the sole completely separate after a day of heavy use. The runber sole completely detached from the leather shell inner shoe. The crazy thing was that BOTH boots failed within 20 minutes of each other.


My friend also always runs multiple string lines through during construction. Later if a wire breaks or you want an additional cable or upgrade, you attach your new wire to a string and pull the string from the other end all the way through. If they had done this, they could have simply dragged a new fiber optic cable through.


You can pull the wire and second string together so you have always a single string in conduit.


That's awesome, but I feel like half the time most people aren't in the position to add requirements so a lot of shenanigans still happens, especially in big corps


I am satisfied when someone tells us we cannot change requirements, to get their acknowledgement that what we bring up does extract a specific trade-off, and their reason for accepting the trade-off, then recording it into design and operational documentation. The moment many people recognize this trade-off will be explicitly documented with their and their team's accountability in detail, is when you surface genuine trade-offs made with the debt to pay off in the future in mind and in the meantime a rationale to grant a ton of leeway to the team burdened with the externality going forward, and trade-offs made without understanding their externalities upon other teams (which happens a tremendous amount in large organizations).

Most of the time, people are just very reasonably and understandably focusing tightly on their lane and honestly had no idea of the externalities of their conclusions and decisions, and I'm happy to have experienced all those times a rebalancing of the trade-offs that everyone can accept and is grateful to have documented to justify spending the story points upon cleaning up later instead of working on new features while the externality debt's unwanted impact keeps piling up.

In fewer than a handful of times, I run into people deliberately, consciously with malice aforethought of the full externalities making trade-offs for the sake of expediently shifting burdens of of them without first consulting with partner teams they want to shift the burdens onto, simply so they can fatten their promo packet sooner at the expense of making other teams look worse. Getting these trade-offs documented about half the time makes them back down to a more reasonable trade-off, about half the time they don't back down but your team is now protected by explicit documentation and caveats upon the externality your team now has to carry, and 100% of the time my team and I put a ring fence upon all future interactions with that personality for at least the remaining duration of my gig.


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

Search: