Small games, and the code behind them.
Codesarray makes calm mobile games for Android, and short videos and articles that show how code works, one idea at a time.
Games
Open, play a round, put the phone down. No accounts, and every game plays offline.
-
Blockfall
A calm 8x8 block puzzle with a daily challenge and a Play Games leaderboard.
-
Paws & Perils
A cute paper cut-out roguelike with an idle RPG underneath: pick a hero, walk the trail, choose your path at every fork.
Coming to Google Play About Paws & Perils -
Synapsy
A calm daily memory game: pairs, sequences, grids and spot the change, with a three-minute Daily Workout.
Coming to Google Play About Synapsy
Videos
Coding, algorithms and data structures, one language at a time. Every example on screen is real code with its real output. Python comes first.
-
Video2 min 54 s
Hello, Python: install Python 3.14 and write your first program
Install it, run code two ways, and learn the one rule that makes Python look different from every other language.
-
Video3 min 17 s
Variables and types: the five basic types and how to convert them
int, float, str, bool and None, how to ask Python what type a value is, and why "3" + 4 is an error until you convert.
-
Video3 min 33 s
Control flow: if, elif, else, for, while, break and continue
How a program decides and repeats, with a chained comparison, range(), and the else a loop can have.
-
Video4 min 24 s
Strings: indexing, slicing, methods and f-strings
Index and slice a string, why strings never change, the methods that clean text up, and f-strings, with a glance at 3.14 t-strings.
-
Video3 min 47 s
Lists: index, slice, append, pop, sort and what each costs
Build a list, grow and shrink it, sort it, and see why b = a is not a copy.
-
Video2 min 56 s
Tuples and sets: unpacking, swapping and removing duplicates
Make a tuple, unpack it, swap two variables in one line, and see why in is O(1) on a set.
-
Video2 min 49 s
Dictionaries: keys, values, get, items and counting
Store values by key, look them up, avoid a KeyError with get, loop with items, and count words.
-
Video3 min 1 s
Functions: def, return, default arguments and *args
Write your own functions with def, return a result, use defaults and keyword arguments, and collect extra arguments with *args.
-
Video3 min 11 s
Comprehensions: lists, dicts, sets, if, any and all
Build lists, dictionaries and sets in one line, filter with if, test with any and all, and know when a plain loop is clearer.
-
Video2 min 57 s
Errors and exceptions: try, except, else, finally and raise
Catch an error instead of crashing, run cleanup with finally, raise your own errors, and read a traceback from the bottom up.
-
Video2 min 31 s
Files and JSON: open, with, pathlib, json.dump and json.load
Read and write files safely, build paths that work on every system, and save a dictionary as JSON so it outlives your program.
-
Video2 min 34 s
Modules and uv: import, the standard library, packages and pyproject.toml
Import code other people wrote, set up a project with uv, and keep it tidy with a pyproject file and ruff.
-
Video2 min 37 s
Classes: class, __init__, self, methods and @dataclass
Build your own type with data and behaviour, print it clearly with __repr__, and meet the dataclass shortcut.
-
Video2 min 33 s
Build a to-do app: lists, dictionaries, JSON and try/except
The beginner capstone: keep tasks in a list of dictionaries, save them to a JSON file, and load them back even on the first run.
-
Video3 min 12 s
Big O in Python: timeit, growth curves and what list, dict and set cost
Measure how code slows as data grows, name the five curves, and see a list lookup grow while a set lookup stays flat.
-
Video3 min 23 s
Iterators and generators in Python: yield, next and itertools
What a for loop really does, how yield pauses a function, and why a generator uses 208 bytes where a list uses megabytes.
-
Video3 min 0 s
Closures and scope in Python: LEGB, nonlocal and late binding
Where Python looks for a name, how a function remembers the variables around it, and why lambdas in a loop all return the last value.
-
Video3 min 15 s
Python decorators explained: @wraps, arguments and lru_cache
What the at sign really does, how functools.wraps keeps a function's name, how to give a decorator arguments, and how lru_cache makes recursive Fibonacci instant.
-
Video3 min 3 s
Python classes explained: dunder methods, property and super
How a class prints itself with dunder methods, reads a method like an attribute with @property, builds objects with @classmethod, and extends a parent with super().
-
Video2 min 33 s
Python type hints explained: str, list[int] and int | None
How to annotate a function, describe a list with list[int], mark a value that might be None with int | None, and what a type checker does with the hints.
-
Video1 min 59 s
Python stacks and queues: list, deque and why pop(0) is slow
A stack is last in, first out and a list does it. A queue is first in, first out and a deque does it, because pop(0) on a list shifts every item.
-
Video2 min 2 s
Python linked lists from scratch: Node class and head
A node holds a value and a link to the next node. Chain them from a head to None, walk the chain, and see why adding at the front is O(1) but finding an item is not.
-
Video2 min 16 s
Python recursion explained: call stack and base case
A function that calls itself on a smaller problem. Waiting calls pile up on the call stack, the base case stops them, and without one Python raises a RecursionError.
-
Video2 min 30 s
Python binary search explained: low, high and mid
Check the middle of a sorted list and drop half. Move low and high past the middle, and see why a million items take about 20 steps.
-
Video2 min 31 s
Python sorting algorithms: bubble sort, merge sort, sorted()
Bubble sort swaps neighbours and is O(n squared), merge sort splits and merges in O(n log n), and sorted() with key does the job in real code.
Articles
The same lessons, written down, with code you can copy.
-
PythonIntermediate
Python sorting algorithms: bubble sort, merge sort, sorted()
How sorting works in Python: bubble sort swaps neighbours in O(n squared), merge sort splits and merges in O(n log n), and sorted() with key does the job for you in real code.
-
PythonIntermediate
Python binary search explained: low, high and mid
How binary search works in Python: check the middle of a sorted list, drop half, move low and high past the middle, and why a million items take about 20 steps.
-
PythonIntermediate
Python recursion explained: call stack and base case
How recursion works in Python: a function that calls itself on a smaller problem, the call stack that holds the waiting calls, the base case that stops them, and the RecursionError you get without one.
Work
Codesarray is created by Anand Rathore, a software developer. The day job, for more than five years, has been payment systems.
Payment gateways, settlement and reconciliation: software where every write is audited and a wrong number is somebody's money. That work covers the whole path, from gathering requirements and designing the system to building, deploying and running it.
Open to freelance and contract projects, to full-time roles, and to collaborations and sponsorship on the YouTube channel. Remote only.
- Experience
- 5+ years in fintech
- Backend
- Python, Java, Django, Spring Boot, Node.js
- Data
- PostgreSQL, MySQL, MongoDB, Kafka
- Frontend
- React, TypeScript, Tailwind CSS
- Also
- Android games in Kotlin
- Where
- India, working remotely