1,112 karma · joined May 14, 2016
It's not that hard: Do not rely on your agent to behave when it comes to security, ever. Do not trust your agent to not access your files. Do not trust your agent to not drop your tables.
Just treat it as untrusted software: sandbox it. It takes some effort, but really, just sandbox it. Always.
They're eating the code. They're eating the algorithms.
Assuming your flash allows XIP (execute in place) so all that memory is available for your lua interpreter data, you should at least be able to run some code, but don't expect to run any heavy full applications on that. I don't know Berry but it sounds like a better fit for the scale of your device.
But sure, why not give it a try: Lua is usually easy to port to whatever platform, so just spin it up and see how it works for you!
All of these products are still alive today, actively supported and making my customers good money.
Some things come very natural to Lua: Lua <=> C interfacing is a breeze, and while some modern languages are still struggling to figure out how to do proper async, Lua has been able to do this for decades. The language itself is minimal and simple but surprisingly powerful - a few smart constructs like coroutines, closures and metatables allow for a lot of different paradigms.
For new projects at this scale, I would still choose Lua + C/C++ as my stack. Over the last few years I have been visiting other ecosystems to see what I'm missing out on (Elixir, Rust, Nim), and while I learned to love all of those, I found none of them as powerful, low-friction and flexible as Lua.
> Work with only 3 files [...] Boot in under 5 seconds [...] Use commands without spaces [...] Run CPU opcodes natively [...] Be real
I have a little PCB here on my desk that runs linux with 2 files: vmlinux and busybox. It boots in about two seconds and yes, it runs CPU opcodes natively.
I'm not sure how being able to use commands without spaces or running in real mode is considered better or worse than the alternatives.
When the number of frequencies/bins grows, it is computationally much cheaper to use the well known FFT algorithm instead, at the price of needing to handle input data by blocks instead of "streaming".
Not sure if I agree with this. A proper designed DSL has the advantage of being much closer to the domain of the problem it is supposed to solve. Your code written in the DSL now might end up as 'hard coded' part of the application, but it likely conveys much more meaning in much less code because it is tailored to the core functionality of the application.
Sure, I own a smartphone, it runs just plain android but without any google accounts or services because I do not agree to Googles terms of services. I never did, and as an European citizen especially with recent developments I feel that has been the right choice.
The thing is, without google account there is no play store, and without play store I am not able to install the majority of apps - no banking, no parking, and all the other services people complain about in these threads.
This is my choice, and I stick to it. I'm also pretty vocal about it and complain when needed. Doctors office informs me I only can get medicine with the app? Apparently they can make exceptions when you complain, because I'm allowed to get medicine with a simple phone call. My bank tried to force me to use their app, but apparently they still do have an alternative login method when you complain. Sure, I know it's a fight I will lose in the long run, but I enjoy it while it lasts.
MY_GPIO.borrow(cs).borrow().as_ref().unwrap().odr.modify(|_, w| w.odr1().set_bit());
The good thing is that you do not require a new language.
So how is this different from digital logic synthesis for CPLD/FPGA or chip design we have been doing over the last decades?
"Back in the olden days", if your product was slow but the number of CPUs was fixed (or could not be increased instantly), the solution was to go and fix your code.
Basic system level skills are now no longer taught or practiced at the appropriate levels, so teams end up without engineers who actually know how to profile and optimize.
The cloud providers are the big winners here.