Public Repository
84 subscribers
1 photo
3 files
22 links
Archiving the good bits of the internet.
Download Telegram
یکی از دوستان پیشنهاد کرد که مطالب رو خلاصه‌تر کنم و قرار بدم (حالا یا خودم یا با notebook-lm و بقیه ابزارها). راستش من دنبال بهینگی مطالعه‌م نیستم و دوست دارم حداقل تو این مورد take my time کنم. زندگی‌ها امروزه از بس فست‌فودی شده، سر همه چیز عجله داریم و بنظرم این عجله‌ی بی‌دلیل کیفیت همه چیز رو میاره پایین و در مورد مطالعه‌ی چیزایی که بهشون علاقه دارم نمی‌خوام این اتفاق بیفته.

من خودم هدفم اینه یه قسمت از مطالعه‌م خوندن متن فنی حوصله‌سر بر باشه. برخلاف دیدن ویدیو و شنیدن پادکست که هیچ تمرکزی از طرف مخاطب نمی‌خوان، خوندن متن نیاز به تمرکز فعالانه از جانب خواننده رو نیاز داره و بنظرم ۱) برای تمرین تمرکز تو این زندگی شتاب‌زده مناسبه ۲) یادگیری و intuition بهتر اتفاق میفته.
▶️ Creator of TypeScript: 10x Faster Typescript, Why AI Won't Replace SWEs by Andres Hejlsberg (1hr 5min) - 2026

مصاحبه با آندرس هلسبرگ، طراح زبان‌های توربو پاسکال، سی‌شارپ و تایپ‌اسکریپت. در مورد تاریخچه تایپ‌اسکریپت و اینکه چرا توی آخرین ورژن، خود کامپایلر رو به زبان گولنگ پورت کردن (و نه Rust و زیگ). چیزی که کسی بهش اشاره نمی‌کنه اینه که چطور این مرد تونسته کلی تصمیم درست پشت سر هم بگیره و تایپ‌اسکریپت رو به یکی از موفق‌ترین پروژه‌های مایکروسافت تبدیل کنه.

- فیکس کردن JS عوض جایگزین کردنش (که باعث می‌شد داخل کامیونیتی JS قرار بگیرن)
- سیستم تایپ TS که به شکل structural هست و انعطاف‌پذیری خیلی خوبی داره (در مقابل nominal در بقیه زبان‌ها)
- پیروزی در رقابت با فلو (زبان رقیب TS که توسط فیسبوک توسعه داده می‌شد)
- همکاری با تیم انگولار گوگل برای شناسوندن TS به بقیه
- فیچرهایی که اضافه کردن مستقیما از نیاز توسعه‌دهندگان کتابخونه‌ها و برنامه‌ها بوده
- تصمیم بر پورت کردن و انتخاب گولنگ

و همین‌ تصمیم‌های درسته که باعث شده تایپ‌اسکریپت پراستفاده‌ترین زبان دنیا بشه.
Crafting Interpreters by Robert Nystrom

این کتاب از رابرت نیسترام رو به شدت پیشنهاد می‌کنم. می‌خواستم بخش‌هایی از این کتاب رو قرار بدم تا بخونین ولی کلیت کتاب به قدری خوبه که به نظرم ارزش تایمتون رو داره که کامل مطالعه‌ش کنین.

رابرت نیسترام توی تیم زبان دارت کار می‌کنه و این کتابی که نوشته، در دو بخش سعی می‌کنه زبانی به اسم Lox رو پیاده‌سازی کنه. توی بخش اول زبان لاکس رو با جاوا و به شکل پردازش مستقیم درخت AST و در بخش دوم با C به شکل VM (ترکیبی از کامپایل و تفسیر) پیاده‌سازی می‌کنه و در حین پیاده‌سازی در مورد مسائل طراحی زبان و چالش‌های این مسیر صحبت می‌کنه. حتی اگه فرصت پیاده‌سازی رو هم ندارید، خوندن محتوای کتاب باز هم کمکتون می‌کنه مفاهیم طراحی زبان و کامپایلر رو بهتر متوجه بشین.

