📕 subnode [[@jakeisnt/2023 06 04]] in 📚 node [[2023-06-04]]
  • Sunday, 06/04/2023 ** 11:53 Website is almost there. Finishing a project feels so good. Once the build system and hot reloading is complete, I'll be able to seamlessly write content. After that, I'll start working on images and ways to feature my photo portfolio... maybe the project won't ever end.

Clojure really isn't useful here though. Fun but bad decision. JVM has slow start and doesn't really matter - we don't need to run cross-platform and the libraries we would use for that are implemented in many other languages. Should have used javascript - code would have run much faster. Clojure lost because it wasn't useful on the web.

Also, the stack traces are terrible... (I can't see any sort of program trace within my code? No syntax highlighting? What's up with that?). I'll wrap this project up but I'm feeling a strong rewrite it inclination. ** 13:45 Depending on a file means a few things things:

  • You want as much semantic information about that file as possible at compile time
  • You need to use information from the that file to build this one
  • You want to ensure that everything that that file needs is taken care of

Solution:

  • imports must be named
  • Build scripts return File objects, not write to disk
  • Pass a single argument to build scripts; it's an object that contains all of the named imports

This means that if you depend on any file, you'll have the information about what you need to make your current component run at any time. You'll know what you have to build in order to make that component work. References to that component will have a real, semantic connection to the component itself.

This also allows the file to be interpreted in different ways! I can assemble a list of imports dynamically, then use an interpreter to resolve them. I can use a compiler to set up everything statically. I can make 'meta-components' that transform other components to augment them in clear ways. Good solution. ** 14:01 Watched some tiktoks (reels lol) this morning. Really clever tricks with the soundtrack - some reels through subtle discord, snapchat, iMessage, etc... sounds on in the background to stimulate attention. Really devious strategy. I'm kind of afraid of watching these things now. ** 14:41 For the site - need a way to figure out remote dependencies! Both at access time and at build time. These are network requests. (:type network? :type https? something like that.)

(Live dependencies would be really cool...) ** 19:46

https://www.youtube.com/watch?v=Xa_fNuaSE_I: A good test for cross-platform software - would a top company rely on that software to build beautiful products? React Native, Flutter, QT, Xamarin...

The answer is no because there are so many stopgaps and edge cases between platfomrs that have to be healed over. That cross-platform challenge is so incredibly difficult. The APIs are just too high-level to build technology that interoperates! ** 20:28 No GC is necessary for fluid UI. A single GC pause in the wrong place can kill a fluid animation. This is why Apple is behind Swift - and why Swift apps feel so much more fluid than other web tools, even Java - Swift apps have fine-grained control over their memory, which allows them to make UI animations feel incredibly polished. Brilliant!

📖 stoas
⥱ context