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

> seems like owning stock

Shadow Equity usually doesn't pay dividends. So if the stock devalues due to payed out dividends (and the shadow stock has no voting power), it's the creators paying out the investors from their share.


I have an extremely similar setup for my 3yr old. He has his NFC cards and select from stuff we find suitable. The TV comes on, one episode runs, TV goes off.

He's not fighting over the remote and he has agency. And he's certainly not stumbling his way through YouTube on a tablet. No ads. Very nice for him. It's not yet necessary to track his usage. But I'm well prepared for it.

Home Assistant works very well for these cases. I'm sad that Netflix&Co. do not publicize their urls/intents/etc. for smart TVs. I'd be happy to call an episode directly.

This setup therefore needs to run through my own media server and that's why I sometimes have to resort to pirate-y means, even though I have licenses to watch it.


> I'm sad that Netflix&Co. do not publicize their urls/intents/etc. for smart TVs. I'd be happy to call an episode directly.

That is an intentional marketing move. If you bypass the loading screen, you're also bypassing advertising for their content.

It's in Netflix's interest for you to be aware of their new releases or suggestions. They want you to see the loading screen.

The last thing they want is for you to start thinking that paying them is no longer worth the value.


> I'm sad that Netflix&Co. do not publicize their urls/intents/etc. for smart TVs. I'd be happy to call an episode directly.

I haven't really tried this myself, but this Stack Overflow question seems to have found a solution[0]. Since you're already using Home Assistant, you might want to check out the Google Cast integration[1] although Netflix doesn't currently seem to have a documented solution.

[0] https://stackoverflow.com/questions/18217559/launching-andro...

[1] https://www.home-assistant.io/integrations/cast/


This is a really cool project, but also way beyond the skills of an average person.

I don’t know If I am becoming old fashioned, but I feel things were simpler when I was a kid, we had DVD player and we would come over to a friends house and watch a movie. We even found someone’s porn collection!

I feel this issue is endemic through all of society - you have to spend more and more of your IQ points figuring out basic shit, and eventually it’s gets too much and you have no IQ points left to figure out big questions in life


We went back to DVDs for my kid, actually. My wife and I really like the idea of a hard start and end to a video (with no chance for algorithmic tendrils to reach you) and we like the idea of having to put in some amount of effort to start the video. It's on demand, but not as on demand as scrolling through a streaming service is.

I can't quite articulate why this feels like an improvement to me. Maybe it's because I have experienced decision paralysis on streaming services so many times.

Tons of DVD collections being given away for almost nothing on FB marketplace right now, too.


We often decide on things by process of elimination: it's easier for us to identify what we don't want than what we do.

If there are 5 choices available, the effort to decide on one is low as the contrast between choices is high … and holding all options in memory is easy.

If there are 1,000 choices, the effort is high and the contrast is low … and you can't hold them all in memory, so there's always _something_ right around the bend that _might_ be the perfect thing.


I ripped a lot of my kids' DVDs because far too many of them had unskippable ads before the title screen. They wouldn't even let you fast forward!

> I can't quite articulate why this feels like an improvement to me. Maybe it's because I have experienced decision paralysis on streaming services so many times.

Amazon recently changed their Android TV app such that it auto-plays previews if you leave a title selected for more than a few seconds. I hate this feature and it gives me both decision paralysis and anxiety over finding something interesting to watch before the preview starts. I'd sooner turn the TV off than deal with that. If the setting for this can be changed, it is not available in the app itself.


Is it not expected for people (or generations) to learn new things (and not learn obsolete things)?

My kids learned how to navigate Apple TV and the Apple TV remote at age 3 to go to Infuse or PBS kids app. And I tell them to turn off the TV after x episode of y time limit, and they know how to do that.


I think this ignores that marketing is essentially insidious. The goal is to get you to do more of x. We spend a lot of life building up the mental tools and energy and math skills to understand whether we actually want to do x or whether someone has simply suggested it very strongly.

Asking a 3 year old to develop that mental faculty just because we are a new generation learning new things feels incorrect.


> Is it not expected for people (or generations) to learn new things

If they are useful, and's an improvement, sure

But we just enshittified an experience that used to be good, and now have to ‘learn’ to cope with it


I beg to differ. I prefer being able to search and select and instantly watch whatever I (or the kids) want (due to high reliability of broadband internet), over transporting physical media back and forth from a store or library and putting it into a dedicated machine for it.

I specifically recall how annoying it was to change the input on a TV because for some reason, manufacturers didn’t put that button on TVs or all remotes.

If my 3 year olds can learn to navigate tvOS to the right app or infuse library and pick the Bluey episode they want, I feel like it’s a pretty good sign of things not being shitty.


