# Blogs — rafay.sh

> Long-form writing by Abdul Rafay: things he has learned, broken, fixed, and explored across frontend, backend, and everything in between.

- Canonical page: https://rafay.sh/blogs

## Posts

- [Integrating Speech to Text & Text to Speech](https://rafay.sh/blogs/integrating-speech-to-text-and-text-to-speech.md): Integrating STT & TTS into a website seemed simple at first (STT actually was), but there were a few things I didn’t realize needed extra handling. The goal of this blog is to mak… (2026-02-05, tags: TypeScript, Speech to Text, Text to Speech, Web Development)
- [WebSockets 101](https://rafay.sh/blogs/websockets-101.md): This blog covers the fundamentals of WebSockets, why they are needed, and how real time communication works on the web. The goal is to help you get started by understanding WebSoc… (2025-12-14, tags: WebSockets, TypeScript, Bun, Web Development)
- [Getting Started with Zod](https://rafay.sh/blogs/getting-started-with-zod.md): A beginner friendly guide to validating data in TypeScript using Zod’s powerful schema system—making your apps safer, cleaner, and more predictable. (2024-07-23, tags: TypeScript, Zod, Web Development)

## Elsewhere on this site

- [Home](https://rafay.sh/index.md)
- [Chunks](https://rafay.sh/chunks.md)
- [Projects](https://rafay.sh/projects.md)
- [Components & hooks](https://rafay.sh/shenanigans.md)
- [Fragments](https://rafay.sh/fragments.md)
- [Terminal](https://rafay.sh/terminal.md)
- [Guestbook](https://rafay.sh/guestbook.md)
- [Stats](https://rafay.sh/stats.md)
- [For agents](https://rafay.sh/for-agents.md)
- [Agent index (llms.txt)](https://rafay.sh/llms.txt)
- [Sitemap](https://rafay.sh/sitemap.xml)
