I write backend systems. Every number on this page is one I measured myself.
I have ten patches merged into projects I had never worked on before: NASA's flight-software ground system, CERN's ROOT, the .NET runtime, systemd, Apache Airflow and the VS Code docs. I went looking for the bugs, wrote the fixes, and defended them to maintainers who had no idea who I was.
The project I put most of my time into is a pre-accounting and logistics program. It has real users already and I am still building it — right now I am closing the gaps that only showed up once it met real data. I also write mobile apps in Flutter and React Native. And I built a watch-party engine where the browsers send video to each other peer to peer over a WebRTC mesh and the server only introduces them; when I put a second instance behind it, p95 dropped from 258 ms to 14 ms.
I am looking for an internship or a junior backend position.
| The claim | What the number says |
|---|---|
| A seat cannot be sold twice | 20 concurrent requests, one seat → 1 sale, 19 × 409, one held seat in the database |
| It scales horizontally | 2,500 connections → p95 258 ms on one instance, 14 ms on two |
| Course capacity holds under load | 15 applications, capacity 5 → old logic enrolled 15, current logic enrolls 5 |
| Route ordering is worth having | 10 real stops in Kadıköy → 44.3 km as entered, 14.6 km reordered |
| The tests actually run | 285 passing across my repositories, on every push |
Anything marked PRIVATE — a card above or a row below — links to a repository that is not open to visitors. Happy to walk through any of them in an interview.
| Coffee Shop Management | Windows Forms till for a small café. Making the ordering logic testable is how I found that two waiters could open two tabs on one table and only one got billed. |
| Sefer Defteri PRIVATE | The driver's side of the accounting system. Expo, on-device SQLite, document expiry reminders. Works with no signal in a truck cab. |
| Minik Masal PRIVATE | Audio story player for small children, with a parent gate. Written twice: Flutter and Expo. |
| Business Directory API PRIVATE | FastAPI service collecting business listings by province. Paginated endpoints, Alembic migrations, spreadsheet export. |
| Redmine Deployment PRIVATE | Dockerised Redmine with PostgreSQL on AWS EC2. Built with @hzflora. |
| Pansuman Simulator PRIVATE | Unity training simulator for wound dressing. In progress. |
Ten patches merged into projects I had no prior connection to. Most began as a sweep for one class of defect: I throw away almost everything the sweep returns and open a pull request only for what I can prove. The NASA patch is the exception — it changes behaviour, not documentation.
| Merged | What it was |
|---|---|
| fprime-gds#333 | NASA's F´ ground system. A bare except: around opening the sequence file caught KeyboardInterrupt along with the file error and threw the real cause away, so a bad output path reached the user as one unhelpful line. Narrowed to OSError, chained the cause. It sat a week with no CI at all; I worked out that was the first-contributor approval gate, said so, and it merged the next day. |
| root#23002 | A TMVA header unreachable since 2015. I traced the commit that orphaned it and checked every symbol it declared was already covered elsewhere. |
| root#23004 | Two aggregate LinkDef headers that lost their only caller when the build went back to two dictionaries per package. |
| root#23019 | Four CMake variables in the tutorials build that nothing reads. I derived the names CMake actually looks up from the files on disk and diffed the two sets. The subtlest one I proved by rebuilding the derivation in a throwaway CMake project and reading the property back — the reasoning on its own was not proof. Merged with its CI still red, because I showed the failures came from a four-day-old build tree the runner had restored. |
| systemd#43300 | Seven man page cross-references pointing at the wrong section. CI went red; I pulled the 5.4 MB log, showed the failure was an unrelated ppc64le timeout, and said so. Merged with the job still red. |
| airflow#71179 | Twenty links that 404 for every reader but open fine for every author. The directory is a git symlink blob and GitHub will not traverse one. 372 candidates went in, 20 came out. |
| vscode-docs#10119 | Three setting IDs whose casing does not match what VS Code registers, so they resolve to settings that do not exist. I checked all 771 IDs behind 1,760 macros. |
| dotnet/runtime#131865 | Eight documentation links whose targets exist but whose relative paths resolve nowhere. From thirty-nine candidates. |
| rustc_codegen_gcc#945 | Two broken links. The useful part was working out I was in the wrong repository: it is a subtree, so a fix landed upstream would be overwritten on the next sync. |
| eclipse-score/communication#853 | Four links in the design docs of the BMW/Bosch/Mercedes automotive platform. One image URL was written hhttp://, so a diagram had never rendered. |
One more worth mentioning: root#23036 was a
report, not a patch. Three settings shipped in system.rootrc that nothing in ROOT reads. Whether
to delete them or wire them up was a maintainer's call, so I filed both options. The engineer who
wrote that subsystem replied "Yes, some parameters were not cleaned up", opened the fix half an
hour later, and it merged. No commit under my name, which for that kind of finding is the honest
outcome.
balcihkutsi@gmail.com · LinkedIn
İzmir, Türkiye · open to remote and hybrid