
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.
Sign in with your Google or GitHub account to get started
learn by doing
beyond the framework and tutorials. hands-on, project-based, self-paced learning. no fluff, just practical skills you can use today.
curl -X POST https://projectlighthouse.io/api/v1/labs \ -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.3sservices: api: ports: ["8080:8080"]
pub struct MicroVm { tap_device: TapDevice, }
GET /api/v1/labsmake builddocker buildkubectl applysyscallCarefully crafted books to help you level up your skills

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.

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

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.

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.

Memory safety without garbage collection. Zero-cost abstractions. Fearless concurrency. This course takes you from zero to confident Rust developer - ownership, borrowing, lifetimes, traits, generics and more. With practical examples that stick.

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.
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 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 makes Rust different from other languages. Memory safety without garbage collection, zero-cost abstractions, and why companies are adopting it.
Two computers, one wire, and the fundamental question: how do they talk? The layered model of networking and why abstraction is essential for sanity.
Understand Go's concurrency philosophy, goroutines, the GMP scheduler, and how Go achieves lightweight concurrency.
What are data structures and why do they matter? The relationship between data structures and algorithms, and how this course is structured.
Channels are Go's primary mechanism for communication between goroutines. Learn buffered and unbuffered channels, channel directions, and common patterns.
Memory as a giant array of bytes, addresses, cache hierarchy, and why understanding memory is the key to writing fast code.
Practical learning
Fundamentals first; practice & iterate
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.
builders, not watchers
Tired of long video tutorials ? Here, it's DIY, no copy-paste tutorials!
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.
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.
Review your annotations before a interview a quick look back.
Each project is carefully designed for production readiness.
Build real-world software from scratch and understand how things work
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.
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.
Build a container runtime from scratch. You, go and and the Linux kernel. Understand exactly how containers achieve isolation.
Understand DNS from the ground up by building a recursive resolver. Parse binary protocols, query root servers, follow delegation chains, and implement caching.
get notified about new labs, books or pages, and deep-dive articles. no spam, unsubscribe anytime.
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 deploying to Kubernetes and knowing what happens when a pod starts. Between running a service and understanding the networking stack beneath 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 containers, Kubernetes, and cloud-native technologies, this is for you. If you've ever wondered how Docker actually isolates processes, why your TCP connection hangs, what happens when you deploy to Kubernetes, or how service meshes route traffic—this is for you.
Language doesn't matter—except when it does. For containers, Kubernetes, and infrastructure work, it absolutely matters. Go powers Kubernetes, 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 cloud-native, Rust for its growing adoption in infrastructure, and C for foundational understanding.
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 microVMs 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 and Kubernetes 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 DigitalOcean; 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!
And welcome to ...
██████╗ ██████╗ ██████╗ ██╗███████╗ ██████╗████████╗██╗ ██╗ ██████╗ ██╗ ██╗████████╗██╗ ██╗ ██████╗ ██╗ ██╗███████╗███████╗ ██╔══██╗██╔══██╗██╔═══██╗ ██║██╔════╝██╔════╝╚══██╔══╝██║ ██║██╔════╝ ██║ ██║╚══██╔══╝██║ ██║██╔═══██╗██║ ██║██╔════╝██╔════╝ ██████╔╝██████╔╝██║ ██║ ██║█████╗ ██║ ██║ ██║ ██║██║ ███╗███████║ ██║ ███████║██║ ██║██║ ██║███████╗█████╗ ██╔═══╝ ██╔══██╗██║ ██║██ ██║██╔══╝ ██║ ██║ ██║ ██║██║ ██║██╔══██║ ██║ ██╔══██║██║ ██║██║ ██║╚════██║██╔══╝ ██║ ██║ ██║╚██████╔╝╚█████╔╝███████╗╚██████╗ ██║ ███████╗██║╚██████╔╝██║ ██║ ██║ ██║ ██║╚██████╔╝╚██████╔╝███████║███████╗ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚════╝ ╚══════╝ ╚═════╝ ╚═╝ ╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚══════╝╚══════╝