Public Repository
84 subscribers
1 photo
3 files
22 links
Archiving the good bits of the internet.
Download Telegram
Please open Telegram to view this post
VIEW IN TELEGRAM
MapReduce.pdf
186.2 KB
MapReduce: Simplified Data Processing on Large Clusters by Google Research (1 hr) - 2003

مقاله‌ای قدیمی ولی بسیار جذاب از بخش تحقیق و توسعه گوگل. سیستم‌های توزیع‌شده رو ما بیشتر برای ذخیره‌سازی می‌شناسیم. از سرویس‌های ابری مختلف گرفته تا دیتابیس‌های توزیع‌شده که بحثشون این چند سال داغ بوده ولی این مقاله در مورد توزیع پردازش هست (به عبارت ساده‌تر: بتونیم CPUهای توزیع شده رو به کار بگیریم برای انجام دادن یک تسک کلی). فقط دقت داشته باشین که مقاله برای سال ۲۰۰۳ هست و اعداد و ارقام و specها به شکل نجومی‌ای از اون زمان تا الان رشد کردن.

پ.ن. می‌دونم تو آکادمیای امروز، اکثر دانشگاه‌ها به صورت کیلویی مقاله می‌دن و شما هم احتمالا دید بدی دارین نسبت به مقاله خوندن. ولی این یکی رو تضمین می‌کنم که کیفیت خیلی خوبی داره چون توسط کسانی نوشته شده که توی صنعت بودن و یه مشکل در سطح گوگل رو تونستن حل کنن. اینکه با خوندن این مقاله تونستم دنیا رو از دید اون آدمای خفن ببینم واقعا حال کردم.
Local-first software by Ink & Switch Labs (20 min) - 2019

برای ماهایی که زخم‌خورده‌ی قطعی اینترنت چند ماهه‌ی ایران هستیم، مقاله‌ی نسبتاً جالبی می‌تونه باشه. چند Open Question تحقیقاتی هم معرفی می‌کنه برای کسانی که دوست دارن تو حیطه‌ی سیستم‌های توزیع‌شده و همچنین تعامل انسان با کامپیوتر (HCI) کار کنن.

درسته ۷ سال از زمان نگارش مقاله گذشته ولی تو قطعی اینترنت اخیر هم شاهد این بودم که چقدر کامیونیتی نرم‌افزار خارجی و حتی ایرانی نسبت به این موضوع بی‌خیاله. تقویم ویندوز رو باز می‌کنی کار نمی‌کنه، با تلگرام دسکتاپ کار داری باز نمی‌شه، سایتی که سرویس ورکر داره بصورت آفلاین کار نمی‌کنه. اگه فرصت کنم خودم در این مورد نظرم رو به صورت کامل‌تر می‌نویسم.
Naive Bayes Is About Asking Questions Your Data Can Answer by Ata! (15 min) - 2026

چند روز پیش قضیه بیز ساده رو توی مباحث یادگیری ماشین خوندم و فرمولش برام میک سنس نمی‌کرد. سعی کردم قضیه بیز رو توضیحش بدم تا مجبور بشم جاهایی که بلد نیستم رو بهتر یاد بگیرم. انگلیسیش رو خودم نوشتم و نسخه فارسی رو کلاود ترجمه کرده و من بررسی کردم. اگه خوندید حتماً فیدبک بدین!
AWS Builders' Library by AWS developers (10 - 30 min each)

مجموعه‌ای از مقاله‌های مهندسی تیم AWS درباره‌ی مشکلات واقعی‌ای که در مقیاس خیلی بزرگ باهاشون روبه‌رو شدن.

توی این مجموعه چیزهایی مثل مدیریت خطا در سیستم‌های توزیع‌شده، طراحی سیستم‌هایی که با وجود خراب شدن بعضی قسمت‌ها همچنان کار می‌کنن، retry کردن درخواست‌ها، timeoutها، جلوگیری از overload شدن سرویس‌ها و کلی جزئیات دیگه بررسی می‌شه.

چیزی که جالبه اینه که اینا بیشتر شبیه تجربه‌ی پشت صحنه‌ی ساخت سرویس‌هایی مثل AWS هستن، نه آموزش تئوری. یعنی می‌بینی وقتی یک سیستم با میلیون‌ها کاربر داری، تصمیم‌های کوچیکی مثل اینکه چند بار retry کنی یا کی timeout بدی، چطور می‌تونن باعث نجات یا نابودی کل سیستم بشن.
Roy Fielding's Misappropriated REST Dissertation by Two-Bit History (5 min) - 2020

He warns, almost at the very beginning of the dissertation, that “design-by-buzzword is a common occurrence” brought on by a failure to properly appreciate software architecture.


در مورد REST API به احتمال زیاد یه چیزایی شنیدید و احتمالا می‌دونید که برای توجیه کردنش، به مقاله‌ی سال ۲۰۰۰ روی فیلدینگ اشاره می‌کنن. این بلاگ نقد جالبی در این مورد انجام می‌ده. می‌گه کلاْ مسیر رو اشتباه رفتن و REST اصلاً در مورد اندپوینت‌های API نیست (هرچند که می‌شه یه سری ایده‌ها رو ازش استفاده کرد) و برای همین بهتر بود یه اسم دیگه‌ای براش می‌ذاشتن.
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.

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