Studying computers and languages

I recently graduated from Middlebury College studying Computer Science as a major and Linguistics as a minor. I am intensely interested in where these two fields converge.

Here are some of the things which I have worked on or studied in the past few years:

2026 —

Telegruskaya: Sorting War from Noise in Russian Telegram

I spend a lot of time reading Russian Telegram channels. If you follow even a handful of the major ones, your feed is a mix of war updates, domestic politics, COVID stats, factory openings, and Kadyrov posting about construction projects in Chechnya. It all blends together. I wanted a way to automatically sort the war stuff from everything else.

So I built Telegruskaya, a small tool that classifies Russian-language Telegram messages as war-related or not. The whole thing runs in a browser on Hugging Face Spaces.

The approach was pretty simple. I had about 15,000 messages scraped from a bunch of channels. I sampled around 3,500 of them and ran each one through Llama 3.1 (8B) locally via Ollama, prompting it to label each message as 1 (war-related) or 0 (not). The prompt spells out exactly what counts: military operations, the SVO, sanctions, weapons deliveries, mobilization, Wagner, prisoner exchanges, and so on. Anything about domestic infrastructure, sports, COVID, entertainment gets a 0.

Once I had those labels, I trained a scikit-learn classifier on them. Nothing fancy. TF-IDF with character n-grams fed into logistic regression. Character n-grams actually work really well for Russian because they capture morphological variants without needing a stemmer. The word “война” shows up as война, войны, войне, войной, and so on, but the character sequences overlap enough that the model picks up on it naturally.

The classifier runs inference in about a millisecond per message, so it can handle a live feed without any GPU. I hooked it up to an API that scrapes recent Telegram posts, and the Gradio interface pulls new messages, classifies them, and displays the results with confidence scores. There is also a toggle for English translation using Helsinki-NLP’s opus-mt-ru-en model, which streams translations in one at a time so the page does not freeze up.

The thing that surprised me most was how well the LLM-as-annotator pipeline worked. Getting 3,500 labels by hand would have taken days. Ollama did it in under an hour on my M1 MacBook, and the downstream classifier hit solid F1 scores with just that data. It is not perfect. Some messages are genuinely ambiguous, like a Kadyrov post praising Putin that never mentions the war explicitly but exists entirely within the context of it. The model has to make a call, and sometimes it is wrong. But for a first pass at sorting a firehose of Russian text, it works.

The code is all open. The annotation scripts, the training pipeline, and the Gradio app are on my GitHub. If you work with Russian-language media or conflict monitoring, feel free to take it and adapt it.

https://huggingface.co/spaces/Norvoke/telegruskaya

3rdSpace.me

After struggling with using social media for years, inspired by the early social networks of the 2000’s, I created 3rdSpace. In Ray Oldenburg’s 1989 book The Great Good Place, he popularized the ‘third space’ theory. He describes the spaces between work and home where people build community and socialize.

In the past decades, and especially after 2020, these third spaces have been struggling. Consequently, the early years of web 2.0 saw the bloom of a great number of new virtual third places, which connected people from all over the world in ways Oldenburg could not have imagined.

With inspiration from Myspace, Friendster, Facebook, Blogger, and other early 2000s social networks, I am striving to create something in that vein

It is very basic, you have a profile, a wall, and can create and join groups. There is also a shared wall, something very early web-esque. I am hoping to create something with the feeling of the earlier social network revolutions without modern recommendation algorithms or ad-services.

Currently all you need is a Google account to sign up using their proven Oauth API.

2025 —

JSALT 2025

I worked in the AuGI research group of the Jelinek Summer Workshop on Speech and Language Technology in partnership with Johns Hopkins University and Brno University of Technology. I had the wonderful opportunity to collaborate on MMAU-Pro, which is a challenging and comprehensive benchmark for holistic evaluation of Audio General Intelligence. I worked with graduate students from Spain, Czechia, Texas, and many more places to create the speech skill categories used in the final submission to AAAI.

https://arxiv.org/abs/2508.13992

https://sonalkum.github.io/mmau-pro

2024 —

Kinna Wa Learn: Cross-Platform Rohingya Language App

Over the summer 2024, I secured internship funding through the Middlebury CCI to collaborate with the Children on the Edge Organization. Our mission was to support literacy efforts in southeast Asia by developing a cross-platform application that teaches reading and writing in the Rohingya language. This project had two main components: one for iOS and one for Android, with the goal of ensuring functionality parity across both platforms. The application includes features to learn individual symbols, practice handwriting, and use short words/phrases in exercises. The iOS version and our website are now live, with the Android version in closed testing but soon to be released.

Explore our project and the iOS beta here:
iOS Version
Our Website

A Basic iOS Game with Approval to Distribute on the Apple App Store

Over my spring break vacation, I got my first app approved for the Apple app store. It is a simple memory matching game using fruit emojis. This experience was useful learning more about Apple’s Swift language, which behaves quite differently than other languages I am familiar with, particularly in debugging. Xcode provides debugging tools with detailed instructions to fix problems at a much higher quality than what I have been accustomed to in other IDEs/development tools. Read more about my project in my github sites blogpost:
https://norvoke.github.io/posts/ololi/ololi.html

And you can find the app on the App Store here:
https://apps.apple.com/us/app/ololi-match/

2023 —

A Russian Verb Classification Model trained on the Russian Open Corpora dataset

Built to run on Python and using an open, freely-available corpus of the Russian language, I built a model which can correctly predict certain attributes of any input verb. These attributes include things like tense, number, gender, and aspect.

Read my full post about this project here on my github site

Created as the final project for my Machine Learning class

Middlebury College Democracy Initiatives Website

As the Technical Intern at the Center for Community Engagement, I implemented the Vote.org registration portal. The site runs on Drupal and these portals are embedded within the page to run directly through their interfaces.

Visit the site I completed here

Implementation of a Basic Perceptron Algorithm

I implemented the basic “perceptron” algorithm using numerical programming and demonstrate its use on synthetic data sets. Knowledge learned here would later go on to be used in my final project for the class.

Read my full post about this project here on my github site

Created for my Machine Learning class