Focused software, built end to end.
KE Digital designs, builds and runs its own products: the app, the backend, sign-in and billing, hosting and privacy. Each product has one clear job and is kept small enough to do it well.
Founder
Experience
- Senior Software Engineer, Visiana
- May 2025 to present. Develops BoneXpert, software that uses artificial intelligence to interpret a digital X-ray of a child's hand automatically.
- Full Stack Developer, Visma (e-conomic)
- November 2021 to August 2024. Microservices, monoliths and RESTful APIs on .NET Core and .NET 6; a React and TypeScript front end; MSSQL, PostgreSQL and Bigtable; RabbitMQ between services; Docker and GitHub Actions; unit and integration tests; metrics, traces and logs with Datadog.
- Full Stack Developer, Cubris, a Thales Company
- August 2019 to November 2021. RESTful APIs with ASP.NET Core, WPF and ASP.NET MVC front ends, Android apps with Xamarin, MQTT clients and servers, and Windows services.
- Software Developer, MovieStarPlanet
- September 2016 to July 2019. Chat and game servers in Node.js and TypeScript, game clients in Unity (C#) and AS3 with Adobe Air, native extensions in Java and C#, and bug fixing in .NET Core microservices.
- Software Developer, Digiturk
- June 2014 to September 2016. Software for next-generation set-top boxes in C#, AWS and Flash AS3.
Education: BSc Computer Engineering and BSc Industrial Engineering, Istanbul Kultur University, 2003 to 2009. The full history is on LinkedIn.
Skills
- Backend
- C#, .NET (Framework and Core), ASP.NET Core, RESTful APIs, microservices, Entity Framework Core, distributed systems.
- Front end and mobile
- React with TypeScript, WPF, ASP.NET MVC, Android and .NET MAUI, Android Auto, Xamarin, Unity.
- Cloud and delivery
- Microsoft Azure (Service Bus, Application Insights, Azure DevOps), Docker, GitHub Actions, GitLab CI, observability with Datadog.
- Data and messaging
- MSSQL, PostgreSQL, Bigtable, RabbitMQ, MQTT.
- Accounts, payments and AI
- Google sign-in, Google Play Billing, speech-to-text, text-to-speech and LLM-driven features.
- Quality and compliance
- Unit and integration testing, privacy engineering and GDPR, and medical software standards (IEC 62304 and IEC 82304-1 training).
Open source
- claude-collaborator-learning-mcp A Python MCP server that gives AI coding assistants persistent semantic memory across sessions and a second model for brainstorming and risk checks.
- DICOMAnonymizer A C# tool for anonymizing DICOM medical imaging files, built with Clean Architecture.
- Blazor broker client example A web socket broker and client example in Blazor.
Engineering notes
- Encryption you can reason about
- AllPix encrypts on the phone with a documented key hierarchy: HKDF-SHA256 derives per-purpose keys from a master key, every file gets its own random key, and AES-256-GCM protects the data in chunks. A chunk counter and a last-chunk flag stop pieces being reordered, dropped or cut off. Wrapped keys are bound to their item, so they cannot be moved. The format is frozen and guarded by golden-vector tests, and it uses only the platform's own cryptography, with no third-party packages.
- Deletion that cannot be undone by a backup
- Deleting an AllPix account destroys the keys first, then removes the stored objects and every version of them, then the database rows. After the keys are gone the data is unreadable even where a copy lingers.
- A podcast built for the dashboard
- LingoDrive's podcast is a media app for Android Auto: a two-voice conversation with a pause after each exchange to repeat aloud. It is listen-only, and the microphone is never opened in the car.
- Storage that stays out of the way
- AllPix phones talk to object storage directly through signed URLs, so uploads and downloads add no work to the API. Subscriptions are verified with Google on the server, kept in step by real-time notifications, and re-checked daily.
- Privacy as a default, not a setting
- No analytics SDKs. LingoDrive stores only a keyed one-way hash of a device identifier to meter the free tier, keeps conversation context in memory for 30 minutes, and discards voice audio after transcription.