[{"content":"My old site was a single index.html Bootstrap page. No blog, no easy way to add projects, and the resume lived in a completely separate repo. It worked but it was a pain to maintain. So I rebuilt it with Hugo.\nHere\u0026rsquo;s how I did it — and how you can do the same.\nWhat is Hugo Hugo is a static site generator written in Go. You write content in markdown, define layouts in HTML templates, and Hugo compiles everything into a folder of static files ready to be served from anywhere — GitHub Pages, Netlify, S3, whatever you want.\nNo runtime, no database, no server to maintain. Just files.\nIt\u0026rsquo;s also extremely fast. A full site build typically takes under a second. The dev server live-reloads on every save, so the feedback loop while writing is instant.\nInstallation On macOS with Homebrew:\n1 brew install hugo Verify it worked:\n1 2 hugo version # hugo v0.147.1+extended darwin/arm64 Make sure you get the extended version — some themes including PaperMod require it for SCSS processing.\nCreating a New Site 1 2 3 hugo new site my-site cd my-site git init This scaffolds the basic folder structure:\n1 2 3 4 5 6 archetypes/ # templates for new content content/ # your markdown files live here layouts/ # HTML templates (overrides theme) static/ # files copied as-is to output (images, favicons) themes/ # your theme goes here hugo.toml # site configuration Adding the PaperMod Theme I went with PaperMod — minimal, fast, and well maintained. Add it as a git submodule so it stays in sync with upstream without bloating your repo:\n1 git submodule add --depth=1 https://github.com/adityatelange/hugo-PaperMod themes/PaperMod Then tell Hugo to use it in hugo.toml:\n1 2 3 baseURL = \u0026#34;https://yourdomain.com/\u0026#34; title = \u0026#34;Your Name\u0026#34; theme = \u0026#34;PaperMod\u0026#34; When someone clones your repo they\u0026rsquo;ll need to run this once to pull the theme:\n1 git submodule update --init --recursive Configuring the Site PaperMod has a profile mode that works well for a personal site — a landing page with a photo, a subtitle, and buttons to your main sections. Here\u0026rsquo;s the relevant config:\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 [params] defaultTheme = \u0026#34;auto\u0026#34; [params.profileMode] enabled = true title = \u0026#34;Your Name\u0026#34; subtitle = \u0026#34;What you do, in one line.\u0026#34; imageUrl = \u0026#34;img/photo.jpg\u0026#34; [[params.profileMode.buttons]] name = \u0026#34;Blog\u0026#34; url = \u0026#34;/posts\u0026#34; [[params.profileMode.buttons]] name = \u0026#34;Resume\u0026#34; url = \u0026#34;/resume\u0026#34; [[params.socialIcons]] name = \u0026#34;github\u0026#34; url = \u0026#34;https://github.com/yourusername\u0026#34; [[params.socialIcons]] name = \u0026#34;linkedin\u0026#34; url = \u0026#34;https://linkedin.com/in/yourprofile\u0026#34; Put your profile photo at static/img/photo.jpg and it\u0026rsquo;ll show up on the landing page.\nContent Structure Everything in content/ becomes a page. I organised mine like this:\n1 2 3 4 5 6 content/ resume.md ← my resume about.md ← about page search.md ← search page posts/ ← blog posts projects/ ← open source projects A new blog post is just a file:\n1 hugo new content posts/my-first-post.md The front matter at the top controls metadata:\n1 2 3 4 5 6 7 8 9 --- title: \u0026#34;My First Post\u0026#34; date: 2026-05-14 draft: false tags: [\u0026#34;go\u0026#34;, \u0026#34;hugo\u0026#34;] description: \u0026#34;A short summary shown in post listings.\u0026#34; --- Your content here. Set draft: true while writing, flip it to false when you\u0026rsquo;re ready to publish.\nCustom Template for the Resume This was the part I was most particular about. I wanted the resume to live as a plain markdown file but render with a proper print layout — clean, full-width, with a Print/Save as PDF button.\nHugo lets you override the theme template for any content type. Create a file at layouts/resume/single.html and Hugo will use it instead of the default template whenever it renders a page with type: resume in its front matter.\nThe template itself is straightforward — extend the base layout, render the content, add a print button and some CSS:\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 {{- define \u0026#34;main\u0026#34; }} \u0026lt;div class=\u0026#34;resume-page\u0026#34;\u0026gt; \u0026lt;div class=\u0026#34;resume-actions no-print\u0026#34;\u0026gt; \u0026lt;button onclick=\u0026#34;window.print()\u0026#34;\u0026gt;Print / Save as PDF\u0026lt;/button\u0026gt; \u0026lt;/div\u0026gt; \u0026lt;article\u0026gt;{{- .Content }}\u0026lt;/article\u0026gt; \u0026lt;/div\u0026gt; \u0026lt;style\u0026gt; @media print { .no-print { display: none; } header, footer, nav { display: none; } } \u0026lt;/style\u0026gt; {{- end }} And in content/resume.md:\n1 2 3 4 5 6 7 8 --- title: \u0026#34;Resume\u0026#34; type: \u0026#34;resume\u0026#34; layout: \u0026#34;single\u0026#34; --- # Your Name ... Now the resume is just a markdown file. Update it, push, deployed.\nAuto-Deploy with GitHub Actions The deploy workflow lives at .github/workflows/deploy.yml. It triggers on every push to main, installs Hugo, builds the site, and publishes to GitHub Pages:\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 name: Deploy Hugo site to GitHub Pages on: push: branches: - main permissions: contents: read pages: write id-token: write jobs: build: runs-on: ubuntu-latest env: HUGO_VERSION: 0.147.1 steps: - name: Install Hugo run: | wget -O ${{ runner.temp }}/hugo.tar.gz \\ https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz tar -xzf ${{ runner.temp }}/hugo.tar.gz -C ${{ runner.temp }} sudo mv ${{ runner.temp }}/hugo /usr/local/bin/ - name: Checkout uses: actions/checkout@v4 with: submodules: recursive - name: Build run: hugo --minify - name: Upload artifact uses: actions/upload-pages-artifact@v3 with: path: ./public deploy: needs: build runs-on: ubuntu-latest environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} steps: - name: Deploy id: deployment uses: actions/deploy-pages@v4 One thing to set up in your GitHub repo: go to Settings → Pages → Source and switch it from \u0026ldquo;Deploy from a branch\u0026rdquo; to \u0026ldquo;GitHub Actions\u0026rdquo;. Do this before your first push to main.\nAfter that, every commit to main is a deployment. Takes about a minute.\nThe Workflow Going Forward Write a post in markdown, commit, push. That\u0026rsquo;s the entire loop. No CMS to log into, no build command to remember, no separate deploy step. The friction is low enough that I might actually keep this thing updated.\nWe\u0026rsquo;ll see.\n","permalink":"http://caner.bio/posts/2026-05-14-how-i-rebuilt-my-site-with-hugo/","summary":"\u003cp\u003eMy old site was a single \u003ccode\u003eindex.html\u003c/code\u003e Bootstrap page. No blog, no easy way to add projects, and the resume lived in a completely separate repo. It worked but it was a pain to maintain. So I rebuilt it with Hugo.\u003c/p\u003e\n\u003cp\u003eHere\u0026rsquo;s how I did it — and how you can do the same.\u003c/p\u003e\n\u003ch2 id=\"what-is-hugo\"\u003eWhat is Hugo\u003c/h2\u003e\n\u003cp\u003eHugo is a static site generator written in Go. You write content in markdown, define layouts in HTML templates, and Hugo compiles everything into a folder of static files ready to be served from anywhere — GitHub Pages, Netlify, S3, whatever you want.\u003c/p\u003e","title":"How I Rebuilt My Personal Site with Hugo"},{"content":"Overview Reqora is an AI-driven platform for e-commerce returns management and resale automation, built for Amazon sellers.\nTech Stack Backend: Python, Django, Django REST Framework, Celery, RabbitMQ AI Pipelines: LangChain, LangGraph — automated product evaluation and pricing workflows Frontend: React, Redux, Material UI Integrations: Amazon Seller APIs (SP-API) for inventory and returns sync Infrastructure: Docker, AWS What it does Sellers on Amazon deal with a constant stream of returned items. Reqora automates the evaluation, pricing, and resale workflow — reducing manual effort and recovering more revenue from returns.\n","permalink":"http://caner.bio/projects/reqora/","summary":"\u003ch2 id=\"overview\"\u003eOverview\u003c/h2\u003e\n\u003cp\u003eReqora is an AI-driven platform for e-commerce returns management and resale automation, built for Amazon sellers.\u003c/p\u003e\n\u003ch2 id=\"tech-stack\"\u003eTech Stack\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eBackend:\u003c/strong\u003e Python, Django, Django REST Framework, Celery, RabbitMQ\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eAI Pipelines:\u003c/strong\u003e LangChain, LangGraph — automated product evaluation and pricing workflows\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFrontend:\u003c/strong\u003e React, Redux, Material UI\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eIntegrations:\u003c/strong\u003e Amazon Seller APIs (SP-API) for inventory and returns sync\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eInfrastructure:\u003c/strong\u003e Docker, AWS\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"what-it-does\"\u003eWhat it does\u003c/h2\u003e\n\u003cp\u003eSellers on Amazon deal with a constant stream of returned items. Reqora automates the evaluation, pricing, and resale workflow — reducing manual effort and recovering more revenue from returns.\u003c/p\u003e","title":"Reqora"},{"content":"Hey, I\u0026rsquo;m Caner 👋 I\u0026rsquo;m a Senior Software Engineer based in the San Francisco Bay Area with over 10 years of experience building software that scales. Currently at TriNet, where I work on the distributed time-off accrual engine powering thousands of companies and nearly a million employees.\nMy background spans the full stack — from backend systems with Python/Django and Java/Spring Boot, to frontend with React and TypeScript — but my real passion is distributed systems, event-driven architecture, and making complex infrastructure simple to operate.\nI\u0026rsquo;m also genuinely excited about AI and automation. I\u0026rsquo;ve built AI-driven platforms using LangChain and LangGraph, and I use AI-assisted workflows daily in my engineering practice.\nOn the side, I build open source tools and run side projects. You\u0026rsquo;ll find some of them in the Projects section here.\nWhen I\u0026rsquo;m not engineering, I produce music. Probably not what you expected, but there it is.\n📧 hello@caner.bio 🔗 linkedin.com/in/canerturkmen 👾 github.com/emoty88\n","permalink":"http://caner.bio/about/","summary":"About Caner Türkmen","title":"About"},{"content":"Caner Türkmen Senior Software Engineer\n📍 San Francisco Bay Area, CA · ✉️ hello@caner.bio · 💻 github.com/emoty88 · 🔗 linkedin.com/in/canerturkmen\nProfessional Summary Senior Software Engineer with 10+ years of experience building scalable distributed systems and full-stack applications. Specializes in Python, Java, and TypeScript across microservices, event-driven architecture, and cloud-native systems — with production impact at scale, including a distributed time-off accrual engine serving ~353,000 worksite employees. Proven builder of internal tooling that drives cross-team adoption, from AI-powered MCP servers to developer productivity tools. Founder-engineer with hands-on experience designing AI pipelines using LangChain and LangGraph for intelligent automation and workflow orchestration.\nTechnical Skills Languages Python, Java, JavaScript, TypeScript\nBackend \u0026amp; APIs Django, Django REST Framework (DRF), Spring Boot, GraphQL, REST APIs\nFrontend React, Redux, Material UI, Angular\nDistributed Systems Microservices, Kafka, Event-Driven Architecture, Asynchronous Processing\nAI \u0026amp; Automation LangChain, LangGraph, MCP Server Development, AI-assisted development workflows\nCloud \u0026amp; DevOps Docker, Kubernetes, AWS, Jenkins\nDatabases PostgreSQL, MySQL, MongoDB, Elasticsearch, Redis\nTesting Unit Testing, Integration Testing, Selenium, Puppeteer\nProfessional Experience Senior Software Engineer TriNet — San Francisco Bay Area, CA · Apr 2024 – Present\nBuilt backend services for a distributed time-off accrual engine serving thousands of companies and ~353,000 worksite employees across the US.\nDesigned and implemented event-driven accrual pipelines using Kafka, Spring Boot, and GraphQL — processing time-off and accrual events at enterprise scale. Built an internal MCP server for natural-language database investigation and stage-to-local data migration; led POC approval and distribution, with adoption by multiple engineering and product teams. Developed a Business User Verification test simulator that replaced multi-step manual setup with a single UI — cutting scenario run time from ~10 minutes to under 1 minute, freeing 2+ engineers from 3-hour daily monitoring sessions, and unblocking a stalled test cycle caused by an external service outage. Designed and delivered an internal Python \u0026amp; Django engineering course attended live by 40+ engineers, with recordings adopted across multiple teams. Java · Spring Boot · GraphQL · Kafka · MySQL · Python · Django · MCP\nSenior Software Engineer → Software Developer Yupana Inc — San Francisco Bay Area, CA · Jul 2014 – Jan 2023\nBuilt telecom infrastructure automation platforms for network operators over 9 years, progressing from Software Developer to Senior Software Engineer.\nArchitected and built the YuCube cloud platform powering an IoT device that automates cell site configuration, upgrades, and licensing — reducing base station integration time from 4 hours to under 40 minutes per site, with offline backhaul support for field deployments. Overhauled a daily-use network monitoring tool that degraded to query times measured in minutes under load — reduced response times by 500% through backend optimization and Redis caching, directly increasing war room operational efficiency. Led development of a custom data platform for Rogers Communications from requirements to MVP, converting them as a new telecom client and contributing to company growth. Python · Django · PostgreSQL · React · TypeScript · Redis · Docker\nSoftware Engineering Team Lead Medya A.Ş. — Istanbul, Turkey · 2019\nLed engineering teams to design and deliver a distribution platform for a large beverage network during a consulting engagement.\nArchitected and shipped a multi-channel distribution platform, leading backend and frontend teams from system design through launch. Managed cross-functional delivery across backend, frontend, and mobile workstreams using Scrum methodology. Python · Django REST Framework · React · React Native\nProjects Reqora — AI-Driven Returns Management Platform Founder \u0026amp; Lead Engineer\nBuilt an AI-powered platform to automate Amazon returns management, product evaluation, and resale workflows end-to-end.\nDesigned LangChain and LangGraph AI pipelines to automate product condition evaluation and dynamic pricing decisions for returned inventory. Built async processing infrastructure with Celery and RabbitMQ and integrated Amazon Seller APIs for real-time inventory and returns synchronization. Developed a full-stack returns dashboard using React, Redux, and Material UI. Python · Django · Celery · RabbitMQ · LangChain · LangGraph · React\nPopilicity — Social Media Platform Founder \u0026amp; CTO\nBuilt and launched a mobile social network focused on content popularity analytics, securing seed funding from UK investors.\nArchitected REST APIs using Django REST Framework and built the cross-platform mobile app in React Native. Python · Django REST Framework · React Native\nEducation AI \u0026amp; Machine Learning Certification · California Institute of Technology\nBachelor of Science — Computer Engineering · Istanbul University\n","permalink":"http://caner.bio/resume/","summary":"Caner Türkmen — Senior Software Engineer Resume","title":"Resume"}]