Roman Liutikov

Roman Liutikov

@romanliutikov.com

software engineer @ margelo, ex @whimsical, ex @pitch https://romanliutikov.com/blog/

258 followers77 following71 posts

got React Context working across server and client components in my Clojure implementation of RSC while context is not supported in js implementations, in Clojure it aligns quite nicely with `binding` macro, so it would be a shame to not have this working across the boundary

Error boundaries have been supported in my implementation of server-side rendering almost from the beginning. Under the hood they are a try-catch, synchronously retrying the rendering with the captured error.

rebuilt this React Router demo with my Clojure port of RSC, still wip but lots of stuff already working uix-rsc-movies.fly.dev

uix-rsc-movies.fly.devUIx RSC DemoUIx RSC Demo page
Matt Brophy@brophdawg11.com

Check it out - RSC in React Router! Been working on this with @ebey.bsky.social and @markdalgleish.com for a little bit - pumped for folks to start playing with it! remix.run/blog/rsc-pre...

Roman Liutikov reposted

It was about time, wasn't it? 😅 👇 But now, with Firefox 138 all major browser engines support import attributes to import JSON from within your ECMAScript modules. 👇 ✅ Chromium: 123+ ✅ Safari: 17.2+ ✅ Firefox: 138+ (released 2w ago) PS. This syntax works in modern Node.js, too!

holy moly, o3 is able to decompile a pile of generated JS from cljs source back into perfectly readable and working program, with a single minor issue the code uses a bunch of macros that generate lots of code: 150 LOC of cljs comes out as 450 LOC in js gist.github.com/roman01la/6b...

gist.github.comOpenAI o3 decompiles JS generated from cljs sources back into ClojureScript codeOpenAI o3 decompiles JS generated from cljs sources back into ClojureScript code - decompiled.cljs

It’s funny how I stopped having any opinions on code when I realised I lost interest in software development. At this point it’s more of a skill, like wood working etc. that I’m able to apply when needed.

I've started doing more radio comms and UAV engineering recently and oh god I'm years ahead with an LLM buddy. My Google bubble is tailored towards programming, and it's really hard to find stuff in a different field.

Quite interesting that most of replies here say they are building purely client side web apps, no server rendering, while Vercel for example goes all in with ssr

Tanner Linsley@tannerlinsley.com

What kind of React app do you get paid to work on (not hobby projects)? - CSR, no SSR - Isomorphic SSR - RSC Again, if you don’t use React at a paid gig, don’t reply. If you maintain multiple, reply with the one that makes the most money (the product, not yourself)

Roman Liutikov reposted

@romanliutikov.com is on fire these past 2 months. Building react from clojure(script) has never been better I can't wait to add this to shipclojure

Roman Liutikov@romanliutikov.com

Well I didn't think I'd be so excited about this, but I just finished Clojure implementation of React's streaming SSR with Suspense for UIx, and it's beautiful. UI is instantly interactive and every incoming chunk of HTML gets picked up by React immediately, feel magical.

Well I didn't think I'd be so excited about this, but I just finished Clojure implementation of React's streaming SSR with Suspense for UIx, and it's beautiful. UI is instantly interactive and every incoming chunk of HTML gets picked up by React immediately, feel magical.

The best part is that I don't have to repeat React's pattern of throwing a promise in suspense boundary, instead I'm just running suspended UI in a separate thread. Which means that I can literally Thread/sleep in UI components, lmao

Wow, that’s a lot for a timeline app. When I was building pitch.com, the whole app was ~10MB uncompressed, that’s everything: editor, player, analytics, data sync, etc etc

pitch.comPresentation software for fast-moving teams | PitchPitch is presentation software that enables any team to quickly create sleek decks that get results. Sign up for free.
Alex Russell@infrequently.org

For the avoidance of doubt, that 2(.4)MB of JS is 2.4MB *compressed*. Unzipped it's more than 7MB. There are smaller dictionaries.

Finally tried Claude 3.5 Sonnet for actual coding. Never done any Swift before, VS Code experience is great. I was able to put together a prototype of a screen sharing app with annotations in about an hour 🤯

It’s crazy how LLMs made some tools obsolete. Some years ago I built a small JS to ClojureScript translator github.com/roman01la/ja... and today LLMs are doing much better job at translating from anything to anything, as long as a prompt is good enough

github.comGitHub - roman01la/javascript-to-clojurescript: JavaScript to ClojureScript translatorJavaScript to ClojureScript translator. Contribute to roman01la/javascript-to-clojurescript development by creating an account on GitHub.

You are up to date.