Hey, fun to see my fun little project showing up on HN!
Yes, aliasing the CLI command to a remote script is not exactly best practice. My casual question to myself when I made it was … what’s the literal easiest way I could get this to work on someone’s computer with as few dependencies as possible? This was the solution I came up with. (And in my defense, it is similar to how you install homebrew … `/bin/bash -c "$(curl -fsSL https://xn--rvg)`, but I get that most wouldn’t trust a somewhat random GitHub account like this.)
If you have any questions about this, let me know! My website (https://jamon.dev) runs on it (in a DigitalOcean droplet) and I’ve enjoyed the experience.
This is great because it is an entirely new way to teach programming that is tied to the web for beginners.
For those who started with basic and grew from there, the journey seems to have been critical to start with basic to have so many aha’s so early in learning a skill.
I love this so much. I got my start on QBasic and made hundreds of games between 12 and 19 years old. I eventually left it behind, but always had a fond spot in my heart for it.
Last year, when I was going to rebuild my personal website, someone on Twitter challenged me: “Build it in QBasic, you coward”. I was like “haha…wait, can I?”
And I did! It runs on QB64 on a DigitalOcean droplet.
Ha, I once created a web framework in classic ASP that was inspired by QBasic - you’d use pure HTML templates but in handlers you’d write LOCATE statements using XPath selectors instead of screen coordinates, followed by PRINT statements to actually fill in the content of an element. Never tried to actually write it in QBasic itself though. Nice work!
It honestly wasn’t a bad approach in practice, many years later there was a similar library called Enlive in Clojure which I genuinely enjoyed. Forces you to use nice semantic IDs and classes for everything. I suppose if you wanted the real BASIC experience you’d actually just PEEK and POKE with character offsets into the templates or something ungodly like that.
The folks who built this stuff are still alive. Historian would be a better fit, and we can archive the actual first-hand accounts if we don't waste the chance.
I think I have a general idea on how to implement basic TCP/IP sockets while staying true to QBasic 4.5's spirit (i.e. not introducing functions like _OpenConnection/_ConnectionAddress etc.)
The "API" I have in mind would look something like
```
OPEN "TCP:\127.0.0.1\80\LISTEN" FOR INPUT AS #1
INPUT #1, CONN$
IF CONN$ <> ""
REM CONN$ contains something like "TCP:\127.0.0.1\80\REMOTE_HOST\REMOTE_PORT"
OPEN CONN$ AS #2
REM ... respond to request
PRINT #2, "200 OK"
CLOSE #2
This is one of the big problems App.net always had, in that it wasn't at all intended to be a "Twitter alternative". Alpha was supposed to be an example of what could be built on the platform, not the entire product itself.
At Infinite Red we chose React.js over our previous choice of Ember not because it was objectively better at web, but because it lowered the context switching when our devs would switch between mobile and web projects. We have many devs who only handle web or only handle mobile, but for the ones who can do both, it's well worth it.
React.js being superior/inferior to Vue.js or others isn't very relevant unless the gap is huge, which it's not.