Until last year, I’d been in a slump with programming. I just wasn’t as interested in building as I had been. As I’ve been getting back into it, I found that most stuff I was building was related to my work. The exact type of stuff I’m trying to build here at saratonin.dev, actually. However, I think it’s important to build stuff out of a personal interest too. I spend a lot of time in a language-learning community on Discord, primarily focused on English/Spanish, and so I’ve been working on a bot that makes it just a little more enjoyable for me. So meet Atmósfera.
Atmósfera is a channel that lets me work on something that’s just for funsies while still practicing the ever-important skill of defining requirements, exploratory building, and execution. Built on top of the Open-Meteo API, the initial idea was to build a bot that let’s you compare the average weather/climatology between two cities, giving an objective view of how your typical year goes against that of a friend you made on the other side of the planet.
Another fun feature to work on has been language classification. While we already have a bot that can detect what language you’re writing in (used to maintain “hardcore mode”, essentially a functionality that deletes messages that aren’t in your target language), it sometimes deletes messages that are in your target language. Atmósfera uses n-grams (i.e. sequences of letters) from 1-5 characters for classification to catch longer sequences that are more indicative of a particular language (like -ción for Spanish, and -tion for English). Further, it uses a set of stopwords, or words that do indicate firmly that it should be one language or another.
Lastly, there had to be some kind of AI pipeline to practice with too. So, there’s a roast functionality that uses messages from the past week in order to come up with some kind of insult. Just for funsies and completely opt-out on the users side, but it let me play around with Gemini and get a feel for the Flash model they have on their free tier.
I do plan to keep working on this, so maybe I’ll post updates here as I do so.