Andrés Duvvuri
Constantly looking for new ideas. Currently working on agree, a CLI to track schema drift. When I'm not writing code, I'm usually writing music (check me out on Spotify!).
Projects
A web app for discovering cities with similar climates. Data from National Centers for Environmental Information. Utilizes average monthly minimum and maximum temperatures from over 100,000 locations globally as vectors for vector search with Pinecone. Future iterations will include the use of precipitation data and Köppen classifications a added dimensions for each vector. Frontend developed using NextJS and Tailwind CSS. Backend leverages the Serverless framework and AWS Lambda.
A bespoke AI sample generator made by musicians, for musicians. Allows artists to upload their own samples to train custom marketplace generative music models and get paid for usage. Allows consumers to support artists directly and obtain an infinite number of unique samples for their own production. Frontend made using NextJS and Tailwind CSS, backend built using the Serverless framework and AWS Lambda. Database used was AWS DynamoDB (NoSQL). Serves 100+ monthly users, all generating sounds on a daily basis.
Blog
The first end-to-end example run is done. Figured out the diffing approach, dropped git-style line diffing for an expected vs. received format with file and line context. Added a -v flag for details. Merged the branch. Now thinking about next steps and whether to keep Docker.
Starting the comparison logic. Hashing source and other schemas into maps, then checking for missing, extra, and incorrect attributes. Results go into a map[MismatchReason][]Mismatch so the output can be filtered by agree_type at the end.
Wiring up the conglomeration step that merges all DTOs into one []Entities slice. Each entity already has its source schema separated out, so comparison doesn't require a search pass. Added a Validate() method to guard against nil source before any comparison runs.
Decided to use a multimap DTO to move data between the Python parser and Go ingestion layer. Also working through how to run Python and Node through Go, landed on Docker as the solution for now.
Working through the main shared data structure that moves between the Python parser and Go CLI core. Settled on named attrs via pydantic for cross-language serialization, and rebuilt the entity model so source schemas are separated out from the start.
First pass at the agree visitor is working. It outputs pydantic schemas from source code, though dict and list types aren't parsed yet. Here's what the raw output looks like and where things stand.