💾 Archived View for gemini.cycrad.io › ~seriousshadows › posts › 2020-12-01.earl_greets_you.gmi captured on 2021-12-17 at 13:26:06. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2021-11-30)
-=-=-=-=-=-=-
Hello friends on the smolnet! (Shufei, I like this term!) I discovered gemini through a likely source (HackerNews) and something about the whole idea really spoke to me. I, like many others broadcasting in this protocol-space, have grown disillusioned with the current state of the web. Like many of you I am nostalgic for the old, creative web that existed in the days before incentivized content sharing. I think gemini is a beautiful attempt at an alternative paradigm, and provides just the right constraints that foster creativity well. I look forward to going further down the rabbit hole.
I don't normally write much code outside of work, but after perusing the Gemini protocol I was inspired. I decided to try my hand at writing a simple gemini server, which I call Earl.
I decided to write it in Kotlin simply because my new team at work uses it, and I find the language to be expressive and clean. My coworker describes it as Java 20, and I find there to be truth in that, as it improves many unsavory Javaisms. But that is a post for another day.
I also noticed that on kr1sp1n's curated list of gemini goodies, there were no servers written for the JVM. I guess JVM-based languages aren't seen as the sexiest, but they hold a special place in my heart.
Currently, Earl functions as a simple gemini fileserver--you generate a keystore and certificate via Java's keytool command, choose a content root and run the server. It does its best to adhere to the gemini specification, and does MIME-type detection. In the future I plan on adding directory listing and Kotlin script-based server-side scripting capabilities.
If anyone out there gives Earl a try, let me know what you think!
kr1sp1n's list of gemini goodies [web]
[December 1st, 2020]