Public Repository
84 subscribers
1 photo
3 files
22 links
Archiving the good bits of the internet.
Download Telegram
Interview with Alan Kay by Dr. Dobbs (10 min) - 2012

Computing is pop culture. [...] Pop culture holds a disdain for history. Pop culture is all about identity and feeling like you're participating. It has nothing to do with cooperation, the past or the future — it's living in the present. I think the same is true of most people who write code for money. They have no idea where their culture came from.


The Internet was done so well that most people think of it as a natural resource like the Pacific Ocean, rather than something that was man-made. When was the last time a technology with a scale like that was so error-free? The Web, in comparison, is a joke. The Web was done by amateurs.


اَلن کِی یکی از خفن‌ترین آدمای حیطه‌ی کامپیوتره که مفاهیمی مثل آبجکت‌ها، مسیجینگ بین آبجکت‌ها و واسط کاربری رو ابداع کرده. از طرز فکرش و اون میل باطنیش به excellency، واقعا لذت می‌برم و درس می‌گیرم.

این بلاگ مبحث فنی‌ای قرار نیست بهتون یاد بده، صرفاً یه دیالوگ ساده با یه آدم خفن رو می‌خونید و دیدگاهشو راجع به دنیای tech سال ۲۰۱۲ رو می‌شنوید. البته بلاگ اصلی داکتر دابز مشکل فنی داره و لود نمی‌شه که میرورش رو قرار دادم.
I’m harvesting credit card numbers and passwords from your site. Here’s how. by David Gilbertson (15 min) - 2018

گزارش یه متخصص امنیت سایبری درباره‌ی اینکه چطور می‌شه اطلاعات کاربران رو با حمله به زنجیره تامین به دست آورد. منظور از زنجیره تامین اینه که به جای خود برنامه، به پکیج‌ها و کتابخونه‌هایی که اون برنامه استفاده می‌کنه نفوذ کنیم.

برای همین مورده که وب‌سایت‌های حساس (وبسایت‌های درگاه پرداخت، بانک، اطلاعات مالی، پزشکی و غیره) نیازه از هیچ پکیجی سمت فرانت استفاده نکنن (بله حتی React). البته شرایط NPM بهتر شده و راحت‌تر می‌شه وریفای کرد کد دانلود شده واقعا همونی هست که روی گیت‌هابه یا نه ولی خب تضمین صد درصدی نیست.
Channel name was changed to «Public Repository»
Chrome's Dominance Isn't the Whole Story by Ata! (5 min) - 2026

اگه کنجکاوین که بدونین چند درصد مردم ایران از مرورگرهای سامسونگ اینترنت و مایکروسافت اج استفاده می‌کنن، این بلاگ می‌تونه به سوالتون جواب بده. و نکته‌ی مهم‌تر اینکه وب اپلیکیشن رو در نهایت باید بر اساس سناریویی که کاربر قراره طبقش پیش بره تست کنیم نه چیزی که خودمون به صورت پیش‌فرض تو ذهنمون داریم. نسخه فارسی.
Good Tools Are Invisible by Ginger Bill (5 min) - 2026

I’ve had people tell me how “fun” it was to build a macro to handle some one-off text-refactoring problem. But when I looked at what they were doing and how long it took, my honest reaction was: I could have done that in Sublime in a minute with multiple cursors.


“Highly configurable” is often just an excuse for shipping no opinion at all and calling the resulting work your problem. Good defaults are a form of respect for the user’s time: the toolmaker does the thinking once so a thousand users don’t each have to.


بلاگ پستی در مورد اینکه بعضی‌ها در حدی تعصبی از vim و یا «لینوکس به عنوان دسکتاپ» و ابزارهای دیگه دفاع می‌کنن که دیگه نمی‌تونن عیب اون ابزارها رو ببینن :) خودم شخصاً شاهد این بودم که خیلی از کسایی که با vim کد می‌نویسن (که خفن دیده بشن) اگه با VS Code و میانبرهای اون کد می‌زدن خیلی سریع‌تر و بی‌دردسرتر پیش می‌رفتن ولی خب.
Channel photo updated
The Database at 550 Kilometers: What Orbital Computing Means for Distributed Databases by Cockroach Labs (10 min) - 2026

Einstein is not the problem. Newton is the problem.


یکی از موضوعاتی که این روزها زیاد درباره‌اش می‌شنویم و تا همین ۱۰ سال پیش بیشتر شبیه داستان‌های علمی‌تخیلی بود، استفاده از دیتاسنترهای مستقر در مدار زمین برای انجام بخشی از پردازش‌هاست.

تیم مهندسی CockroachDB توی این مطلب، امکان استفاده از دیتابیس‌های توزیع‌شده در دیتاسنترهای فضایی رو بررسی کرده. برخلاف اجرای سرویس‌های استیت‌لس (مثل ضرب ماتریس‌ها تو مباحث AI)، نگهداری داده در فضا چالش‌های متفاوتی داره. از اثرات بسیار کوچک نظریه نسبیت بر ساعت‌ها و نحوه همگام‌سازی اون‌ها گرفته تا محدودیت‌های حقوقی، ملاحظات اقتصادی و حتی این واقعیت که خود دیتاسنترها دائماً در حال حرکت هستن و مکان جغرافیاییشون عوض می‌شه.
Public Repository
MapReduce.pdf
GFS.pdf
269.5 KB
The Google File System by Google Research (1 hr) - 2003

Component failures are the norm rather than the exception.


Most files are mutated by appending new data rather than overwriting existing data. Random writes within a file are practically non-existent.


فایل‌سیستم توزیع‌شده‌ی گوگل، مکمل مقاله‌ایه که بهش ریپلای زدم (MapReduce از GFS استفاده می‌کنه).

این فایل‌سیستم سال ۲۰۰۳ طراحی و توسعه داده شده. فایل‌سیستم‌های توزیع‌شده‌ی دیگه‌ای هم اون زمان‌ها بودن ولی هیچکدوم نیازهای گوگل رو برآورده نمی‌کردن (read کردن مقدار خیلی زیادی از اطلاعات/اجرا شدن روی تجهیزات معمولی و ارزون/اینترفیس و امکانات خیلی ساده) و برای هم GFS رو طراحی کردن. تشخیص دادن نیازمندی‌ها و حل کردنشون به شکل مهندسی‌شده واقعا جالبه.

پ.ن. گوگل بعدها Colossus رو طراحی کرد و جایگزین GFS کرد.

پ.ن.۲. فایل‌سیستم توزیع‌شده‌ی هدوپ (HDFS) از ایده‌ی GFS استفاده کرده.
یکی از دوستان پیشنهاد کرد که مطالب رو خلاصه‌تر کنم و قرار بدم (حالا یا خودم یا با 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ها، دی‌کامپایل کردن نرم‌افزارها راحت‌تر شده و بعضی از اصول نرم‌افزار آزاد که مقرر می‌کرد کاربر باید بتونه به سورس‌کد دسترسی داشته باشه تا بتونه مطالعه‌ش کنه و تغییرش بده، عملا دیگه موضوعیت ندارن.

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