<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Konstantinos Xafis — Blog</title><description>Technical write-ups on software engineering, Cloudflare, machine learning, compilers and systems.</description><link>https://kostas-portfolio.pages.dev/</link><language>en-GB</language><item><title>A drone engine for Byzantine chant on the Web Audio API</title><link>https://kostas-portfolio.pages.dev/en/blog/isokratis-web-audio-drone/</link><guid isPermaLink="true">https://kostas-portfolio.pages.dev/en/blog/isokratis-web-audio-drone/</guid><description>How Isokratis turns Byzantine music theory into a real-time synthesis engine — a 72-moria scale model, oscillator and sample voices, ADSR envelopes, and pitch shifting the way chanters expect it.</description><pubDate>Sat, 08 Aug 2026 00:00:00 GMT</pubDate></item><item><title>From lexer to JVM bytecode: writing a compiler for the Alan language</title><link>https://kostas-portfolio.pages.dev/en/blog/alan-compiler-jvm-bytecode/</link><guid isPermaLink="true">https://kostas-portfolio.pages.dev/en/blog/alan-compiler-jvm-bytecode/</guid><description>A look inside a complete compiler — JFlex lexer, CUP LALR parser, typed AST with symbol tables, and direct JVM bytecode emission via ASM. The hardest, most technical project I&apos;ve enjoyed the most.</description><pubDate>Thu, 06 Aug 2026 00:00:00 GMT</pubDate></item></channel></rss>