You know that iconic DJ Khaled album, "Suffering from Success"? The one where he looks overwhelmed by how much he's winning?
Yeah... I WISH that was me.
For the last 48 hours, I wasn't suffering from success. I was Suffering from Bugs. Specifically, the kind that make you question if you should drop out of Computer Science and just become a farmer instead.
I spent two days staring at a screen that screamed 500 Internal Server Error and ModuleNotFoundError. I was winning on localhost:3000 (it worked perfectly!), but the moment I tried to deploy? Disaster.
Here is the story of how I almost deleted my entire project out of frustration, and how I turned a 45-second nightmare into a win
1. The "Works on My Machine" Trap
I think everyone who codes in general has faced this trap maybe one too many times in their life. The reason I decided to build this project in the first place was because I have an upcoming quiz worth 30 marks of my final grade in a couple of weeks, and looking at 80+ slide per every week's lecture would be a nightmare for my revision. I do write notes (in my own words for better understanding) but when it gets to the last minute, I still cannot go through all my notes to refresh my memory of 200+ slides or even more for half of my semester. Then I decided to build 'SlideSift': Very simple tool that basically summarizes your lecture notes, just for revision.
Some of us including myself, are slow learners, and I struggle to just read or study something once, for it to stick forever. People with those kind of abilities are so lucky! But if you are like me, this would actually help you in your uni studies.
I built it using Google Gemini Pro. On my laptop, it was beautiful. It felt like magic.
But then I tried to deploy it to Render.
The Reality Check:
Cloud servers are not your laptop. They don't care that "it works for me."
My requirements.txt was a mess. The server installed an ancient version of the AI library that didn't even know what "Gemini" was.
Lesson Learned: If you don't lock your dependencies (e.g., google-generativeai>=0.8.3), the cloud will humble you very quickly.
2. The 45-Second Awkward Silence
The perfect scenario of how I was feeling whiles waiting for the web app to summarize the notes I uploaded, is very similar to those times when DVD's were a thing, you insert the disc into your DVD player, and sometimes if its corrupt, it shows 'disc error'. Or for my gamers, if any of you ever used the Nintendo GameCube, sometimes when you insert the tiny disc, it takes like 2 mins to load and gives you an error, then while it loads, you pretend to look into the sky so it loads faster... 😂only to receive an error and all you feel is disappointment.
Anyway, back to the story:
Once I finally fixed the crash (after what felt like 50 deploys), I hit the next wall: Latency.
Gemini Pro is smart, but it is slow.
I would upload a PDF, click "Summarize," and then... wait.
And wait.
And wait.
It took 45 to 60 seconds to get a response (Honestly speaking I think at a point it took like a solid 3 mins to even end up giving me an error).
Gemini pro took 45 to 60 seconds to summarize a single PDF. Then I tried to change it to Gemini Flash 1.5, for some weird reason I crashed the app when I used the Flash version, it didn't work at all.
Imagine showing this to a recruiter:
Recruiter clicks "Summarize"
... spinner spins ...
... awkward silence ...
... "So, how's the weather?" ...
... still spinning ...
Or people even using this, with modern technology in 2026, no one would wait 3 mins for a web app to work, let's be honest here. Even me the creator, didn't want to wait that long!
I hated it. It felt broken. I seriously considered hard-coding a loading message that said: "Go make a coffee, this will take a while."
This is when the Imposter Syndrome kicked in hard. I thought, "Real engineers build fast apps. I built a loading screen simulator."
3. The Pivot: Choosing Speed (Groq)
I realized I didn't have a Code problem; I had an Architecture problem.
I didn't need the "smartest" model in the world (Gemini Pro) to summarize a PDF. I needed the fastest one.
I scrapped the Google integration and switched to Groq (running Llama-3).
Groq is an inference engine designed purely for speed.
The result?
Before: > 50 seconds.
After: < 30 seconds.
It was instant. I clicked the button, blinked, and the notes were there. I literally screamed. I had been sitting behind my PC for hours, just surviving on zero sleep, dried mango slices (love them) and iced americano just to stay awake to make it work.
4. Why I Didn't Quit (The DevOps Mindset)
Well I did almost delete the entire repo and the project itself, because I kept on having so many deployment issues and Render kept on sending these error messages to my mail:
I got almost 20 of these messages and that was the time I almost gave up on this. But when I was staring at those error logs, wanting to delete the repo, I realized something: This IS the job.
As a CS student, I love writing code. But as an aspiring DevOps engineer, my job isn't just to write code, it's to ship it.
Fixing the requirements.txt? That's Environment Management.
Switching from Gemini to Groq? That's System Design.
Handling the "Cold Start" on the free tier? That's Cost Optimization.
Honestly, that's why I am always heavy on building as you learn, because truly, that is the only way to make it stick. If I am to work on another project and face these issues, I would immediately know what to do. Tech is so fascinating, you will lose your mind sometimes but its truly remarkable.
The Result
Slide Sift is now live. It turns chaotic lecture slides into pristine study guides instantly.
Try it here (Live Demo)
(Note: It’s on the free tier, so give it at most 50s to wake up the first time!)
Check the code on GitHub
To anyone stuck in "Deployment Hell" right now:
Don't delete the repo.
Take a walk. Drink some water/ coffee for my coffee lovers 😉. CRY IF YOU HAVE TO
The error is probably just a missing environment variable. You got this. 💙


