Notes

Notes on building software.

Short write-ups on engineering work: architecture, tooling and lessons from real projects.

RSS feed
  1. 6 min read

    Fix the query, then cache: how I cut a critical endpoint's response time by ~60%

    Notes from a Node.js and MongoDB service: why the query should be fixed before a cache goes in, how a cache-aside layer works, and how to keep the response contract intact along the way.

  2. 5 min readРусский

    Сначала запрос, потом кэш: как я сократил время ответа критичного эндпоинта примерно на 60%

    Заметки о сервисе на Node.js и MongoDB: почему сначала нужно исправить запрос и только потом добавлять кэш, как устроен cache-aside и как при этом не сломать контракт ответа.

  3. 6 min read

    Hybrid search for engineering documents: why keyword + FAISS beats pure vector search

    Notes on search over PDF, Word, Excel and scanned files: OCR before indexing, chunking with metadata, keyword plus dense retrieval, rank fusion and grounded answers.

  4. 5 min readРусский

    Гибридный поиск по инженерной документации: почему ключевые слова + FAISS лучше чисто векторного поиска

    Заметки о поиске по PDF, Word, Excel и сканам: OCR до индексации, чанкинг с метаданными, лексический и векторный поиск, слияние рангов и ответы с опорой на найденные фрагменты.

Alhassan Alfarran.

© 2026 · Designed and built by me with Next.js, Tailwind and Framer Motion.

My local time: · Moscow

Notes
How this site is built

Stack

Next.js (App Router) and React, styled with Tailwind CSS and animated with Framer Motion. The contact form sends email through Resend; the site is hosted on Vercel.

Three languages, one layout

English, Russian and Arabic each have their own address (/en, /ru, /ar) and share one set of components. The layout uses logical CSS properties (start/end instead of left/right), so Arabic mirrors right to left without separate styles. The server sends every page with its language and text direction already set, so nothing flips after loading, and the Arabic font is only downloaded when Arabic text is on screen.

Performance and accessibility

Sections below the first screen skip rendering until you scroll near them, and the quick menu loads on first use. Everything works from the keyboard, with a skip link and visible focus, and animations switch off when your system asks for reduced motion.

Source code on GitHub