<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Home on Kerim Kilic</title><link>https://kerim-kilic.com/</link><description>Recent content in Home on Kerim Kilic</description><generator>Hugo</generator><language>en</language><lastBuildDate>Sat, 03 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://kerim-kilic.com/index.xml" rel="self" type="application/rss+xml"/><item><title>This website: static hosting on AWS</title><link>https://kerim-kilic.com/portfolio/this-website/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kerim-kilic.com/portfolio/this-website/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;&#10;&lt;p&gt;This site is plain HTML built with Hugo and served from a private S3 bucket through CloudFront. The infrastructure is in &lt;a href="https://github.com/kerim-kilic/kerim-kilic.com/tree/main/terraform"&gt;&lt;code&gt;terraform/&lt;/code&gt;&lt;/a&gt;, in the same repository as the site. The decisions behind it, and the places where AWS didn&amp;rsquo;t behave as I expected, are in the article &lt;a href="https://kerim-kilic.com/articles/how-this-website-works/"&gt;How this website works&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h2 id="how-its-set-up"&gt;How it&amp;rsquo;s set up&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;The S3 bucket blocks all public access. Only this CloudFront distribution can read it, through origin access control.&lt;/li&gt;&#10;&lt;li&gt;The certificate comes from ACM and is validated through DNS records that Terraform creates in Cloudflare.&lt;/li&gt;&#10;&lt;li&gt;A CloudFront Function handles clean URLs and redirects &lt;code&gt;www&lt;/code&gt; to the bare domain, so there&amp;rsquo;s no server to run.&lt;/li&gt;&#10;&lt;li&gt;Security headers come from a CloudFront response headers policy.&lt;/li&gt;&#10;&lt;li&gt;GitHub Actions deploys by assuming a narrowly scoped IAM role through OIDC. No access keys are stored anywhere.&lt;/li&gt;&#10;&lt;li&gt;The dev site is a second copy of the same stack behind Cloudflare Access (Google sign-in or a one-time email code, allowlist only). Cloudflare adds a secret header that CloudFront checks, so nobody can go around the login through the raw &lt;code&gt;cloudfront.net&lt;/code&gt; address.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="why-static"&gt;Why static&lt;/h2&gt;&#10;&lt;p&gt;A static site costs almost nothing, loads quickly and has nothing to patch. The downside is that anything dynamic, like a form or search, needs a separate service, and I don&amp;rsquo;t need either here. Production doesn&amp;rsquo;t sit behind Cloudflare the way dev does, so I run a smoke test against the live site after every infrastructure change to catch any difference.&lt;/p&gt;</description></item><item><title>How this website works</title><link>https://kerim-kilic.com/articles/how-this-website-works/</link><pubDate>Sat, 03 Oct 2026 00:00:00 +0000</pubDate><guid>https://kerim-kilic.com/articles/how-this-website-works/</guid><description>&lt;p&gt;This site is about as small as a production system gets: a handful of HTML files, no database, no login. I still wanted to build it the way I would build something at work, for two reasons. The infrastructure is part of what I want to show, and the repository is public, so it has to be something I&amp;rsquo;m comfortable with people reading.&lt;/p&gt;&#10;&lt;p&gt;This article walks through how it fits together, the decisions behind it, and the few places where the platform doesn&amp;rsquo;t behave the way I expected. The &lt;a href="https://github.com/kerim-kilic/kerim-kilic.com"&gt;full source&lt;/a&gt; is on GitHub.&lt;/p&gt;</description></item><item><title>Privacy</title><link>https://kerim-kilic.com/privacy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://kerim-kilic.com/privacy/</guid><description>&lt;p&gt;The short version: this site doesn&amp;rsquo;t collect anything about you.&lt;/p&gt;&#10;&lt;h2 id="what-the-site-does"&gt;What the site does&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;It sets &lt;strong&gt;no cookies&lt;/strong&gt; and runs &lt;strong&gt;no analytics, advertising or tracking&lt;/strong&gt;.&lt;/li&gt;&#10;&lt;li&gt;It loads &lt;strong&gt;no third-party scripts&lt;/strong&gt;. The fonts and icons are served from this site itself, so your browser doesn&amp;rsquo;t contact Google or any other font or tracking service while you read a page.&lt;/li&gt;&#10;&lt;li&gt;It has &lt;strong&gt;no forms&lt;/strong&gt; and nothing to sign up for.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="when-you-visit"&gt;When you visit&lt;/h2&gt;&#10;&lt;p&gt;The pages are served by Amazon CloudFront (AWS), and the domain&amp;rsquo;s DNS is hosted by Cloudflare. Like any web host, they process your IP address to deliver the pages. I haven&amp;rsquo;t switched on access logging, so I don&amp;rsquo;t keep a record of who visited or what they read. AWS and Cloudflare handle the data they process under their own privacy terms.&lt;/p&gt;</description></item></channel></rss>