> you have to spend more and more of your IQ points figuring out basic shit

I'm not sure that watching a movie on a streaming service requires more IQ points than watching it on a DVD.


I thought about that earlier today, I'm pretty sure it does.

Worst-case DVD experience: Step 1. Unbox TV and DVD Player Step 2. Plug scart cable from DVD player into TV. Step 3. Connect TV and DVD player to power, insert batteries in remotes. Step 4. Turn on DVD Player, TV, press "Source" a few times, the DVD player shows something. Step 5. Gander at some DVDs, decide which to watch. Step 6. Press Eject Step 7. Insert DVD Step 8. Press Eject Step 9. Press Play.

Now, assuming that electricity is provided, care to write down how to netflix? From the beginning, so we need to start by unboxing our very first computer, setting it up to the point where we can connect to the internet, also, we need an internet connection, oh, and some way to order that, so a phone.. Now, there will be a few steps before we reach to the point where we can create an email account, needed to even register for the streaming service.. Oh, something about credit cards too, and passwords for stuff?

Sure, you will think this is absurd, because all that stuff is "already in place" yeah, it is, for us, we set it up bit by bit, it's an enormous amount of infrastructure and different, disconnected concepts and services that is now REQUIRED before you can watch a movie..

I'll bet I can teach most 4 year olds to go from "empty living room with a power socket" to "watching dvd movies". You'll have a hard time convincing me you can teach them to go from empty living room with a power socket, to watching netflix before their next birthday or two :)


Hang on, but we already have a library of DVDs?! The main benefit of streaming and what makes it worth the effort is you have thousands of films available. You've just ignored that part. Yes, that is absurd.


Honestly, that time where I had HBO, Netflix and Disney+ at the same time, it still didn't feel like I had even 1000s available, getting them listed and sorted by something relevant (like year of release) was a pain, and it seemed like the same 6 orange-blue shaded poster appeared first in every category.


Providers pushing certain context (usually their own junk) is very frustrating, 100% agree. The 1000s of titles are available, just 95% of them are obscured. I use things like https://www.justwatch.com/uk?providers=amp,dnp,nfx&sort_by=i...


It does if you forgot your password and the service logged you out, again.


I, too, built almost the same thing for my kids. It plays music, using Spotify, Chromecast, and a whole lot of virtual duct-tape via HomeAssistant.

There is also an NFC tag that will turn off all the lights and turn on a disco ball :-).


Emergency Party Button strikes again! https://youtu.be/nZIfIzNW9xM


How did you get Spotify to play? Are you using an official Spotify client? Casting Spotify via code/home assistant somehow? When I tried to do something similar (was trying to run a cron job to cast a particular playlist from Spotify to play on my chromecast audio/speakers every morning) maybe 8 years ago I couldn’t figure out how. Maybe it’s easier now?


I am slowly preparing myself, but the usage tracking made me wonder. What are you planning to do?


So whenever the card is held to the reader a script starts and plays the media and shuts down the TV after the episode has run.

It's easy enough to measure the accumulated script runtime and disable the reader once a daily allowance has been reached. Though I am not a fan of an allowance like that.

Nevertheless, tracking the script runtime is easy enough. It's a family TV, but a private TV can easily be tracked via power consumption. Then you can track any usage and help managing consumption.


Do you have episode run time just baked into each script or does it track via some other HA event to know when to turn off?


As I only play a single media file every time the script waits for the player going from "playing" to "stopped".


> The TV comes on, one episode runs, TV goes off.

I'm curious how you track that? I don't have HA connected to plex yet, but I will. I suppose there might be an event when the 'track' changes?


I play the single media file. Once the player is in "idle" or "stopped" instead of "playing" or "paused" the TV is turned off.


Is there a product opportunity here? What are the risks?


Licensing.


Of what? I wouldn’t presume doing a Spotify here but linking to existing services or just your movie library. The movie poster art?


True is the identity of that particular monoid.

In other words: if you want all(a++b) == all(a) and all(b) to be true for all lists a,b, then then all([]) needs to be true.

Vice versa for any/or/False


An open API to replicate and automate the app functionality for backup locally is not incredibly much to ask for.

Nobody is asking for a free sync server.


Bingo, Boox support WebDAV or FTP file sync and it's a breeze to use. It pains me how much of modern tech doesn't support the very standards half of it's built on. All to moat users into their domain.


I agree with your point more generally but FTP, specifically, deserves to die.


I don't really understand the downvote, as cancelled trains do indeed not count towards the delay.

So often trains are cut short and do not reach their final destination, which is arguably even more inconvenient for the customers.


> which in my mind would have no problems skipping whatever "injected" ads show up since this is already what that application does

