i_am_ralpht
Joined 12 years ago
Joined 12 years ago
vehicle.software is creating a new infotainment platform to redefine the in-car experience. We are focused on bringing excellent user experience to electric vehicles: beautiful visualizations, deep integration of connected services, and continuous improvements via regular software updates. Over the last decade, our team led development of Tesla's award-winning car software, widely adopted smartphone system software, and more. We are based in Palo Alto, California, and our customers are established car companies all over the world.
We are super excited to be using Rust, and we are hiring software engineers, for more details please visit https://vehicle.software/careers/
Thanks for such a clear write-up and all the links.
Virtual DOM is (typically) a pure JavaScript object-based DOM representation that gets somehow flushed to actual DOM (or to WebGL or anything else). You as the programmer use the Virtual DOM directly and try to avoid talking to the real DOM underneath. Virtual DOM has a few advantages, but the one that stands out in today's browsers is limiting DOM thrashing where you query the DOM (requiring an expensive recalc) and then modify the DOM (invalidating what was recalc'd) in a loop.
Regarding your point on declarative vs imperative I think it depends on your pain threshold--you can't accomplish everything you want with CSS layout, but that doesn't mean not very useful. Crucially CSS has the escape hatches that you need to go and do your own layout if you need to (the escape hatches in CSS aren't very good, IMO, but they're there).
So I do believe that this work could be broadly useful. I frequently use apps where the panels don't incorporate momentum properly, or the motion feels disconnected from my actions.
If I were to build on this work, then I'd want to create a system where it's easier to do something pretty good than not, but you can still escape and grab full imperative control if you need to.
https://github.com/iamralpht/iamralpht.github.io/tree/master...
I will do some proper documentation and package Slalom up as a library in the future.
As I mentioned, this work was borne out of my frustration from writing a bunch of touch handlers (taking days/weeks for the tricky ones, to get all the weird wobbles out, and do the right thing with momentum in pagers, etc). I could have saved a bunch of time if I'd had something like this earlier! :).
Your comment reads a bit like "we cargo-culted the things we could see in the Smalltalk environment, but didn't understand the underlying philosophy or elegance of what had been made; what's left to learn?" (I know that's probably not what you meant, but I feel like there's a lot left to learn from Smalltalk and the tools that were built with it).
[1]: http://en.wikipedia.org/wiki/ThingLab (see link 4 for the video; it's really fun to watch).
Also check out: https://github.com/cdglabs/thinglab -- there's a link to a St-78 image with ThingLab. Also interesting to note proportional fonts, text selection (by Larry Tesler) and popup menus, all of which I thought came later...
Intel used a silicon interposer to support a large amount of eDRAM in the recent IRIS graphics chips. It'd be amazing to have an ultra wide memory bus on mobile silicon...