שלום וברוכים הבאים לפודקאסט מספר 420 של רברס עם פלטפורמה - זהו באמפרס מספר 76. התאריך היום הוא ה-14 בספטמבר 2021, ואנחנו מקליטים באולפן הוירטואלי שלנו - רן, אלון ודותן - שלום!
אז באמפרס זו סדרה של קצרצרים שבה אנחנו מספרים על מה שמצאנו ומעניין בשבוע או בחודש האחרון - לפעמים בחודשים האחרונים אם התעכבנו - ברחבי האינטרנט: Repos מעניינים ב-GitHub, בלוגים מעניינים, פרוייקטים, Utilities ודברים אחרים. אז אני אתחיל, כמיטב המסורת . . .
רן -
- אז האייטם הראשון שלי נתרם למעשה בעבר הרחוק ע”י מיקי טבקה - תודה מיקי! - וזה איכשהו נעלם בארכיון, אז הנה אני מציף את זה שוב: זה איזשהו בלוג-פוסט מעניין שנקרא No Meetings, No Deadlines, No Full-Time Employees
- זה בעצם בלוג-פוסט שמספר על איזושהי חברה, סטארטאפ, שהתחיל כמו כל סטארטאפ אחר . . . התחיל בגיוס של כסף וגיוס עובדים . . .
- לסטארטאפ קוראים Gumroad - זו איזושהי פלטפורמה ל-Creatives, לייצר תוכן . . . אני בטוח שזו לא הפלטפורמה הראשונה בתחום.
- בכל אופן - התחילו, ייצרו את הפלטפורמה - ולאט לאט נגמר להם הכסף . . . באיזשהו שלב כולם פוטרו, אבל הסטארטאפ המשיך לגדול . . .
- הסטארטאפ בשיאו הגיע למשהו כמו 25 עובדים, אבל הוא פיטר את כולם והוא [המייסד] נשאר העובד היחיד - ומאז הוא למעשה שכר את כולם אחד-אחד - כ-Freelancers, “עובדים שעתיים” - פחות או יותר את אותם העובדים שהיו לו מקודם.
- פה בבלוג-פוסט הזה הוא מספר את סיפור חייו של הסטארטאפ, ואני חושב שזה מעניין - מעיין אנטי-תזה לתרבות העבודה שקיימת היום - עם כל ה-Disclaimer-ים שיש:
- זה לא בהכרח יעבוד לכם - הוא בא ואומר “זה הצליח לנו - אבל בטעות, לא כי תכננו”.
- אבל זה מצליח - הסטארטאפ היום גדל, אני חושב שיש לו מחזור של משהו כמו 11 מיליון דולר, שזה מכובד בשביל צוות של משהו כמו עשרים-ומשהו איש
- עוברים דרכו משהו כמו 170 מיליון דולר של המשתמשים שלו
- והמאפיינים של תרבות העבודה הם כמו שאמרנו מההתחלה - אין שם פגישות, אין דד-ליינים ל-Features, כל התקשורת היא א-סינכרונית - הדבר הראשון שהעובדים עושים זה לכבות Notifications . . .
- לא להתקין שום דבר על המובייל, לכבות Notifications בכל מקום, לעיתים רחוקות מאוד להשתמש ב-Slack כשצריך - ורוב התקשורת היא דרך GitHub ואני חושב ש-Notion או איזושהי פלטפורמה אחרת.
- אבל הכל א-סנכרוני וב-Latency של 24 שעות או יותר - וטוב להם, והם מצליחים.
- אז זהו - אני חושב שזה סיפור מעניין, סיפור יזמי מעניין - בטח לא הסיפור הטיפוסי
- אולי קצת בא להעלות את הנושא של עבודה מרחוק והאיזון של Work-Life-Balance
- זהו סיפור מעניין - מזמין אתכם לקרוא, הקישור ב-Show notes [כאן, הכוונה].
- (אלון) “הפינה הזו הייתה בחסות רן תבורי, תומך נלהב בעבודה מהבית . . .”
- שמע, כן - זה עובד, כמו שאמרת - זה כנראה עובד במקרה, זה עובד בסוג מאוד ספציפי של חברות
- וגם, בוא - אני לא מזלזל, אבל זה לא Billion-Dollar-Company כמו שכל אחד מדמיין בראש . . .
- (רן) ממש לא, והוא לא מנסה ככה לקפוץ גבוה מדי - הוא אומר: “תשמעו, אנחנו לא הולכים להיות Billion-Dollar-Company, אנחנו לא מכוונים לשם ואנחנו לא רוצים את זה - אבל אנחנו כן מחפשים את האיזון שמתאים לנו, וכל אחד עובד מתי שמתאים לו ולא עובד מתי שלא מתאים לו - ובהתאם לזה הוא גם מקבל את הכסף”.
- דרך אגב, גם המשכורות שלהם מפורסמות - הם יודעים כמה כל אחד מהם מרוויח לשעה, החל מ-$50 עד $250 לשעה, בהתאם לתפקיד - אז יש פה גם את האלמנט של השקיפות, שהוא יחסית חריג.
- אולי את זוכרים את Buffer, שפעם פרסמו את טבלת המשכורות שלהם
- אבל זהו, סיפור מעניין, לגמרי לא הסיפור הטיפוסי, ואני לגמרי לא בא ואומר “באחריות זה הולך לעבוד לכם” - כי זה לא, והוא בעצמו אומר ש”זה עבד לנו במקרה”.
- ועדיין אני חושב שזה סיפור מעניין ללמוד ממנו.
- (דותן) מה שאני חושב שמיוחד ב-Gumroad, אם אני זוכר, זה שהם התחברו לאיזושהי נישה, ואני לא יודע איפה זה היום, אבל נישה של קהילת האינדי בכלל ובאופן ספציפי כל ה-Indi-Gaming ו-Game Developers שרוצים למכור את המשחק שלהם ולא בא להם ללכת ל-Publishers
- או שהם לא יכולים או שאין להם את התשתית לזה
- אז אני זוכר שזה מאוד פשוט - אתה בא ל-Gumroad, יוצר לעצמך חשבון ויכול להתחיל למכור עם לינק של Gumroad - וזהו.
- (רן) כן - אז הם סוג-של-נותנים-דוגמא: אנחנו לא רק מוכרים לקהילה כזאת, שהיא אינדי - אנחנו גם Independent בעצמנו.
- אז אני לא יודע אם זה הגיע מתוך האג’נדה הזאת או לא, אבל הם סוג-של חיים את ה-Spell שלהם.
- זהו - בלוג-פוסט יפה, לא ארוך - מזמין אתכם לקרוא, ושוב תודה למיקי.
- ולאייטם הבא - זה איזשהו Review קצר של ה-Stack overflow survey שהתפרסם לפני כחודש או חודשיים
- אנחנו עושים את זה קצת באיחור כי הרבה זמן לא הקלטנו [באמפרס]
- אז אני אוציא כמה כמה דברים קטנים - ויש שם די הרבה, יש המון אינפורמציה, והוא גם מוצג בצורה גרפית מאוד מאוד נחמדה [כמו בפעמים הקודמות] - אז כמה דברים שלי תפסו את העין, כי כל אחד אולי מתעניין בדברים אחרים . . .
- אז האייטם הראשון זה שהם באים שאומרים שהם הסתכלו על אוכלוסיית הבני 18 ומטה - הממש צעירים, המפתחים הממש צעירים - על איך הם לומדים לפתח, באילו Resource-ים הם משתמשים.
- והם אומרים שבניגוד אולי למה שהיה פעם, הם כמעט ולא קוראים ספרים או עושים קורסים כתובים - הכל זה Vidoes או איזה שהם Tutorials קצרים או דברים בסגנון הזה.
- עד כמה שזה אולי נשמע לנו אינטואיטיבי - לבוא ולראות את זה במספרים זה מאוד נחמד, אני חושב, ואולי קצת מאיר את העניים - עכשיו אני יכול לבוא ולהגיד “איך הצעירים לומדים” . . .
- אבל אני חייב להגיד שכל אחד מאיתנו גם באיזשהו מקום קצת צעיר וגם קצת לומד ככה, וזה כנראה מחלחל לכל הכיוונים.
- אבל אני חושב שזה מראה באופן מאוד מאוד מובהק את אופי הלימוד שמשתנה עם הזמן, וזה פאן תרבותי מעניין אחד שנחשף שם.
- עוד משהו מעניין זה Frontend Framework שנקרא Svelte, שלמעשה הגיע בכמה שנים האחרונות - אני לא זוכר בדיוק כמה זמן זה באוויר, או שנתיים-שלוש, אולי קצת יותר - למעשה זה ניהיה ה-Framework האהוב ביותר ע”י מפתחי Frontend, לפי הסקר הזה.
- אני חייב להעיר, “בפריזמה היסטורית”, שכמעט תמיד ה-New kid on the Block הוא זה שתמיד הכי אוהבים, ואז אחרי כמה זמן מתחילים לשנוא אותו, ככה שבואו אולי לא נפתח יותר מדי תקוות לפני הזמן . . .
- אבל כן, יש פה New Kids on the block . . .
- (אלון) רגע, בוא נשים את זה ממש בפרופורציות - ה-Framework הזה, לפי הסקר שלהם - יש לו רק 2.75% שימוש . . . אז ה-2.75% האלה אוהבים אותו, באחוז גבוה . . .
- (רן) כן . . . נכון . . . אני זוכר, דרך אגב, שגם React היה בנקודה הזאת, אולי אחוזי השימוש היו יותר גבוהים אבל הוא היה ה-Framework האהוב ביותר, וככה זה.
- אבל בכל אופן - הוא [Svelte] תופס תאוצה, אז אני מניח שמי שבעולם ה-Frontend כבר מכיר את זה.
- (אלון) אגב, אני חושב שהדבר הכי מעניין בעולם ה-Frontend זה שלראשונה עקפו את jQuery . . . ש-React.js עקף את jQuery, וסוף סוף העפנו את הדבר הזה . . .
- אז אני רוצה להגיד פה תודה אישית לכל מפתחי ה-Frontend אי-שם שלא בחרו ב-jQuery - באמת, תודה, תקבלו תקליט וגלויה [וכובע גרב].
- (רן) כמו שאלון אמר - לראשונה אי פעם בהיסטוריה - ואתם שומעים את זה פה, בפעם הראשונה! - ה-Framework של React.js עקף את jQuery בפופלאריות שלו, מבחינת כמות התוכן וכמות השאלות ב-Stack Overflow, וכו’ . . .
- אז כן, הגיע הזמן, חבר’ה . . . אם מישהו ממאזיננו עדיין משתמש ב-jQuery, אתם מוזמנים להפסיק . . . או להאזין, או להשתמש - אבל מוזמנים להפסיק.
- אני חייב להגיד שאני התחלתי עוד לפני jQuery - למי שזוכר, היה Prototype.js . . . עוד לפני, אפילו יותר נוראי.
- בזמנו זה היה אולי Life-Saver, אבל כן - עם מה שיש לנו היום זה כבר באמת נראה משהו פרה-היסטורי.
- זהו, עד כאן . . . יש לי הרבה פריטים קלילים ומצחיקים, נשמור אותם לאחר כך - אז אליך, אלון.
אלון -
זה הגיע מהר מהצפוי . . . בסדר . . .
- אז קודם כל - אני רוצה להגיד שוב תודה לכל עובדי GitHub שמאזינים לנו ושמעו את האייטם האגדי שלי - עורך! אם אפשר לשים פה את הקטע שוב מהאייטם? נעשה הפסקה . . .
- [הקהל מתבקש לדמיין את הפתיח של מנהרת הזמן ולחזור ל - 410 Bumpers 73]
- “ . . . וזה האייטם האחרון שלי בהחלט, כי אחריו אי אפשר לעלות יותר גבוה: אני עושה פהDrop-Mic וזהו - זה הפרק האחרון, לא תראו אותי יותר, זה פרק אחרון - GitHub to VS Code:
- “
- וחזרנו [לקו הזמן הנוכחי, בערך]. . . .
- אז האייטם האגדי, על זה שאם ב-Repo מוסיפים “1s” בסוף אז מגיעים ל-vscode on-the-fly - אז GitHub, לאור ההתלהבות שיצרתי בעולם עם זה, החליטו להוסיף את זה - ועכשיו אפשר פשוט בכל Repo על dot [“.”] ומקבלים את ה-vscode built-in ואפשר לעבוד על זה
- אז אני מרגיש ממש חלק מה-Feature הזה, אני חייב להגיד לכם . . .
- אבל זה Feature מדהים, חסכו לנו לשנות את ה-URL, וזה גם עובד עם Private Repos . . .
- (רן) נתנו לך קרדיט ב-Release notes או לא?
- (אלון) אני מעדיף לא להיכנס פה ל . . . העו”ד אמר לא להגיב כרגע לשאלות כאלה
- [הוא עדיין עסוק בלנקות מאז הפרק 1 באפריל עם זהר והבאמפרס שאחרי?]
- (רן) אתה וזביידי באותה סירה?
- (אלון) רגע, תן קונטקסט, מה סתם? . . .
- ובוא נמשיך הלאה - אז בהמשך ל-vscode, אז לאור ההצלחה, GitHub הוציאו Cloud IDE [בשם codespaces]
- שזה כמו vscode - הרעיון הוא שלא צריך כלום, רק לשים על VM כמו . . . איך זה נקרא של AWS, ה-Editor שלהם? ברח לי השם . . .
- (רן) nine, משהו עם Nine . . .
- (אלון) A9 אני חושב . . .
- (דותן) לא, Cloud9 או משהו כזה . . .
- (אלון) Cloud9, נכון!
- זה גם חדשות . . . Brackets של Adobe נדמה לי שבוטל, בגלל שהם החליטו ללכת על vscode
- (אלון) בקיצור, אז עכשיו יש לנו New Kid in the Block, וזה בעצם -vscode in the Cloud, אז אפשר בלי מכונה . . .
- מה שמגניב זה שאפשר לקחת מחשב ממש חלש - ולקבל שם מחשב-מפלצת, עם איזה 32 ליבות, גזיליון Gb . . . להתקין שם מלא דברים ולהריץ סביבה, אז האמת שזה מעניין . . .
- (רן) אני רואה שיש שם אופציה או לעבוד על Desktop או ב-Browser . . . ב-Desktop הכוונה היא לחבר את ה-vscode שלך ל-Remote Container?
- (אלון) אתה אמור לעשות שם את ה-Run . . . לא ניסיתי את זה . . . כמו כל Cloud, אתה משלם פר-שימוש, אז כן - אתה אמור להריץ שם, אבל אתה יכול גם “בלי כלום”, לפתוח Chrome ולכתוב שם הכל עם כל ה-Plug-ins, שזה גם מעניין.
- (רן) מגניב לאללה
- (אלון) כן - אז אפשר לקנות עכשיו iPad-ים ולהתחיל לפתח מעל מערכות מורכבות . . .
- ונמשיך - זה היה על גבול המצחיקולים, אבל שמתי אותו פה: מישהו עשה, בתוך ה-Web, כי היינו עד עכשיו גם בתוך ה-Web - פשוט עשה MacOS בתוך ה-Web . . .
- זה נראה ממש MacOS, עם כל האפליקציות, ואפשר לפתוח שם, כביכול, vscode בפנים
- וזה מצחיק, כי זה פותח את ה vscode Web בתוך אפליקציית Web, ואנחנו קצת חיים בלופ עם עצמנו
- עכשיו - זה פרוייקט ממש חמוד, אז כל מי שאוהב את הפרויקטים שמנסים לעשות מערכת אחרת - אז זה ממש נראה כמו Mac, עשוי ממש טוב, וזה “חי בתוך ה-Web”.
- (דותן) קודם כל - זה עובד ממש מדהים . . . אנימציות סופר-טבעיות, ויש פה מלא Attention to Details, מלא . . . מדהים.
- (אלון) אני עדיין בשוק מזה שאני אשכרה משם פותח vscode, ואני אשכרה יכול להריץ . . . זה די הזוי.
- (רן) כן, אז חלק מהאפליקציות כבר פועלות וחלק עדיין לא, חלק הן Coming Soon - אבל מה שבאמת פועל זה באמת ממש יפה.
- (אלון) כן, אז זה פרויקט שעשו - מי שרוצה Calculator יכול להיכנס לזה, ללחוץ על Calculator ויש לו Calculator שם, על Mac . . . או כל מיני דברים אחרים.
- (רן) אז אתה יכול להתחבר מה-vscode של זה ל-Spaces ממקודם, ולפתח?
- (אלון) זה יכול להיות ניסיון מעניין . . . “ונפתח את זה!”, תוך כדי שאתה עובד בתוך זה . . .
- (רן) ולעשות Deploy . . . זה כמו לעשות Reboot ל-Server שאתה עושה אליו SSH . . .
- (דותן) אה, כל פעם שפותחים את זה, את ה-vscode, אז ה-ReadMe הוא של הפרויקט הזה . . . מה שכתוב פה זה שה-Framework זה Svelte, וכתוב earlier Preact, אז זה מסביר למה Svelte כזה פופלארי - כי זה React, בעצם . . .
- (רן) האקדח מהמערכה הראשונה . . .
- (דותן) כן, פיספסתי את השינוי הזה . . .סך הכל שינוי שם . . .
- (אלון) Preact בא אחרי React? או . . . .
- (דותן) לא - React . . . זה בא כדי לייצר React יותר Light-weight כזה . . .
- (אלון) כן - אבל הוא Pre-React . . . לא משנה . . .
- (רן) אם אומרים לך בפגישה “אלון, אתה צריך להיות יותר פרי-אקטיבי” . . . . מה זה אומר?
- (אלון) שאני עובר ל - Svelte . . . מה זאת אומרת?! אמרתי “אוקיי, קיבלתי את הפידבק, עוברים ל-Svelte . . . “
- (דותן) אבל לא - זה לא שינה שם . . . אוי, איזה מבלבל זה . . .
- (אלון) הפרויקט פעם היה . . .
- (דותן) קודם היה Preact, ואז הוא אומר שהחליפו ל-S . . .
- (רן) Svelte!
- (דותן) מוזר . . . .
- (רן) אז זוהו שני האחוזים ב-GitHub, בסקר ממקודם . . .
- (דותן) יכול להיות . . .
- (אלון) הוא - וכל הקהילה שסביבו שם . . . זה ה-2% . . . והוא אוהב את זה, הוא הצביע שהוא אוהב את זה, אנחנו כבר יודעים.
- נמשיך - פשוט חזרתי מדי פעם למשרדים, קצת, ויש אנשים שהטרמינל שלהם עדיין מצפצף מסתבר, ה-Bell . . . אז אמרתי שאולי יש אנשים שעדיין לא יודעים שאפשר לעשות לזה Mute . . .
- אז שמתי את זה - איך לעשות Mute ל-Bell ב-Terminal - למי שמכיר, לפעמים עושים את זה עם חץ למעלה או חץ למטה, אני כבר לא זוכר מתי הוא מצפצף
- (דותן) אני חושב שאנשים שיכולים לחיות עם ה-Bell הזה, יש להם מעלות . . . הם יכולים לסבול הכל.
- מי שלא שם לב לזה ופשוט חי עם זה, יכול לסבול הכל, לדעתי.
- (אלון) אני חושב שזה אותם אנשים שה-Slack שלהם עדיין עושה טיק-טיק . . . כאילו, הרי הדבר הראשון שאתה עושה ב-Slack זה Mute, נכון? . . .
- (דותן) אני מתחרפן מזה . . .
- (אלון) . . . נראה לי שיש חפיפה מלאה בין האנשים האלה . . .
- (רן) זה כמו התנייה פבלובלית - ברגע שאתה שומע את הפעמון אז אתה יודע שאתה הולך לקבל עונש . . .
- (אלון) כן . . . אז זה על Mac - מי שעדיין הפעמון שלו שם, אז בשקט בשקט, אל תגלו לאף אחד, ותעשו Mute לפעמון
- לא שנגלה שהוא דלק לכם, ונמשיך הלאה בחיינו . . .
- הדבר הבא - מצאתי אוצר! יש את הספרים של Google על Site Reliability Engineering - המפורסם שבהם זה The Site Reliability Workbook - ויש גם ספר של O'reilly על Building Secure & Reliable Systems
- אה, הראשון זה של O'reilly, אבל יש גם את השניים האחרים שהם מוכרים
- אז יש אותם Online - מלאים . . .
- אז מי שרוצה מוזמן לקרוא - אלו אחלה ספרים, מומלצים בחום, חינמיים, On-line-י, מלאים
- (רן) אני, דרך אגב, קראתי - או נראה לי ששמעתי אותם, בעצם - אמנם אין גרסא מוקלטת שלהם, אבל לקחתי תוכנה שממירה את ה-PDF . . .
- (אלון) יש Audible! . . .
- (רן) אה, יש כבר? אוקיי, אז כשאני האזנתי עוד לא היה [Audible? הם קיימים כבר לא מעט זמן, אחלה דבר . . . ]
- [תכל’ס, ה-Release date על זה הוא מאי 2021, אז זה כנראה די חדש…]
- זה נשמע קצת מוזר, בעיקר כשיש כל מיני נוסחאות - מדי פעם יש להם נוסחאות ל-Latency או דברים כאלה, אז זה נשמע קצת מוזר כשה-Reader מנסה להקריא את הנוסחאות, אבל חוץ מזה זה סבבה.
- [אז מתי Google מוציאים כזה עם Wil Wheaton? מה, רק לחטיבה של Waze מותר שטויות?]
- (אלון) אני זכיתי איתך באיזה כנס של Google פעם בספר, ומאז הוא אצלי על השולחן שוכב, מעלה אבק . . . סתם, לא קראתי אותו מאז - ושמעתי את ה[גרסת] Audible, בגלל זה אני יודע שיש Audible.
- אחלה ספרים - מומלץ בחום.
- האייטם הבא זה פרויקט שנקרא Airbyte - הוא נראה ממש חמוד, מאוד מתוחזק ויחסית צעיר, עושה רושם שהוא Data integration made simple, secure and extensible
- זה Open Source שנותן לעשות Dashboard שרואים לפחות מה קורה עם האפליקציות -
- מתי הן עשו Sync, ו-API ו-Data Warehouse, דברים כאלה
- זה נראה כזה Aggregator של מלא דברים, עם UI ממש חמוד . . .
- לא הבנתי לגמרי עדיין את מה הוא בא להחליף . . . אבל הוא נראה נוח, מבחינת הויזיביליות (Visibility) שלו.
- מבחינת שימוש וזה - לא ניסיתי . . .
- (דותן) ממה שאני קורא, זה נראה כמו Redash עם יכולות טרנספורמציה לדאטה . . .
- (אלון) זה יותר מזה, כי אתה מקבל סטטוסים של הדאטה שלך . . . זה קצת מזכיר את ה-Airflow, את המערכת וזיאליזציה שלהם . . .
- (דותן) אה . . . אוקיי, זה מסביר את השם אולי? Airbyte . . .
- (אלון) יכול להיות . . . אני חושב שזה . . .
- (דותן) אתה יכול להעביר Byte אחד, כאילו?
- (אלון) כן . . . אחד - זה לא סקלאבילי (Saleable). . . זה Byte-Byte, למה אתה ממהר?
- (דותן) כשאתה עושה New Project, אתה בעצם מקבל Byte אחד - ואת ה-Byte הזה אתה מעביר? אינטרגרציה של Byte . . .
- (אלון) Old-School, כן, Byte-Byte נעבוד . . .
- (דותן) כתוב כמה Bit-ים זה, ה-Byte הזה? . . .
- (אלון) אה . . . הם לא מפרסמים . . .
- (רן) גם לא אומרים אם זה אינדיאני גדול או קטן [Endianness] . . . אבל זה נראה כמו משהו שהוא, לפחות לפי הדוגמא שלהם, משהו שמפוקס על עולם הפרסום,
- זאת אומרת - אפשר לעשות סנכרון, נגיד בדוגמא שלהם, ל-Facebook Ad, ל-Salesforce או Hubspot ו-Linked Ads וכו’ - אז זה נשמע כאילו הוא מביא דאטה, שם את הכל באותו המקום - ואתה בעצם יכול לשלוט . . . יכול לעשות פה Monitoring ל-Workflow שלו.
- מה זה בא להחליף? האמת שאני לא מכיר שום כלי אחר שזה בא להחליף . . . כנראה איזושהי “סקריפטולוגיה” פנימית, לא ראיתי לפני כן כלי שעושה משהו כזה.
- (אלון) בקיצור - נראה לי חביב: נסו, ספרו איך היה. נהניתם? ספרו לחבריכם . . .
- (דותן) נראה לי שצריך לעשות פה איזושהי הסברה . . . רן, אמרת “אינדאני גדול או קטן” - אז סתם, כדי לא לפגוע באוכלוסיות מסויימות [שלא קראו את הטקסט וראו את ההפנייה . . . ] - זה Endianness, זאת אומרת “סופתי” . . .
- (אלון) תודה, על ההבהרה, דותן - אני בטוח שאף אחד לא הבין, פשוט, וזה היה ממש חשוב.
- [והעו”ד כבר די עסוק, אמרנו . . . ]
- טוב, אז הדבר הבא זה פרויקט שנקרא ה-Joker Language- זה בעצם interpreted dialect של Clojure שנכתב ב-Go . . . .
- אפשר להריץ פה ClojureScript בתוכו . . .
- אז לחובבי ז’אנר ה-Clojure - כן, כל אותם . . . מי זה? AppsFlyer? אז כל אותם אלה ב-AppsFlyer שמאזינים - נראה לי שזה בשבילכם . . .
- (רן) גם Nanit, בישראל, דרך אגב, יש עוד כמה . . .
- (אלון) יש עוד כמה? . . .
- (רן) כן - NET@ [?] מכירים? יש לנו בטח כמה מאזינים שם . . . . ויש בטח עוד כמה בפינלנד ובעוד כמה מקומות בעולם . . .
- אבל כן - אם תמיד חלמתם לכתוב Clojure ולתת ל-interpreter ב-Go להריץ את זה - אז זו ההזדמנות שלכם . . . לכו ל-Joker.
- [לא זה]
- (אלון) כן, זה מגניב.
- ולנושא שהחלטתי להוסיף פה לפני . . . בקרדיטים, Undocumented מה שנקרא - יש משהו שנקרא Reflect.app, לכל מי שאוהב Nodes או עדיין תקוע עם איזה Evernote או איזשהו משהו ארכאי כזה.
- אז אפשר לנסות לעבוד עם Reflect.app - זה עושה גם mile-map ל-Note-ים, למי שאוהב לשמור Note-ים - אתם יכולים לנסות.
- (רן) בוא, אני אתן קצת רקע - לפני שהתחלנו את ההקלטה, כל אחד שאל “רגע, אז איך כל אחד שומר את ה-Notes לקראת הפרק הזה?”
- זאת אומרת - אנחנו אוספים את זה במשך משהו כמו חודש, לפעמים קצת יותר - אז איפה כל אחד שומר?
- אז דותן ב-Evernote, אני שם את זה ב-Paper ואלון, במה אתה?
- (אלון) ב-Keep . . .
- (רן) ב-Keep . . . ואז התחלנו להעלות כל מיני אופציות אחרות, ו-Reflect.app הייתה אחת מהאופציות באמת, שעלו.
- אז זה הקונטקסט של כל זה . . . .
- אז תודה אלון - ואליך דותן . . .
- (אלון) דותן בפינתנו “Rust-Rust וירקות אחרים” . . . .
- (דותן) לגמרי . . .
דותן -
- האייטם הראשון נקרא rust-tui-template - כש-TUI זה Textual UI
- מה שנקרא - אי אפשר להוציא את ה-BBS-ים ממני . . .
- זה UI שנמצא בתוך ה-Terminal, בדרך כלל הוא עם מסגרות כאלה נחמדות ולא טקסטואלי לגמרי, אבל מכיל כל מיני אלמנטים של ASCII ו-ANSI, מה שנקרא “של פעם”.
- והפרויקט הזה - לכל מי שרוצה לבנות App כזה מגניב, אז הוא פשוט איזשהו Boilerplate מדהים, שסוגר את כל הפינות.
- זאת אומרת שכשמתחילים פרויקט עם זה, מקבלים . . . בעצם כל קובץ והמטרה שלו
- למשל - קובץ שאחראי על ה-Widget-ים של ה-UI, קובץ שאחראי על ה-Data וה-Handler של ה-Keyboard
- בעצם, כשבונים אפליקציה כזאת - אפליקציה ל-Terminal - יש הרבה “צנרת” שצריכה לקרות . . . יותר מה-Browser ויותר מכל דבר אחר, וה-Template הזה די סוגר את זה.
- אז למי שרוצה ללמוד Rust - לדעתי זו הדרך הכי טובה: לחשוב על איזשהו רעיון, איזושהי אפליקציה של Productivity, לסגור איזושהי פינה
- נגיד “לקחת Notes” ,שדיברנו על זה מקודם
- וזה ממש נחיתה רכה לתוך זה.
- האייטם הבא, למי שרוצה לראות לאן אפשר להגיע - יש פה מישהו שבנה פרויקט שנקרא gobang
- זה לא כתוב ב-Go . . . זה כתוב ב-Rust
- (אלון) כמעט הפלת אותי . . .
- (דותן) זה בעצם Database Management Browser כזה . . . כמו כל כלי שמתמשים בו כדי לעשות Queries לתוך Database-ים כדי לראות מה קורה ולצפות בתוצאות.
- והכל מבוסס Text-UI - לא Command Line אלא Text-UI - נפתח חלון, כמו VIM כזה, ומנווטים בו בתוך העולם הזה . . .
- נראה ממש טוב, עובד כמובן מאוד מהר, תומך ב-MySQL וב-PostgreSQL . . .
- בעצם אפשר להסתכל ולחפור פנימה ולראות איך זה בנוי - תוך כדי שאתם בונים את מה שאתם רוצים.
- (אלון) עצה שלי - שים לזה רק Read-Only Connection, כי זה ב-Alpha . . .
- (דותן) כן, זה Read-Only . . .
- (אלון) . . . לך תדע אם ה-Delete פה . . . אם יש איך להריץ דברים ,שלא יהרוג אותו.
- (דותן) נכון - כמובן שבכל הדברים האלה צריך . . . לא להתחבר ל-Production עם הדבר הזה . . .
- (אלון) ... אלא אם כן זה Mongo, ואז זה לא משנה
- (דותן) כן, Read, Write, זה לא באמת חשוב . . . .
- (אלון) לא עקרוני . . .
- (דותן) אז האייטם הבא הוא גם בקו הזה של UI - אז יש פרויקט שנקרא Druid -
- לא ה-druid של ה-Data אלא UI
- ב-Title, זה Data-first Rust-native UI toolkit - או במילים אחרות: סוג של מימוש React-י, עם תחושה של React, בתוך Rust
- כשמדברים על UI, אז זה על אפליקציות Desktop, בעצם.
- (אלון) במקור - אתה צריך לספר את ההיסטוריה - זה נולד כמכשיר עינויים . . .
- (דותן) למה?
- (אלון) מי רוצה לכתוב ב-Rust את ה-UI?
- (דותן) קודם כל - אם אתה רוצה לכתוב אפליקציית UI שהיא Cross-Platform, מה אתה עושה היום?
- (אלון) Web . . .
- (דותן) ואם אתה לא רוצה Web, אתה רוצה Native - מה אתה עושה? אולי Electron או משהו כזה . . .
- (אלון) כן, Electron. . . למה? זה נראה לי סיוט . . .
- (דותן) תלוי בדרישות . . . למשל - יש הפצת Linux שאני מאוד אוהב שנקראית elementary, וזה נראה ממש, נקרא לזה “כמו-Mac” - אבל זה מדהים, לדעתי זה Linux כמו ש-Linux היה צריך להיראות.
- ושם בונים Native-UI Apps - וכמובן שכשאתה בונה הפצה של מערכת הפעלה, אתה לא יכול באמת לארוז הכל ב-Electron - אפליקציה של מחשבון שתיקח לך 150Mb ותגמור לך את ה-CPU והזיכרון.
- [ב- Microsoft Teams זה לגיטימי . . . .]
- אז שם הם עושים את זה עם Vala - ו-Vala זה איזשהו “שיקוץ” כזה, זה #C מעל GTK, וזה כזה משהו שתמיד הרגיש כאילו נעשה בשביל ”לסגור פינה” - אבל כל מערכת ההפעלה בנויה בזה, והיא עובדת מדהים.
- אז נגיד לדבר כזה זה מאוד שימושי . . .
- אז זהו - זה Druid, והיום ה-Reference Implementation של UI Apps, מסתבר, זה לממש Spotify Client . . .
- אז בעצם הוספתי לינק למישהו שעבד עם Druid ופיתח פרויקט שנקרא psst - כמו שעושים למישהו “פססט” כזה, לחתולים . . . וזה בעצם Spotify client ממומש Native-לי, בלי Electron, רק עם Rust
- בעצם מקבלים, אני משער - האמת שאפשר גם לא לשער . . . לא, אין Releases - אז אני משער שזו תיהיה אפליקציה ששוקלת 4-5Mb, משהו כזה.
- זהו, אז בעצם . . .
- (אלון) עם “UI בשקל”, בסדר . . .
- (דותן) למה? ה-UI נראה טוב . . . כאילו, אתה יכול להסתכל על ה-Screenshot-ים, הוא נראה סבבה . . .
- (אלון) כן, נו - אבל אחרי זה . . . לא יודע, אני חושב שאלא אם כן אתה באמת חייב את זה, לברוח . . .
- (דותן) אין ספק שהקריטריון הוא שאתה חייב את זה . . . יש המון אופציות לא לבנות Native - אבל אם אתה חייב את זה, אז בעצם מה האפשרויות? האפשרויות הן - אם אתה רוצה Cross-Platform . . .
- נגיד, Linux יתפוס לך הרבה מאוד נפח, אז זה GTK, ו-GTK זה חתיכת סיוט . . .
- אז כן, אם אתה חייב, במקרים שאתה חייב - אני חושב שאין הרבה פתרונות טובים ל-Cross-Platform וזה יכול להיות פתרון טוב.
- הקטיגוריה הבאה של Rust שאני מתעניין בה זה משחקים - אז יש Platformers ויש כל מיני Indi-Frameworks לפיתוח משחקים, כש-Unity היום, במיוחד בתחרויות פיתוח משחקים, הוא השולט, ותמיד אני מחפש את ה . . . אני יודע של-Rust יש Sweet-spot של Performance ו-Productivity ותמיד אני מחפש לראות איך עולם ה-Indi-Games או חבר’ה שבאים ו . . . שהם לא סטודיו מטורף, ומשתמשים ב-Rust כדי לנצל את המעלות שלו כדי לפתח משחקים - וזה מתחיל לקרות.
- אז יש כזה משחק שנקרא Fish Fight, שבעצם עשו לו Open-Source - הוא לא היה בתקופה מסויימת, והפך להיות Open-Source.
- זה איזשהו Tactical 2D shooter מצחיק כזה, עם דגים שנלחמים אחד בשני - ממש מגניב, לא עלוב בכלל אלא להיפך, זה כזה . . . יש לזה “פקטור מגניבות” כזה.
- וזה משתמש ב-Framework ב-Rust שנקרא Macroquad - שעברתי עליו ובדקתי אותו ונראה ממש ממש טוב, לפיתוח משחקים Indi
- בנוסף, יש המון Learning Materials בתוך המשחק הזה, כולל Tutorial של איך לבנות משחק וכולל איזושהו Mini-Setup ל-Platformer.
- אז ככה, לתקופת החגים הקרובה - למי שיש לו זמן ורוצה לצלול ולפתח משחק - שזה לדעתי אחד הדברים הכי כיפיים לעשות - אז זו אחלה נקודה להתחיל בה. זהו . . .
- האייטם הבא נקרא Rustacean Principles . . .
- עכשיו, לכל קהילה יש איזושהי נקודה - אני זוכר את זה במיוחד מאיך שקהילת ה-Ruby התפתחה - יש נקודה שמתחילים לזהות “אופי של קהילה”, וכמובן שהאופי הזה נובע… אם הקהילה היא סביב שפה אז הוא נובע מאיך שהשפה בנויה ומה שהיא דורשת מהמשתתפים בקהילה.
- אז יש את Niko Matsakis - אחד הכוכבים בקהילה הזו [הפנייה ל-ציטוטים מומצאים של הגשש?]
- והוא החליט להסתכל ולעשות איזושהי אובסרבציה (Observation) ולהביא כמה עקרונות שמלווים אנשים שבונים ב-Rust, וגם את הקהילה עצמה.
- אני אתן כמה דוגמאות - לא יודע אם כולם ממש תואמים, אבל נגיד:
- למשל - ”Reliable: “if it compiles, it works - וזה נכון
- או “Performant: “idiomatic code runs efficiently - זה גם נכון . . .
- קהילה שהיא Supportive - שזה נכון בצורה . . . לא כמו קהילת ה-Ruby, אבל זה די נכון
- וגם Productive ו- Transparent ו- Versatile
- אז כל הדברים האלה - אני יכול להעיד לפחות שהם נכונים.
- בעצם זה מוביל אותי לאייטם, שאני דווקא אתן דוגמא . . . הוא גם משמש כדוגמא לדברים האלה.
- אז יש חבילה בשם polars - וזה נראה לי שרן יאהב - וזה בעצם Blazingly fast DataFrames in Rust & Python
- אז בעצם לקחו DataFrames, מימשו חלק מהפעולות - או “חתיכה מהעולם” - ב-Rust - ועשו Binding ל-Python
- ובעצם, אם נסתכל על ה-Benchmark-ים, שזה החלק החשוב בדבר הזה - המימוש ב-Rust הגיע, כמעט תמיד, למקום השני בכל ה-Benchmark-ים, מקום שני-שלישי.
- אם מסתכלים בקוד - ואני עברתי על הקוד - אין שום דבר שנכתב ב-Rust שנראה Specialized . . .
- אין Hack-ים, אין טריקים - כל האימפלמנטציה (Implementation) “נאיבית”.
- יש שם Generics, יש שם איטרציות (Iterations) מעל Collection-ים מאוד מאוד High-level . . . יש Temporary variables והמון אבסטרקציות (Abstractions)
- וכל הדבר הזה לא משפיע בכלום על ה-Performance . . .
- (רן) אני חושב שהסתכלתי על זה בעבר - זה נחמד, כאילו, הזריזות של זה זה נחמד
- חסרה הפונקציונאליות הגדולה שיש ב-pandas . . .
- (דותן) כן, זה לא מחליף את pandas, זה לא מחליף . . . זה נותן חתיכה מהסיפור . . .
- (רן) כן - אבל אם זה יגדל, זה יכול להיות תחליף טוב ל-pandas, אני מסכים.
- (דותן) כן, אז כאילו מה שאני מנסה להעביר זה שכשראיתי את הפרויקט הזה, הדבר הראשון שעשיתי זה לצלול ולהבין האם יש Hack-ים
- כל מיני Hack-ים של Performance, כל מיני טריקים כדי לממש דברים בצורה יותר חכמה ויותר מהירה - ואין . . .
- כלומר - הכל קוד “Vanilla” של Rust שאפשר לקרוא בצורה “הומאנית”, וזה אחד הדברים המעניינים.
- (רן) כן, ונגיד שגם דברים שקיימים ב-pandas - כשהם רצים מהר, אז זה רץ ב-++C . . . זה אומרת או שזה Alpine מתחת, או שזה מימושי ++C ספציפיים
- אבל שום דבר לא רץ מהר ככה ב-Python . . .
- אז פה בעצם אולי הם הצליחו לייצר משהו שהוא ב-Rust ויותר מהיר מ- ++C, אבל זה לא משהו שהוא אינרנטי (Inherent) . . .
- אולי זה מימוש יותר אלגנטי, אולי זה מימוש של איזשהו Subset של פונקציונאליות . . .
- (דותן) כן, צריך לזכור שמה שמקבלים בחינם, בניגוד ל-++C, זה Safety ו-Memory leaks - שאין - ובאגים טיפוסיים שמן מהסתם שייכים לעולם הזה של C ו-++C
- וקוד שהוא קריא-בטירוף, הייתי קורא לזה . . . מדהים.
- (רן) קראת ל-++C “לא קריא” ברגע זה?!
- (דותן) כן.
- לא קריא - וגם הופך אותך ללא-שפוי לאורך זמן . . .
- (רן) “לא שפוי” זה עניין יחסי . . . בסדר. אין בעיה, לא נפתח פה חזית . . . הלאה.
- (דותן) הוספתי אייטם ל-Fast Rust Builds, כי ידעתי שאלון יקפוץ מיד עם ה-Build-ים האיטיים ב-Rust, כדי לסגור את הפינה ומראש להנחית מהלומה . . .
- (אלון) להרגיע לפני שזה גדל, אתה אומר . . .
- (דותן) לגמרי.
- (רן) מכיר את הבדיחה על הקומקום?
- (דותן) לא . . .
- (רן) ילד ואבא יושבים, ופתאום הקומקום על הכיריים - פעם היו קומקומים על הכיריים, שהיו שורקים ברגע שהם היו רותחים, כי היה להם מעיין פקק כזה, לפני הקומקומים החשמליים . . . - אז ברגע שהקומקום שורק, האבא רץ ונותן לו מכה ככה, עם מחבט.
- אז הילד שואל אותו “מה קרה? למה אתה ככה נותן מכה לקומקום?”
- שכחתי לציין לפני כן שהאבא נפגע בתאונת רכבת . . . ננסה שוב . . .
- (אלון) האמא בתאונת רכבת . . .
- (רן) אז האבא אומר “צריך להרוג אותם כשהם עוד קטנים”.
- (דותן) הרסת את הבדיחה, באמת . . .
- (אלון) הרכבת הייתה עושה “טו-טו” ו . . .
- (דותן) האמת . . . העורך יכול לתקן את זה? אחלה אתגר . . .
- [אה . . . ]
- (רן) אני רק אציין שאני העורך ברגעים אלו . . .
- (דותן) בסדר, עדיין אפשר לקרוא לך “העורך” . . .
- (רן) כן, “בכובע העורך”
- (אלון) וואו . . . קודם כל, זה טוב לדעת שאתה עורך . . . תראה, אם אתה רק הופך את הסדר של הבדיחה שתיהיה בסדר בעריכה, אז היא תיהיה בינונית . . .
- (רן) אני חושב שיעריכו אותנטיות פה . . . נשאיר את זה As-is . . .
- אבל כמה יותר מהר? בוא נחזור רגע - “Build-ים יותר מהירים” - כמה? מה?
- (דותן) אז הוא מסכם את המאמר עם משהו שאני מסכים איתו - Build של Rust עם בערך 200,000 שורות קוד, עם אופטימיזציות אגרסיביות . . .
- ב-Rust יש סרגל שלם של אופטימיזציות שאפשר להפעיל
- צריך לקחת בסביבות העשר דקות.
- שזה נשמע הרבה, אבל אתה . . .
- (רן) ולפני זה כמה היה?
- (דותן) אז הוא לא לקח . . . הוא לא עשה Use Case של “לפני ואחרי”, זה לא ממש מאמר שאתה מסתכל עליו ואומר “אוקיי, הנה הבעיה ו . . .”
- הוא פשוט נותן כמה טריקים ידועים לקהילה
- הרוב זה Caching ו-Caching חכם - ולמה Caching ו-Caching חכם? כי Rust בעצם מאוד קרוב ל- C ו-++C במובן הזה, ספריות שנבנות הן ספריות שהופכות להיות סוג של Binary Libraries.
- ואם . . מה זה “אם?” הספריות האלה לא משתנות . . . אז בעצם אתה רוצה לעשות Caching של האוביקטים האלה כבינאריים, ואז אתה בעצם מקבל את זה “חינם” . . .
- אז יש עולם שלם של Build Cache, שהוא זהה כמעט לגמרי אם אתה בא מ-++C וכאלה - אז זה אחד
- ושתיים - כל הקומפילציה (Compiling) של מפתחים, אנחנו עושים . . . .אני חושב שנגיד גם ב-Java זה קיים, וב-Kotlin - יש Incremental Builds: אתה בעצם עושה Build רק של מה שהשתנה
- וב-CI זה לא רלוונטי, אז אתה עושה Disable לכל המנגנון הזה ואז זה מאיץ לך את ה-Build בסוף . . .
- כל מיני טריקים כאלה
- הוא נותן שם כמה מספרים . . . אני יכול להגיד לך שאני הייתי על Build-ים של חצי שעה, ואז הקטנתי אותם לסדר גודל כזה של עשר דקות.
- (אלון) העיקר צחקת עלי, שאני אמרתי “מה? לא יכולת להגיד “חצי שעה זה סבבה! אתה יודע כמה קפה אני יכול לשתות בחצי שעה?””
- (דותן) תלוי ,יש תקופות שאתה רוצה שה-Build יקח חצי שעה, אבל כן . . .
- אז בקיצור - אייטם הבא: אז לקחתי פה איזשהו סיפור בהמשכים של חברה בשם CROWDSTRIKE
- זו חברת סייבר די גדולה, פומבית (Public), נאסד”ק וכאלה . . . די מפורסמת גם.
- והם מספרים סיפור שככה יצא לי לחוות אותו אחד-לאחד - והוא איך בעצם לוקחים את עולם ה-Machine Learning של Python ומחברים אותו עם Rust,
- כאשר ה-Python עושה את ה-Training ו-Rust עושה את הפרדיקציה (Prediction),
- כדי לקבל את הפרדיקציה - וזה גם מה שאני חוויתי - לקבל פרדיקציה יותר מהירה.
- אז הם עשו את זה בשני חלקים, והם מראים פה בעצם נתונים מדהימים -
- מתחילים בעצם ב-Background ו”למה?” - איזשהו Assessment כזה של שני פרויקטים שלהם -
- אחד נקרא “Dark Knight” - יש להם שמות מגניבים לפרויקטים - והשני נקרא “Airen”
- אחד בעצם מבוסס TensorFlow ו-Python ו- ++C וכל מיני שטויות
- והשני בעצם מבוסס Rust ו-Python
- ומראים תוצאות מדהימות, זה המאמר הראשון - אז נתחיל עם התוצאה, מראים כאן מספרים
- לדוגמא 2.98 לעומת 0.16 ב-Rust . . . לדעתי זה ב-milliSeconds, כן זה milliSeconds
- אז זה Mind-boggling, ההבדלים האלה - וכשזה חשוב לך לקבל את הפרדיקציה במהירות, אז זה מאוד מאוד משמעותי
- מה שהם מדברים על Use-Case-ים, אז יש להם טכנולוגיה אחת לזהות URL-ים “חשודים”, ועוד אחת לזהות שינויי קבצים
- ושתי הטכנולוגיות האלה מבוססות על Machine Learning ו-TensorFlow - וחשוב להם מאוד ה-Real-time-יות של זה . . . ולכן הם התחילו לבחון פתרונות אחרים.
- אז בחלק השני הם בעצם פורטים את “המכניקה” של מה שהם עשו, שזה דבר יחסית-סטנדרטי -
- הם בעצם לקחו חלקים מ-Python והיו חייבים לשכתב אותם ב-Rust, את כל העניין של הפרדיקציה
- והם מסבירים למה זה היה שווה להם
- אני יכול להגיד שעברתי בדיוק את אותו תהליך אצלנו, לפני משהו כמו שנה, וזה פשוט . . הפירות של זה הם ממש עד היום.
- זהו - זה למי שמתעניין על איך להאיץ את ה . . . או שצריך פרדיקציה מהירה.
- (רן) אבל הם גם עושים את זה ע”י tf.function?
- זאת אומרת, בגדול, כשאתה עושה את זה דרך TensorFlow, אתה יכול לכתוב קוד Python-י ולשים איזשהו Decorator של tf.function - ואז זה מייצר Predictor מהיר
- השאלה אם הויזיבליות הזאת גם קיימת פה, או שהם צריכים לכתוב . . .
- (דותן) הם כתבו חלק מהדברים האלה מחדש . . .
- (רן) כן . . . אז פה, כאילו, “זה לא חוכמה”, באיזשהו מובן - כי הם כתבו משהו שהוא ממש Dedicated ל-Use Case שלהם, לא משהו שהוא גנרי
- זאת אומרת שאם הם אח”כ ירצו לשנות את המבנה, אני מניח, או לשנות משהו אחר - אז הם יצטרכו לכתוב משהו שהוא Dedicated שוב ב-Rust
- אז זה קצת כאילו להשוות תפוחים לתפוזים, באיזשהו מובן
- אז כן - אם אתה כותב משהו שהוא מאוד Dedicated, אז תוכל להשיג משהו יותר מהיר . . . דרך אגב, יכול להיות שאם היו כותבים בדיוק את אותו הדבר ב-++C ישירות מה-TensorFlow, הם גם היו מקבלים ביצועים כאלה . . .
- (דותן) אני חושב שפשוט . . . קודם כל, כשנכנסים לפרטים, אז יש פה המרה של מודל
- אני הלכתי דרך כמה . . . “ביקרתי בכמה תחנות”, וכשהבנתי שאת הפרדיקציה בחרתי לעשות עם XGBoost
- והסיפור האישי שלי הוא שמימשתי - למרות שה-XGBoost כתוב ++C - מימשתי את זה מאפס ב-Rust, את החלק של הפרדיקציה.
- וקיבלתי פרדיקציה יותר מדוייקת - וגם יותר מהירה.
- אז כאילו באופן מסויים הנתיב הזה הוא . . . אתה חושב שאתה כאילו לוקח קוד, כשאתה מתחיל - אתה חושב שאתה לוקח קוד שאנשים עבדו עליו ועשו אופטימיזציות משוגעות וכו’
- אתה כותב אותו פשוט ב-Rust על הניסיון הראשון - ובריצה הראשונה אתה פשוט מקבל משהו שעובד יותר מהר . . . וזו החווייה.
- (רן) לא התכוונתי, דרך אגב, שעשו אופטימיזציות ב-++C - אני מתכוון שיש יותר יוזביליות (Usability)
- אתה יכול . . . יש יותר ורסטיליות (Versatility), שאתה יכול לעשות יותר דברים.
- פה אולי הם תפרו ל-Use Case ספציפי שלהם וזה עושה בדיוק את מה שהם צריכים ועושה את זה יותר מהר
- אבל היתרון בגרסא המקורית זה שאתה יכול לעשות, אתה יודע - אתה יכול לכתוב איזו פונקציה גנרית, איזושהי רשת גנרית ב-Python, לקמפל אותה ל-++C עם tf.function - ויש לך משהו חדש.
- בזמן ש . . .זאת אומרת, אתה לא צריך לכתוב את זה מחדש ב-Rust
- אבל ברור לי לגמרי שאם יש להם משהו שהוא כבר Stable, הם כבר יודעים מה הם רוצים . . .
- (דותן) נכון, לגמרי, זה תמיד . . הניסיון השני והשלישי זה תמיד יותר טוב . . . .
- (אלון) זה כמו Framework גנרי לפתור בעיה ספציפית . . . בשביל לפתור בעיה ספציפית אתה תעשה את האופטימיזציה הנכונה
- אבל הקונספט מעניין, אני חושב - ברמת ה”לקחת את זה למאקרו” זה בעייתי להגיד “בוא נזרוק TensorFlow ונעבוד עם Rust
- אבל אני חושב . . .
- (דותן) הם לא זורקים . . .
- (אלון) לא . . .
- (דותן) הם פשוט מימשו את החלק של הפרדיקציה בצורה, נקרא לזה “פרטנית”, או “Custom להם”
- (אלון) שוב, יכול להיות שאתה יודע . . . טוב, בקיצור, כרגיל, כל מקרה לגופו . . . . אם שווה לך להשקיע בזה או לא.
- (דותן) הייתי שמח אם הם פותחים את הקוד של זה, אבל לא נראה שזה קרה . . . אבל לך תדע.
- אני, בכל אופן, אמשיך לעקוב אחרי זה.
- (אלון) שמע, זה חברת סייבר- חכה שמישהו יפרוץ להם ויוציא את הקוד . . .
- (דותן) טוב . . . נמשיך לכמה אייטמים אחרונים . . .
- (רן) יש ל משהו על Rust להיום?
- (דותן) כן, אז אני אשנה נושא . . . האייטמים האחרונים יהיו על Rust.
- אז הוספתי עוד לינק בשביל אלון - זה נקרא Cheap tricks for high-performance Rust
- אז הדף הוא ריק - כי לא צריך טריקים כאלה . . . סתם, יש שם כמה דברים.
- (אלון) למה רשום בשורה הראשונה “Write in Go”?
- (דותן) בקיצור, יש שם דברים מאוד מועטים ומאוד שטחיים - כי לא באמת צריך . . . סתם כמה פרמטרים, אין יותר מדי.
- את האמת, לא בצחוק: אין פה שום דבר שאומר לך איך לכתוב קוד - אני רק שם לב לזה עכשיו - איך לכתוב את הקוד שלך ב-Rust אחרת כדי שיהיה יותר [מוטה-] Performance.
- כל מה שיש פה זה Build flags למיניהם . . . שזה מעניין.
- (אלון) כי הם עדיין לא הצליחו להריץ את בקוד, אז הם מקמפלים (Compiling)?
- (דותן) יכול להיות . . . סבבה.
- אייטם אחרון - ונקנח דווקא עם Rust: זה נקרא Miri
- זה פרויקט שעבדו עליו הרבה זמן, התחיל כפרויקט אקספירמנטלי (Experimental) לגמרי בעולם של שפות תכנות
- הניסיון היה לקחת . . . הרי Rust מתקמפל (Compile) לאיזשהו “ייצוג ביניים” - Intermediate interpretation, איזשהו IR -
- ואז את הייצוג ביניים הזה, שאפשר לחשוב על זה כעל “Assembler-מתוחכם-High-Level” - הדבר הזה מתקמפל ל-Machine-Code ע”י מנגנון אחר.
- אז בעצם הרעיון שהיה ב-Rust, שהוא רעיון יוצא דופן - לקחת רק את הקוד IR הזה ולהריץ אותו ב-Run-Time, כמו Interpreter - כשהמטרה בסוף היא שיהיה פרויקט - במקרה הזה Miri - שיודע “לקרוא החוצה את החתיכות לוגיקה” האלה ולמצוא בהן כל מיני בעיות לוגיות.
- למצוא אופטימיזציות, למצוא באגים למיניהם - כל מיני דברים כאלה.
- אז הדבר הזה כבר “עלה כיתה” - הוא כבר רץ על כל מיני ספריות ב-Rust ומצא באגים אמיתיים
- זאת אומרת - יש טסטים, יש הכל, זה ספריות Open-Source גם . . .
- אבל באגים שבסוף, אין מה לעשות - זה טעויות של מפתחים, ובסופו של דבר יש באגים . . .
- אז זה מצא לא מעט באגים בצורה אוטומטית בספריות מאוד פופולאריות - וגם בספריות Core של השפה.
- אז אני חושב שאולי Valgrind וכל המשפחות האלה של ה-Tool-ים - בגישה זה זהה.
- בטכניקה זה שונה.
אז יש לנו סדרה של קטעים קצת יותר הומוריסטים - המצחיקולים שלנו [יש מצב שכבר שווה פתיח נפרד : - ) . . . ]
אז נתחיל:
- הלינק הראשון נתרם ע”י מאזיננו ערן - תודה ערן!
- הלינק הראשון נקרא How-I-experience-Web-Today.com -
- וכשאתם לוחצים עליו אתם בעצם מקבלים איזושהי חוויה שכנראה ראיתם אותה בעבר, שבה אתם למעשה, נניח, עושים איזשהו חיפוש ב-Google ומקבלים איזשהו לינק לאתר, לוחצים על האתר -
- והדבר הראשון שאתם רואים למטה זה Cookie Privacy Statement, שאתם צריכים לעשות Accept, נגיד . . .
- אז נניח שעשיתם Accept - קופץ לכם Pop-up מלמעלה: של “האם אפשר לשלוח נוטיפיקציות (Notifications)?” . . . . נגיד “לא” . . .
- אתם אומרים No Thanks, תודה . . . ואז קופצת עוד Pop-up: “אני רוצה להראות לך נוטיפיקציות!” - ושוב אתה אומר “לא!”
- ואז קופץ עוד Pop-up - “תעשה לי בבקשה Subscribe ל-Newsletter!”
- אתם לוחצים “No Thanks” - ואז אתם מגלים ש-”!Ad-block detected”, ואתם עושים “OK” . . .
- בקיצור - שורה של Pop-Ups על Pop-Ups על Pop-Ups . . . . ככה פחות או יותר נראים הרבה מאוד אתרים היום באינטרנט, למרבה העצב.
- וגם כשאתם רוצים לעזוב - אז קופץ לכם Pop-up “האם אתם באמת רוצים לעזוב את האתר הזה?!” . . . שזה טריק ידוע וישן שמשוחזר פה.
- אז כן - קצת רטרוספקטיבה על איך נראה האינטרנט נכון להיום, רטרוספקטיבה אולי קצת עצובה אבל אני חושב שמשקפת נאמנה הרבה מהאתרים של היום . . .
- האייטם הבא שבחרתי להציג - האמת היא שהוא לא חדש, אבל הרבה זמן לא עשינו Bumpers וזה לא הוצג פה [היה לינק באחד הרפרנסים למיטבי לכת …] - זה סרטון נחמד שצילמו אצלי בחברה ב-AppsFlyer, שנקרא “אז שכרנו הד האנטר. פחות הצליח” . . .
- סרטון הומוריסטי - אני מזמין אתכם לבוא ולראות אותו.
- כנראה שכבר ראיתם - אבל אם לא אז לכו תראו: חמש דקות של כיף, של צחוק על קהילת ההיי-טק, קהילת פיתוח התוכנה בישראל.
- על איך נראה הד-האנטר של פעם בעולם של היום.
- לכו תראו - נחמד, ב-YouTube, ב-Facebook, בכל מקום שתרצו - אני אשים כמובן את הקישור.
- (דותן) זה נראה לי שזה ה-Head Hunter של העתיד . . .
- (רן) של העתיד?
- (דותן) נראה לי שזה יגיע לשם בסוף . . .
- (רן) כן . . . בקיצור - משעשע, גם למי שלא ב . .
- (אלון) יש חברות שכבר שם . . .
- (רן) גם מי שדרך אגב . . . . גם אשתי ראתה וגם הילדות שלי ראו - ואת כולם זה הצחיק, זאת אומרת שיש פה הומור שמדבר לכל גיל ולכל מקצוע.
- עשוי היטב, הפקה יפה - לכו תראו.
- אייטם הבא - טוויט נחמד, או ציטוט נחמד שמצאתי ב-Twitter, אני אקריא לכם:
- אז משעשע . . . זה נמצא ב-Twitter של CodeWisdom@, זה שם החשבון, CodeWisdom@ [זה ה-Handler, השם הוא Programming Wisdom], אז יש שם עוד כמה כאלה משעשעים . . .
- ונעבור לאייטם הבא ב-Twitter - גם הוא דרך איזשהו חשבון וירטואלי משעשע של מפתחים שנקרא I am Programmer, I have no life - והציטוט הבא מגיע [גם] משם:
- “
- When someone ask you what programming language they should learn, don’t simply answer the one you prefer.
- First - ask them what area they plan to focus on. For example:
- webfrontend: JavaScript
- backend: JavaScript
- mobile apps: JavaScript
- games: JavaScript
- ai: JavaScript
- ”
- אז אחד מה-Release notes - אתם יודעים, כל פעם שמשחררים אפליקציה ל-App-store, צריך לכתוב ככה Release Notes - אז Slack, באחד מה-Release Notes האחרונים שלהם, כתבו ככה: What’s New - מה חדש ב-release האחרון של Slack ל-AppStore - אז ככה הם כותבים:
- “
- וכו’ וכו’ -בקיצור: “לא היה לנו מה לכתוב, אז שיהיה לכם יום טוב - באהבה, ביי . . . .”
- אז כן - אז Release Notes משעשעים, לא תמיד צריך לכתוב את מספר הבאגים שתוקנו, אם אין לכם שום דבר מעניין . . .
- (דותן) אה - זה אמיתי! . . .
- (רן) זה אמיתי . . . לגמרי אמיתי, מלפני כמה שבועות [זה Slack 21.07.20] . . . נחמד
- חברה שהיא Corporate כבר לא קטן, באים וככה מכניסים איזשהו Easter egg כזה חמוד
- טוב - האייטם הבא, לדעתי נתרם ע”י אלון, נכון? שלחת לנו את זה פה ב-WhatsApp . . .
- (אלון) זה היה ע”י זהר [זהר!] - (רן) אה, אז תודה זהר!
- למעשה, אני לא יודע אם זו בדיחה או משהו אמיתי, אבל זה איזשהו מועמד לתפקיד, ששלח איזשהו תיאור של היכולות שלו, והוא כותב:
- לנציגי ה-HR בחברה, הוא כותב להם “הנה - זה מה שאני מציע בתור עובד”: עלות חודשית - כך-וכך $; שעות בשבוע - 40 שעות בשבוע; Emails per week - 400; קפה, או הפסקות קפה או תה - 3; Overtime - . . . “
- בקיצור - הוא נותן איזשהו Spec של של עצמו, והכותרת של זה היא EaaS, כלומר: Employee as a Service . . .
- אז זה מה שהוא מציע ב-Spec שלו . . .
- עכשיו, לא בטוח . . . אני לא לגמרי הבנתי עד כמה זה רציני או “בדיחתי” . . . כי יש פה איזשהו נופך של 1 באפריל, שזה יכול להיות גם וגם . . .
- בכל אופן - זה יותר משעשע, של Employee as a Service ואיזשהו Spec שלו, כמו Spec של instance ב-EC2 . . .
- (דותן) זו, דרך התשובה, להד-האנטרים של העתיד . . .
- (רן) לגמרי . . . הנה, סגרנו פה מעגל, טוב . . .
- והאייטם הבא, גם הוא הגיע אלינו מאיפשהו ב-Twitter, התפרסם בימים האחרונים ב-Twitter של מי-אם-לא דובר צה”ל . . . .
- אז למעשה דובר צה”ל, או IDF@, אולי אפילו לא הדובר [זה ה-Official IDF Twitter…], מפרסמים חתיכת קוד, שנראית ככה כמו ב-#C לדעתי, של קוד שאומר ככה:
- “
- if (Hamas.IsAttacking)
{
- if (Hammas.Attacks.Contains(“rockets”) && Hammas.Attacks.Contains(“arson balloons”) && Hammas.Attacks.Contains (“violent riots”))
{
- Terroism = true;
- RegionStability = false;
- Israel.Defend();
- “
- עכשיו נפרש . . . איך נפרש את הדבר הזה? . . .
- (דותן) קודם כל, הם היו צריכים לדאוג לזה, לפקטור “המפתח הציני” - שזה לא מתקמפל, ושזו השורה הראשונה בקובץ, וזה שאין פה בכלל פונקציה מעל זה, ושמות משתנים שמתחילים באות גדולה ומלא מלא בלגן קורה פה בקוד . . .
- (רן) אז בוא נסתכל על שני הצדדים - על החצי המלא והחצי הריק של הכוס:
- (1) - נחמד שניסו לתקשר לעולם בצורה של קוד, בצורה שהיא קצת גיקית
- אבל (2) - אם אתם רוצים להיות רציניים, בואו נעשה באמת - כמו שדותן אמר - משהו שבאמת נקרא, שגיקים מצליחים לקרוא, לקמפל להם בראש -
- ולא לקבל התקף חרדה של “אם אלה האנשים שכותבים ב-IDF, אז ככה נראה המצב . . . .”
- [מה שבר-זיק אמר . . . ]
- (דותן) אה, אתה אומר שזה משליך . . . לא חשבתי על זה . . .
- (רן) כן, אז Twitter היה מלא בתגובות של “חבר’ה, רבותיי - בואו, אולי כדי שלא נראה איך נראה הקוד שלנו, כדי שלא לעודד את החמאס או אחרים . . . “
- אז זה נחמד, ניסיון יפה - אבל מצד שני, מישהו היה צריך לעשות לזה Code Review לפני שזה פורסם ב-Twitter.
- (אלון) “שבר את הרשת”, כמו שאומרים . . .
- (רן) “שבר את הרשת” . . . בהחלט . . .
- ואלון - יש לך גם כמה אייטמים קטנים - בבקשה:
- כן - אז נמשיך עם Twitter: מישהו העלה תמונות, באמצעות נייר טואלט, כדי להסביר מה זה Non-Zero Value, 0, NULL ו-Undefined ב-JavaScript
- אז Non-Zero Value זה כשיש לך נייר טואלט, ואפס זה כשהגליל ריק - ו-NULL זה כשאין גליל . . .
- ו-Undefined זה כשאין גם מתקן לגליל . . . .
- זו ההגדרה - וזו תמונה חמודה ומשעשעת, זהו
- עוד משהו - יש את ה-Extension ל-Terminal שדיברנו עליו פעם, בשם .FIG
- (רן) התקנתי אותו, דרך אגב . . .
- (אלון) הוא מדהים . . . הוא מדהים
- (רן) קצת מעצבן אותי . . . קצת מעצבן - הוא נחמד ויפה והכל, אבל קצת מעצבן . . . כל הזמן קופץ, קצת מעיק לדעתי . . .
- (אלון) אמרתי שהוא מגניב - למה אתה הורס לי? כאילו, אני לא מבין - בנאדם בא ואומר “מגניב” ו . . .
- (רן) אבל אני עדיין משתמש, הוא יפה . . .
- (אלון) או - תודה! אני מבקש רן - תוריד את זה בעריכה, באמת [לא קרה . . . ]
- (רן) הוא מגניב, אמרתי כבר שהוא מגניב?
- (אלון) כן, אמרנו שהוא מגניב, יופי . . . אני לא מאמין, אתה סותר אותי מול הילדים! [אה?]
- בקיצור - אז לא משנה, יש שם . . .הם פרסמו . . . אפשר לעשות ב - ;brew install cmatrix $ - ואז להריץ cmatrix - והטרמינל ניהיה “כזה של “Matrix” [החדש?!]
- (דותן) זה היה . . . שמע, כשמטריקס היה “אין” [ב-1999…], אז היו מלא כאלה . . . אתם זוכרים? שומר מסך . . .
- (רן) חזר המטריקס!
- (אלון) . . . .עכשיו מטריקס שוב פעם “אין”!
- (דותן) נכון . . . . זה “גל גיקיות” כזה . . .
- (רן) זה הגל הרביעי . . .
- (אלון) בדיוק - אנחנו שוב במטריקס, בגל הרביעי - ולכן כל הדברים הגיקיים ששמרנו מפעם, אפשר להחזיר אותם . . .
- (דותן) אפשר להוציא אותם עוד פעם - פוסטר, הכל . . . זוכרים את הפוסטרים? שפעם היו . . .
- (רן) כן, היה פוסטר של ניאו על מטריצה, כן . . . [היה?!]
- (אלון) זהו, אין לי יותר מצחיקולים יותר ליום הזה . . .
- (רן) זהו? אז זה הכל, כן.
אז אנחנו ממש ככה לקראת סיום - אז לכו תשתשעו במטריקס, מקווה שתהנו מהסרט [יש לכם עוד להתאכזב מ-Dune השנה - אז בעדינות…] - ותודה רבה לכולם.
כאן אנחנו מסיימים - להתראות, תודה רבה.
האזנה נעימה ותודה רבה לעופר פורר על התמלול!
אין תגובות:
הוסף רשומת תגובה