Skills
Inspiration
My main inspiration for this project was to develop my skills in Golang, but it was also just nice to have a hobby project to work on. I am a big fan of Discord, and I have found creating bots very enjoyable. I chose checkers to make it a challenge but also keep the project scoped. I could only find one other person who had made something similar but I saw room for improvement.
What it does
Discord checkers allows anyone to play checkers against another user natively through Discord. The board is displayed as emojis and also shows how many pieces are captured on each side. Most of the interactions are handled through Discord reactions making it easy for anyone to play.
Challenges I ran into
The end product resulted from many iterations over years of learning different programming languages. The first iteration of this project, I started back in my freshman year of high-school, using Python. At the time, I was still developing my overall programming knowledge, and it showed in the quality and efficiency of my code. I picked up the project about a year later, starting from scratch (but still using Python), as I had a much better idea of what I was doing at that point. I ended up getting pretty far, and the quality of code improved significantly but never actually completed it. After about another year and a half, I picked it up for the final time, starting from scratch in Golang. I find that Golang, being a typed language, allows for much more descriptive and much less error-prone code and is significantly faster than Python. After multiple iterations, I finally had an end product that is now being used on 100+ Discord servers.
What I learned
Looking back, I feel that I used this project to develop my skills in the programming languages I was learning at the time. It was a great way to do so, as I've always been a hands-on learner. It helped me better understand what makes effective and efficient code. Deploying the bot once it was finished was also something I had to learn how to do. This taught me the basics of Docker and keeping code running on the cloud.