من خودم کتاب رو یه بار خوندم و همراه کتاب پیاده‌سازی کردم و الان برای بار دوم دارم با راست پیاده‌سازیش می‌کنم که هنوز ناقصه (لینک ریپازیتوری). علیرضا هم با گولنگ پیاده‌سازی کرده (لینک ریپازیتوری). خلاصه اینکه به شدت پیشنهاد می‌شه این کتاب.
Crafting Interpreters.pdf
13.5 MB
فایل کتاب رو هم قرار می‌دم تا آفلاین هم بتونین مطالعه‌ش کنین چون اینترنت ایران به استیبل بودنش معروف نیست.
این چند مدت که کم‌تر فعال بودم، مشغول انجام مراحل پایانی پروژه‌ی کاری و مسائل دیگه بودم. در حال نوشتن گزارشی گذشته‌نگر در مورد تجربه‌های خودم هستم که هر وقت مطمئن بشم با دستبند نمیان بگیرنم، منتشرش می‌کنم.

البته گزارش رو یه دور نوشتم ولی خوشم نیومد و پاک کردم. حس کردم خیلی وارد جزئیات شدم و باید حرفه‌ای‌تر بنویسمش. اگه نوشته‌های خوب این شکلی (در مورد تجربه‌های کاری در داخل ایران) می‌شناسین، لطفاً معرفی کنین تا از نوع نوشتنشون ایده بگیرم.
یکی از موضوعاتی که دائم توی صحبت‌ها و کلاسای درس و حتی کتابای رفرنس‌ می‌بینم به اشتباه بیان می‌کنن پیشوندهای یکا (همون کیلو و مگا و گیگا) تو دنیای کامپیوتره.

مشکل از اینجا ناشی می‌شه که بقیه حیطه‌ها چون با اعداد ده‌‌دهی سروکار دارن، برای همین از توان معینی از ۱۰ استفاده می‌کنن تا کار کردن با اعداد بزرگ راحت‌تر بشه. مثلا کیلو یعنی ده به توان سه که می‌شه هزار.

ولی توی دنیای دودویی کامپیوتر، برای راحتی ضرب و تقسیم، از توان‌های ۲ برای ساخت پیشوند استفاده می‌کنن. مثل دو به توان ده که میشه ۱۰۲۴ و به اشتباه به این عدد می‌گن کیلو (چون به هزار خیلی نزدیکه). اسمی که برای تمایز قائل شدن بین کیلو و این عدد بدست اومده استفاده می‌کنن «کیبی» عه و به جای K از نماد Ki استفاده می‌کنن.

برای مثال یک گیگابایت معادل هزار مگابایته و یک گیبی‌بایت معادل ۱۰۲۴ میبی‌بایته.

1 GB = 1000 MB = 1,000,000 KB
1 GiB = 1024 MiB = 1,048,576 KiB

تو کامنت هم یه مثال که هر روز شاهدش هستیم رو نوشتم😪
Saving another 100TB of RAM with math (and Rust) by Cloudflare Engineering (15mins) — 2026

We have thousands of servers all over the world with petabytes of RAM and millions of CPU cores, and all of it is pushed to the max.

بلاگ جالب از تیم مهندسی کلاودفلر در مورد بهینه‌سازی یکی از سیستم‌های داخلی‌شون که در نهایت باعث شده ۱۰۰ ترابایت رم کم‌تر مصرف بشه. از توزیع یکنواخت و انتظار اشتباه ما از امید ریاضی و انحراف معیار اون تا تغییر دادن چند خط کد که باعث می‌شه به ازای هر استراکت، ۲ بایت کم‌تر حافظه مصرف بشه.
The Only Two Markup Languages by Ginger Bill (15mins) — 2026

جینجر بیل، خالق زبان اودین، در مورد زبان‌های مارکاپ صحبت می‌کنه و به استفاده از XML، جیسون و YAML برای کانفیگ کردن برنامه، دیس سنگین می‌ده😅 و در آخر برای زبان اودین سینتکسی پیشنهاد می‌ده تا در آینده دستش رو برای مارکاپ کردنش باز بذاره.
▶️ Clean Code, Horrible Performance by Casey Muratori (23 mins) — 2023

کیسی در مورد ۵ اصل از اصول کلی Clean Code صحبت می‌کنه که هر کدوم به نوبه خودشون کلی پرفورمنس برنامه رو پایین میارن. پیش‌فرض ذهنی ما رو با پلی‌مورفیسم و توابع جمع‌وجور پر کردن و اکثر اوقات خارج از این موارد نمی‌تونیم فکر کنیم. به همین دلیل که بتونیم خارج از چارچوب فکر کنیم، پیشنهاد می‌کنم این ویدیو رو ببینین.

البته در مورد همه‌ی حیطه‌های برنامه‌نویسی نمی‌شه اینو پیاده‌سازی کرد چون یا صرفه نداره یا واقعا قابلیت این کارها توی اون محیط نیست ولی در کل ایده‌های خوبی رو مطرح می‌کنه.

