↓ Skip to main content
Oral Ersoy Dokumaci

Oral Ersoy Dokumaci

Senior Machine Learning Engineer

Senior Machine Learning Engineer at The Burning Glass Institute, building ML and NLP systems for labor market analytics.

I have comb-shaped skills: deeper experience in Python, Software Engineering, ML/NLP, and Game Theory, with exposure to Cloud Architecture and Engineering, AI Systems Design, Data Engineering, and MLOps.

I run a YouTube channel, Python In Production, bridging the gap between writing Python and shipping production-ready Python. All videos also live here as blog chapters.

In a previous life, I was a quant in finance. I went into the tech side of quantitative finance with a goal of picking up transferable engineering and machine learning skills. I worked on high-frequency trading and market-neutral hedge fund strategies, where I was lucky enough to be surrounded by great engineers and learned the trade (pun intended) by doing. Once I’d done that, I went back to being surrounded by great economists at The Burning Glass Institute. I find it refreshing now to be working at a nonprofit after years where profit was the only objective.

I’ve also been doing my PhD on the side in Economics. My research includes game theory, matching theory, and decision theory.

Recent

Why Parquet Dominates Modern Data Engineering

Why Parquet Dominates Modern Data Engineering

Changing one line from CSV to Parquet makes reading the fares of ten million New York taxi trips 27 times faster, and the file is a sixth of the size. In this chapter, we measure why with Polars, DuckDB, PyArrow, and pandas: columnar storage, types in the file, the footer, encodings, pages, compression, predicate pushdown, and row group size. We also see where row storage still wins.
Arrays vs ArrayLists vs Linked Lists (Does Python Even Have Arrays?)

Arrays vs ArrayLists vs Linked Lists (Does Python Even Have Arrays?)

·9 mins
An array stores items of one type in equal slots next to each other in memory, but a Python list can grow and hold items of any type. In this chapter, we start from memory as one long row of bytes and build up arrays, the stack and the heap, pointers, dynamic arrays like Java’s ArrayList, CPython’s list, and linked lists. Then we reason through what each operation costs in an array, a list, and a linked list, and how those costs add up in a coding interview.
Big-O Basics for Time and Space Complexity

Big-O Basics for Time and Space Complexity

·8 mins
A function with one loop removes duplicates from a thousand items in 2.5 ms and from a hundred thousand in 27 seconds. In this chapter, we count steps instead of seconds to find out why: the growth rates from constant to factorial, the time and space complexity of every line, Big-O, Big Omega, and Big Theta with best, worst, and average cases, and amortized cost. We also turn a coding problem’s input size into a time budget.
Object-Oriented Programming Greatest Hits

Object-Oriented Programming Greatest Hits

In the age of AI, syntax by itself is the least important part of object-oriented programming to focus on. In this chapter, we cover classes, instance and class attributes, static and class methods, properties, encapsulation, inheritance, composition, and polymorphism against a problem from production code, a rate limiter for alerts. Along the way, we see what the SOLID principles warn about, what inheritance costs, and why composition is the more flexible approach.
Why the Hardest Concept for Python Devs Is Concurrency: asyncio vs threading vs multiprocessing

Why the Hardest Concept for Python Devs Is Concurrency: asyncio vs threading vs multiprocessing

Concurrency is arguably the hardest concept for Python developers, because the important ideas already assume you understand the operating system underneath. In this chapter, we start from the kernel and system calls, build up processes, threads, race conditions, and the GIL, then work out when to reach for asyncio, threading, or multiprocessing, why a GPU beats a CPU on the same arithmetic, and how to get better at concurrent programming.