News for hackers. Stuff that matters.
Re:Launch HN: Pynecone (YC W23) – Web Apps in Pure Python by picklelo on Tuesday March 14, 2023 @05:21AM (#35149000)
The state is updated through Python functions that are run on the server, so the state needs to be on the server
Re:Launch HN: Pynecone (YC W23) – Web Apps in Pure Python by shafyy on Tuesday March 14, 2023 @06:24AM (#35149430)
Why don't you just transpile the frontend Python code to JS at build time and just have normal HMTL/JS/CSS in the final deployed web app with a Python backend?

You've mentioned no-code tools. For a client, I had to work with the no-code tool Bubble a lot. They do something similar, where the front-end is not built statically but dynamically and uses WebSockets to communicate with the back-end. I don't think this is a good idea (and that's why Bubble is also trying to switch to static pages now, but you can imagine what it takes to do that once you reach a certain size).

Re:Launch HN: Pynecone (YC W23) – Web Apps in Pure Python by shrimpx on Thursday March 16, 2023 @12:38AM (#35178189)
> front-end is not built statically

In fact the Pynecone frontend is built statically. But UI event handlers are run on the backend. The latency scenario is identical to if you used HTMX or Hotwire or a traditional web server. You click, it gets posted to the backend, an output comes back and is rendered.

The click counter thing is contrived and maybe Pynecone should have avoided centering on that, since the users they're targeting for sure don't care about frontend-only click counters.

Re:Launch HN: Pynecone (YC W23) – Web Apps in Pure Python by just-tom on Thursday March 16, 2023 @03:27AM (#35179179)
Is it possible to take the optimistic approach and update the UI before getting response from the back end? Obviously for simple things, like counters, that need an immediate update to the UI.
Re:Launch HN: Pynecone (YC W23) – Web Apps in Pure Python by shrimpx on Thursday March 16, 2023 @06:56AM (#35180348)
You could designate some handlers to be “frontend-only” and then compile them to wasm or js and run them in the browser. There might be usability/ergonomics issues with having “special” functions that don’t really work like normal ones.