# Writing

> Notes by Pulkit on building software, from system design to design engineering.

- URL: https://pulkit.blog/

Series: [System design](https://pulkit.blog/system-design.md) · [Design engineering](https://pulkit.blog/design-engineering.md)

## 2026

- [Kaksha: The App I Built for My Mother](https://pulkit.blog/kaksha.md): August 9, 2026
- [Partial Clones, Shallow Clones, and Sparse Checkout](https://pulkit.blog/git-partial-clones.md): August 3, 2026
- [My First Talk: Claude Directory](https://pulkit.blog/my-first-talk.md): June 13, 2026
- [Git Worktrees](https://pulkit.blog/git-worktrees.md): May 29, 2026
- [The Cookie Sync Pattern](https://pulkit.blog/cookie-sync-pattern.md): May 4, 2026
- [An MCP Server That Writes Itself](https://pulkit.blog/mcp-server-that-writes-itself.md): April 22, 2026
- [Rate Limiting](https://pulkit.blog/system-design/rate-limiting.md): April 11, 2026
- [BullMQ Cron Jobs with Redis in Node.js](https://pulkit.blog/cron-jobs-with-bullmq.md): March 29, 2026
- [Invisible Scissors](https://pulkit.blog/design-engineering/clip-path-reveals.md): March 25, 2026
- [Choreographing Multi-Step Motion](https://pulkit.blog/design-engineering/keyframe-animations.md): March 15, 2026
- [Smooth Scrolling in Next.js](https://pulkit.blog/smooth-scroll.md): March 3, 2026
- [Smooth Operators](https://pulkit.blog/design-engineering/css-transitions.md): February 27, 2026
- [How I Use Cursor to Build at 1000x Speed](https://pulkit.blog/how-i-use-cursor.md): February 26, 2026
- [Moving Things Without Moving Them](https://pulkit.blog/design-engineering/moving-things-without-moving-them.md): February 24, 2026
- [Offloading Motion to the GPU](https://pulkit.blog/design-engineering/offloading-motion-to-the-gpu.md): February 3, 2026
- [Training Your Eye for Motion](https://pulkit.blog/design-engineering/training-your-eye-for-motion.md): January 29, 2026
- [The Physics Behind Natural Motion](https://pulkit.blog/design-engineering/the-physics-behind-natural-motion.md): January 28, 2026
- [When to Animate and When to Skip](https://pulkit.blog/design-engineering/when-to-animate-and-when-to-skip.md): January 28, 2026
- [Easing Curves That Feel Natural](https://pulkit.blog/design-engineering/easing-curves-that-feel-natural.md): January 27, 2026
- [The Psychology of Motion in UI](https://pulkit.blog/design-engineering/psychology-of-motion.md): January 25, 2026
- [Bloom Filters](https://pulkit.blog/system-design/bloom-filters.md): January 24, 2026
- [Consistent Hashing](https://pulkit.blog/system-design/consistent-hashing.md): January 24, 2026
- [Introduction to Big Data Tools](https://pulkit.blog/system-design/big-data-tools.md): January 24, 2026
- [Communication Protocols](https://pulkit.blog/system-design/communication-protocols.md): January 23, 2026
- [High Availability](https://pulkit.blog/system-design/high-availability.md): January 23, 2026
- [Circuit Breakers](https://pulkit.blog/system-design/circuit-breakers.md): January 13, 2026
- [Load Balancers](https://pulkit.blog/system-design/load-balancers.md): January 11, 2026
- [Message Queues vs Streams: SQS, RabbitMQ, Kafka, Pub/Sub](https://pulkit.blog/system-design/async-processing.md): January 10, 2026
- [Caching](https://pulkit.blog/system-design/caching.md): January 8, 2026
- [Non-Relational Databases](https://pulkit.blog/system-design/non-relational-databases.md): January 8, 2026
- [Understanding Database Scaling and Sharding Patterns](https://pulkit.blog/system-design/understanding-database-scaling-sharding.md): January 7, 2026
- [React Virtualized List from Scratch](https://pulkit.blog/virtualized-list.md): January 4, 2026
- [Database Transaction Internals: ACID, WAL, MVCC & Locking](https://pulkit.blog/system-design/db-transaction-internals.md): January 3, 2026
- [Next.js Build Output Symbols (● ○ ƒ) and SSG](https://pulkit.blog/ssg-in-nextjs.md): January 1, 2026

## 2025

- [Branded Types in TypeScript](https://pulkit.blog/branded-types-in-typescript.md): December 26, 2025
- [SEO for Next.js Portfolio](https://pulkit.blog/seo-for-nextjs-portfolio.md): December 21, 2025
- [RAG Chatbot with Qdrant](https://pulkit.blog/rag-chatbot-with-qdrant.md): December 11, 2025
- [Coolify: Self-Host Postgres, Redis & Next.js](https://pulkit.blog/deploying-on-coolify.md): July 26, 2025

## 2024

- [Build a Contact Form with Resend in Next.js](https://pulkit.blog/contact-form-with-resend.md): December 13, 2024
- [Open Graph Images in Next.js](https://pulkit.blog/og-images-in-nextjs.md): November 15, 2024
- [Prisma ORM with PostgreSQL](https://pulkit.blog/prisma-with-postgresql.md): August 17, 2024
- [React Image Gallery with PhotoSwipe](https://pulkit.blog/image-gallery-with-photoswipe.md): August 12, 2024
- [React Context Menu with react-contexify](https://pulkit.blog/context-menu-in-react.md): August 10, 2024
- [AWS S3 with Node.js: Upload Files with SDK v3](https://pulkit.blog/aws-s3-with-nodejs.md): August 8, 2024
- [Node.js on EC2 with PM2 and NGINX](https://pulkit.blog/nodejs-on-ec2.md): August 5, 2024
- [Creating Your Own npx Command](https://pulkit.blog/creating-npx-command.md): July 27, 2024
- [FastAPI SSE: Server-Sent Events in Python](https://pulkit.blog/sse-with-fastapi.md): July 26, 2024
- [Scroll Indicator with Framer Motion useScroll](https://pulkit.blog/scroll-indicator-with-framer.md): July 24, 2024
- [Python Dependency Management with Poetry](https://pulkit.blog/python-poetry-guide.md): July 13, 2024
- [VSCode in Your Browser](https://pulkit.blog/vscode-in-browser.md): July 4, 2024
- [Typewriter Effect in React](https://pulkit.blog/typewriter-effect-in-react.md): April 28, 2024
