{"slug": "hey-dev-i-m-vinayak-a-cse-student-who-got-tired-of-stopping-at-the-notebook", "title": "Hey DEV, I'm Vinayak — a CSE student who got tired of stopping at the notebook", "summary": "Vinayak Garg, a computer science undergraduate from Delhi, announced his intention to document the challenges of deploying machine learning models in production, including Docker, AWS EC2, and CI/CD pipelines. He has shipped projects such as a network intrusion detection system and a multi-tenant RAG chatbot, and plans to write about common pitfalls he encounters.", "body_md": "Hey DEV\n\nI'm Vinayak, a CSE undergrad from Delhi. I've been building ML projects for a while now, and I finally made an account here because I want to start writing down what I'm learning instead of letting it disappear into a folder called stuff.\n\nWhat I actually work on\n\nMost of my time goes into machine learning and, lately, GenAI. But the part I've gotten weirdly attached to is everything after the model works:\n\nGetting a .ipynb into a FastAPI endpoint that doesn't fall over\n\nDocker, AWS EC2, GitHub Actions CI/CD\n\nMLflow and DVC, so I can actually tell which experiment produced which model\n\nThe projects I've shipped end to end so far: a network intrusion detection system (F1 = 0.991), a customer churn model, and a student performance predictor. During a 2-month internship I also built a LangGraph-based WhatsApp campaign bot and a multi-tenant RAG chatbot with Qdrant and Groq.\n\nSomewhere in between all this I'm also grinding DSA in Python, which is a very different kind of pain and probably deserves its own post.\n\nWhy I'm here\n\nEvery single one of those projects had a moment where I was stuck for hours on something that turned out to be small. A Docker layer caching my old model. A vector store returning results from the wrong tenant. A LangGraph node silently swallowing an exception.\n\nThose moments never make it into tutorials. Tutorials show you the happy path. I want to write about the other one.\n\nSo the plan is simple: when I break something and fix it, I'll write down what broke, what I thought was wrong, and what was actually wrong. If it saves one person a Saturday, good enough.\n\nWhat's coming\n\nA few things already on my list:\n\nDeploying an ML model to EC2 with GitHub Actions, and the IAM/ECR mistakes I made\n\nMulti-tenancy in a RAG pipeline, and why naive filtering isn't enough\n\nMLflow + DagsHub setup that actually stays reproducible\n\nIf any of those sound useful, or if you think I'm approaching something wrong, tell me. I'd rather be corrected in the comments than in an interview.\n\nHappy to connect: \n\n[https://github.com/vinugarg2005-cell](https://github.com/vinugarg2005-cell) · [https://www.linkedin.com/in/vinayak-garg-901b28322/](https://www.linkedin.com/in/vinayak-garg-901b28322/)\n\nSee you around", "url": "https://wpnews.pro/news/hey-dev-i-m-vinayak-a-cse-student-who-got-tired-of-stopping-at-the-notebook", "canonical_source": "https://dev.to/vinugarg2005cell/hey-dev-im-vinayak-a-cse-student-who-got-tired-of-stopping-at-the-notebook-1e98", "published_at": "2026-09-09 20:52:26+00:00", "updated_at": "2026-09-09 21:11:51.826342+00:00", "lang": "en", "topics": ["machine-learning", "mlops", "developer-tools", "generative-ai"], "entities": ["Vinayak Garg", "FastAPI", "Docker", "AWS EC2", "GitHub Actions", "MLflow", "DVC", "LangGraph"], "alternates": {"html": "https://wpnews.pro/news/hey-dev-i-m-vinayak-a-cse-student-who-got-tired-of-stopping-at-the-notebook", "markdown": "https://wpnews.pro/news/hey-dev-i-m-vinayak-a-cse-student-who-got-tired-of-stopping-at-the-notebook.md", "text": "https://wpnews.pro/news/hey-dev-i-m-vinayak-a-cse-student-who-got-tired-of-stopping-at-the-notebook.txt", "jsonld": "https://wpnews.pro/news/hey-dev-i-m-vinayak-a-cse-student-who-got-tired-of-stopping-at-the-notebook.jsonld"}}