build it yourselfproject-based learning

fundamentals of software engineering ;

to build a better world

fundamentals, deep dives, real projects from scratch. your library, your sandbox.

projectlighthouse — fish
curl -X POST https://projectlighthouse.io/api/v1/projects \
  -H "Authorization: Bearer $TOKEN"
.PHONY: build test

build:
    cargo build --release
FROM rust:1.75-alpine
RUN cargo build --release
ENTRYPOINT ["api"]
apiVersion: apps/v1
kind: Deployment
replicas: 3
mov rax, 1
syscall
async fn create_session(req: Request) {
    VmSession::provision(&lab).await?;
}
$ cargo build --release
    Finished release in 42.3s
services:
  api:
    ports: ["8080:8080"]
pub struct MicroVm {
    tap_device: TapDevice,
}
GET /api/v1/projects
make build
docker build
kubectl apply
syscall

Books

Carefully crafted books to help you level up your skills

Go Fundamentals
11 pages

Go Fundamentals

Want to build beyond CRUD? Databases, CLI tools, or distributed systems? This course covers Go programming basics - variables, control flow, functions, structs, pointers, testing and error handling. With real world examples.

Go Intermediate
15 pages

Go Intermediate

Master Go concurrency, advanced language features, and performance optimization. Learn goroutines, channels, sync primitives, context, generics, reflection, and profiling with real-world examples.

Shipping Go Web Services
in progress 23 pages

Shipping Go Web Services

Build a production log aggregator from scratch. HTTP services, PostgreSQL, authentication, middleware, HTML dashboards, testing, and deployment — no frameworks, just Go.

OS Fundamentals
in progress 34 pages

OS Fundamentals

Master operating systems from first principles. Learn processes, memory management, scheduling, filesystems, and concurrency—while discovering why your algorithms and data structures education actually matters. Hands-on with real Linux tools.

C Programming
in progress 18 pages

C Programming

From zero C to manual memory management, pointers, and the compilation model. No garbage collector, no bounds checking, no safety net — see what the machine actually does.

DSA Fundamentals
in progress 32 pages

DSA Fundamentals

data structures and algorithms taught the right way - from first principles, with memory-first thinking. understand why things work, not just what to memorize. arrays, linked lists, trees, graphs, sorting, searching - all with real-world motivation and hands-on implementation.

Networking Fundamentals
in progress 44 pages

Networking Fundamentals

Demystify computer networking from first principles. Learn how data travels across networks, from electrical signals to HTTP requests. Packets, sockets, routing, DNS, TLS - all with hands-on Linux tools. The course for developers who want to understand what actually happens when they curl an endpoint.

Getting Started with Go

Why Go was created, what you can build with it, how it performs - we'll cover all of this. Plus an overview of the Go community and ecosystem.

The Go Concurrency Model

Understand Go's concurrency philosophy, goroutines, the GMP scheduler, and how Go achieves lightweight concurrency.

What Is a Process?

The fundamental abstraction that lets multiple programs share one CPU. Understand process memory layout, the illusion of isolation, and why a 'running program' is more complex than it sounds.

What Is a Network?

Two computers, one wire, and the fundamental question: how do they talk? The layered model of networking and why abstraction is essential for sanity.

Hello, C

Your first C program. gcc, compilation vs interpretation, main returns an int to the OS, printf, header files, and why #include is copy-paste not import.

Introduction

How to read this book, what Go brings to web services, and what we will build — an HTTP server with routing, middleware, PostgreSQL, authentication, and server-side rendered dashboards.

Introduction

what are data structures and why do they matter? the relationship between data structures and algorithms, and how this course is structured.

Seek into the Memory

memory as a giant array of bytes, addresses, cache hierarchy, and why understanding memory is the key to writing fast code.

Types, Sizes, and Overflow

int, char, float, double, sizeof. Signed vs unsigned, integer overflow is undefined behavior, and stdint.h fixed-width types.

Channels

Channels are Go's primary mechanism for communication between goroutines. Learn buffered and unbuffered channels, channel directions, and common patterns.

Variables, Types and Data Structures

Go's type system, variables, arrays, slices, maps - all with detailed explanations. We'll also look at how data is stored in memory.

fork(), exec(), and Process Creation

How processes are born. The elegant Unix model of fork-then-exec, copy-on-write optimization, and why creating a process is actually duplicating one.

Free

starter labs are free — 20 minutes per session, full terminal access, no credit card needed.

browse labs

practical learning

to build a better world

philosophy

fundamentals first; practice repeat

Instead of rushing through frameworks and libraries, we focus on building a strong foundation first. Understand the core concepts, then practice by building real projects, iterating as you learn.

approach

builders, not watchers

You don't learn to build systems by watching someone else do it. You read, you think, you build. Every project is yours to figure out.

resources

Books, text based approach

Books are a powerful way to learn. Find in-depth technical books on systems, networking, and more. Dive deep into concepts and build a solid understanding that lasts.

CLI

Validate your skills with luxctl

