![](/static/253f0d9b/assets/icons/icon-96x96.png)
My mum would iron everything. Then I moved out a few years ago. I still do not own a clothes iron.
My mum would iron everything. Then I moved out a few years ago. I still do not own a clothes iron.
It’s certainly simpler than Forza et al, but there’s an open-source racing simulator, called Speed Dreams: https://www.speed-dreams.net/
If you watch the “Latest Release” video, there’s some engine sounds in that.
They seem to have a bunch of samples for how different car models’ engines sound: https://sourceforge.net/p/speed-dreams/code/HEAD/tree/tags/2.3.0/data/data/sound/
And then they modulate that in code, based on the car’s speed, gear, turbo etc.:
https://sourceforge.net/p/speed-dreams/code/HEAD/tree/tags/2.3.0/src/modules/sound/snddefault/CarSoundData.cpp#l171
They also do that for gear changes, tyre sounds, collisions and backfires.
From what I know about audio, I would expect AAA games to still use the same approach of recordings+modulations.
While it is possible to fully synthesize an engine sound, it doesn’t help you much with making it sound right in all different situations.
We’ve been using Leptos at work, which is a similar framework (and probably shares half the stack with Dioxus).
And yeah, it’s really good. My favorite thing about using Rust for the UI is algebraic data types.
So, in Rust when you call a function which can fail, there isn’t an exception being thrown, but rather you get a Result
-type as return value.
This Result
can either contain an Ok
with the actual return value inside. Or it can contain an Err
with an error message inside.
So, in your UI code, you just hand this Result
all the way to your display code and there you either display the value or you display the error.
No more uninitialized variables, no more separate booleans to indicate that the variable is uninitialized, no more unreadable multi-line ternaries.
It just becomes so much simpler to load something from the backend and display it, which is kind of important in frontend code.
It’s not a dual-language platform, though. You write the backend and the frontend in Rust. The frontend code is compiled to WASM to serve it to the browser.
Excuse me, Windows is the cheap copy of KDE.
I actually even made my own bullshit-Spotify. As in, I’ve got a server running on a single-board computer which reads my music folder and serves a small music player as a webpage.
I didn’t want to install a music player client on my work laptop, but still wanted to listen to my own songs there.
I mean, I doubt the Windows support is particularly solid here either. Using shell commands to formulate tasks will never be great for Windows, because the shell ecosystem is simply Linux.
Your comment is perhaps a bit confusing without a link: https://just.systems/man/en/
There’s not exactly a dichotomy there…
But that is what I mean with it needing an extension of the language.
So, I’m not saying you could just build a library that calls existing PHP functions to make it all work. Rather I’m saying there’s certain machine code instructions, which just cannot be expressed in PHP. And we need those machine code instructions for actually managing memory. So, I am talking about reading/writing to memory not being possible, unless we resort to horrible hacks.
Since we are building our own compiler anyways, we could add our own function-stubs and tell our compiler to translate them to those missing machine code instructions. But then that is a superset of PHP. It wouldn’t be possible in PHP itself.
Again, I’m not entirely sure about the above, but my web search skills couldn’t uncover any way to actually just read from a memory address in PHP.
I mean, I’m a bit out of my water there, both in terms of the featureset of PHP and what’s actually needed for a kernel, but I’m still gonna go with no.
For one, PHP uses reference counting + garbage collection for memory management. That’s normally done by the language runtime, which you won’t have when running baremetal.
Maybe you could implement a kernel, which does as few allocations as possible (generally a good idea for a kernel, but no idea, if it’s possible with PHP), and then basically just let it memory leak until everything crashes.
Then again, the kernel is responsible for making processes crash when they have a memory leak. Presumably, our PHP kernel would just start overwriting data from running processes and eventually overwrite itself in memory(?). Either way, it would be horrendous.
Maybe you could also try to implement some basic reference counting into your own PHP code, so that your own code keeps track of how often you’ve used an object in your own code. Certainly doesn’t sound like fun, though.
Well, and secondly, I imagine, you’d also still need an extension of the language, to be able to address actual memory locations and do various operations with them.
I know from Rust, that they’ve got specific functions in the stdlib for that, see for example: https://doc.rust-lang.org/stable/std/ptr/index.html#functions
Presumably, PHP does not have such functions, because its users aren’t normally concerned with that.
How? You’d need to compile it down to machine code somehow, for the processor to have any clue how to run it. And you’d need some custom library with custom compile instructions, to be able to control memory allocations, memory addresses etc…
I did a quick search and found two operating systems written in JS, both of which cop out when it comes to the kernel. Did you maybe mix it up with those?
Good thing that this isn’t actually possible…
Google isn’t exactly excited about the concept of local files. They would prefer you to keep everything in their online services.
If you need support for these, then installing a separate file manager app is your best bet.
I’m using this one:
https://f-droid.org/packages/me.zhanghai.android.files/
(No idea, though, if it supports unpacking RAR archives.)
I mean, presumably there’s a microcontroller in this radio. For programming that, your only real mainstream choices are C, C++ and Rust, since you can’t have a language runtime without a filesystem.
But yeah, it’s neither the case that Rust is overwhelmingly popular for that (C/C++ do stick around still), nor is it the only discipline where Rust shines.
I still haven’t released anything which is not under the AGPLv3 license, which is even more aggressive than the GPL, primarily because I know that it’s prohibited to use AGPL-licensed software/libraries at Google.
I’m also hoping that because my stuff is on Codeberg, not GitHub, that its license hasn’t been laundered yet by some criminal AI company, but I don’t actually believe so. Certainly makes me more reluctant to publish my code.
I also switched from cursive to print for legibility.
I always found cursive terrible to read. Letters are more likely to look the same and it’s harder to tell where one letter stops and the next starts. I also read print all day, so I’m just more used to reading it.
We use this framework at work: https://leptos.dev
For others wondering what’s wrong with UUIDv4:
I guess, this means with these new UUIDs, ideally you only create UUIDs on systems that are hooked up to NTP, though I guess, it won’t really be worse than UUIDv4 either way.