Designing an S3 object storage system
How to design an S3 object storage system?
Designing a URL shortener
How to approach designing a URL shortener?
Designing a rate limiter
What factors should we consider when designing 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?
convict Config Schema
How can we map config options to return types in a
convict config schema?
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?
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.
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.
Bubble sort, selection sort, insertion sort, merge sort, quick sort, counting sort, bucket sort, etc.
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.
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.
Notes on Flutter: commands, VSCode tips, navigation, networking, persistence, releasing, etc.
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.