{"id":50902515,"url":"https://github.com/jonathanperis/jonathanperis","last_synced_at":"2026-06-16T04:02:43.932Z","repository":{"id":348150055,"uuid":"1196651426","full_name":"jonathanperis/jonathanperis","owner":"jonathanperis","description":"GitHub profile README -- terminal-themed developer portfolio showcasing microservices, game dev, and polyglot performance engineering","archived":false,"fork":false,"pushed_at":"2026-06-15T00:35:17.000Z","size":44,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-15T02:23:54.247Z","etag":null,"topics":["brazil","clean-architecture","csharp","developer","dotnet","game-dev","github-profile","go","microservices","open-source","performance","portfolio","readme","rust","typescript"],"latest_commit_sha":null,"homepage":"https://jonathanperis.github.io","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jonathanperis.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"jonathanperis","buy_me_a_coffee":"jonathanperis"}},"created_at":"2026-03-30T22:54:35.000Z","updated_at":"2026-05-02T17:07:24.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/jonathanperis/jonathanperis","commit_stats":null,"previous_names":["jonathanperis/jonathanperis"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jonathanperis/jonathanperis","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathanperis%2Fjonathanperis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathanperis%2Fjonathanperis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathanperis%2Fjonathanperis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathanperis%2Fjonathanperis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jonathanperis","download_url":"https://codeload.github.com/jonathanperis/jonathanperis/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonathanperis%2Fjonathanperis/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34390052,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-16T02:00:06.860Z","response_time":126,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["brazil","clean-architecture","csharp","developer","dotnet","game-dev","github-profile","go","microservices","open-source","performance","portfolio","readme","rust","typescript"],"created_at":"2026-06-16T04:02:41.884Z","updated_at":"2026-06-16T04:02:43.927Z","avatar_url":"https://github.com/jonathanperis.png","language":null,"funding_links":["https://github.com/sponsors/jonathanperis","https://buymeacoffee.com/jonathanperis"],"categories":[],"sub_categories":[],"readme":"```\n\u003e \"A Vinganca nunca e plena, mata a alma e a envenena.\" - Seu Madruga\n```\n\n```csharp\nvar jonathan = new Developer\n{\n    Location  = \"Itanhaem, SP, Brazil\",\n    Company   = \"Peris Studio\",\n    Focus     = new[] { \"Microservices\", \"Clean Architecture\", \"Performance Engineering\" },\n    Languages = new[] { \"C#\", \"Go\", \"Rust\", \"Python\", \"TypeScript\", \"C\" },\n    Hobbies   = new[] { \"Game Dev\", \"Load Testing Everything\", \"Proving .NET Is Fast\" }\n};\n```\n\n### `$ whoami`\n\nSoftware engineer focused on backend systems, benchmarking, and low-level game work. I build services, measure them, and then rebuild them in other languages to compare the results.\n\nI keep the stack centered on .NET, but I also use Go, Rust, Python, TypeScript/ReactLynx, and C/SDL2 for projects that fit those tools better.\n\n---\n\n### `$ ls ~/projects --sort=stars`\n\n\u003ctable\u003e\n\u003ctr\u003e\u003ctd\u003e\n\n**[cpnucleo](https://github.com/jonathanperis/cpnucleo)** `★ 8` \\\nProduction-grade .NET 9 microservices reference architecture \\\n`Clean Architecture` `CQRS` `DDD` `gRPC` `FastEndpoints` `Blazor WASM` `Native AOT` `Docker` `PostgreSQL` `OpenTelemetry`\n\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\n\n**[blazor-mudblazor-starter](https://github.com/jonathanperis/blazor-mudblazor-starter)** `★ 1` \\\nBlazor Server starter template with MudBlazor, multi-arch Docker, AOT + trimming \\\n`MudBlazor 8.3` `.NET 9` `Azure deployment` `CI/CD`\n\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\n\n**[speedy-bird-lynx](https://github.com/jonathanperis/speedy-bird-lynx)** \\\nCross-platform side scroller built with ReactLynx and TypeScript \\\n`ReactLynx` `TypeScript` `2D game` `cross-platform`\n\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\n\n**[super-mango-editor](https://github.com/jonathanperis/super-mango-editor)** \\\nClassic 2D side-scrolling platformer in pure C + SDL2, playable in the browser via WebAssembly \\\n`32 render layers` `delta-time physics` `gamepad support` `parallax scrolling` `Emscripten` `pixel art`\n\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\n\n**[rinha2-back-end-dotnet](https://github.com/jonathanperis/rinha2-back-end-dotnet)** `★ 3` \\\nRinha de Backend challenge -- ASP.NET 9, Native AOT, 60% less RAM than allowed \\\n`\u003c 800ms responses` `250MB RAM ceiling` `PostgreSQL stored functions` `Npgsql multiplexing`\n\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\n\n**[rinha2-back-end-go](https://github.com/jonathanperis/rinha2-back-end-go)** \\\nRinha de Backend implementation in Go, kept to a compact single-file service at ~190 lines \\\n`chi router` `pgx` `single-file` `compact`\n\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\n\n**[rinha2-back-end-python](https://github.com/jonathanperis/rinha2-back-end-python)** \\\nRinha de Backend implementation in Python for the same transaction workload \\\n`Python` `HTTP API` `database-backed` `benchmarking`\n\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\n\n**[rinha2-back-end-rust](https://github.com/jonathanperis/rinha2-back-end-rust)** \\\nRinha de Backend implementation in Rust, ~140 lines and backed by Actix-web \\\n`Actix-web` `Tokio` `SQLx` `single-file`\n\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\n\n**[rinha2-back-end-k6](https://github.com/jonathanperis/rinha2-back-end-k6)** \\\nShared stress test suite for all Rinha implementations -- k6 + InfluxDB + Grafana dashboards \\\n`load testing` `HTML reports` `custom xk6 binary`\n\n\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003e\n\n**[jonathanperis.github.io](https://github.com/jonathanperis/jonathanperis.github.io)** \\\nPortfolio site with a dark terminal aesthetic, Konami code easter egg, and a fake terminal \\\n`Next.js 16` `React 19` `TypeScript` `Tailwind CSS v4` `portfolio`\n\n\u003c/td\u003e\u003c/tr\u003e\n\u003c/table\u003e\n\n---\n\n### `$ cat /proc/tech_stack`\n\n```\n+-----------------------+--------------------------------------------------+\n| Backend               | .NET 9, ASP.NET, FastEndpoints, gRPC, EF Core,  |\n|                       | Dapper, Native AOT                               |\n| Systems               | Go (chi, pgx), Rust (Actix-web, Tokio, SQLx),   |\n|                       | C (SDL2, Emscripten/WASM)                        |\n| Frontend              | Blazor WASM, React 19, ReactLynx, Next.js 16,    |\n|                       | TypeScript, Tailwind CSS, MudBlazor              |\n| Infrastructure        | Docker, Nginx, PostgreSQL, GitHub Actions        |\n| Observability         | OpenTelemetry, Grafana, InfluxDB, k6             |\n| Architecture          | Clean Architecture, CQRS, DDD, Microservices     |\n+-----------------------+--------------------------------------------------+\n```\n\n---\n\n### `$ cat benchmarks.md`\n\nThe **Rinha de Backend** challenge: handle concurrent credit/debit transactions across 2 API instances behind Nginx, all within **550 MB total RAM** with every response under **800 ms p99** — same workload across **5 implementations**, same PostgreSQL stored procedures, same Nginx config, same [k6 stress harness](https://github.com/jonathanperis/rinha2-back-end-k6).\n\n| Impl | Lang | Framework | DB driver | LOC | CI | Notable |\n|------|------|-----------|-----------|----:|----|---------|\n| [rinha2-back-end-dotnet](https://github.com/jonathanperis/rinha2-back-end-dotnet) | C# | ASP.NET 10 + FastEndpoints | Npgsql multiplexing | ~200 | [![CI](https://github.com/jonathanperis/rinha2-back-end-dotnet/actions/workflows/build-check.yml/badge.svg)](https://github.com/jonathanperis/rinha2-back-end-dotnet/actions) | Native AOT, 60% RAM headroom |\n| [rinha2-back-end-go](https://github.com/jonathanperis/rinha2-back-end-go) | Go | chi | pgx v5 | ~190 | [![CI](https://github.com/jonathanperis/rinha2-back-end-go/actions/workflows/build-check.yml/badge.svg)](https://github.com/jonathanperis/rinha2-back-end-go/actions) | Single-file service |\n| [rinha2-back-end-rust](https://github.com/jonathanperis/rinha2-back-end-rust) | Rust | Actix-web + Tokio | SQLx | ~140 | [![CI](https://github.com/jonathanperis/rinha2-back-end-rust/actions/workflows/build-check.yml/badge.svg)](https://github.com/jonathanperis/rinha2-back-end-rust/actions) | Smallest LOC |\n| [rinha2-back-end-python](https://github.com/jonathanperis/rinha2-back-end-python) | Python | FastAPI / asyncpg | asyncpg | ~150 | [![CI](https://github.com/jonathanperis/rinha2-back-end-python/actions/workflows/build-check.yml/badge.svg)](https://github.com/jonathanperis/rinha2-back-end-python/actions) | Same API contract, compact |\n| [rinha2-back-end-k6](https://github.com/jonathanperis/rinha2-back-end-k6) | JS (k6) | xk6 + Grafana | — | — | [![CI](https://github.com/jonathanperis/rinha2-back-end-k6/actions/workflows/codeql.yml/badge.svg)](https://github.com/jonathanperis/rinha2-back-end-k6/actions) | Shared stress harness |\n\n\u003e All four service repos share a `Reusable — Deploy docs to GitHub Pages` workflow defined in [`jonathanperis/.github`](https://github.com/jonathanperis/.github/blob/main/.github/workflows/pages-docs-deploy.yml) — every consumer's deploy job is ~10 lines of YAML.\n\n---\n\n### `$ neofetch`\n\n```\n   jonathan@peris-studio\n   ----------------------\n   OS:        macOS / Linux / Docker\n   Shell:     zsh + dotfiles\n   Editor:    VS Code + JetBrains\n   Uptime:    coding since 2015\n   Repos:     13 active, 0 abandoned\n   Packages:  NuGet, npm, Cargo, pip\n   Theme:     Dark Terminal Aesthetic\n\n   Contact:   jperis.silva@gmail.com\n   Portfolio: https://jonathanperis.github.io/\n   Twitter:   @jperis_silva\n```\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003cb\u003e\u003ca href=\"https://jonathanperis.github.io/\"\u003eLive demo →\u003c/a\u003e\u003c/b\u003e | \u003cb\u003e\u003ca href=\"https://github.com/jonathanperis/jonathanperis/wiki\"\u003eDocumentation →\u003c/a\u003e\u003c/b\u003e\n\u003c/p\u003e\n\n---\n\n\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/jonathanperis/jonathanperis/output/github-contribution-grid-snake-dark.svg\" /\u003e\n  \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://raw.githubusercontent.com/jonathanperis/jonathanperis/output/github-contribution-grid-snake.svg\" /\u003e\n  \u003cimg alt=\"github-snake\" src=\"https://raw.githubusercontent.com/jonathanperis/jonathanperis/output/github-contribution-grid-snake-dark.svg\" width=\"100%\" /\u003e\n\u003c/picture\u003e\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003csub\u003ehint: visit \u003ca href=\"https://jonathanperis.github.io/\"\u003ejonathanperis.github.io\u003c/a\u003e and try the Konami code\u003c/sub\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonathanperis%2Fjonathanperis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjonathanperis%2Fjonathanperis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonathanperis%2Fjonathanperis/lists"}