savethekiddes / rapydframework

The easy way for client development
2 stars 0 forks source link

Hello and greetings! I came accross your repo and projects and now I'm in awe... I exactly did the same thing that you do and I want to share what I have been learning this years #1

Closed rafi16jan closed 1 year ago

rafi16jan commented 1 year ago

Hello @andrealicheri! Your project and works bring nostalgia for me, I did exactly the same thing. I didn't know JS and it's a nightmare for me at that time learning about it (at that time ES6 is experimental so instead developer use ES5) and RapydScript is a gateway for me to get a grasp of JS and eventually mastering it.

It's been a long way, I've build a framework at that time (and coincidentally it have the same name before my company asked me to change it! https://github.com/rafi16jan/rapyd-framework/tree/rapydscript-webclient). At first I've written the project half in JS and half in RapydScript (because I didn't figure out how to use JSX without babel at that time, but then I created Pyrex) and after sometimes I migrated it all to RapydScript. And then we did so many iterations changing the core of the UI Framework (we tried to build a whole Framework UI with React Native, but we couldn't make it a better looking one compared to Web version) and even the language.

With this framework I have managed to get big customers from it. I do a dozen IoT projects using this framework, and sometimes little one like a simple CRUD projects. In the end I mastered Fullstack JS because of it (and creating a whole React Native project using RapydScript! The product is called cloudxmeeting.com, and we use this babel plugin in that project), and eventually time passes and I start to abandon it little by little. I missed that moment in my life where my whole day is just developing that framework, hoping it will be bigger than me and people start to take it further making me laid back. But what happen is instead I was the one who becomes bigger and start to adapt to non-Python world while RapydScript is the one who enables me to code JS in the first place! Lol, anyways.

Feel free to hit me up or share something with me about RapydScript or the current state of Python in WASM (I have experimented with it A-Lot...), currently I'm in the place of not having motivation to start anything loll. Seeing new developers motivates me a little bit as I get to feel their passion on learning and it fire up that old spirit inside me.

andrealicheri commented 1 year ago

Hello and thanks for the feedback.

So, this project isn't exactly mine. I was just a mantainer. This repo was just meant for beginner to approach HTML, CSS and JS in a familiar setting (this is at least how @savethekiddes described that to me).

I want to apologize for apparently getting your name stolen (neither of us knew that)

Now, that being said, this project is basically dead for a few reasons:

rafi16jan commented 1 year ago

Oh I though you and @savethekiddes are the same person

andrealicheri commented 1 year ago

About the state of RapydScript and WASM Python, I would just say to use Nim.

It has a syntax that's very similar to Python (if not identical when you just use pylib), and it has actual support for static typing and metaprogramming. It also compiles to JS (beside C, C++ and ObjC) and that' why a few web frameworks exist for it (eg: Karax) that are actually viable for a professional setting.

andrealicheri commented 1 year ago

Oh I though you and @savethekiddes are the same person

Nope. We are two diffrent guys xD

rafi16jan commented 1 year ago

About the state of RapydScript and WASM Python, I would just say to use Nim.

It has a syntax that's very similar to Python (if not identical when you just use pylib), and it has actual support for static typing and metaprogramming. It also compiles to JS (beside C, C++ and ObjC) and that' why a few web frameworks exist for it (eg: Karax) that are actually viable for a professional setting.

While nim is good but still every Pythonista (especially that have coded in it for a decade) craves for statically compiled Python with the same syntax. That's why project like mojo lang and codon exists.

andrealicheri commented 1 year ago

You are right, but none of them has a stable, not-hacky way to deploy a client-side website. You can still use the defaul Python stuff, like Pynecone or Flask, but you would be missing on interactivity.

And I repeat, there is basically no diffrence from Python and Nim when you take in consideration pylib

rafi16jan commented 1 year ago

You are right, but none of them has a stable, not-hacky way to deploy a client-side website. You can still use the defaul Python stuff, like Pynecone or Flask, but you would be missing on interactivity.

And I repeat, there is basically no diffrence from Python and Nim when you take in consideration pylib

Wow, I didn't knew about nimpylib. Does nimpylib supports wasm?

andrealicheri commented 1 year ago

You can compile the entirety of your project (including any libraries) to C, and then use clang to compile it to WASM. However I prefer direct JavaScript compilation, which is in the compiler by default.

You can read here for the supported transpilation languages and here for WASM compilation

rafi16jan commented 1 year ago

You can compile the entirety of your project (including any libraries) to C, and then use clang to compile it to WASM. However I prefer direct JavaScript compilation, which is in the compiler by default.

You can read here for the supported transpilation languages and here for WASM compilation

This is news for me. Thank you for mentioning this to me! Anyways, do you happen to know how to use nim's async/await syntax on nimpylib? Do we have to fallback to proc keyword?

andrealicheri commented 1 year ago

The proc keyword is just def. I don't know if you can use the {.async.} pragma that comes with asyncdispatch with pylib's "def", but there's a good chance that it does.

rafi16jan commented 1 year ago

The proc keyword is just def. I don't know if you can use the {.async.} pragma that comes with asyncdispatch with pylib's "def", but there's a good chance that it does.

I will try this

rafi16jan commented 1 year ago

@andrealicheri Thanks for your insight, I didn't know nimpylib exists all along! Btw, I just create a PR to support async/await in nimpylib.

andrealicheri commented 1 year ago

No problem