Today I learned about Virtuals in Mongoose.
A virtual field isn't stored directly in MongoDB. It can be calculated or populated when needed.
For example, blog count can be used to get the number of blogs in a category without storing the count.
#MongoDB#Mongoose#NodeJS
Today I learned how Next.js can work with a custom Node.js server.
Next.js can handle its own server, but a custom Node.js server gives more control and allows things like Socket to work with it for real-time communication.
#NextJS#NodeJS#Learning
Today I learned about Python venv.
A virtual environment creates a separate space for each project, so package versions don't conflict with other projects. Simple idea, but very important for Python and AI development.
#Python#AI#LearningInPublic
Started my AI learning journey
So far I've learned about pip, uv, Groq, Qdrant, and the basics of RAG. My biggest "aha" moment was understanding how AI retrieves relevant information before generating an answer.
#AI#Python#LLM#RAG#BuildInPublic
Today I learned what a database migration is.
Earlier, I thought schema changes were done manually with SQL.
Now I understand that migrations keep a version history of database changes, making collaboration and deployment much easier. Prisma automates this process.
#Prisma
Coming from MongoDB, SQL JOINs confused me at first.
Then it clicked.
Instead of storing duplicate data, PostgreSQL keeps related data in separate tables and uses JOINs to combine it when needed.
- Less duplication
- Better consistency
#PostgreSQL#SQL#Backend
Today I learned why SQL Transactions matter.
If an endpoint runs multiple queries, you don't want only some of them to succeed.
Transactions solve this:
- COMMIT if all queries succeed.
- ROLLBACK if any query fails.
Either everything is saved or nothing is.
#PostgreSQL#SQL
Today I learned why developers say "Never trust user input."
SQL Injection isn't magic it's simply what happens when user input becomes part of your SQL query.
The Solution:
- Use parameterized queries.
- Let user input stay as data, not SQL.
#PostgreSQL#LearningInPublic
The reported "Obsidian Brain" leak at Anthropic isn't the biggest story.
The real lesson: AI is only as good as the knowledge behind it
Scattered chats and docs create chaos. Structured knowledge helps teams reuse ideas, preserve context, and get better AI results.
#Anthropic
Coming from MongoDB, I was confused between PostgreSQL, Neon, Prisma, and pg.
Finally it clicked:
PostgreSQL = Database
Neon = Cloud host (like MongoDB Atlas)
pg = Node.js client
Prisma = ORM
The right comparison made PostgreSQL much easier to understand.
#BuildInPublic
One of the easiest ways to understand serverless functions is to compare them with MongoDB + Express.
Express: Frontend → API → MongoDB
Convex: Frontend → Mutation → Database
No API routes, no server management - just write your function and Convex handles the rest.
DrawSync is completed.
Built a real-time collaborative whiteboard.
Live cursors, drawing, resize, multi-selection, undo/redo - all synced in real time.
Biggest learning: building collaborative apps changes how you think about state.
#BuildInPublic#NextJS#WebDev
Big update on DrawSync
Opened 2 browser windows.
Drew in one and watched it appear in the other instantly.
Live cursors. Real-time sync. No refresh.
Move something - everyone sees it.
#buildinpublic#nextjs#realtime#webdev
Users can now draw rectangles, circles, text, sticky notes, and freehand paths.
The pen tool was the hardest part — mouse input creates shaky lines, so I used perfect-freehand to make drawing smoother.
Learned that canvas is more about state than drawing
#buildinpublic#nextjs
Claude Code's creator said something that stopped me cold:
"I don't prompt Claude anymore. I write loops - and the loops do the work."
We're moving from chatting with AI to designing systems that work with AI.
Prompt engineering - workflow engineering.
#FutureOfWork#AI
Small update on DrawSync
Dashboard is completed.
Now users can create boards, search boards, and star important boards
I thought this part will be easy, but setting up auth and organization took more time than expected.
Next step collaborative canvas
#buildinpublic#nextjs
Started building something I wanted to make for a long time
A real-time collaborative whiteboard.
Multiple people. Same canvas. Drawing together - live.
Building this to learn how real-time systems actually work.
No idea how difficult this will get.
#buildinpublic#webdev
Today I learned about Convex Database:
- Queries: fetch/read data
- Mutations: update/change data
Initially, it seemed like another DB concept, but it enables building real-time, reactive apps without backend complexity.
#DevJourney#Convex