Hamza Hassanain
Software Engineer @ Repovive (YC F'26) · AWS Certified Solutions Architect · 3× ICPC ACPC Finalist
Cairo, Egypt · GitLab community contributor since Nov 2025
I'm a backend engineer. At Repovive I joined as the first engineer and built the contest judge and core systems behind a platform with 10,000+ users. On GitLab I mostly work on the Go SDK, the Terraform provider, and the main GitLab codebase. I like Go, C++, and Ruby, and I contribute upstream to LLVM and Swift NIO too.
🦊 My GitLab contributions
25 merged MRs across 8 gitlab-org projects, and 12 open MRs in review right now.
| Project | Merged | What I worked on |
|---|---|---|
api/client-go |
9 | Typed group integration settings (Slack, Jira, Microsoft Teams, Mattermost, Harbor, Discord, Telegram, Matrix, Google Chat), MR dependencies by IID, WorkItem JSON tags, the always_on Duo value |
gitlab |
7 | REST API to restore an organization, Snowplow tracker loading, Bitbucket Cloud wiki import cleanup, AI Gateway and dependency scanning docs, code quality fixes |
terraform-provider-gitlab |
3 | New gitlab_group_integration_harbor and gitlab_group_integration_mattermost resources, group SAML identity |
cli |
2 | glab artifact-registry login --yarn, a clear error when the keyring token is missing |
container-registry |
1 | organization_id in token metadata and request logs |
gitlab-shell |
1 | User identity in the logs when the discover API call fails |
step-runner |
1 | Dot-separated prerelease versions for GitLab Functions |
cells/http-router |
1 | Organization restore route in the routes snapshot |
🔄 Open right now
| MR | What it does |
|---|---|
| client-go!3140 | Move the merge request method comments to the service interface |
| client-go!3102 | external option when creating and updating instance service accounts |
| client-go!3101 | CancelAutoMerge, which returns the merge request or a clear error |
| terraform!3323 | Wait for default branch protection only when GitLab will really add it |
| terraform!3322 | GitLab Duo settings on the gitlab_group resource |
| cli!4063 | Date filters for glab issue list |
| cli!4062 | Use the config host as a preference, not a filter on remotes |
| cli!4060 | Move the OAuth token merge from the config code to the OAuth code |
| gitlab!263028 | Move the frontend tracker check to EventEligibilityChecker |
| gitlab!263027 | Set SSL_CERT_FILE and nest the mTLS keys in the AI Gateway docs |
| gitlab!262447 | Document the REST API endpoint to restore an organization |
| gitlab!261298 | Add organization_id to container registry token metadata |
All 25 merged MRs
gitlab-org/api/client-go
| MR | What it does |
|---|---|
| !3138 | always_on value for group Duo availability |
| !3100 | snake_case JSON tags on WorkItem, so glab work-items --output json has one key style |
| !3092 | Create an MR dependency from the blocking MR's IID, also across projects |
| !2692 | Slack integration: structs and GetGroupSlackSettings / SetGroupSlackSettings / DisableGroupSlack |
| !2679 | Microsoft Teams structs and typed return, plus a fix for the microsoft-teams endpoint path |
| !2691 | Discord, Telegram, Mattermost, Matrix, and Google Chat structs with GetGroup*Settings |
| !2677 | Jira integration structs and a typed GetGroupJiraSettings return |
| !2675 | Group Mattermost notifications and slash commands: structs and Get / Set / Delete |
| !2670 | Harbor integration structs and a typed GetGroupHarborSettings return |
gitlab-org/gitlab
| MR | What it does |
|---|---|
| !261302 | Document Python dependency resolution known issues and their workarounds |
| !261303 | Rewrite the AI Gateway custom root CA steps for the Helm charts and Docker |
| !261304 | POST /api/v4/organizations/:id/restore to restore a soft-deleted organization |
| !261295 | Remove the old Bitbucket Cloud wiki import code |
| !261296 | Load the Snowplow tracker only when events can be sent |
| !221158 | Fix vue/require-name-property offenses in the deployments components |
| !221163 | Replace Gitlab::Json.parse with safe_parse in the discussions diff highlight cache |
gitlab-org/terraform-provider-gitlab
| MR | What it does |
|---|---|
| !2881 | New gitlab_group_integration_harbor resource with import and an acceptance test |
| !2909 | New gitlab_group_integration_mattermost resource with an acceptance test |
| !2852 | Group SAML identity attribute on the gitlab_group_membership data source |
gitlab-org/cli
| MR | What it does |
|---|---|
| !4058 | glab artifact-registry login --yarn, which writes the token to ~/.yarnrc.yml |
| !4061 | Fail with a clear message when a host's keyring token is missing, not a bare 401 |
gitlab-org/container-registry
| MR | What it does |
|---|---|
| !2959 | Read organization_id from token metadata and add it to the request logs |
gitlab-org/gitlab-shell
| MR | What it does |
|---|---|
| !1597 | Log the user name, key ID, or Kerberos principal when discover cannot get the username |
gitlab-org/step-runner
| MR | What it does |
|---|---|
| !600 | Accept dot-separated prerelease versions like 1.2.3-rc.1 in OCI versions |
gitlab-org/cells/http-router
| MR | What it does |
|---|---|
| !1438 | Add the organization restore route to the routes snapshot |
I keep the agent setup I use for these contributions public: gitlab-agent-kit.
💼 What I do at Repovive
- Led the design of the distributed judge (
judge1, on Judge0) and scaled it from 50 to 500+ concurrent submissions. - Moved off serverless to Docker, Nginx, and Redis, and cut infra cost by 95% ($600 to $25 a month).
- Sandboxed 20+ languages in resource-limited Docker images.
- Co-built a real-time voice AI interviewer (LiveKit, WebRTC) for coding, recruiter, and behavioral interviews.
- Co-built Repovive Build v2, an AI-assisted IDE for writing competitive programming problems.
🔩 Other open source
- LLVM / Clang: constexpr X86
cvtpd2psintrinsics (#169980), AArch64 and ARM CLS lowering toISD::CTLS(#178885, #178430), LLDBSBTargettests (#173473) - Apple Swift NIO: idempotent directory creation in
NIOFileSystem(#3410) - Polyman: my CLI for Codeforces Polygon problem setters, 1,900+ npm downloads
🏆 Competitive programming
- ICPC ACPC Finalist 3 times (2024, 2025, 2026), and 17th of about 500 teams at ECPC 2024
- Problem author: G. Queries On Strings (JCPC 2025), F. Graph Tiling (Repovive Round 3)
- Codeforces: GreatShinobiOwl (Candidate Master, max 2017) and Hmzaawy
🧰 Tech
Personal projects
View allAbout
Pronouns: He/Him
SWE @Repovive (YC F'26) | AWS Certified Solutions Architect | 3× ICPC ACPC Finalist | GitLab & LLVM contributor