๐Ÿ  Projects

๐Ÿฆ€

Why Async Rust is Hard

4 blocks ยท 3:15 ยท 80% complete

โ—
๐Ÿณ

Docker Compose Tips

6 blocks ยท 5:20 ยท 45% complete

โ—
๐Ÿ“ฆ

Borrow Checker Explained

3 blocks ยท 2:45 ยท draft

โ—‹
๐Ÿ“ฑ

Building TMAs with React

8 blocks ยท 7:10 ยท 10% complete

โ—

๐Ÿ› ๏ธ Crafts

๐Ÿ“ฑ TMA Development

Build Telegram Mini Apps with React, routing, and theming. Includes deployment templates and CI setup.

react telegram tma deployment

๐ŸŽฌ Video Production Pipeline

End-to-end video creation: plot writing, voiceover recording, code animation rendering, and YouTube publishing.

ffmpeg manim pipeline youtube

๐Ÿค– AI Agent Workflows

Multi-agent orchestration for content generation, asset creation, and automated publishing.

hermes agents automation

โ˜๏ธ VPS & Infrastructure

Server setup, Docker, reverse proxy, SSL (certbot), and monitoring for production deployments.

nginx docker vps monitoring

๐ŸŽจ Style Profiles

3 active

Dark Terminal

active

Code editor aesthetic with green-on-black terminal vibes. Best for coding tutorials and deep-tech content.

green accent mono font dark bg

Neon Code

active

Vibrant syntax highlighting with gradient backgrounds. Good for visually striking explainers.

pink accent gradient bg purple tones

Meme Style

draft

Fun, internet-culture aesthetic with emojis and bold colors. Best for casual content.

warm accent emoji heavy bright bg

โš™๏ธ Settings

API Configuration

Render Defaults

Auto-approve renders

Skip manual review step

Connection Status

VPS: Connected

render.rukaku.com ยท latency 12ms

Laptop: Offline

Last seen 2 hours ago

Appearance

Dark mode

Follow system

About

Video Writer

v0.2.0

video-writer.rukaku.com

Why Async Rust is Hard

4 blocks ยท 3:15 ยท 80% complete
๐Ÿ“ Plot
๐ŸŽ™๏ธ Voice
๐Ÿ‘๏ธ Preview
๐Ÿ–ผ๏ธ Thumbnail
๐Ÿ’ป Code

Why Async Rust is Hard

#1 diagram 45s
โœ…

Every language promises easy async. Rust delivers correct async โ€” but that correctness comes with a cost. Before we even write async fn, let's understand why the borrow checker and futures interact the way they do.

#2 text_emphasis 35s
โœ…

A future in Rust is a state machine generated at compile time. The compiler creates an anonymous enum with a variant for every .await point. This means your future's size depends on what it borrows โ€” and if you borrow something across an await point, you need Pin to keep it safe.

#3 manim 50s
๐Ÿ“

Self-referential structs are the crux of the problem. When async fn compiles into a future, it can reference local variables that were created before an .await. That's a self-referencing type. Without Pin, the compiler would have to prevent this entirely โ€” and then async Rust wouldn't work at all.

#4 diagram 25s
๐Ÿ“

The Tokio runtime solves this by providing tokio::spawn, which takes your future, wraps it in a JoinHandle, and pins it to the heap. That's why your top-level async functions usually end with .await โ€” because spawned futures are automatically pinned.