Skip to content
View jyatesdotdev's full-sized avatar
🎯
Focusing
🎯
Focusing

Block or report jyatesdotdev

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
jyatesdotdev/README.md

Hi, I'm Jonathan 👋

I'm a software development engineer with ~10 years of experience spanning backend engineering, cloud‑native infrastructure, and DevOps automation. I love turning complex problems into elegant, reliable systems — and learning something new every day.


🛠️ Tech Stack & Interests

Domain Tools & Languages
Languages Java, Python, C/C++, JavaScript/TypeScript, Go
Cloud / DevOps AWS, Kubernetes (K3s & EKS), Terraform, Flux CD, Ansible
Observability Prometheus, Grafana, Loki
Networking & Infra Proxmox, OPNsense, MetalLB, Traefik, BIND9
Data DynamoDB, PostgreSQL, Redis
Learning Algorithms & Data Structures, System Design, Low‑Level Programming

🌐 jyates.dev Architecture

My portfolio site is a fully serverless application on AWS, deployed via GitHub Actions with OIDC — no static credentials.

graph TB
    subgraph Edge
        DNS[Route53 DNS]
        WAF[WAFv2 Rate Limiting]
        CF[CloudFront CDN]
        CFFunc[CloudFront Function<br/>SPA Rewrite + Subdomain]
    end

    subgraph Origins
        S3[S3 Static Site<br/>React SPA + Prerendered HTML]
        APIGW[API Gateway REST<br/>API Key Auth]
    end

    subgraph Compute
        LInt[Lambda: Interactions<br/>Likes & Comments]
        LCon[Lambda: Contact<br/>Email via SES]
        LAdm[Lambda: Admin<br/>Comment Moderation]
        LAuth[Lambda: Authorizer<br/>Basic Auth]
    end

    subgraph Storage
        DDB[(DynamoDB<br/>Single-Table Design)]
        SSM[SSM Parameter Store<br/>Admin Credentials]
        SES[SES v2<br/>Transactional Email]
    end

    subgraph Observability
        COG[Cognito Identity Pool<br/>Unauth RUM Access]
        RUM[CloudWatch RUM<br/>100% Sampling]
        BG[Budget Guard<br/>$10/mo Hard Stop]
        EB[EventBridge Cron<br/>Monthly Reset]
        LRes[Lambda: Reset<br/>Detach Deny Policy]
    end

    subgraph CI/CD
        GHA[GitHub Actions<br/>OIDC Auth]
        TF[Terraform]
        ART[S3 Artifacts Bucket]
    end

    DNS --> WAF --> CF
    CF --> CFFunc --> S3
    CF -->|/api/*| APIGW
    APIGW --> LAuth
    APIGW --> LInt & LCon & LAdm
    LInt & LAdm --> DDB
    LCon --> SES
    LAuth --> SSM
    GHA --> TF --> Origins & Compute
    GHA -->|Lambda Zips| ART
    GHA -->|S3 Sync| S3
    S3 -.->|RUM Telemetry| COG --> RUM
    BG -.->|Deny Policy| COG
    EB --> LRes -.->|Detach Deny| COG
Loading

Key design decisions:

  • SPA with prerendering — React Router 7 generates static HTML at build time for SEO; client-side navigation after hydration
  • Single-table DynamoDB — likes, comments, and moderation state in one table with composite keys
  • CloudFront error handling — only 404 triggers SPA fallback (not 403), so API error responses pass through correctly
  • IP deduplication — extracts first IP from X-Forwarded-For chain for like toggle tracking
  • RUM budget guard — $10/month hard stop via AWS Budgets action that attaches a deny policy to the Cognito role; auto-resets monthly via EventBridge + Lambda

Three public repositories: jyatesdotdev-frontend (React SPA), jyatesdotdev-api (Go Lambdas), jyatesdotdev-infra (Terraform). A private bootstrap repo manages account-level resources (OIDC provider, deploy role, state/artifacts buckets).


🚀 What I'm Working On

Rune — a tiny interpreted language

An interpreter written in C to teach myself data structures and algorithms from the ground up — syntax inspired by Python, with an interactive REPL and AST visualizer.

Home‑Lab GitOps

Terraform + Flux CD modules that provision and continuously reconcile a self‑hosted K3s cluster (Traefik ingress, MetalLB, external‑dns, BIND9, DHCP, VLAN segmentation, and more).

Algorithm Visualizers

Interactive maze/graph explorers (DFS/BFS, Manhattan distance tweaks) built with Python + JavaScript to make algorithm study tactile and fun.


📚 Learning & Sharing

I document my journey — successes and face‑plants — through blog posts, code comments, and discussions. Current deep‑dives include:

  • Distributed systems & consensus primitives (Raft, TO‑Bcast)
  • Performance tuning for JVM & Go micro‑services
  • Spaced‑repetition workflows for continuous learning

🌱 Open to Collaborate

I'm always excited to chat about infrastructure, dev tooling, and projects that make an impact. Feel free to open an issue, start a discussion, or just say hi.


"Spot the bottleneck, learn fast, ship the fix."

Popular repositories Loading

  1. toggl-cmder toggl-cmder Public archive

    This project started as a way for me to easily start and stop timers right from the command line. It sports a regex to help find items without needing to spell them perfectly.

    Python 1

  2. aoc aoc Public

    Repository for Advent of Code solutions, stored in subdirectories by year and day.

    Python

  3. jyatesdotdev jyatesdotdev Public

  4. c-comprehensive-template c-comprehensive-template Public

    Comprehensive C project template with CMake, testing, security scanning, CLI examples, and Docker support

    C

  5. cpp-comprehensive-template cpp-comprehensive-template Public

    Comprehensive C++ project template with CMake, vcpkg, testing, security scanning, CLI examples, and Docker support

    C++

  6. go-comprehensive-template go-comprehensive-template Public

    Comprehensive Go project template with testing, security scanning, CLI examples, and Docker support

    Go