کیسی یه ویدیوی دیگه هم داشت که توش در مورد اینترفیس و داینامیک دیسپچ و این موارد صحبت می‌کرد ولی نمی‌تونم پیداش کنم. ممنون می‌شم اگه شما اون ویدیو رو داشتین و بهم بفرستین (@atareversei).
The Value of Things by Robert Nystrom — 2026

این آرتیکل فنی نیست ولی به موضوعی می‌پردازه که چند وقته بصورت روزمره می‌بینمش و اونم استفاده از AI تو مواردی هست که «خود زمان صرف کردن برای انجام اون کار موضوع مهمی تلقی می‌شه و زمان صرف کردن، ارزش قائل شدن به طرف مقابل رو می‌رسونه».
Computer Enhance by Casey Muratori — 2023 to Present

اگه به چیزای Low Level و پرفورمنس علاقه دارین، این دوره کیسی موراتوری (بالاتر یه قسمت ازش رو گذاشته بودم) رو پیشنهاد می‌کنم. کیسی، از رفقای گرمابه و گلستان Primeagen عه (اگه پرایم رو نمیشناسین که وای بر من نتونستم به رسالتم عمل کنم) و صحبت‌هاش و نوع نگاهش به مسائل آموزنده‌ست. خودش لید یه شرکت بازی‌سازی مستقل هست تو آمریکا و چیزایی که یاد می‌ده از روی تجربه‌ست.

دوره به صورت هفتگی آپدیت می‌شه و این کل دوره نیست (آپدیت واسه ۲۰۲۵ عه). روند اصلی دوره، ویدیوهای آموزشی + تکالیفی هست که کیسی مشخص می‌کنه. یه قسمت دیگه مربوط به جلسات پرسش‌وپاسخه که این قسمت رو شخصا به خاطر Opinionated بودنشون دوست دارم.
Public Repository
الان برای بار دوم دارم با راست پیاده‌سازیش می‌کنم که هنوز ناقص
راستی (No Pun Intended) این مورد رو هم قسمت اولش رو با راست پیاده‌سازی کردم. آنچه در آینده خواهید دید: Bytecode VM، LSP و Type System
Free Software, Per Accidens by Ginger Bill — 2026

آرتیکلی راجع به نرم‌افزار آزاد، اوپن‌سورس و لایسنس‌ها تو دنیای LLMها.

جینجر بیل این مورد رو مطرح می‌کنه که با پیشرفت LLMها، دی‌کامپایل کردن نرم‌افزارها راحت‌تر شده و بعضی از اصول نرم‌افزار آزاد که مقرر می‌کرد کاربر باید بتونه به سورس‌کد دسترسی داشته باشه تا بتونه مطالعه‌ش کنه و تغییرش بده، عملا دیگه موضوعیت ندارن.

شرکت‌ها می‌تونن سورس اصلی رو پرایوت نگه دارن تا بقیه شرکت‌ها نتونن به راحتی سورس قابل توسعه (شامل اسم‌های مناسب برای متغیرها،‌ ساختار مناسب کد و کامنت‌ها) رو بردارن و با توسعه‌دهنده اصلی رقابت کنن. در عین حال کاربرا می‌تونن برنامه نهایی رو دی‌کامپایل کنن و کنجاوی‌شون رو برطرف کنن.
This media is not supported in your browser
VIEW IN TELEGRAM
نمی‌دونم شما هم این تجربه رو داشتین یا نه ولی من خودم طی این یکی دو سال اخیر که حجم تغییرات به واسطه ابزارهای هوش مصنوعی زیاد شده، به باگ‌های بیش‌تری برخوردم.

ویدیوی بالا، وی‌اس‌کد رو نشون می‌ده که تب‌ها همینجوری تو جای خودشون دارن تکون می‌خورن و باعث می‌شن خطی که روش داشتم کار می‌کردم هی بالا و پایین بشه. در نتیجه‌ی این و چند تا باگ مشابه دیگه (رفته‌رفته عوض اینکه فیکس کنن مشکلات رو، باگ‌های جدید میدادن بیرون)، در نهایت تصمیم گرفتم به ادیتوری برم که ساده‌تر باشه، حجم تغییراتش طی آپدیت کم باشه و بشه پلاگین‌هایی که لازم دارم رو بهش اضافه کنم که در نهایت چیزی نموند جز انتخاب کلاسیک خیلی‌ها، یعنی نئوویم.

کیفیت نرم‌افزارها روز به روز داره پسرفت می‌کنه.