SponsorBlock contributors tag certain parts of the video where the video creators talk about sponsored products, or self-advertise. These timestamps are fixed, as the video creator uploads a single video for distribution.

If YouTube dynamically injects additional ads on a user-by-user or region-by-region basis, not only will these ads all have different lengths and timestamps, making SponsorBlock ineffective, but will also render existing tagged segments obsolete, as they are now offset by the length of any preceeding injected ads.


> will also render existing tagged segments obsolete, as they are now offset by the length of any preceeding injected ads.

By the same mechanic, it would also invalidate all the timestamps that people put in video descriptions and comments. Are you sure YouTube would do that?


As the article hints, youtube does know how long and at what positions the injected ads are. So they could use this information to skip to user-supplied timestamps correctly. The question then becomes, whether Adblockers could use this information to skip the ads.

It's a cat and mouse game.


> they could use this information to skip to user-supplied timestamps correctly

If that information is available, it can be gathered by adblockers to guesstimate how the video has been offset, and then you're back to square one.

If "clean" videos are still available (which they likely will be via youtube premium), you still have a reference of how the video should look, so you can start tagging suspicious sections as soon as they are categorically avoided by the youtube "timestamp fixer".

Sure, it will become harder as the frequency of mangled videos increase, worst case every single user will get their unique rendered video, but I think the performance hit on youtube would be immense, because AFAIK you cannot simply cut together separate video streams, even if they are aligned in encoding, resolution and everything beforehand, because it will break keyframes and create artifacts unless transcoded.

If the frequency is relatively low (say, one video per nation or US state) then adblock efforts can just adapt, the existing sponsorblock implementation could probably still work with some modifications.


> The question then becomes, whether Adblockers could use this information to skip the ads. It's a cat and mouse game.

I wouldn't call it a cat and mouse game because there is nothing from a technical point of view that prevents adblockers to use this information to skip ads. Unless YouTube gets completely rid of the concept of timestamps for their videos, they will always lose this battle.


They could make the timestamp conversion very Server-Side or create a very unwieldy API where it's difficult to collect all ad segments via timestamp sampling.


10 years ago I implemented a brainfuck interpreter that had as output an animated povray scene description with a visualisation of the brainfuck abstract machine. https://www.youtube.com/watch?v=6PIZTFrkl0w


Neat video. With some subtext to explain what the different "subthings" are for in brainfuck to stage and then do become "multiply" would make it even more "bro!"ish :-)

I also spotted your openxcom play from 6 years ago and must confess that I am playing it these days!


bro...


> load the entire game tree, and walk randomly through it

Can't you just multiply all the percentages and just get an expected value for each field? Why the random walk? Can't you just calculate this exhaustively?


I was thinking the same ø, but does it work with the neutral field and changing players in the mix?


I mean there will be non-zero chance that the game could go on forever.


Read the article, my friend. Then you'll see what is so magical about the random walk algorithm - namely, it is easier to implement then other tree evaluation algorithms!

Of course, you can use a number of algorithms to calculate the value, and if you beat me to the punch and it's correct, how about this I'll buy you a burger. But which specific algorithm are you proposing, and where is its pseudocode and correctness proof?

And is it simpler? If so I'll implement that instead of the random walk!

I picked the random walk algorithm because it is much easier to implement than any other game tree evaluation algorithm I know.


> I challenge you to come up with a single plausible example

So I come from academia, but generally if you use a natural key as PK in a foreign key constraint it may be possible to express additional consistency criteria as CHECK-constraints in the referencing table.

So this is a bad example, but say you have Name and Birthdate as your PK, and you have a second table where you have certain special offers sold to your customers and there is this special offer just for Virgos and Pisces, you could enforce that the birth date matches this special offer. Some modern systems also technically allow FK on alternate keys, so you could still do it that way, but database theory often ignores that.

But second, while I agree that surrogate keys are often a good idea, I find your argument, that you must design for every conceivable change, not convincing.


> Some modern systems also technically allow FK on alternate keys

As far as I can tell, all modern systems allow it, as it is part of the SQL standard that foreign keys can be either primary keys or unique indexes. Here's a brief quotation from a copy of ISO/IEC 9075-2:1999 (not the latest version) that I randomly found online:

> If the <referenced table and columns> specifies a <reference column list>, then the set of <column name>s contained in that <reference column list> shall be equal to the set of <column name>s contained in the <unique column list> of a unique constraint of the referenced table.

So it mentions unique constraints first. Then afterward it says:

> If the <referenced table and columns> does not specify a <reference column list>, then the table descriptor of the referenced table shall include a unique constraint that specifies PRIMARY KEY.