Hand-picked projects are designed to challenge you and validate your skills. Use Lux CLI tool to test your solutions and gain XPs.

Build real things

Build Redis, Docker, HTTP servers — not toy apps. Real projects, real understanding.

See where you stand

Track your progress, earn XP, and see how you compare with other builders.

Your notes, your way

Highlight and annotate as you read. Come back to them before interviews or deep dives.

No filler content

Every project, every chapter is handcrafted — no AI slop, no recycled content.

the long game

from programs to machines

The gap between "I can program" and "I can write flight controller firmware" is just applied knowledge. We teach the fundamentals deeply enough that building robots or launching rockets becomes the next natural step — not a distant dream.

Explore Projects

Build real-world software from scratch and understand how things work

19 tasks

SeaChart: Build Your Own DNS Resolver

Understand DNS from the ground up by building a recursive resolver. Parse binary protocols, query root servers, follow delegation chains, and implement caching.

8 tasks

1 Billion Row Challenge

Process 1 billion temperature measurements as fast as possible. Start with a working solution, then systematically optimize - I/O, parallelism, parsing, data structures - until you're competing with the best.

18 tasks

Build Your Own HTTP Server

Build an HTTP server from raw TCP sockets. No frameworks, no libraries - just you and the protocol specification. Understand exactly what happens when browsers talk to servers.

stay in the loop

get notified about new labs, books or pages, and deep-dive articles. no spam, unsubscribe anytime.

no spam. unsubscribe anytime.

Frequently Asked Questions

The why behind the what

When you read, your brain needs to take the cognitive load. When you're watching videos, it's often spoon feeding. Ever thought about why our attention span is in 2-digit seconds nowadays? The aim is to be a builder, not a watcher. Articles let you learn at your own pace. You can skim, re-read, and jump around easily. You can highlight text, take notes in the margins, and search for keywords. You can also read offline or in low-bandwidth situations. Also, one of the biggest myths is that videos are better for learning. Research shows that active reading leads to better retention and understanding than passive watching. Here's a great video that dives into this topic: https://www.youtube.com/watch?v=rhgwIhB58PA

There's a big gap between using Docker and understanding how containers actually work. Between running a service and understanding the networking stack beneath it. Between writing code and knowing what the OS does with it. I'm building this platform to help bridge that gap. It won't solve everything, but it might help developers build a foundation for understanding the infrastructure they work with every day. Because without some of that foundation, it's easy to end up blindly accepting whatever comes your way—even 'sudo rm -rf ~/'.

projectlighthouse is for the seekers. The ones who want to understand how things work under the hood. The ones who want to go beyond just using tools and platforms, and actually understand the infrastructure they interact with daily. You might be actively learning by building things, reading documentation, or challenging yourself with hands-on labs. Either way, if you have that curiosity and drive to understand how systems actually work, this is for you. If you've ever wondered how Docker actually isolates processes, why your TCP connection hangs, how memory allocation works, or what the OS does when you open a file—this is for you.

Language doesn't matter—except when it does. For systems and infrastructure work, it absolutely matters. Go powers Docker, Terraform, containerd, and half the cloud-native tools you use daily. Its simplicity and concurrency model make it the lingua franca of cloud infrastructure. Rust offers memory safety without a garbage collector, making it ideal for performance-critical infrastructure components. It's being adopted widely in the industry—from the Linux kernel to new container runtimes and networking tools. C provides low-level access to understand how containers interact with the kernel, how namespaces work, and what's really happening under the hood. As projectlighthouse is still a one-man show, I had to pick languages that are industry-standard and that I work with daily—I can't teach something I don't know. Go for its dominance in infrastructure tooling, Rust for its growing adoption in systems software, and C for foundational understanding.

Yes. We have the Lady Elizabeth scholarship. If you're going through a tough time and believe the content here can help you grow, reach out. Share what you've done and how these books, labs, or projects would benefit you. We'll grant access to relevant material or waive part or full payment. Don't let cost be a blocker.

For the articles, no—you can read and follow along on any OS. For the labs, you'll need a Linux environment. The labs run on real Linux containers in the cloud, so you can use them from any machine with a browser. But if you want to experiment locally, a Linux VM, WSL2 on Windows, or a Linux machine will serve you well. Containers are inherently Linux-centric. Namespaces, cgroups, the /proc filesystem, container runtimes—these are Linux concepts. You can't learn them properly without touching Linux.

Hi, I'm Aryan

The best way to learn programming is to build systems. You need the tools, and you also need the deeper understanding on how it works.

Over the years, I've been part of teams that built large scale systems from the ground up, keep up and running under heavy load, and scale to meet growing demand. Currently, I'm at DigitalOceanDigitalOcean; building the simple cloud.

I am building projectlighthouse to bridge some of the gap between theory, practice, tools and systems programming. This would be my approach if I could go back in time and teach myself. I hope you find it useful!

If you want to understand how projectlighthouse.io works, read here in detail.

Welcome to projectlighthouse.io