Hi, I'm Hakan Çelik

Software Engineer — Python tooling · iOS/macOS apps · Open source. Working as a software engineer at Trendyol Go by Uber Eats. Building software professionally since 2019.

Apps

Apps

Applications I've built for iOS and macOS.

Vakit

Prayer times, Quran reading, Qibla finder, Dhikr counter and more — all in one app. Privacy-first: your location stays on-device, no account required, works fully offline. Free and ad-free.

Download (App Store)

SiteSeeker

Smart browser history and bookmark search for macOS. Search all your browsers in one interface.

Star on GitHub

Meld

Minimalist tile-merging puzzle game. Slide, merge, solve.

Open Source

Python Tools

Open source tools that improve the Python developer experience.

unimport

A linter/formatter that finds and removes unused import statements. Works as a pre-commit hook.

Star on GitHub

unexport

A linter that keeps the __all__ list in Python modules always up to date.

Star on GitHub

pydbm

A Pythonic ORM-like wrapper around Python's built-in dbm module.

Star on GitHub

defineif

A decorator that defines a method only when a condition is true. Simple but elegant.

Star on GitHub

Latest Posts

View all posts »

Articles on Python, Django, Git, OpenCV, Cloud and more.

What Is RAG? Giving AI a Memory It Can Actually Use

What Is RAG? Giving AI a Memory It Can Actually Use

AI · 7 dk

Before I learned about RAG, I was dumping raw context into AI prompts and getting flooded with false positives. RAG changed everything. And it turns out Cursor and Claude Code use it too — that indexing progress bar isn't just for show.

What You Actually Download When You Pull an AI Model

What You Actually Download When You Pull an AI Model

AI · 5 dk

AI models are compiled binaries. Just like a compiled C program, a trained model is an artifact that stands independent of its source — a ready-to-execute brain specialized for a task. Here's what that really means.

Understanding Python Classes

Understanding Python Classes

Python · 2 dk

In Python, everything is an object and every object has a type — including primitives, functions, and classes themselves. type() and __class__ reveal this relationship.

Run Methods Order In Python

Run Methods Order In Python

Python · 2 dk

Which method runs when in Python metaclasses? The execution order of __prepare__, __new__, __init__, and __call__ during class definition and instance creation.

Let's connect on X, LinkedIn, and GitHub

Follow for new projects, technical notes, and open source updates.