Dipshan

Python Backend &
DevOps Engineer.

I build cloud-native systems, developer platforms, infrastructure, and AI-powered applications.

Don't just read my CV. Interact with my work.

Open to remote Backend and DevOps rolesNepal, UTC+5:45
dipshan@portfolio: ~

About Me

I like solving problems, and I always have. As a kid I kept asking why things work and why they don't. Computer science felt like the place that question belongs, a world of logic where every failure means there is something new to understand.

I enjoy writing backend logic and working through data structures and algorithms, and debugging is the part I like most. Today I build backend systems in Python and run them on AWS and Kubernetes, and I am getting deeper into system design and DevOps.

I use LLMs as part of how I work: to learn faster, pressure-test my designs, review my code and catch what I missed. They are in the loop, not in charge. I still read the logs and own the fix.

Backend Systems

Python, FastAPI, Django, and async architectures for high-throughput APIs.

Cloud Infrastructure

AWS-native design, EKS, Lambda, SQS, S3, Step Functions, IAM/IRSA.

DevOps

Kubernetes, Karpenter, Docker, Terraform, and CI/CD with GitHub Actions.

AI

LLM gateways with LiteLLM, per-user token budgets, and AI assistants built into products.

Realtime Systems

WebSockets, Django Channels, Redis, and live presence for interactive experiences.

Developer Platforms

On-demand IDEs, submission pipelines, and internal developer tooling.

Projects

Systems I have designed and built, and the problem each one solves.

Architecture: Browser, then API Gateway, then Message Queue, then Worker, then Kubernetes Runtime.
Browser
API Gateway
Message Queue
Worker
Kubernetes Runtime

Staffcoder

Cloud-native coding platform with browser-based IDE, async submission pipeline, and Kubernetes-isolated runtime.

Provision isolated, ephemeral development environments at scale while maintaining strict resource limits and fast cold-start times. Decouple compute-intensive grading from request handling to prevent API timeouts.

PythonFastAPIEKSKarpenterSQSStep Functions
Architecture: Client, then LiteLLM Proxy, then LLM Providers, then Usage Tracking.
Client
LiteLLM Proxy
LLM Providers
Usage Tracking

AI Gateway

LiteLLM proxy that issues temporary per-user tokens with a budget and a fixed lifetime, and tracks each user's usage.

Give every user a token that can only spend a fixed budget within a fixed time, then total up what they used before the token is removed. One API in front of several LLM providers, with no unmetered access.

LiteLLMPythonOpenAPI
Architecture: Browser, then WebSocket Server, then Backend, then Redis.
Browser
WebSocket Server
Backend
Redis

Realtime Chat & Presence

WebSocket chat with presence, typing and read receipts, built on Django Channels and Redis.

Maintain low-latency bidirectional communication for chat with accurate online/offline presence. Handle reconnection gracefully and persist messages without blocking the event loop.

WebSocketsDjango ChannelsRedisPython
Architecture: Git Repository, then CI/CD, then Terraform, then AWS.
Git Repository
CI/CD
Terraform
AWS

Terraform Infrastructure Modules

Reusable Terraform modules for EKS, IAM, SQS, S3, and Lambda with CI/CD-driven deployments.

Manage reproducible, reviewable infrastructure changes across environments without manual console edits. Ensure state safety with locking and separation of plan/apply permissions.

TerraformAWSGitHub ActionsEKS

Experience

Python Backend & DevOps Engineer

Nov 2024 – Present

Shastack

Building and maintaining a cloud-native developer platform on AWS EKS with Python backend services, async processing pipelines, and infrastructure as code.

Day-to-day: Python, AWS, Kubernetes, Terraform, and Claude Code with MCP tooling. AI in the loop, not on autopilot.

