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