If I'm reading this right, it means that in the base case, where you specify the column to reference, it can be any unique constraint, where a primary key is just another possible unique constraint (as all primary keys are by definition unique). And only if you don't specify the fields to reference does it then fall back to the primary key instead of a named unique constraint.

I'm not disagreeing with you entirely - it's true that often there's an assumption in database theory that primary keys are natural and foreign keys are primary keys. But this isn't a hard requirement in practice or in theory, and it partly depends on the foreign key's purpose, why you need it in the first place. This StackOverflow answer also explains it well: https://softwareengineering.stackexchange.com/a/254566

I should add that there is also a set of database design wisdom that suggests you should never use database constraints such as foreign keys, only app/api constraints, but that's a whole different tangent.


> I should add that there is also a set of database design wisdom that suggests you should never use database constraints such as foreign keys, only app/api constraints, but that's a whole different tangent.

That’s less a DB design thought and more of a “devs with little formal training in RDBMS who only want to use it as a dumb store” thought.

Use the DB to its strengths. CHECK constraints add an infinitesimal amount of overhead for writes, and guarantee that there will never be invalid data written. A bad code change could allow, however briefly, for that to occur.


Another example is where you use a service that provides you with a stable id. It makes little sense to add a surrogate id and a fk on that surrogate id. It violates data quality and integrity just for a hypothetical situation.

Data integrity/quality matters. Adding friction to prevent accidents also matters. I don't want something accidentally and trivially updating a field that's used to reference thing externally.

Something about the nat key is about to change? Fine, we can write migrations. Even if it affects millions of rows, it's not a big deal.

I understand people have been burnt by bad design decisions involving nat keys, but they're not some devil's key everyone here dogmatically makes them out to be. You can mess up using anything.


> a service that provides you with a stable id

I think there's the important point. Is your key actually natural or is it someone else's surrogate key anyway? Going back to the vehicle identification number: that's already a surrogate key. You just did not assign it yourself.


A VIN is not a surrogate key. A surrogate key must, by definition, have no semantic meaning, and not be composed of parts from multiple domains (among other requirements).

A VIN encodes the following:

* Country of origin

* Manufacturer

* Vehicle type

* Vehicle model

* Engine type

* Transmission type

* Model year

* Manufacturing plant

* Serial number


> It makes little sense to add a surrogate id and a fk on that surrogate id. It violates data quality and integrity just for a hypothetical situation.

I would still almost always use an internal artificial key on top of the external id. If you want to enforce data integrity, you can still enforce uniqueness on the external id. "Stability" of an external identifier is almost always an assumption and one that I've seen fail enough times to want that internal id by default.


"for every conceivable change".

That is not what he is arguing at all. He is showing that there are very many highly plausible changes that are problematic with natural keys. And he totally correct about that. Frankly, the fact that a post arguing for natural keys makes it the top of an HN comment thread is extremely weird. The original article is correct that natural keys are bad.


Why does anything need to be a primary key anywhere in order to enforce some constraint? At least from ORMs I know I can set for example any group of attributes unique. Other constraints can be implemented in some general method that is called when persisting in the actual database. Even if no ORM, you can write a wrapper around your persisting procedure.


It doesn’t, you’re right. However, indexes aren’t free, so if your data is such that a natural PK (composite or otherwise) makes sense, you’ll save RAM. Also, for clustering RDBMS like MySQL, data is stored around the PK, so you can get some locality boosts depending on query patterns.


> At least from ORMs I know I can set for example any group of attributes unique

Just in case, ORMs send DDL statements with uniqueness constraints to the DBMS, they don't do any magic here.


As I see it, we haven't really made any progress in terms of impedance mismatch.

Otherwise, jooq is a fine addition to the Java world, as it generates a type-safe DSL from your ddl file where every statically correct jooq/Java statement is also a statically correct SQL query.


I see it differently. In the 25 years I've been working in this industry I see a welcome trend toward doing more in the database, such that the impedance mismatch dissipates. This is from a low-water mark 20 years ago or so, when most Java developers I knew kept the database at arm's length, insisting it met them on their terms rather than the other way around.

https://gist.github.com/cpursley/c8fb81fe8a7e5df038158bdfe0f...

https://supabase.com/

One way to eliminate the Java-SQL impedance (for example) mismatch is to delete Java altogether, along with JOOQ, Hibernate, and Spring (for example).


I think more code in the database could work but then the database should have better programming languages. The current SQL dialects are terrible for writing regular code.


That's a matter of taste. I find most of the business logic I need to express involves finding and transforming relational data, a task to which SQL is better suited than any general purpose programming language. Often, SQL is all that's needed. Less often, I have to resort to PLpgSQL, PL/SQL, or T-SQL. When that happens, it's not that bad.


Consider applying for YC's W25 batch! Applications are open till Nov 12.

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

Search: