💾 Archived View for kenogo.org › blog › 20221128.gmi captured on 2024-08-31 at 11:34:34. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2023-01-29)

-=-=-=-=-=-=-

Writing a Gemini server in C

Homepage

Blog

What is Gemini?

A few days ago, my brother introduced me to the internet protocol [Gemini]. It's basically a very lightweight alternative to the web, and while I'm not sure how much of a following it will ever have, I like its fundamental concepts. Particularly, I like that implementing a Gemini server from scratch is actually manageable for a single person. So that's what I started doing.

Gemini

My brother's homepage

My implementation

You can find my server implementation in Gitlab. I have used the C programming language and called my program Soyuz. Currently, the entire source code resides in a single file. Soyuz is suitable for statically serving files to the client. The biggest issue currently is its complete lack of threading.

Soyuz on Gitlab

Literate programming

I plan to refactor Soyuz into a literate program and add it to the corresponding section of my homepage. I tried writing it as a literate program to begin with, but I found out that this approach does not work well for me when I have little experience with the libraries I use.

My literate programs

For getting to know a library, I need a more explorative coding style. However, I think the program in its current state could very well be converted into a literate program and then maintained as such. So that's the plan.

This was fun

It has been quite a while since my last recreational programming project. Even if Gemini never finds wide-spread adoption, I'm thankful for its existence if only for this nice day of programming.