About

I’ve been building software for a while, and I run my work through my own company, Urcu Soft. Along the way I keep running into new problems, and I write up how I solved them here on the blog.

Why I write#

Most of these posts are really notes to myself. After spending hours on a problem, I noticed that if I didn’t write the fix down somewhere, I’d be researching the same thing from scratch six months later. And if I’m writing it down anyway, it may as well be public — someone else hitting the same wall might save an afternoon.

The goal is simple: the next person with the same problem should find the fix in five minutes. So the posts are full of commands, code, and “why it works” explanations — not just “do this.”

What I write about#

  • Fixes for errors I’ve run into — how I diagnosed them and how I fixed them
  • Tools and configs I use, and how they’ve worked out
  • Approaches I’ve tried — the ones that worked and the ones that didn’t

Topics mostly revolve around Linux, web development, and security. Posts are in Turkish and English — use the language switcher at the top to move between them.

How I built this site#

For my blog I went with a plain design. Instead of installing an off-the-shelf theme, I designed my own theme for Astro and named it Urcu Duru — I wanted to keep the site’s speed and security under my own control.

The site is fully static: Astro only runs while I’m writing, at build time; the visitor gets plain HTML and CSS with no server behind it. So there’s no plugin to keep updated, no database to back up, and no server to patch.

The stack, briefly:

  • Framework: Astro (static output), zero runtime dependencies.
  • Design: no CSS framework like Tailwind; I wrote the styles by hand with my own variables.
  • Search: Pagefind indexes the pages at build time — search is fully static too.
  • Code highlighting: Shiki; colors are turned into CSS classes instead of inline styles (for a strict CSP).
  • Security: a strict Content-Security-Policy and extra security headers — the page loads almost nothing from outside.
  • Hosting: Cloudflare Pages; it rebuilds and deploys automatically after every git push.

Getting in touch#

If you have a question about a post, or think I got something wrong, reach me through the Contact page. There’s also a comments section under every post.