Having some fun time playing with react-reconciler. Not sure if this idea will come to fruition, but I'm hoping to at least get it into a demo-able shape.
I don't know if I have energy or desire to finish it given the limitations (I realized really late that you can't marshal ReactSyntheticEvent), but it was super fun!
The demo looks a bit plain, but all the fun stuff happens under the hood. The UI is translated to real DOM nodes in the renderer (UI process of Electron), but the state (callbacks, count) is actually managed by the main process (aka backend of Electron).
My extended goal with this exercise was to do something like Server-Side Rendering between Electron's Main and Renderer processes. For that to be complete I would need to introduce some sort of boundary class that would let me wrap the components on the server-side (main process), and let client-side (renderer process) actually hydrate them.
I might give it a go a bit later, but I'm quite satisfied with what I got so far!
Aha! It was actually easier than I thought and I managed to do a simplified version that doesn't yet support syntactic sugar of 'use client’. Check this demo out!
The red area is pre-rendered in the main process (server), and the green one is a client component that lives in the renderer process (client). The most important bit is that the main process state (useState and such) is preserved on the refresh, while the renderer process starts afresh!
Here is the component's source. As advertised the boundary between client/server components is a bit raw, but that can be polished away given further interest!
Protip. Don't use #electron for your apps if you rely on secure communication. And especially don't leave the developer tools on, or store Auth tokens in plaintext.
So, I finally got my Framework Laptop. A day early, too! Beautiful machine, I must say. I put the RAM and SSD in, followed the instructions and I made my choice of operating system.
I hesitated a lot between @fedora and Elementary, but in the end, I went with Fedora because it was recommended and I love @gnome. When @elementary 8 releases, I'll make sure to check it out, though.
Battery life has been surprisingly good! I've done a lot of things on it today, lots of downloading, opening and closing stuff, with constant downloading and music streaming in the background. I've been losing around 10% per hour.
Honestly, it's all good hardware side. I'm still not a fan of the keyboard which could be a deal breaker as this is the one thing that I'm stupidly picky with, but I think I just need to get used to it.
My issues are more with the software and on that, there isn't much the @frameworkcomputer team can do.
First off, the animations in GNOME just aren't smooth and I can't seem to figure out why, I'm never getting that buttery smooth 60 fps scrolling, for exemple. But I can deal with this.
No, my two big gripes for now, are : Scrolling speed. I've looked it up and I found people complaining about of a simple "scroll speed" adjuster in GNOME for years. It's a massive issue right now, scrolling is just ridiculously sensitive and because I'm not a very technical person, I haven't been able to figure out how to fix it. :(
Another thing is... what's up with #electron apps? I use three. Notesnook, Cider 2 for Apple Music and #Signal. All three look blurry.
Notesnook takes it one step further by being especially weird at this. I used two versions of the app. The Flatpak. And the Appimage. Both have their own annoyances. The flatpak is crisp af, I love it, BUT... it's header is light theme only, not following the theme of GNOME and the mouse cursor gets either huge or tiny when using it. The Appimage though, follows the theme correctly, has normal size cursor... but is a blurry mess.
@notesnook Is this something you can fix? Or is this just out of your control?
It's my understanding that Electron apps and Wayland are not into each other? I hope they accept one another soon and kiss, because this is really bothering me. And I hate that I don't know how to contribute to this, so I'm sitting here. Complaining. While not contributing anything. Like an asshole. :(
Google provides a tool called PageSpeed Insights which gives a website some metrics to assess how well it is put together and how fast it loads. There are a lot of technical details but in general green scores are good, orange not great and red is bad.
I tried to ensure the tests were similar for each platform by choosing a page that shows a list of posts, like https://mastodon.social/explore.
The rest don’t seem to have prioritized performance or chose a software architecture that cannot be made to perform well on these metrics. It will be very interesting to see how that affects the cost of running large instances and the longevity of the platforms. Time will tell.
🚀 Missions réussies pour Rocket Lab et son lanceur #Electron : 4 satellites Skylark pour la surveillance spatiale ont été placés sur orbite basse et le premier étage a été récupéré dans la mer après descente sous parachute
📷 Rocket Lab
📢 Mercredi, jour de lancement
🚀 #Electron - tentative de récupération du premier étage après descente sous parachute et amerrissage
🛰 “Four Of A Kind”, 4 satellites Skylark de Spire pour la surveillance des débris spatiaux
⏰ 6h15 UTC
🌎 Péninsule de Mahia, Nouvelle-Zélande
📷 Rocket Lab
📺 https://www.youtube.com/watch?v=NDyxRPGWhRo
📢 Dimanche, jour de lancement
🚀 #Electron - tentative de récupération du premier étage après descente sous parachute et amerrissage
🛰 “Four Of A Kind”, 4 satellites Skylark de Spire pour la surveillance des débris spatiaux
⏰ 6h15 UTC
🌎 Péninsule de Mahia, Nouvelle-Zélande
📷 Rocket Lab
📺 https://youtu.be/iLwTLqaCnQ8
The amount of security holes in the software that we use every day is depressing, just this month I had to update Chromium four times in order to fix a total of 19 vulnerabilities.
@berto ya, but it seems like they are often the worst offenders. And it doesn't help when there are things like #Electron... which lets a full web browser go around masquerading as things like a chat client, text editor, etc.
So every app using it has all of #Electron’s disadvantages:
• lowest-common-denominator #GUI obviously foreign to the host OS
• non-portable shims to integrate with host OS features
• an individually bespoke runtime consuming storage, memory, and compute as if it were a separate virtual machine