# Bittu (Bittu5134) — Full Context Payload
> Complete plain-text knowledge base for AI agents and coding assistants. Contains full author profile, all open-source project descriptions, and every technical blog post verbatim. Optimised for single-shot ingestion.
Index: https://bittu.dev/llms.txt
Canonical: https://bittu.dev
================================================================================
SECTION 1 — IDENTITY & SKILLS
================================================================================
Name: Bittu
Handle: Bittu5134
Email: hello@bittu.dev
Website: https://bittu.dev
GitHub: https://github.com/Bittu5134
LinkedIn: https://www.linkedin.com/in/bittu5134
X / Twitter: https://x.com/404lostsquid
Patreon: https://www.patreon.com/lazybittu
Education: B.Tech Cybersecurity & Computing — Indian Institute of Technology Kanpur (expected 2030)
Languages: Go, Python, C, C++, TypeScript, JavaScript
Systems: Linux POSIX daemons, raw TCP/UDP sockets, /proc lineage tracing, SHA-256 GUIDs, memory-mapped I/O, zero-allocation Go event loops
Networking: WebRTC signaling servers, STUN/TURN/ICE, Redis TTL heartbeat pruning, IP token-bucket rate limiting, 500-peer concurrency benchmarks
Protocol Reversing: Minecraft Java Edition wire format — VarInt encoding, zlib packet compression, handshake state machines, live packet sniffing
AI & ML: RAG pipelines, MCP servers, CNN defect-detection ensembles, PyTorch, scikit-learn, vision model inference
Spatial Parsing: 2D bounding-box coordinate clustering in PyMuPDF for LaTeX tabular PDFs (academic transcripts, resumes)
Cloud & Edge: Cloudflare Workers, Cloudflare WAF bot mitigation, Cloudflare Pages, FastAPI, Gin, SSG compilers
Notable Deployments: 2.3M+ Minecraft datapack downloads (Planet Minecraft); public WebRTC signaling API (PeerBasket)
================================================================================
SECTION 2 — OPEN-SOURCE PROJECTS
================================================================================
### 1. Rock-Paper-SSH
Source: https://github.com/Bittu5134/Rock-Paper-SSH
Description: A PvE multiplayer TUI game, built in Go and streamed over SSH.
Category: SYSTEMS / SSH TUI
Language: Go
Topics: bubbletea, golang, lipgloss, ssh, terminal
### 2. PeerBasket
Live: https://peerbasket.bittu.dev | Source: https://github.com/Bittu5134/PeerBasket
Description: A hassle-free, lobby-based PeerJS discovery server written in Go that handles peer discovery for real-time p2p interactions and multiplayer sessions.
Category: SYSTEMS / P2P
Language: Go
Topics: gin, go, p2p, peerjs, redis
### 3. DumbCord
Source: https://github.com/Bittu5134/DumbCord
Description: A Discord bot that learns from messages and uses Markov-based methods to generate text replies and GIF responses.
Category: AI / MARKOV
Language: Python
Topics: chatbot, discord, dumb, markov-chain
### 4. NetShip
Source: https://github.com/Bittu5134/NetShip
Description: A host telemetry agent in Go that watches socket activity and maps out process trees. Built it to understand how endpoint detection tools actually work under the hood.
Category: SYSTEMS / EDR
Language: Go
Topics: edr, go, gopsutil, telemetry, webui
### 5. InfraPulse
Source: https://github.com/Bittu5134/InfraPulse
Description: A defect-detection tool that flags and prioritizes infrastructure issues from photos using a small vision-model ensemble. Built for a campus hackathon.
Category: AI / COMPUTER VISION
Language: Python
Topics: convulational-neural-network, ensemble-model, machine-learning, pytorch, sobel-edge-detector
### 6. Sharelock
Source: https://github.com/Bittu5134/Sharelock
Description: A retrieval system that lets you just ask questions about IIT Kanpur's academic policy manual instead of reading the whole thing. Built as a RAG pipeline with an MCP server.
Category: AI / RAG
Language: Python
Topics: hackathon, mcp-server, rag, rag-chatbot, typescript
### 7. Lore
Source: https://github.com/Bittu5134/Lore
Description: A local architectural knowledge engine — it captures the reasoning behind your code, whether that code was written by an AI agent or a human.
Category: AI / DEVTOOLS
Language: TypeScript
Topics: cline, mcp, typescript, sqlite, devtools
### 8. GeoShuffle
Live: https://geoshuffle.bittu.dev | Source: https://github.com/Bittu5134/GeoShuffle
Description: A serverless multiplayer sliding-puzzle game that syncs game state over direct WebRTC DataChannels. No game servers, just peers — plus a Supabase leaderboard and Canvas scorecards.
Category: WEB / WEBRTC GAME
Language: JavaScript
Topics: game, multiplayer, p2p, webrtc
### 9. ORV-Reader
Live: https://orv.pages.dev | Source: https://github.com/Bittu5134/ORV-Reader
Description: A web-publishing platform that compiles Markdown into fast static pages and EPUBs. Built to be clean and lightweight way to read stuff on slow connections.
Category: WEB / CLOUD
Language: Python
Topics: cloudflare-pages, custom-ssg, epub, orv, pandoc
### 10. LOTM-Reader
Live: https://beyonder.pages.dev | Source: https://github.com/Bittu5134/LOTM-Reader
Description: A community driven webnovel reader built with Svelte, with offline caching and a tons of optimizations. Built to be faster and cleaner than what was out there.
Category: WEB / OPTIMIZATION
Language: Svelte
Topics: epub, giscus, lotm, pandoc, svelte
### 11. ThumbScore
Source: https://github.com/Bittu5134/ThumbScore
Description: A browser extension that overlays real-time engagement and quality metrics straight onto YouTube thumbnails. Built with Mutation Observers so the page never stutters.
Category: TOOLS / EXTENSION
Language: JavaScript
Topics: browser-extension, chrome-extension, dom, youtube
### 12. Resume-Model
Live: https://iitk-resume.bittu.dev | Source: https://github.com/Bittu5134/IITK-Resume-Model
Description: A tool that parses academic PDFs by their layout geometry (since normal parsers choke on tables) and scores them. Built for IIT Kanpur's career office.
Category: TOOLS / PARSER
Language: Python
Topics: fastapi, nlp, pymupdf, python, scikit-learn
### 13. GH-Follow-Tracker
Live: https://follow.lazybittu.workers.dev/ | Source: https://github.com/Bittu5134/GH-Follow-Tracker
Description: A little service on Cloudflare Workers that tracks GitHub followers and generates live SVG badges, with Discord/Slack alerts when things change.
Category: TOOLS / SERVERLESS
Language: TypeScript
Topics: automation, cloudflare-workers, github-actions, javascript, webhooks
================================================================================
SECTION 3 — TECHNICAL ARTICLES (FULL TEXT)
================================================================================
---
Title: A Very Dumb Markov Chatbot
Date Published: 2026-10-11
Read Time: 3 min read
Tags: Discord, Chatbot, Python, Markov-Model, Project
Canonical URL: https://bittu.dev/blog/a-very-dumb-markov-chatbot
Raw Markdown: https://bittu.dev/blogs/a-very-dumb-markov-chatbot.md
Cover Image: https://bittu.dev/blogs/assets/covers/a-very-dumb-markov-chatbot.png
Summary: Coding a very dumb chatbot trained on Discord chats and watching the chaos ensue.
---
I remember reading GeeksforGeeks pages on how to make a chatbot before the AI era, but I never got around to making one. So, I spent the last few days building [DumbCord](https://github.com/Bittu5134/DumbCord), a chatbot that uses a Markov chain to generate responses.
To train the bot, I used chats from my [Discord server](https://bittu.dev/discord/). And, as you might expect from a Discord server, the chats were all over the place, so the bot came out completely unhinged.
{style=max-height:50vh;}
## How it works
DumbCord uses [markovify](https://github.com/jsvine/markovify) to build a probability table from past messages sent by users, breaking them into words and counting which words tend to follow each pair of words. It then walks that second-order Markov chain, sampling each next word based on the preceding two, and accepts the resulting text after it passes the configured validation checks. That's it. That's the model.
There is an extra layer on top of this that extracts all URLs from the messages and then converts them into hashes that the bot can use as a single token; otherwise, the bot would be incapable of sending GIFs.
Finally, there is a sanitization layer _(configurable)_ that can be used to sanitize @everyone, @here, and @mention pings, which the bot may otherwise generate depending on the training data.
All of this code is split between two files, `bot.py` and `scraper.py`: the scraper extracts the chats from the server, while `bot.py` contains the code for the actual bot that generates and sends replies.
```mermaid
flowchart LR
A["Discord history"] -->|scraper.py| B["messages.jsonl"]
B --> C["bot.py"]
C --> D["Markov chain"]
C --> E["Media index"]
F["Incoming message"] --> G{"Media match?"}
G -- "yes" --> H["Send media"]
G -- "no" --> I["Generate text"]
```
## So... is this a neural network?
No. Not even close. The reason I insist on calling this bot "dumb" is that it has no idea what it's generating. While this model "predicts the next word," similar to popular LLMs these days, the underlying mechanism is completely different.
| | DumbCord | A neural network |
|---|---|---|
| What it stores | Counted transitions between words, in a lookup table | Learned weights across layers of "neurons" |
| How it "learns" | Counting occurrences while reading a file | Gradient descent and backpropagation |
| Generalization | None, it can only recombine n-grams it has seen | Generalizes through dense embeddings |
| Parameters | Zero | Millions to billions |
So what I actually built is a language model, just not a neural one. Modern LLMs are built on its more powerful cousins, such as *neural probabilistic language models*, *RNNs*, and *transformers*.
The genuine advantage of the dumb version is that it fits in a few megabytes of RAM, trains in a second, needs no GPU, and there is no possible way to prompt-inject it into being polite.
## Running it yourself
Refer to the [Quickstart Guide](https://github.com/Bittu5134/DumbCord) for instructions on running the bot yourself.
## Showcase
Here are some screenshots of people from the [Discord server](https://bittu.dev/discord/) interacting with the bot.

## Food for Thought
After letting other users interact with the bot, it made me wonder: if just a few weeks' worth of chats from one Discord server can make a bot this chaotic, then just how much stuff are the big LLMs hiding behind their guardrails, and what happens when those guardrails no longer work?
## Conclusion
This was a fun weekend project for me. The full source is on [GitHub](https://github.com/Bittu5134/DumbCord). Train it on your own server and see how much of yourself you recognize.
================================================================================
---
Title: Yet Another Rock Paper Scissors Game!
Date Published: 2026-10-07
Read Time: 2 min read
Tags: Terminal, SSH, GO, TUI, Project
Canonical URL: https://bittu.dev/blog/rock-paper-ssh
Raw Markdown: https://bittu.dev/blogs/rock-paper-ssh.md
Cover Image: https://bittu.dev/blogs/assets/covers/stone-paper-ssh.png
Summary: A PvE multiplayer TUI game, built in Go and streamed over SSH.
---
I have always been fascinated with TUI applications, so today I spent my time working on this little [Rock Paper SSH](https://github.com/Bittu5134/Rock-Paper-SSH) game. You can play it by using this SSH command:
```bash
ssh rps.bittu.dev -p 2222
```
# The gameplay
The gameplay is very minimal. You join the game, and the game picks Rock/Paper/Scissors and gives you a very obscure hint. You get 10 seconds to make your choice. If you beat the server, you win; otherwise, you lose 50% of your points, which get distributed to other winning players.
**Controls:** Press `TAB` or any other key to switch between Rock/Paper/Scissors.
>[!IMPORTANT]
> Due to network limitations, only people on an IPv6 network can connect to the server for now. Currently, I don't have the funds for an IPv4 server.
# The Backend
This project uses these three libs as its main components.
- [Wish](https://github.com/charmbracelet/wish)
- [BubbleTea](https://github.com/charmbracelet/bubbletea)
- [LipGloss](https://github.com/charmbracelet/lipgloss)
This works by hosting an SSH server first (using Wish). Then, after a user connects, a unique sessionID is assigned to the user, and a new BubbleTea TUI object is passed over to them, where the rest of the gameplay loop happens.
Here's the user flow:
```mermaid
flowchart TD
A["User runs
ssh rps.bittu.dev -p 2222"] --> B["SSH handshake
(any password / key accepted)"]
B --> D["BubbleTea initiates and SessionID assigned"]
D --> E["Random username generated,
subscribed to server events,
and added to the score ledger"]
E --> F["Round in progress
show hint + countdown"]
F -- "timer expires" --> G["Score round:
losers lose 50% of their points,
winners split that pool + 25 base points"]
F -- "user presses a key / tab" --> H["Cycle choice: Rock → Paper → Scissors"]
H --> F
G --> I["Broadcast roundEndMsg
to all subscribed sessions"]
I --> F
G -- "disconnect (Ctrl+C)" --> J["Cleanup: unregister session,
drop subscription, pending pick and ledger entry"]
```
The game natively handles window sizing, component placement, and proper colour support for different terminals using LipGloss (mentioned above).
Also, another goroutine maintains the game loop and decides when the round starts and ends. Players who have desynced are gracefully synced with the server clock.
This is the summary of how this little game works. You can check out the source code in this [GitHub repository](https://github.com/Bittu5134/Rock-Paper-SSH).
================================================================================
---
Title: My First Blog ✨
Date Published: 2026-10-04
Date Modified: 2026-10-05
Read Time: 1 min read
Tags: Showcase, Markdown, Student
Keywords: Showcase, Markdown, Student, Blog Launch, Midnight Projects, Homelab, IIT Kanpur, IIT Kanpur '30, CyberSec, Software Engineering, Student Blog, Personal Blog, Tech Blog, Portfolio, Build In Public, Write In Public, Developer Journal, Web Development, Neo-Brutalism, Eleventy
Canonical URL: https://bittu.dev/blog/my-first-blog
Raw Markdown: https://bittu.dev/blogs/my-first-blog.md
Cover Image: https://bittu.dev/blogs/assets/covers/my-first-blog.webp
Summary: Your friendly, neighborhood Technomancer!
---
Welcome to another obscure blog on the Internet!
This is the start of my new personal blog:
a personal corner for myself on the World Wide Web!
So why did I suddenly decide to start a blog today, of all days?
Well, once a great man said...
> The best time to start a blog was 10 years ago, the next best time is right now.
> — Nobody Ever
Jokes aside, I have a tendency to work on random small things here and there and never document them. So I have decided to save all such things here, on this blog.
Going forward, I will be posting all my random midnight projects here.
I look forward to seeing you all around!
