Ravnary · an open library

Learn it properly.
Keep it close.

Clear explanations, practice that checks you, and review that brings it back, organised by subject.

Huginn carries the thought out. Muninn brings it back.

Subjects
14
Topics
172
Resources
1429

Picked for October

What changes when one server becomes many

Four System Design topics that take a single box to a system that holds up under load.

All of System Design
Topic
System DesignThe Parts of a System

Load Balancers, Reverse Proxies and API Gateways

Load balancers, reverse proxies and API gateways: the three kinds of server that sit in front of yours, and the one job each is for.

Why start hereEvery later topic in this set assumes you can tell the three apart.

Beginner to Intermediate10 cards · 5 q

  • System DesignThe Parts of a System

    Caching: keeping copies of frequent reads close, deciding when they go stale, and the ways a cache can take a system down.

    Beginner to Advanced9 cards · 8 qnot started

  • System DesignThe Parts of a System

    Scaling a web system up or out: bigger machines or more of them, what has to be stateless first, and what autoscaling cannot catch.

    Beginner to Advanced9 cards · 5 qnot started

  • System DesignMoving Data Around

    Message queues and publish/subscribe: handing work off without waiting, and choosing between one reader and many.

    Beginner to Intermediate9 cards · 6 qnot started

Five topics to open first

Each one is short, stands on its own, and ends with a quiz.

  1. 1System DesignBuilding Blocks of a Web System
  2. 2Design PatternsFactory Method Pattern
  3. 3Data StructuresHash Tables
  4. 4JavaExceptions
  5. 5API DesignIdempotency Keys: Retrying a Write Safely

Three paths, each in the order to learn it

A path tells you what to read next, even when the next step is in another subject.

All paths

Collection

Getting ready for a coding interview

The path that builds the ground, the patterns interviewers reach for, and one page to revise from the night before.

1 path · 2 topics · 1 cheatsheet

  • Cheatsheet · Coding Interview Patterns

    Fourteen coding interview patterns on one page: the property that points to each, what it costs, when it fails, and its loop in Python.

    Arrays and numbers

    • Hash Map Patterns
    • Two Pointers
    • Sliding Window
    14 entries in 4 groupsA4
  • Path

    The order to learn data structures and algorithms in, from counting what code costs to solving a coding problem never seen before.

    1. 01Data Structures
    2. 02Algorithms
    3. 03Coding Interview Patterns
    3 stepsStart
  • Coding Interview PatternsArray and Number Patterns

    Sliding window: keeping a running answer for a contiguous run as it slides, with a fixed size or one that grows and shrinks, and the inputs that break it.

    Intermediate to Advanced8 cards · 5 qnot started

  • Coding Interview PatternsLinked List Patterns

    Fast and slow pointers: two pointers moving at different speeds that find a list's middle, detect a cycle and locate where the cycle starts.

    Intermediate to Advanced8 cards · 4 qnot started

Keep these at hand

One page each, grouped to be scanned in a minute and printed on A4.

All cheatsheets
  • Cheatsheet · Java Collections and Streams

    Every everyday Java collection on one page: what each one is for, what it costs, and how to choose.

    Lists

    • ArrayList
    • LinkedList
    • List.of(...)
    14 entries in 5 groupsA4
  • Cheatsheet · Data Structures

    Every data structure in the subject on one page: what each one is for, what its operations cost, and how to choose.

    Sequences

    • Dynamic Array
    • Linked List
    • Doubly Linked List
    14 entries in 4 groupsA4
  • Cheatsheet · Algorithms

    Traversal, ordering, shortest paths, spanning trees and connectivity on one page: which algorithm a graph question needs and what it costs.

    Traversal

    • Breadth-First Search
    • Depth-First Search
    11 entries in 5 groupsA4

Short topics to try first

Each one stands on its own, needs nothing read before it, and ends with a quiz.

  • Design PatternsFoundations

    Reading UML class diagrams: the boxes, lines and arrowheads every design pattern is drawn with, and how each relationship looks in code.

    Beginner to Intermediate8 cards · 5 qnot started

  • System DesignStarting a Design

    Back-of-the-envelope estimation: turning users and their actions into requests a second, storage and downtime, before choosing a single part.

    Beginner to Intermediate8 cards · 6 qnot started

  • System DesignMoving Data Around

    API pagination with offsets and cursors: returning large results a page at a time without skipping rows or slowing down.

    Beginner to Intermediate8 cards · 5 qnot started

Start with a subject

Three to begin with. The rest are on the Learn page.

Every subject
  • Subject · Beginner to Advanced

    Running software in containers, and building images that other people can run.

    • Running Containers
    • Building Images
    5 topics · 29 cardsnot started
  • Subject · Beginner to Advanced

    Designing HTTP APIs that clients can understand, call safely, and keep using as the API changes.

    • HTTP for API Designers
    • Designing the Contract
    • Repeats, Retries and Long Jobs
    14 topics · 132 cardsnot started
  • Subject · Beginner to Advanced

    Following a request from an application down through the network layers and back, and naming the layer where a network problem lives.

    • Getting a Packet There
    • Between Two Programs
    • Applications and Debugging
    11 topics · 106 cardsnot started

The whole library

Find your way in by field

Every subject sits in a field and its categories. Start from the field you work in, or the one you want to learn next.

Explore categories

7 fields · 22 categories