What I shipped

  • On-demand Browser IDE

    Built a browser-based development environment that provisions isolated Kubernetes pods for each user session.

    Each IDE session runs in an isolated pod with resource limits, persistent volume claims for workspace data, and automatic cleanup on session end. Provisioning is handled via Kubernetes API calls from a FastAPI backend with IRSA-based IAM roles.

    Kubernetes, EKS, Python, FastAPI

  • Live Interview Collaboration

    Worked on interviews.staffcoder.com, where an interviewer and a candidate collaborate in real time in a real IDE, with presence.

    Both people work in the same live IDE session and can see each other online, so the interviewer can follow along while the candidate codes.

    Browser IDE, Real-time collaboration, Presence

  • Sandboxed Runtime Environments

    Built the runtime layer that runs untrusted user code: a Docker image per technology, sandboxed Docker, and Kubernetes, with privileged containers isolated by Kata Containers.

    Each technology gets its own image, so a session starts with the right toolchain. Containers that need elevated privileges run under Kata Containers, which puts a lightweight VM boundary around them instead of sharing the host kernel. Kubernetes schedules the sessions, and network policies restrict egress from user pods.

    Docker, Kubernetes, Kata Containers, EKS

  • AI Gateway with Per-User Budgets

    Ran LiteLLM as a proxy that issues a temporary token per user, each with a token budget and a fixed lifetime.

    Every user gets a short-lived key that can only spend its budget within its time window. The proxy records each user's total usage, and that total is read before the key is removed, so all usage is accounted for per user.

    LiteLLM, Python

  • Per-Assessment AI Assistants

    Added an AI chat or agent for each assessment and each technology.

    The assistants run through the LiteLLM gateway, so the same per-user token budgets and usage accounting apply to them.

    LiteLLM, Python

  • Abuse Protection and Rate Limiting

    Protected public sign-up and submission flows from automated abuse with honeypot fields, disposable email blocking and rate limits.

    Honeypot fields catch bots that fill in every input. Sign-up rejects disposable email addresses. Requests are rate limited with sliding windows in Redis, keyed per IP and per session.

    Upstash Redis, FastAPI, Python

  • Async Submission Pipeline

    Implemented an async grading and submission pipeline using SQS for decoupled processing.

    Submissions are enqueued to SQS, consumed by worker services, and orchestrated through Step Functions for retry handling and dead-letter processing. This decouples request handling from compute-intensive grading, allowing independent scaling.

    SQS, Step Functions, Python, Lambda

  • Kubernetes Infrastructure

    Managed EKS clusters with Karpenter for dynamic node provisioning and cost optimization.

    Karpenter replaces cluster-autoscaler for faster, more efficient node provisioning. Provisioner specs define node pools with taints, tolerations, and consolidation rules. IRSA grants pods scoped IAM permissions without long-lived credentials.

    EKS, Karpenter, Kubernetes, IAM/IRSA

  • Infrastructure as Code

    All infrastructure is defined in Terraform with modular, reusable components.

    Terraform modules cover VPC, EKS, IAM, SQS, S3, and Lambda. State is stored in versioned S3 with DynamoDB locking. Changes are applied through GitHub Actions with plan/apply separation and PR-based reviews.

    Terraform, AWS, GitHub Actions

  • CI/CD Pipeline

    Designed GitHub Actions workflows for build, test, and deploy across all services.

    Each service has a pipeline with lint, test, build (Docker), and deploy stages. Deployments target EKS via kubectl with image tags pinned to commit SHAs. Rollback is handled via image tag reversion.

    GitHub Actions, Docker, EKS

Technology Stack

The tools I build and run systems with.

PythonFastAPIRESTAWSKubernetesEKSDockerTerraformGitHub ActionsCI/CDPostgreSQLS3SQSLambdaIAM/IRSAGit / GitHubDjangoDjango REST FrameworkFlaskWebSocketsKarpenternginxCloudflareNext.jsReactTailwind CSSMySQLUpstash RedisStep FunctionsALBLiteLLMSemantic searchLLM APIsOpenAPIEC2
Loading lab...
Loading...