Mewlang logo

Mewlang

Learn programming languages by building things that make each language worth learning.

Mewlang is a hands-on programming-language learning project built around one idea:

Don't just learn a language. Discover what it makes possible.

The Mewlang cat looking up, curiousInstead of following syntax tutorials or building the same CRUD application in every language, Mewlang explores programming languages through projects designed around their unique strengths, philosophies, and programming models.

🧠 The idea

Every programming language has something interesting about it.

Mewlang uses projects to make those differences tangible.

🐾 Projects

🐜 Go β€” Digital Ant Colony

Build a large concurrent simulation where thousands of autonomous ants search for food, communicate, leave pheromone trails, and recover from failures.

Explore: Goroutines, channels, concurrency, synchronization, context cancellation, worker pools, race detection, fault injection, and distributed systems.

What happens when concurrency becomes the natural way to model the world?

Start the Go course β†’

🐱 Ruby β€” Programmable Automation DSL

Build a Ruby-based automation framework where pipelines can be written almost like a programming language:

pipeline "research" do
	fetch "papers"
	filter topic: "AI"
	summarize
	save_to "knowledge_base"
end

Explore: Blocks, Procs, lambdas, objects, reflection, method_missing, dynamic methods, metaprogramming, DSL design, and runtime introspection.

What if your application could become its own language?

Start the Ruby course β†’

πŸ•΅οΈ Perl β€” Text Archaeologist

Build a data-forensics tool capable of digging through messy real-world text and extracting useful structure.

Process: Logs, CSV, JSON, XML, source code, configuration files, malformed data, and arbitrary text.

Explore: Regular expressions, text transformation, file processing, streams, references, Unix pipelines, CLI applications, CPAN, parsing, and data processing.

What happens when text manipulation is the core of the language?

Start the Perl course β†’

πŸ‰ Erlang β€” The Internet That Never Dies

Build a simulated distributed network containing thousands of nodes that communicate, crash, restart, disconnect, and recover automatically.

Explore: Processes, message passing, pattern matching, receive, links, monitors, OTP, gen_server, supervision trees, distributed systems, and fault tolerance.

Eventually, deliberately destroy parts of the network and watch it recover.

What if failure wasn't an exception, but a normal operating condition?

Start the Erlang course β†’

πŸ§ͺ Racket β€” Language Factory

Build a toolkit for creating small domain-specific programming languages for finance, robots, configuration, and games.

Explore: Functional programming, higher-order functions, structs, macros, syntax objects, hygienic macros, parsers, ASTs, interpreters, compilers, #lang, and language-oriented programming.

What if learning a programming language meant learning how to create one?

Start the Racket course β†’

🎯 Philosophy

  1. Learn by building β€” Every language is learned through a substantial project.
  2. Exploit the language β€” Use features that make the language distinctive.
  3. Understand the β€œwhy” β€” The goal is to understand why someone would choose this language.
  4. Compare programming models β€” The same problem can look completely different depending on the language.
  5. Build real software β€” Include tests, error handling, documentation, CLI interfaces, logging, configuration, performance considerations, and debugging.

πŸ—ΊοΈ Learning Path

                    🐱 MEWLANG
												β”‚
				β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
				β”‚               β”‚               β”‚
		Concurrency     Expressiveness    Data
				β”‚               β”‚               β”‚
			 Go              Ruby            Perl
				β”‚
				β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
				β”‚               β”‚
	 Fault Tolerance   Language Design
				β”‚               β”‚
			Erlang          Racket

Each project explores a different way of thinking about software.

πŸ› οΈ What you'll learn

Imperative, functional, and object-oriented programming; metaprogramming; domain-specific languages; concurrency; actor systems; distributed systems; fault tolerance; parsing; compilers; interpreters; type systems; Unix philosophy; testing; debugging; and performance engineering.

More importantly, you'll learn how programming language design influences software architecture.

πŸš€ Getting started

Choose a language and start with its project. You don't need to know the language beforehand.

Language basics
			↓
Tiny exercises
			↓
Small prototype
			↓
Project milestone
			↓
More language features
			↓
Advanced architecture
			↓
Final challenge

The Mewlang cat's paw, raised for a high fiveThe objective isn't to memorize syntax, but to reach the point where you can think: β€œThis language would be interesting for this.”

Read the full curriculum β†’

🧩 Why β€œMewlang”?

The Mewlang cat, winkingBecause programming languages are weird creatures. Some are good at concurrency, some manipulate text beautifully, some reshape the language itself, some survive failure, and some make types do incredible things.

Different languages. Different powers. Different ways of thinking.

πŸ“Œ Project Status

Mewlang is an educational project and an ongoing exploration of programming languages. New languages and projects can be added over time.

Potential future explorations: OCaml, Haskell, Clojure, Zig, Smalltalk, Crystal, Nim, and F#.

⭐ The goal

Mewlang isn't about finding the best programming language. It's about discovering that there isn't one universal way to think about software.

Learn the language.
Build something weird.
Break it.
Understand why it works.
Then learn another language and see the problem differently.