Rust Tutorial #31: Building a Real Project (Capstone)

This is the final tutorial in our Rust series. We bring together everything you learned — ownership, error handling, async, web APIs, databases, and CLI tools — into one complete project. We will build LinkShort, a URL shortener. It has two parts: A REST API — create, list, and redirect short links (Axum + SQLx) A CLI tool — manage links from the terminal (Clap + Reqwest) By the end, you will have a working application that you can run locally, extend, and deploy. ...

March 26, 2026 · 12 min

Jetpack Compose Tutorial #25: Publishing Your App to Google Play

This is it — the final tutorial. You built a complete task manager app with Jetpack Compose, Room, Hilt, Navigation, MVI, animations, and adaptive layouts. Now let’s put it in the hands of real users. Before You Publish — Checklist Make sure your app is ready: App works — test every feature on a real device No crashes — check Logcat for errors Dark mode works — test both themes Different screen sizes — test on phone and tablet Keyboard handling — forms work with keyboard visible Proguard/R8 — release build compiles and runs App icon — custom icon (not the default green Android) App name — set in strings.xml Step 1: Generate a Signing Key Every app on Google Play must be signed. This proves the app comes from you. ...

March 26, 2026 · 6 min

Rust Tutorial #4: Ownership — The Key Concept

In the previous tutorial, we learned variables, types, and functions. Now we tackle the most important concept in Rust — ownership. Ownership is what makes Rust unique. It is the reason Rust has no garbage collector, yet never leaks memory. Every Rust programmer must understand ownership. Once you get it, the rest of Rust clicks into place. Why Ownership Exists Most languages manage memory in one of two ways: Garbage collector (Java, Kotlin, Go, Python) — A background process finds and frees unused memory. Simple for the programmer, but uses extra CPU and can cause pauses. Manual management (C, C++) — The programmer allocates and frees memory. Fast, but easy to make mistakes — use-after-free, double-free, memory leaks. Rust takes a third approach: ...

March 26, 2026 · 9 min

Rust Tutorial #5: Borrowing and References

In the previous tutorial, we learned about ownership. We saw that passing a value to a function moves it, and you cannot use it anymore. That works, but it is limiting. What if a function only needs to read the data? What if it needs to modify it but give it back? You should not have to move ownership every time. This is where borrowing comes in. Borrowing lets you use a value without taking ownership of it. The value stays with the original owner. ...

March 26, 2026 · 7 min

Rust Tutorial #26: Macros — Writing Code That Writes Code

In the previous tutorial, we learned file I/O. Now we learn macros — one of Rust’s most powerful features for code generation. Macros let you write code that writes code. They run at compile time and expand into regular Rust code. You have already used macros like println!(), vec![], and format!(). Now you will write your own. What Are Macros? A macro is a pattern that expands into code at compile time. When you write println!("hello"), the compiler replaces it with the actual printing code before compilation. ...

March 26, 2026 · 8 min

Rust Tutorial #25: File I/O and Path Handling

In the previous tutorial, we built CLI tools with Clap. Now we learn File I/O — reading files, writing files, working with paths, and walking directories. File I/O is something every program needs. Rust makes it safe and explicit. Every file operation returns a Result, so you always handle errors. No silent failures. No corrupted data. Path and PathBuf Before reading or writing files, you need to understand paths. Rust has two path types: ...

March 26, 2026 · 8 min

CrewAI vs LangGraph vs AutoGen: Which Multi-Agent Framework Should You Use in 2026?

You want to build a multi-agent AI system. You have three main frameworks to choose from. Each has a completely different philosophy — and picking the wrong one will cost you weeks. In the multi-agent tutorial, we covered what multi-agent systems are. This article is the practical follow-up: which framework should you actually use? I will compare CrewAI, LangGraph, and AutoGen across 8 dimensions with real code, real numbers, and honest opinions. ...

March 26, 2026 · 8 min

Rust Tutorial #24: CLI Tools with Clap

In the previous tutorial, we built a database-backed API with SQLx. Now we switch gears and learn Clap — the most popular library for building command-line tools in Rust. CLI tools are one of Rust’s sweet spots. Fast startup, small binaries, no runtime needed. Tools like ripgrep, bat, fd, and exa are all written in Rust. Clap handles the argument parsing so you can focus on the logic. By the end of this tutorial, you will build a complete CLI tool with subcommands, flags, and validated arguments. ...

March 26, 2026 · 8 min

Rust Tutorial #23: Database with SQLx

In the previous tutorial, we built a REST API with Axum using in-memory storage. Now we add a real database with SQLx. SQLx is an async database library for Rust. It supports PostgreSQL, MySQL, and SQLite. Unlike ORMs, SQLx lets you write plain SQL while still being type-safe. It can even check your queries at compile time against a real database. In this tutorial, we use SQLite because it needs no server setup. Everything you learn applies to PostgreSQL and MySQL too — just change the connection string and SQL dialect. ...

March 26, 2026 · 10 min

Jetpack Compose Tutorial #24: Navigation, Animations, and Polish

The task manager works. You can add tasks, complete them, delete them, search, and filter. But it doesn’t feel polished. Screens change instantly. Deleting a task is jarring. There’s no feedback when you complete something. This tutorial adds the polish that makes the difference between a homework project and a real app. What We Add Feature What It Does Navigation transitions Screens slide in/out smoothly Swipe to delete Swipe a task left to delete it Animated task completion Checkbox animates, strikethrough fades in Animated list changes Tasks slide in/out when added or removed Empty state animations Gentle fade-in when list is empty Dark mode Follows system theme Snackbar with undo “Task deleted” with undo option Navigation Transitions By default, screens appear instantly. Add slide transitions: ...

March 26, 2026 · 5 min