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

> I don't think Spotify makes much, if any, money

per their financial statements, about 150Mio in operating profits per quarter. Gross profit of 1.000Mio per quarter.

I'd like to have that kind of "not much money"


besides altitude: you'd just need to know the time which the GPS signals give you. From there it's just calculating rotations.


> we have consensus

It's decidable whether a TRS is confluent, i.e. if a fixpoint exists, exactly one fixpoint exists. Or what do you mean?


i don't know what you're trying to say. i'm saying that "all" the rewrite rules don't matter, only the "interesting" ones matter but interesting is related to opinion/taste/cost.


rewriting rules are more like function/predicate definitions in FP or LP and not like axioms. Term rewriting does have its own axioms, like ZFC does.

What you're saying is akin to "not all functions are interesting". Well, yes...

But that's true for any model of computation.


There are many useful things that are not turing complete and still considered programming.

Regular Excel formulas are always terminating and therefore not computationally complete.

SQL without recursive CTEs is always terminating and therefore not computationally complete.

Simply typed lambda calculus is always terminating and therefore not computationally complete.

It's not the same, but restriction to terminating subsets gives very nice guarantees for a lot of program properties that would otherwise be undecidable.


I don't have any problems with calling it programming even if it's not Turing complete. But I think it's nice to clarify, so I can understand where it is in the expressivity-landscape.

Maybe it's obvious for the intended audience, given the mention of Datalog? But I suspect a lot of compsci people know of Prolog, and know about SAT(and similar) solvers, but don't really know how e.g Datalog places.


Embedding functionality into strings prevents any kind of static analysis. The same issue as embedding plain SQL, plain regexes, etc..

I am always in favor of declarative approaches where applicable. But whenever they are embedded in this way, you get this static analysis barrier and a possible mismatch between the imperative and declarative code, where you change a return type or field declaratively and it doesn't come up as an error in the surrounding code.

A positive example is VerbalExpressions in Java, which only allow expressing valid regular expressions and every invalid regular expression is inexpressible in valid java code. Jooq is another example, which makes incorrect (even incorrectly typed) SQL code inexpressible in Java.

I know python is a bit different, as there is no extensive static analysis in the compiler, but we do indeed have a lot of static analysis tools for python that could be valuable. A statically type-safe query is a wonderful thing for safety and maintainability and we do have good type-checkers for python.


I disagree. You'll be surprised to hear this, but source code... is just a very big string...

If you can run static analysis on that you can run static analysis on string literals. Much like how C will give you warnings for mismatched printf arguments.


You might be surprised to hear that most compilers and static analysis tools in general do not inspect (string and other) literals, while they do indeed inspect all the other parts and structure of the abstract syntax tree.


I know, but that's the point, if you can get a string into an AST you can just do the same thing with the string literals. It's not magic.


This is one of those ideas that I've seen kicking around for at least a decade now, but manifesting it in real code is easier said than done. And that isn't even the real challenge, the real challeng is keeping it working over time.

I've seen some stuff based on treesitter that seems to be prompting a revival of the idea, but it still has fundamental issues, e.g., if I'm embedding in python:

    sql = "SELECT * FROM table "
    if arbitrarilyComplicatedCondition:
        sql += "INNER JOIN a AS joined ON table.thing = a.id "
    else:
        sql += "INNER JOIN b AS joined ON table.thing = b.id "
    sql += "WHERE joined.
and if you imagine trying to write something to autocomplete at the point I leave off, you're fundamentally stuck on not knowing which table to autocomplete with. It doesn't matter what tech you swing at the problem, since trying to analyze "arbitrarilyComplicatedCondition" is basically Turing Complete (which I will prove by vigorous handwave here because turning that into a really solid statement would be much larger than this entire post, but, it can be done). And that's just a simple and quick example, it's not just "autocomplete", it's any analysis you may want to do on the embedded content.

This is just a simple example; they get arbitrarily complicated, quickly. This is one of those things that when you think of the simple case it seems so easy but when you try to bring it into the real world it immediately explodes with all the complexity your mind's eye was ignoring.


Not in the standard language functions. If you wanted to achieve this, you have to write your own parser. That parser is, by definition, not the language parser, adding a level of difficulty to proving any correctness of your program.

There's a reason the term "stringly-typed" is used as a criticism of a language.


You can't get an arbitrary string into an AST, only ones that can be at parsed correctly. Rejecting the invalid strings that wouldn't make sense to do analysis on is pretty much the same thing that the parent comment is saying to do with regexes, SQL, etc., just as part of the existing compilation that's happening via the type system rather than at runtime.


Everything can be abstracted away using specialized objects, which can allow for better checking. The Python AST itself is just specialized objects, and it can be extended (but of course with much more work, esp in the analysis tools). There's also this very ingenious - IMO - monstrosity: https://pydong.org/posts/PythonsPreprocessor/. Pick your poison.


Could this be mitigated by using `dict()` instead of the `{}` literal, and then running an analysis to ensure the provided dictionary keys all end with valid operations? E.g, __contains, __lt, etc?

I don't have a strong background in static analysis.


I love how PonyORM does this for SQL: it’s just Puthon `x for x in ... if ...`.

Of course, if you use the same syntax for Python lists of dicts, you don’t need any library at all.


If your schema is dynamic, in most languages there isn't much you can do, but at least in python

   Q(name=contains('k')) 
it is not particularly more complex to write and certainly more composable, extensible and checkable.

Alternatively go full eval and do

   Q("'k' in name")


> 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.


Join us for AI Startup School this June 16-17 in San Francisco!

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

Search: