↩ go back to index

Contemplating My Perfect Gemini Client

November 5, 2022

Okay now that I've finished the bulk of Lasso, I'm currently pondering what features I absolutely want in a smallnet client I'd like to write. I've assembled an incomplete list, more for my reference than for anybody else. (although I'd love somebody backing me up that they want features like these as well!)

Must support:

Should support:

Would be nice to support:

separate distinct "identities" for various Gemini services

verifying certificates with DANE or a CA as well as the standard TOFU

streaming responses

I fully admit that of these are just features taken from other extant clients, many of them being features of my favorite client Lagrange. I'm not too creative at coming up with original ideas, but if there is one thing I'm good at its taking existing good ideas and mashing them together into a homunculus that does everything I want instead of just most of what I want. Combine that with a very strong case of Not Invented Here Syndrome and we've got a fresh new client in the works!

gemini://skyjake.fi/lagrange/

https://gmi.skyjake.fi/lagrange/

Right now I'm debating writing it in Ada or Common Lisp. It's 1000% narrowed down to those two programming languages because they're the only programming languages I ** really enjoy writing; and the ones I'd want to choose for a semi-large-ish project. Up until now I'd planned to use Ada and I've spent quite a bit of time writing various support libraries for a Gemini client in Ada. However, after writing Lasso in Common Lisp and having it be so quick, easy, and legitimately fun to write, it's really made me reconsider. I still feel like Ada will result in a better and more maintainable final product, just because it's explicitly designed to basically force writing well-organized and understandable code, with an emphasis on large codebases; while in CL even something as small-scale as Lasso requires a lot of genuine effort to keep the code organized and clean. But it's so hard to ignore the literal breeze that ** initially developing anything in Lisp is…

Requires a lot more thought.

My Ada-related libraries

Announcing the Lasso Read-it-Later Service

The only thing I know for sure is that I'm going to plan as much as possible in advance, as I typically do. Should write a post about that and the other programming ideals I practice sometime too…