Let's start something fresh

Published at Jan 26, 2024

#openirc#java

Fresh, new and crisp means: I will create my own IRC library. The idea came to me multiple times now, since I wrote some chatbots for twitch (which uses the IRC Protocol as well by the way) and used a free library which did what I needed, but didn’t really satisfy me or my needs. Of course I searched the web for solutions and alternatives, but nothing I found really got me hooked. I got frustrated and in the end, I decided to just write my own and now we are here. I welcome you to be my companion on this journey, let’s enjoy the ride together!

Okay, enough gibberish, let me tell you what I am using for this project. I will write the library in Java, because it is my most used language, I am used to it, I am lazy and the biggest reason actually is the compatibility. Java makes this accessible to a broad variety of developers due to its platform independency - and you can’t deny that! The - probably - worst part is that i will stick to using eclipse, even though there are people out there who will tell me that i should use a “better development environment” like Visual Studio Code for example. Yes, I am looking at you Ben (also, check him out, he is AMAZING on what he is doing, here is a link to find him https://netcode.dev). On top of that, I will be using gradle as my toolchain, as well as some dependencies, which I will name and probably link to at the point of their occurrence. And just to keep track of what needs to be done and how IRC actually works, I will reference the RFC standards every now and then. If you are interested in reading a lot of boring and abstract definitions, the links to the RFC’s will be at the end of this post, so feel free to take a dip into them and get a headache, just as I do.

As you might expect, this week is actually not that interesting, since I will just do some setup stuff like initializing the github repository (oh yeah, I totally forgot to tell you that I have a github account. And here is the link to the repository if you want to check it out!), creating the project board, thinking about stuff that needs to be done - and creating some issues from that - so I have a baseline from which I can work off and so on. One of the things that are certain at this point is that I am doing this in a development process called “Test Driven Development” (or TDD for short), which roughly means that I will have to write test cases for the upcoming code that define what the result of some code has to be, without even having implemented that functionality. Sounds hard, and let me tell you, I realized that as well right at the moment where I started thinking about how do I actually start? I still chose to do it that way, because I want to learn a new skill from this project, as well as making sure that my code works as intended and to protect me from bugs that definitely will creep up on me. The thing is: with TDD you constantly and automatically ensure that your code works as intended and stable, so occurring bugs are way easier to find and fix, which - hopefully - makes this easier to maintain.

Enough of me talking about possibilities, thoughts, ideas, wishes, hopes and such stuff, I hope you have a great time being here, and let’s meet again next week!

References: