← all posts

What I am working on

Hello, welcome to my first blog post. My name is Owen Pacetti and I am currently a sophomore at Milwaukee School of Engineering. I am pursuing a Bachelor's degree in Computer Science. I wanted to start a blog for two reasons: first, to share the cool things I have been working on, and second, to work on my technical writing and developing a deeper understanding of the projects and research that I am conducting. I am planning on writing a blog post each Sunday and it will give you an inside scoop on what I think is cool right now as well as what I have been spending my time on. Right now one thing has been taking up almost all of my time...AI. Well, I shouldn't just say AI. More like all of Machine Learning. It has been quite a hot topic as of late and I find it quite fascinating. So enjoy the sneak peek into some of the things I've been working on.

My agent system

I was having a problem where every time I initialized a Claude, Codex, Cursor, or any other agent my configuration was pretty static. For every task there was no difference in configuration other than the skills that I chose to use. That was leading to a lot of manual skill initialization and overcomplicated prompts. I was working on a school assignment and I had a question about syntax and I sent a lazy prompt simply asking how something was done in C++ and before I could stop it a full implementation of my lab was done. That was not what I wanted and the code was reverted but it left me frustrated on the eagerness of the model (which I actually find quite good in non-school-work settings) when I actually wanted to do the implementation myself. I decided I would like to keep my work, school, research, and daily operation configurations for all of these agents separate and as close to hot-swappable as possible. My solution was to develop an agent system that would allow me full control of the configuration every time I opened up an agent CLI. Using it is simple. I type oas in my terminal, and it asks me four things: the provider, the model, what I am working on (research, school, and so on), and the folder to work in. The folder is optional; if I skip it, oas uses the current directory. It has a sick matrix/hacker vibe and a TUI I am quite proud of. Now I am working on adding updated instructions based on the newest models from each provider as well as attempting to use "Claude-Mods" to incorporate my agent system directly into Claude Desktop and CLI.

World models

This year I am a mentor of a MSOE AI-Club Research Group and I wanted to find a topic that would be both visually rewarding as well as push my skills as a researcher. That led me to World Models. I had only seen brief YouTube videos and skimmed a few papers that touched on the topic so I was curious to learn more. The easiest way for me to understand World Models is that they are a model that is spatially aware. It is a model that is able to interact in real world or simulated environments and make actions within its domain. The model is able to act by imagining the next "n" internal states ahead. That allows the model to predict what is going to happen in the next state of the environment that it is currently in. What we are working on is training a Reinforcement Learning agent to play various Atari games such as pong and breakout as well as DOOM. For our Pong experiments, we use the decoder-based DreamerV3 reproduction included in the R2-Dreamer codebase. The world model predicts future internal states, and its decoder turns those states into images for visualization. We did not add that decoder ourselves. The decoder-free R2-Dreamer method described in the paper is a separate configuration. The dreamer model is able to take in data from the ground truth game state (essentially just the game that is currently being played) and then develop an internal representation or "dream" that accurately reflects the ground truth game for each frame. Our research is specifically on when the dream stops improving the model's ability to win the game or achieve a more positive outcome than the previous iteration. Those images allow us to analyze the dream versus reality qualitatively as well as quantitatively which is helpful in the training analysis. Our open-loop videos reconstruct five observed frames first, then predict what follows using the recorded actions. Right now what has surprised me is how quickly the dream and ground truth are able to converge. In the most recent training runs it took ~30 steps (steps are a mapping to the game frames) until the pong board in the dream started to look like the board. After another ~100 steps the paddles appeared. Finally at ~500 steps the ball began to appear. We have not yet pushed the model beyond 800 steps and seen any notable difference in the model's dream in comparison to the ground truth. We are hoping to be able to quantify the "drift" of the dreamed state to better understand how other RL agents can be trained effectively using a dreamer model.

Galaxy cluster research

I am working as an undergraduate researcher within the physics department on the study of Galaxy Clusters and working to decrease the error that is introduced when they are weighed. First you are probably wondering what a galaxy cluster is. Galaxy clusters are supermassive groupings of galaxies. Unlocking the secrets of these clusters such as their mass, their elemental makeup, and the mysterious dark matter that surrounds them, can give us a fairly accurate idea of the entire makeup of the universe because they are the largest structures held together by gravity in the universe. The way that we are attempting to decrease the error in the mass measurement of these clusters is to identify "blends" (galaxies that are blended together) more accurately. During the mass calculation pipeline each background galaxy in relation to the cluster must be identified. If you mis-identify a blended galaxy as a lone galaxy error is introduced in the measurement. These blends are sometimes difficult (or nearly impossible) to identify by the naked eye so I am researching ways that Machine Learning can be used to more accurately categorize the blends. We are working with data from the cluster Abell 2390 which is collected by the Subaru ground-based telescope and the Euclid space telescope. The project is part of Weighing the Giants, and I work with Professor Adam Wright. The two telescopes give us different kinds of data. Subaru took images through five color filters, so we know the color of each galaxy. Euclid's VIS camera sees in only one band, but from space there is no atmosphere to blur the image, so its pictures are much sharper. Where two galaxies look like one blob to Subaru, Euclid can often show that they are two. That lets us check which Subaru objects are really blends, and those answers can help us train and test a model that finds blends from Subaru data alone. We are working in collaboration with LSST DESC (the Dark Energy Science Collaboration) and getting access to compute from the SLAC National Accelerator Laboratory at Stanford University. Currently we are in research limbo waiting on Unix permissions in order to access the computing cluster but my first goal is to familiarize myself with the dataset and the potential ML algorithms that will be best suited to tackle the problem.

Wrapping up

I hope you found the projects and research I have been doing as fascinating as I do! As I said before I plan on doing a post each week on Sunday about various topics that I think are cool. Next Sunday I will go deeper on one of these three projects. Feel free to contact me by navigating to the "Contact" section of my website. I put my preferable points of contact there.

Thanks for reading.

Owen