💾 Archived View for senders.io › gemlog › 2021-03-17-starting-a-devlog.gmi captured on 2022-03-01 at 15:20:42. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2021-12-04)
-=-=-=-=-=-=-
I have been messing around for basically the last week or so building a Java based gemini server. I got it up and running in a few days actually mostly grappling with java.net's less than ideal TLS setup (keystores are annoying). But ended up using netty.io to act as the main TSL and TCP/IP interface.
But then it evolved into what I might end up subtitling "Gemini for the enterprise" as I started fleshing out the actual usage/design pattern for the server and how much it resembles the enterprise Java webservers I've worked with (Dropwizard, Play, Spring).
For those of you familiar it's soooo not that bad (Spring) but it's definitely over engineeered compared to a lot of the python based servers for what you'll end up getting.
Part of what / why I started building this is Java is my strongest language. I've used it daily for over a decade and it's just my home base. So, for me, building say some small tool ontop of Gemini this is the fastest way for me to do it. I enjoy developing in C / C++ and writing small quick programs in python, but if I wanted to just focus on delivering "the idea" Java is the fastest way for me to do it.
But the double edged sword is "I _know_ this could be better". If I wrote this in python I would've been happy just getting the basic IO working and smiled and called it a day and just used jetforce or something for serious server hosting with CGIs. But I got the IO and wanted to make it a library taht anyone could use to have it interface directly with server-side java code (so not using CGIs to perform business logic). This is what ended up taking maybe 200 lines of Java (with the help of a giant library like netty) into a multi-module maven project with Builder Paterns and unit tests! And you still can't even do client certs!
Work got in the way this week (isn't it only Tuesday night as of writing this!?) so development slowed down. So I felt having a write up I can then link to in the README of the project to catalog as a companion to the gitlog. Frankly, I want to have better git commit messages on personal projects like I do for work... but hopefully having a small summary of the work being done will be interesting for some.
The plan is specifically for the devlog to create a separate /devlog/ and feed so if this is actually your jam / you don't want the rest of my gemlogs. So as I continue to work on this I'll get it up in a git location to link on the page too, but only once you can run it as a clone and compile.
I am still trying to think of a fun name for the application. If you read this and have any ideas feel free to shoot me an email stephen+gemini <at> senders.io for clever Java Gemini Server names otherwise I'm calling it "Java Gemini Server" - because thats how I name shit at work.