Top comments (45)
We've all been there! Mine was a 'rm -rf' near-death experience. The panic is real. Glad you made it through! Would love to know — did you have backups? And what's your backup strategy now after this near-miss?
The panic is very real Harsh. Yeah I always do have backups, I usually have a stable version as a private repository on my GitHub, and then the main one, and also another one where I play around with. So when i was able to make the main one work and I started having the issues with the backend, I just experimented on the other two backups till it clicked, then I updated the main one. That’s usually how I go about things, because anything can happen😂
Haha, that actually sounds like a solid system. Having multiple backups definitely saves you when things go sideways. Glad it worked out in the end 😄
Yeah a 100%
This hit close to home.
Been building The Foundation - a federated AI knowledge commons on Cloudflare Workers. ActivityPub federation, semantic search, browser extension, the works. spent days fighting content-type headers that mastodon kept rejecting, wrangler deploys that succeeded but broke things silently, schema migrations that worked locally but not remote.
But the one that broke me was trying to capture claude chats. first attempt was ctrl+a, ctrl+c - paste the whole thing. didn't capture code blocks properly. then tried scraping the DOM. then share links. each one worked until it didn't. share links stripped artifacts. DOM scraping broke on long conversations. ended up building a full browser extension just to capture conversations reliably
at some point i wrote a whole "scaling back" post because the scope had outgrown what one person with client work and a life could maintain.
your line "this IS the job" is exactly it. fixing the requirements.txt isn't a distraction from real work. it IS the real work. switching from gemini to groq wasn't giving up - it was architecture thinking
you learned through the pain. that's the part no tutorial teaches
keep building 🙏
Exactly so Daniel, thanks for the read!
Man, I felt that 'disc error' analogy in my soul. 😂 We’ve all been there: the 45-second spinner that feels like a lifetime when you’re trying to impress a user (or a recruiter).
Moving from Gemini Pro to Groq/Llama-3 for speed is a classic 'Architect vs Coder' move—choosing UX over 'model prestige'. I’ve had similar nightmares deploying fiscal tools for freelancers where a 10-second delay meant people thought their taxes were being calculated wrong.
Great pivot! If you ever decide to document that 'SlideSift' architecture further, let me know. I'm currently sharing similar 'build-in-public' struggles and freelance tips over at devfreelance.es . Don’t delete the repo, the 'war stories' are what make us senior devs!
Honestly mine was spinning for like 1:30secs😂😂😂😂that spinner alone would make you lose hope in life itself. That’s amazing, will give a follow and let you know whenever I document on it further Pau!
🤣🤣🤣thanks!!
I could totally relate to your post! Honestly, who hasn't had an experience like yours? But looking back, it's the experiences that make us feel most desperate that also teach us the most...
Rightly said Pascal :)
I suggest self-host method that uses your own VPS.
If you are developer, you will use vps even though it's cheap or not.
If use self VPS, it's no problem to deploy, control your project at any time.
You should know about setting nginx, certbot, domain services before host.
I totally see the value in self-hosting on a VPS for the control and long-term cost benefits. However, as a student with a pretty packed schedule and a few other projects , I think diving into Nginx, Certbot, and server maintenance right now might be a bit overwhelming.
I’m currently focusing my energy on the core logic and 'bug-proofing' the application itself. I’d love to transition to a VPS setup once the project is more stable, but for now, I need to keep the infrastructure simple so I can actually keep up with the build without burning out! Thanks for the tip, though, definitely something for the roadmap.
There are only some CLIs to install nginx hosting environment.
I totally get the benefits of a VPS for control, but honestly, between my school work and actually building projects, I unfortunately don't have the luxury of time to be a full-time developer and a sysadmin at the same time😅😅. Trying to keep it simple for now so I can stay focused on the logic without burning out. But thanks a lot for the advice Nightfury :)
The moment you described almost nuking the project — I felt that.
The thing that saved me in a similar situation:
git stashwhen you're spiraling. Sometimes you need to physically see the clean state of the codebase to stop catastrophizing. The bug is never as bad from a fresh checkout as it is after 3 hours of debugging.Also: rubber duck debugging is underrated. I've lost count of how many times I've started typing a Stack Overflow question, written out the full context, and then immediately seen the bug before hitting submit. The act of explaining forces clarity.
Totally right Matthew! I think with debugging in general, you do need a lot of patience. And sometimes that patience is lost when you’re frustrated 😭 but you’re right 💯
This hit too close 😅 I’ve faced the same “works on localhost, breaks in production” nightmare. Locking dependency versions and testing in a production-like environment early saved me later. Also +1 on choosing speed over the “smartest” model — users forgive slightly less accuracy, but they never forgive waiting.
Exactly no one has patience these days (incl myself) so speed always wins
Groq was the right call. Gemini Pro's latency isn't a code bug—it's architecture mismatch. For summarization, inference speed beats model complexity every time. But here's the gap: switching models reactive fixes symptoms. The real fix? Design for latency upfront. Circuit Breaker pattern + fallback caching would've saved 48hrs of deploy hell. Your requirements.txt failure is textbook: unpinned deps = production roulette.
pip freezelocks versions, but Docker + multi-stage builds guarantee parity between local/cloud. You learned the hard way what enterprise systems architect for day one: robustness > feature hype.I definitely learnt more about architecture doing this project! Thanks for the feedback :)
The requirements.txt versioning issue is so real. I had almost the exact same experience deploying a Gemini-based tool — worked perfectly locally, then the cloud server pulled an older google-generativeai version that didn't support the model I was using. What saved me was pinning exact versions with
pip freeze > requirements.txtinstead of manually writing them. Also, for the 45-second cold start on Render's free tier — if you end up needing something snappier, Vercel's serverless functions with Python runtime might be worth a look. The cold starts are usually under 5 seconds.Glad we can trauma bond on the same issues haha. And for the Vercel serverless functions I’ll try that and see how it goes, thanks for that tip Maxx
"I built a loading screen simulator."
I've built so many of these. 😁 I feel your pain.
On the LLM -- it does take time for most decent generative AI systems. But a lot of times there is an option to stream the results, which can allow you to provide a better experience for users. That's why Gemini or ChatGPT don't feel slow on the web; you get a continuous stream of data back starting immediately, so even though it takes 45 seconds to get the full result, you didn't have to sit there and wait 45 seconds for an answer. Something to look into.
Your project sounds cool, best of luck!
Thank you Brian!
Some comments may only be visible to logged-in visitors. Sign in to view all comments.