💾 Archived View for station.martinrue.com › reinboar › 5c05f1713aa44323b4a4c17a285e4b01 captured on 2023-11-14 at 11:41:46. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2023-07-22)
-=-=-=-=-=-=-
I’ve decided to do something crazy and write my own Gemini server implementation. I’ve written my own Gopher server in Chicken Scheme before but I’m going to attempt this one in C++, so this may be the last you see of my sanity.
2 years ago · 👍 shway, know, negepezzannyitfiam
@skyjake 🙌 · 2 years ago
@reinboar >not a programmer by trade
Oh boy. Than I hope you are ready to become C guru, because otherwise you'll have trouble with UB (and I'm positive about that) · 2 years ago
@skyjake thank you! · 2 years ago
@aka_dude I definitely don’t think that C/C++ can’t or shouldn’t be replaced with something like Rust, but in terms of platforms, there is more available to me with C/C++. For example, unless something has changed, the DS and GBA are both pretty much exclusively developed for with C/C++ which makes it particularly interesting for me. Also, I’m not a programmer by trade so I’m not personally too concerned with language choice outside of what strikes me as interesting or useful for my very specific goals. · 2 years ago
@aka_dude It is fixed for 1.8.2. Interestingly, the input validator length indicator was already counting + as 3 bytes although it wasn't sent as such.
@martin Apologies, I was kind of assuming this was a problem on your end and didn't double-check my own code...! · 2 years ago
@aka_dude I checked the specs. Plus is among the reserved URL characters in RFC3986, and that's what the Gemini specification says should be applied. Therefore, it is indeed a bug in Lagrange and I'll fix it.
Of course, Gemini query strings don't use subcomponents, so escaping them is pointless beyond compatibility with existing URL parsers. Some capsules like geminispace.info works fine without encoded plusses. · 2 years ago
@skyjake Lagrange eats my pluses :( · 2 years ago
Why C ? Don't you think that by learning it you prolong its life / or do you find it OK language, no need for replacement? · 2 years ago
using Threads, non-blocking, pre-forking or forking? A combo? · 2 years ago
As with most modern software it comes down to whether you have some sensible libraries to build on. Write your own network stack? Write your own UI layer? Write your own cross-platform implementation? Eeek. · 2 years ago
@marginalia Especially since I’m using this as an exercise to learn C++, we’ll see how far I get haha. I’ve got a healthy amount of experience with multithreaded applications in other languages though so hopefully that will carry over here. · 2 years ago
Good luck. Gemini servers are surprisingly straight forward to set up, although C is perhaps not the easiest language to do it in. But nothing impressive ever got done only chasing what's easy. · 2 years ago