اینجا می‌نویسم که کمی از بارِ RAM مغزم کم کنم.

درانکلین

10 Dec 2025
#لینوکس#برنامه‌نویسی

ساختن کوچک‌ترین لینوکس شخصی من (از کرنل تا Lua)

توی این پروژه از صفر یک لینوکس ۶۴ بیتی خیلی مینیمال می‌سازم: اول با tinyconfig و چند تنظیم دستی، یک کرنل کوچک برای x86_64 می‌سازم و توی QEMU بوت می‌کنم تا به خطای no working init found برسم. بعد، یک init فوق‌ساده با Rust + اسمبلی می‌نویسم (بدون std و libc) که مستقیماً با system callها کار می‌کند و نقش PID 1 را می‌گیرد. در آخر، Lua را استاتیک کامپایل می‌کنم، همراه با init داخل یک initramfs می‌گذارم، و با ابزارهای خود کرنل یک ISO قابل بوت می‌سازم که می‌تواند Lua را روی این دنیای خیلی کوچک لینوکسی اجرا کند. هدف، ساخت یک دیستروی روزمره نیست؛ هدف این است که کوچک‌ترین لینوکسی را بسازم که واقعاً می‌فهمم از درون چطور کار می‌کند.

04 Dec 2025
#حریم‌خصوصی#مالکیت‌داده

وقتی دسکتاپ تبدیل به محصول می‌شود: مایکروسافت، valve و نبرد آرام برای آزادی کاربر

در این پست، تفاوت میان رویکرد محدودکننده و تجاریِ ویندوز با رویکرد باز و کاربرمحور valve را بررسی می‌کنیم. توضیح می‌دهیم که چطور ویندوز ابزارهای پایه را به محصولات وابسته به AI و cloud تبدیل کرده، در حالی که valve با SteamOS و Steam Machine و پروژه‌های متن‌باز آزادی و کنترل را به کاربر برمی‌گرداند. همچنین نشان می‌دهیم که رشد لینوکس فقط نتیجهٔ پیشرفت خودش نیست، بلکه به‌خاطر محدودتر شدن جایگزین‌ها هم هست. در نهایت این پست آیندهٔ دسکتاپ را انتخابی میان کنترل و آزادی تصویر می‌کند

03 Dec 2025
#غیرهمزمانی#برنامه‌نویسی#راست#مدیریت-خطا

مدیریت خطا در Rust غیرهمزمان — از سطح تجربه تا عمق معماری

یک پروژه کوچک در Rust نشان می‌دهد چطور چند درخواست را هم‌زمان اجرا کنیم، برای هرکدام timeout بگذاریم، panic را جدا کنیم و خطاها را شفاف دسته‌بندی کنیم. هدف فقط سرعت نیست؛ ساختن هم‌زمانی قابل‌پیش‌بینی و معنادار در دنیای واقعی است. فهم async یعنی ساختار دادن به کارهای هم‌زمان، نه فقط نوشتن کد.

29 Nov 2025
#فیبوناچی#راست#پایتون#الگوریتم#پیچیدگی#برنامه‌نویسی

بازگشت به ساده‌ترین مسئله‌ی پیچیده: نگاهی عمیق به Fibonacci و دو مسیر نوشتن آن در Rust و Python

این پست دو رویکرد متفاوت برای محاسبهٔ دنبالهٔ فیبوناچی را بررسی می‌کند؛ روش سادهٔ بازگشتی و نسخهٔ بهینه‌شده با memoization. روش ساده رشد نمایی و محاسبات تکراری را نشان می‌دهد، در حالی‌که memoization با استفاده از حافظه، بازگشت را به یک ابزار قدرتمند و سریع تبدیل می‌کند. در نهایت، فیبوناچی تبدیل می‌شود به یک استعاره از جوهرهٔ برنامه‌نویسی: انتخاب درست در مسیر پیچیدگی.

19 Nov 2025
#ترمینال#سطح‌دسترسی#لینوکس#مدیریت_سیستم

راهنمای کامل دستور id در لینوکس

دستور id چه اطلاعاتی از کاربر نمایش می‌دهد، چطور می‌شود UID و GID و گروه‌ها را دید و کدام گزینه‌ها کاربردی‌ترند. همچنین نشان می‌دهد در چه موقعیت‌هایی مثل رفع خطاهای Permission، بررسی کاربران سرور یا کنترل اجرای اسکریپت، id مفید است.

15 Nov 2025
#راست#غیرهمزمانی#مدیریت-خطا

مدیریت خطا در Async در Rust؛ از یک تابع ساده تا یک Health Monitor واقعی

این پست به شکل خلاصه توضیح می‌دهد که چطور باید خطاهای async در Rust را درست مدیریت کرد؛ چرا خطایابی در async سخت‌تر است، چگونه با anyhow و thiserror خطا را قابل فهم‌تر کنیم، و از الگوهایی مثل timeout، retry، JoinSet، select! و tracing استفاده کنیم. در پایان هم یک ابزار کوچک به نام leen-health ساخته می‌شود که چند endpoint را چک می‌کند و یک گزارش JSON تمیز می‌دهد.

17 Sep 2025

زبان اسمبلی؛ صدایی که هنوز توی ذهنم داد میزنه

توی این نوشته توضیح می‌دم که چطور آشنایی با زبان اسمبلی وقتی نوجوان بودم، نگاه من به کدنویسی رو عوض کرد. حتی با اینکه فقط یک‌بار یه کد اسمبلی ساده نوشتم، فهمیدن طرز فکر CPU باعث شد به حلقه‌ها، متغیرها، حافظه و عملکرد برنامه‌ها جور دیگه‌ای نگاه کنم. اسمبلی برای من یه «صدای همیشگی» شده؛ وجدانی فنی که وادارم می‌کنه دقیق‌تر و بهتر کد بزنم. شاید هیچ‌وقت ازش استفادهٔ عملی نکنم، اما تأثیرش همیشه همراهمه.

2 / 3