I write backend systems. Every number on this page is one I measured myself.
I have twelve patches merged into projects I had never worked on before: NASA's flight-software ground system, CERN's ROOT, the Rust compiler's GCC backend, 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.
I go looking for one class of defect at a time, in code I have never worked on before. Almost everything a sweep returns is a false positive and gets thrown away; what survives, I prove before I open anything, and then defend it to maintainers who have no idea who I am.
| 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#23065 | CERN's ROOT. RDataFrame's progress bar divided the event count by an elapsed time that had already been truncated to whole seconds, so any loop finishing in under a second divided by zero and printed inf evt/s, and longer ones over-reported. Measured on three runs: 0.447 s printed inf against a true 894 evt/s, 2.408 s over-reported by 20%, 5.607 s by 12%. The fix divides by a full-precision duration and keeps the truncated value for the elapsed-time text, so that line stays byte-for-byte identical. I showed the test failing on master before it passed with the patch. |
| 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. |
| eclipse-score/logging#253 | Eclipse S-CORE, the BMW/Bosch/Mercedes automotive platform. A safety-qualification record named the symbol its test verifies — except two components of that name were a directory and the test file's own basename, neither of which is a namespace anywhere in the repository. Under ISO 26262 that record is the audit trail tying a test to the requirement it discharges, so a name resolving nowhere is a broken trace, not a typo. |
Each of these started as a scanner run over a whole repository, and the number that matters is how much came back wrong. A link that looks broken usually is not: a redirect, a case-insensitive filesystem, an anchor the renderer generates, a path that only resolves in the built docs. Sorting those out is the work — the patch is what is left when it is done.
| Merged | What it was |
|---|---|
| airflow#71179 | 372 candidates in, 20 real. 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. |
| vscode-docs#10119 | 771 setting IDs behind 1,760 macros, 3 wrong. The casing does not match what VS Code registers, so they resolve to settings that do not exist. |
| dotnet/runtime#131865 | 39 candidates in, 8 real. Documentation links whose targets exist but whose relative paths resolve nowhere. |
| systemd#43300 | 7 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 it merged with the job still red. |
| root#23002 · root#23004 | A TMVA header unreachable since 2015, and two aggregate LinkDef headers that lost their only caller when the build went back to two dictionaries per package. Each traced to the commit that orphaned it. |
| rustc_codegen_gcc#945 · communication#853 | Two links in the Rust compiler's GCC backend — the useful part was working out that it is a subtree, so a fix landed upstream would be overwritten on the next sync. Four more in the BMW/Bosch/Mercedes design docs, one of them 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.
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. |
balcihkutsi@gmail.com · LinkedIn
İzmir, Türkiye · open to remote and hybrid