# Writing a Gemini server in C => gemini://kenogo.org Homepage => gemini://kenogo.org/blog/ 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://gemini.circumlunar.space Gemini => https://belago.org 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. => https://gitlab.com/kenogo/soyuz 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. => ../literate_programming/index.gmi 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.