Designing a geospatial search service

How to design a geospatial search service?


Designing a typeahead search system

How to design a typeahead search system?


Designing an S3 object storage system

How to design an S3 object storage system?


Designing a URL shortener

How to design a URL shortener?


Designing a rate limiter

How to design a rate limiter?


Building an interpreter

How does an interpreter work? Notes on "Writing an Interpreter in Go" by Thorsten Ball


TypeScript and Set Theory

How does set theory help to understand type assignability and resolution in TypeScript?


Typing a convict Config Schema

How can we map config options to return types in a convict config schema?


Revisiting Data Structures in JavaScript

Implementing in JS all methods of linked lists, stacks, trees, hash tables, and graphs.



How can we run an app in a reproducible isolated environment?


The OAuth 2.0 Protocol

How can a user allow an app to access user data at a third-party service?



How do we use git to manage changes to source code over time?


Just JavaScript by Dan Abramov

What does Dan Abramov's mental model of JavaScript look like?


JavaScript Hard Parts by Will Sentance

What does Will Sentance's mental model of JavaScript look like?


Pointers in C

What is the purpose of pointers in C and how should we work with them?


Big O Notation

Understanding Big O notation, approximations when determining runtimes, and classification of runtimes: constant, logarithmic, linear, quasilinear, quadratic, exponential, factorial, etc.


Behavioral Design Patterns

Summary of all the behavioral design patterns: memento, state, iterator, strategy, observer, command, template method, mediator, chain of responsibility, and visitor.


Structural Design Patterns

Summary of all the structural design patterns: composite, adapter, decorator, facade, flyweight, bridge, and proxy.


Hash Tables

Understanding what hash tables are and how they work, collisions, common operations, etc.


Arrays and Linked Lists

Features and implementation of linked lists and arrays, singly and doubly linked lists, circular linked lists, common operations, etc.


Stacks and Queues

A stack is container where pieces of data enter and exit from a single end, following the last-in-first-out (LIFO) principle.



Trees, nodes, binary trees, breadth-first search, depth-first search, pre-order, in-order and post-order traversal, common operations, etc.



Graphs, cycles, adjacency matrix and adjacency list, implementations, etc.



Recursion is when a function calls itself, reducing a task to smaller subtasks until reaching a base subtask that it can perform without calling itself, and then using the result of that base subtask in the smaller subtasks until reaching a final result.


Sort Algorithms

Bubble sort, selection sort, insertion sort, merge sort, quick sort, counting sort, bucket sort, etc.


Search Algorithms

Linear search, binary search, ternary search, jump search, exponential search, etc.


Heaps and Tries

A heap is a type of tree with two properties: completion and heap property. A heap is complete, i.e. every level is fully filled, or has nodes inserted consecutively from left to right.


Flutter State Management with Provider

Managing state in Flutter with Provider: ChangeNotifier, ChangeNotifierProvider, Provider.of, Consumer, etc.

#flutter #dart

Flutter UI

Notes on Flutter UI: assets, app icon, splash screen, themes, fonts, images, widgets, gestures, etc.



How to work with PyQt: setup, QtDesigner, free-form design, event handling, intercepting events, fbs, styling, etc.

#python #qt

Flutter Basics

Notes on Flutter: commands, VSCode tips, navigation, networking, persistence, releasing, etc.


Firebase Basics

Notes on Firebase and Jeff Delaney's courses: setup, data modeling, CRUD ops, composite index, data relationships, etc.



Operations, operators, modifiers, data types, constraints, aggregate functions, numeric functions, string functions, date functions, conditional functions, subqueries, views, stored procedures, triggers, events, transactions, concurrency, database design, indexing, etc.


JavaScript OOP

Object-Oriented Programming in JavaScript: principles, object creation, factory functions, constructor functions, classes, prototypes, composition, inheritance, static methods, getters and setters, etc.