התאריך היום הוא 1 ביוני 2021 - והיום כרגיל [ממתי זה חזר להיות רגיל?] רן, אלון ודותן באולפן הוירטואלי.
שלום אלון, שלום דותן - שלום, בוקר טוב . . .
נשמע חזק וצלול - אז באמפרס הם סדרה של קצרצרים שבהם אנחנו מספרים על דברים מעניינים שפגשנו ברחבי האינטרנט: בלוגים, GitHub-ים, כלים מעניינים שמצאנו וכו’.
רן -
- האייטם הפותח, שאני אתכבד להציג אותו, מרגש במיוחד - Call For Papers ל-Reversim Summit 2021 [!!!], שכנראה שברגע שאתם שומעים את הפרק הזה הוא כבר פתוח [דמיינו אפקטים של שמחה ומחיאות כפיים . . .]
- בזמן שאנחנו מקליטים את הפרק הזה אנחנו ממש כמה ימים לפני הפתיחה, ככל הנראה כאשר הפרק יפורסם זה כבר יהיה בתוכו, ה-Call For Papers [אכן]
- למי שלא מכיר את Reversim Summit -
- [קום וצא החוצה]
- [יש מלא וידאו]
- אז זהו אירוע קהילתי, כנס קהילתי שאנחנו עורכים מזה כ . . . מלא זמן, נראה לי איזה 8 שנים, החל מ-2013 למעשה.
- זה כנס שהלך וגדל עם הקהילה, נכון להיום הוא כבר מציג בפני אלף-ומשהו איש
- כנס של יומיים, עם מספר טראקים מקבילים
- אנחנו מתעסקים בכל מיני נושאים של פיתוח תוכנה ומוצר ו-UX וכו’, וגם לא מעט דברים שמסביב - קוד פתוח, תרבות פיתוח או דברים בסגנון הזה.
- אז ה-Call For Papers פתוח לכולם - מוזמנים כולם להגיש.
- אחרי ההגשה יש כמובן איזשהו תהליך של Review וקבלה
- נשמח אם תבואו ותגישו פשוט - חפשו Reversim Summit 2021 או שתגיעו לאתר שלנו שבטח יהיה פה ב-Show Notes [כמובן, הנה שוב . . .] - והגישו את הצעותיכם.
- וזה הכל על האייטם הזה - והשנה גם אלון ידידנו בצוות! כמו בשנים עברו . . .
- (דותן) הופה!
- (אלון) החלפתי את דותן . . . אחרי שבשנה שעברה, באשמתו, לא היה כנס פיזית, היה רק וירטואלי [שהיה מעולה!]
- (דותן) לקחתי חל”ת . . .
- (אלון) אני הבאתי את החיסונים - ולכן יהיה הפעם כנס פיזי!
- (רן) בגלל זה גם מחליפים אותך . . . טוב, כן - כזכור, הכנס האחרון של 2020 היה וירטואלי והכנס של 2021 הולך להיות בהחלט פיזי, לגמרי פיזי, בגני התערוכה בתל אביב.
- והאייטם הבא שרציתי לדבר עליו - בפרק הקודם [שגם הוא היה באמפרס] הזכרתי איזשהו קורס, שאמרתי שעשיתי אותו, שנקרא Statistics 110 של אוניברסיטת Harvard [זה Harvard STAT110x], ואמרתי שהוא מאוד מאוד מומלץ
- ואז שאלתם אותי - אלון ודותן, אם אתם זוכרים - האם הקורס הוא מצולם או האם הוא כתוב, ואמרתי שהוא בעיקר כתוב, אבל פה ושם יש קטעים מצולמים, בעצם קטעי אנימציה.
- אז אחרי ששאלתם, גם הלכתי וחיפשתי - ומצאתי את כל הקורס מוצלם . . . ממש הרצאות, של אחד הפרופסורים ב-Harvard [זה - Joe Blitzstein].
- אז אם אתם מעדיפים את הפורמט המצולם - אז יש את זה, הרצאות מלאות של כל הקורס הזה, ממש ככה - Statistics בסיסי באוניברסיטת Harvard, קורס ברמה מאוד מאוד גבוהה, אני ממליץ.
- (אלון) זה איזה 30 שעות צפייה, רק אומר . . . 20 וקצת, 24 . . .
- (רן) כן, קורס . . . משהו כמו 14 שבועות כפול שעתיים כל שבוע . . . כן, זה הגיוני
- אבל קורס, לדעתי, מאוד טוב - נותן את כל הבסיס להסטטיסטיקה והסתברות.
- ומעניין לעניין באותו עניין - קורס נוסף, או למעשה אוסף של הרצאות מאוניברסיטת Cornell, שנקרא Cornell Tech CS 5787, בשפה שלהם . . .
- זהו בעצם אוסף של הרצאות על Introduction ל-Machine Learning מאוניברסיטת Cornell
- מאוד-מאוד תמציתיות, ממש מכסה חלקים מאוד נרחבים של התחום, ככה שאם מישהו רוצה לראות סדרת וידאו-ים שמכסה חלקים משמעותיים מאוד מתוך התחום של Machine Learning, ברמה של Introductory - זה אחלה.
- אני ראיתי כמה מהוידאו-ים - לא ראיתי את כולם, אני חייב להגיד: את חלק מהנושאים אני כבר מכיר וגם זה ארוך . . .
- יש שם הרבה מאוד חומר, אבל לא צריך לראות את הכל - כל פרק מדבר על תחום אחר
- אם זה מתודות שונות כמו Supervised מול Unsupervised ו Monte Carlo Methods או Bayesian Networks וכו’.
- יש שם הרבה מאוד חומר - תכל’ס זה מכסה תואר שלם, רק שזה עושה את הכל, ככה, ביעף, וככה מאוד בקצרה על כל אחד מהנושאים.
- נושא הבא, לחלוטין לא קשור, בכלל לא בתחום - הפוליטיקה הגיעה גם לקוד הפתוח! כך מסתבר . . .
- האייטם הבא מדבר על הודעה פוליטית, שהופיעה יום אחד בפרויקט שנקרא graphiql
- ובתוך ה-README שלהם הופיע מסר פוליטי
- זה, אגב, לא המסר הפוליטי הראשון - הראשון היה, יחסית אולי, בקונצנזוס - Black Lives Matters.
- אבל להודעה הזו התווסף גם Free Palestine, וסביב זה כמובן התעוררה לא מעט שערוריה.
- אני מקשר פה גם ל-Pull Request המקורי, שלמרבה הצער עבר ככל הנראה Merge בלי Review, כשהיה שם מישהו שכנראה החליט לקדם איזושהי אג’נדה פוליטית ולא התייעץ עם השותפים שלו לפרויקט ופשוט עשה Push לתוך ה-README, של המסר הפוליטי הזה
- ויש גם את ה-Pull Request שבא לתקן את זה, ויש לא מעט רעש מסביב לכל זה.
- בסופו של דבר, הסיפור הזה נמחק, והייתה איזושהי התנצלות - ההתנצלות היא לא על המסר עצמו אלא על עצם זה שנכנס קוד בלי Review ושם את שאר ה-Maintainers של הפרויקט במקום מאוד לא נוח.
- וגם ידידינו דותן - ראיתי שהתערבת בשיחה שם? . . . .
- (דותן) נכון . . .
- (רן) אני חושב שהמסר החשוב לקחת מפה זה לא לערבב בין הדברים - לא לערבב בין קוד פתוח . . .
- אם קיבלתם את אור הזרקורים בנושא של . . . לצורך העניין אם כתבתם ספריה מוצלחת - אל תערבבו לשם דברים אחרים שלא קשורים, זה כנראה רק יזיק לפרויקט שלכם.
- זה יזיק לאמינות
- זה יכול לפגוע, אולי, באנשים שהדעות שלהם שונות או שהאינטרסים שלהם שונים
- אני לא חושב שזה רעיון כל כך מוצלח לערבב בין הדברים האלה.
- (דותן) בסוף, זה נסגר . . יש בחור בשם Lee Byron, שאני מכיר גם מהקהילה די הרבה זמן, והוא מסכם את זה בזה שהם . . . איזושהי Committee-על של כל מה שקשור ל-GraphQL, והם ישבו על זה וחשבו על זה
- וכנראה שאין להם איזשהו Guideline של מה עושים בנושאים פוליטיים ב-Code of Conduct, והם עכשיו יושבים לרשום . . . .
- זה פחות או יותר מה שכתבתי - שראיתי שאין בכלל Code of Conduct ב-Repo הזה, ושזה נראה לי גם כמו Take-away שאפשר לקחת -
- כל אחד שפותח פרויקט יכול לקחת איזשהו Code of Conduct סטנדרטי, כמו שלוקחים License, לשתול אותו בפרויקט שלכם, וגם להאמין בזה, לקרוא אותו . . .
- בסך הכל, המטרה היא להישאר כמה שיותר נייטראליים וכמה שיותר על תוכנה, ולא לערבב שטויות מבחוץ, מה שנקרא.
- (רן) כן . . . זאת אומרת, אני מסכים לגמרי - בסופו של דבר, אני חושב שזה הוציא . . .
- יצא לא מעט כעס סביב הפרויקט, אולי זלזול, לא יודע מה עוד
- גם חשף תהליך שהוא לא כל כך בריא, וגם יצר לא מעט רגשות שליליים סביב הפרויקט הזה.
- אני חושב שבשורה התחתונה זה מאוד הזיק לפרויקט, והם כנראה מצטערים שככה זה היה.
- זהו, בקיצור, אל תנהגו ותשתו . . .
- (אלון) אל תנהגו ותשתו, אבל אני לא יודע אם זה הזיק - כי מי זוכר מה זה GraphQL עד שהיה את כל הבלגן הזה? . . .
- לא יודע מה יותר מפתיע, כמו שמישהו אמר - אם GraphQL עוד חי או שנכנס מסר פוליטי ל-README שלGraphQL . . .
- (רן) כן, הא? . . . .
- בכל אופן - כמו שאתה אומר: No Publicity is bad publicity?
- [ד”ש למיק]
- אבל איך שלא יהיה - כן: פרוייקטים, בעיקר פרויקטים גדולים, צריכים שהדברים יהיו כתובים, אחרת כל אחד יעשה כראות עיניו.
- נושא הבא, וגם זו שערוריה קטנה - היום אני בנושאי סקנדלים . . . אז חברת למונייד (Lemonade), שהיא חברה ישראלית שעוסקת בביטוח ומערבת לא מעט טכנולוגיה וגם AI, כתבה (או מישהו מטעם החברה כתב) איזשהו Thread ב-Twitter, תחת החשבון הרשמי של Lemonade,
- וכתב, בין השאר, שהחברה מסוגלת, כשאחד מהמשתמשים מייצר Claim (תביעה)-
- עושים את זה בוידאו, המשתמש מקליט את עצמו ומייצר Claim, נגיד תביעה על, לא יודע . .. “הדירה שלי הוצפה במים ועכשיו אני תובע את חברת הביטוח”
- אז ברגע שאחד המשתמשים מייצר Claim בוידאו, הם משתמשים ב-AI ומסתכלים על הבעות הפנים שלו כדי להבין האם הוא משקר או לא . . .
- [כזה - For example, when a user files a claim, they record a video on their phone and explain what happened. Our AI carefully analyzes these videos for signs of fraud. It can pick up non-verbal cues that traditional insurers can't, since they don’t use a digital claims process.]
- זה, כמובן, יצר לא מעט סערה סביב הסיפור הזה . . . לא מעט אנשים שבאים ואוספים Miss-use של AI באו וקפצו מיד על המציאה ואמרו “או! הנה דוגמא למה AI . . . יש פה שימוש מאוד לא נכון, שיכול מאוד לחטוא למציאות או לאמת”.
- למונייד - מיד’ אני חייב להגיד - התנצלו ואמרו שהדברים לא הובנו והסירו את ה-Thread הזה - אז כבר אי אפשר למצוא את זה על Twitter
- אבל כן אפשר למצוא את זה על איזשהו Archive - אז אם אתם רוצים לראות את ה-Thread המקורי אז אפשר למצוא את זה שם,
- אבל למונייד מחקו את ה-Twit הזה, ובעצם את כל ה-Thread
- וזה שוב מעלה את השאלות הערכיות בנוגע לשימוש ב-AI - של אילו דברים נכון לא נכון לעשות.
- בהקשר הזה, היו כאלה שהגיבו גם על ראיונות עבודה בודיאו, ואיזשהו ניסיון של אלגוריתם לבוא ולהחליט האם הבנאדם שמולך מתאים לעבודה או לא מתאים לעבודה,
- או לחילופין סינון קורות חיים על פי אלגוריתמים, שאולי [אולי?] הם Biased
- כל התחום הזה של מוסר ב-AI זה תחום שהולך ומתפתח - אני הסתכלתי במקרה על תוכניות לימוד, וראיתי שלא מעט אוניברסיטאות מכניסות את הסיפור הזה לתוך תוכנית הלימודים ממש
- אם נגיד תעשו תואר שני עם התמחות ב-Data Science או ב-AI, חלק מהקורסים שתקחו הם גם איך לעשות AI שהוא מוסרי, איך מודדים את זה ואיך עושים את זה.
- (דותן) רן, אני חייב לעצור אותך ולצטט חבר משותף שלנו, שתמיד אמר בתחום הזה במיוחד, של AI ו-Hiring, ש”אין דבר כזה AI לא מוסרי - יש דבר כזה בני-אדם לא מוסריים” . . . . כי בני אדם בונים את ה-AI, וה-AI בסך הכל לוקח דאטה ועושה מה שאומרים לו.
- כאילו, נולד מושג או עולם כזה של “מכונות לא מוסריות” . . .
- (רן) כן, זה נכון . . .דרך אגב, כשהסתכלו, אני חושב כש-Amazon פרסמו שהם משתמשים באיזשהו אלגוריתם לסינון קו”ח וגילו שיש להם Bias לטובת, אם אני זוכר נכון, גברים לבנים, אבל אל תתפסו אותי במילה
- [אתה גבר לבן, זה כנראה באלגוריתם לא לתפוס אותך במילה]
- אז הם באו ואמרו להגנתם ש”זה הדאטה שלנו” . . . “האלגוריתם התאמן על הדאטה שהיה לנו וזה מה שהיה אז זה מה שהוא למד” - אז האלגוריתם לא אשם.
- אבל - התוצאה הסופית היא עדיין עקומה, אוקיי? האם אנחנו פה כדי להנציח את האתמול, או שאנחנו באים כדי לבוא ולקבוע קווים מוסריים אחרים שאנחנו מאמינים בהם?
- במקרה הזה, נראה שהתגובה של Amazon הייתה, כנראה, עובדתית נכונה - אבל כנראה שאח”כ, בראייה לאחור, מוסרית היא לא הייתה נכונה
- זאת אומרת - הם לא היו צריכים לעשות את זה ככה.
- עכשיו, זה נעשה ככל הנראה בתום לב ושלא במתכוון, אבל בסופו של דבר התוצאה היא עדיין אומללה.
- (אלון) אני חושב שהתוצאה דווקא לא אומללה בגלל שלהיפך - זה חושף את זה . . . אנשים הם גם Biased
- זה מגניב להגיד “אנחנו לא Biased”, קל לי להבין - אבל לכל אחד יש את ה-Bias שלו, מה לעשות, אנחנו בני אדם.
- ולהיפך - ככה, כשזה באלגוריתם וככה כשזו מכונה, ואפשר להבין את ה-Bias ולתקן אותה ואפשר ללמוד שזה אנשים
- “אז קמתי במצב רוח לא טוב אז אני אעיף את ההוא מהראיון סתם ככה כי בא לי” או כי “הוא לא נראה לי כי הדיבור שלו לא מתאים לי” - אז הרבה יותר קשה לעשות לזה אחרי זה “רטרו” ולהבין מה קרה, וכשזה אלגוריתם אז הרבה יותר קל.
- אני חושב שכל אלה שצועקים, אז שיבואו ויגידו איך הם מפקחים על זה ואיך, כאילו, מוציאים מזה את התובנות, ולא לעצור את זה, כי אני חושב שזה ממש ממש חיובי כל הכיוון הזה, כי זה הופך את העולם להרבה יותר שקוף ויותר הוגן בסוף
- התהליך הוא קשה.
- (דותן) אני חושב שאתה צודק, וכדי לחזק את מה שאתה אומר - אני חושב ש-Hiring הוא משהו שמאוד קל להבין אותו כי כנראה כולנו, וגם המאזינים, עושים את זה על בסיס אולי יום-יומי.
- אני רוצה לומר ש-Bias הוא מולטי-שכבתי - זה לא אתה מול המועמד וזהו
- נגיד שאתה מנסה לייצר לעצמך קריטריונים . . . בוא ניקח רגע משהו שהוא מאוד פופלארי או לא פופולרי בשוק הישראלי, שאלו יחידות המודיעין - כל ה-8200[$] וכן הלאה
- צריך להבין שהצבא, אני חושב, לא יודע אם זה עדיין ככה, אבל הוא Biased by Design . . . כל הנושא של קב”א ופרופיל וכל הדברים האלה . . .
- בעצם, אם אתה עוקב אחרי הקב”א והפרופיל, אז קב”א מסויים יגיע ליחידה מסויימת - ואתה מגלה שכשאתה מחפש את ה”8200” או כל מספר אחר, אז בעצם ה-Bias הוא גם דמוגרפי . . .
- כי הצבא עשה את ה-Bias ואתה בעצם מקבל את ה-Bias כבר “Built-in” - לא משנה מה אתה מנסה לעשות, אתה במשחק אבוד.
- זה גם משהו ששווה להבין - שה-Bias הוא לא רק פרונטלי מולך, אלא הוא נעשה גם הרבה הרבה לפניך, וצריך להיזהר מזה.
- (רן) קודם כל, אני חושב שיש משהו במה שאתה אומר, אלון, אבל בוא תרשה לי להציג גם את הנקודה הנגדית, פשוט לשם הדיון:
- נכון, לכל אחד יש Bias, וכשאני מראיין בנאדם - יש Bias: בין אם הוא נראה דומה לי, אני מכיר אותו מהשכונה, היה באותה יחידה בצבא שלי, למד באותו מוסד אקדמאי, עבדנו באותה חברה . . . קיים Bias, לחלוטין מסכים.
- זה גם יכול להיות מראה חיצוני ועוד מלא דברים . . . ה-Bias הזה קיים.
- ו-Yet - כשה-Bias הזה מקודד לתוך מכונה, מי לוקח על זה את האחריות - מי שיצר את האלגוריתם? מי שהפיק את הדאטה? מי שמשתמש? זו שאלה ראשונה . . .
- (2) - כשקיים Bias אצלי, אבל מרואיין, לצורך העניין, אם נסתכל על ראיונות עבודה, אם הוא עובר חמישה אנשים שונים - אז אצל כל אחד קיים אולי Bias קצת שונה, אבל בסופו של דבר אנחנו נגיע - כנראה, בתקווה - לאיזשהו ממוצע, למרות שאנחנו יודעים שגם . . . כל תהליך הקבלה לעבודה הוא מאוד מאוד “רועש”, יש שם הרבה מקריות ודברים לא מאוד סיסטמטיים
- אבל בכל אופן, עצם זה שהוא עובר דרך חמישה אנשים, כשלכל אחד יש Bias קצת שונה, אז בכל זאת יש סיכוי שבסופו של דבר נקבל משהו שהוא קצת יותר אובייקטיבי - בזמן שכשיש מכונה, אז תיאורטית נכון, הדברים יכולים להיות יותר שקופים ואני מסכים איתך שזה לגמרי יתרון, אבל ה-Bias הוא חד-ערכי: קשה מאוד לאזן אותו.
- בכל אופן - כן, אני מסכים איתך . . . זה דומה לשאלות שעולות בתכנון של מכוניות אוטונומיות, למשל - אתה יודע, הדילמה הרגילה של “האם תסטה ימינה ותדרוס את האישה עם העגלה או תסטה שמאלה ותדרוס את האישה המבוגרת?” . . .
- אז אם זה בנאדם, שבסופו של דבר, ברגע האמת, צריך לקבל החלטה בין גרוע לגרוע-מאוד, כנראה שאף אחד לא ילך ויאשים אותו - אין מה לעשות, הוא היה במצוקה וקיבל את ההחלטה הכי טובה באותו רגע ואין מה לעשות
- אבל אם זה אלגוריתם, אז כן - יעשו לו Scrutinizing וינסו לשפר אותו, ומישהו כנראה יצטרך לתת את הדין על זה - וזה לא הנהג, במקרה הזה.
- ופה אני חושב שמתחילה הבעיה, או האתגר.
- [ד”ש לוויל סמית’]
- (אלון) נכון, מישהו צריך לתת את הדין - אבל כל העניין הוא שאפשר לתת את הדין וכל העניין הוא שאפשר להשתפר - ואני חושב שזה חיובי, ואני פשוט נגד אלה שמנסים לעצור את קדמה, בוא נגיד את זה ככה.
- (רן) כן, טוב, אני חושב שזה לגמרי נושא לפאנל ארוך, אבל יאללה, בואו נמשיך - אלון, האייטם הבא שלך.
- [שמעתי שיש כנס בול לפאנלים כאלה, אפשר להגיש הצעות]
- [ותמיד טוב לחזור ל-Thinking: Fast and Slow]
אלון -
- טוב, אז Uber Engineering הוציאו איזה מאמר של pprof++, שזה Go Profiler with Hardware Performance Monitoring
- אז הם הוציאו פה מאמר די רציני על למה הם שיפרו את ה-Profiler של Go
- הם נכנסים פה לתאוריות מעניינות של Sampling Frequency ושל Sampling Bias והמון-המון דברים שבעייתיים כשעושים Profiling, יש פה . . . זה מאמר מאוד עמוק ומעמיק.
- מה שכן, בסוף יצא שהם ממש הוציאו Profiler חדש, אבל כמו שראיתי הם ממש עשו Fork לכל ה-Go כי זה Built-in בפנים שם - זה לא שהם הוציאו איזו ספרייה קטנטונת שכל אחד יכול לקחת אותה.
- זה תחת ממש uber-research/go, והם לקחו את Go 1.15 - 1.16 - וממש עשו לו Fork ושם שינו את ה-Profiler עם ה-Acceleration ללינוקס, Hardware Acceleration.
- אבל חוץ מזה שהם עשו את זה, הם גם פתחו ל-Community הצעה להכניס את השינויים האלה.
- עכשיו - זה לא שהייתי אומר להחליף את ה-Library של Go ב-Library שלהם, אבל קודם כל יכול להיות שאם למישהו יש מקרה מאוד ספציפי ומעניין של Performance ותקוע אז אולי זה יכול להיות מעניין, אופציה כזאת.
- מה שכן - זה מאמר מאוד מעניין, מבחינת בכלל תיאוריה של איך עושים Monitoring ודברים כאלה - אז מי שמעניינים אותו הדבר האלה, אני חושב שזה שווה.
- (רן) השתמשת בו, אלון?
- (אלון) לא, לא השתמשתי בו, צריך להחליף את ה-Framework . . .
- (רן) צריך לקמפל (Compile) מחדש, עם כל מיני Bindings כמו שהם כותבים . . . לא יודע, לא נראה יותר מדי מסובך, אבל מה שכן -
- הממשק עצמו הוא אותו הדבר, הממשק Pprof נראה כמו הממשק של pprof++, אם זה ה-HTML או ה-API שלו, ככה שנראה שחוץ מהקומפילציה זה ממש “להחליף וזהו”.
- (אלון) נכון, וחוץ מזה הם אפילו פתחו פה עוד כמה דברים, נתנו עוד כמה גישות לעוד כמה דברים שלא היו לפני זה
- יש פה עוד כמה שיפורים נחמדים . . . זה לא כזה טירוף
- צריך לקמפל (Compile) את ה-Binaries אבל שוב - זה התעסקות, זה Hassle, זה לא להיות על ה-Main Branch, אבל . . .
- (דותן) אני חייב להגיד שני דברים -
- (1) אני רוצה לקחת את העמדה של “מגדל השן”, ולהגיד שזה כיף כזה - להסתכל על מלא עבודה של מלא אנשים ואז אתה אומר משהו מאוד פשוט ודוקר את זה . . . - אז אני רואה שהדבר הזה בא בעיקר לטפל בצורך להבין CPU Cache Misses ו-Traffic בתוך ה-Socket-ים של ה-CPU ו-CPU Miss-prediction - המון דברים שהם Low-level [ד”ש ממערכות ספרתיות]- ואז, כאילו, יכול להיות שצריך, ב-Case של “לאפטם” (Optimize), אולי צריך להחליף שפה . . .
- (2) דבר שני - יש פה משהו שמתכתב עם הגישה של . . . עלתה לי השאלה של “איפה הצוות של Go בסיפור הזה?” . . . כל כך הרבה עבודה נעשית מחוץ לספירה (Sphere), ואני קורא פה דברים שמאוד מעניין שיהיו בפנים - איפה הצוות של Go?
- ואז אני נזכר בגישה של Go - “נתנו לכם משהו וזה מה יש - כשצריך דברים אז תעשו עבודה, נשמח לקבל את הנסיון שלכם ואת ה-Scale שלכם ובואו תכניסו את זה בחזרה” . . .
- (רן) יש לי תחושה, דותן, שאתה לא מפסיד הזדמנות לעקוץ את Go, ולרמוז לכיוונים אחרים . . .
- (דותן) למה? בכלל לא . . .
- (אלון) הוא לא - אבל בכל פעם שאומרים לו שהוא נוטש את Go הוא אומר “אני?! לא שמעתי שום דבר כזה בחיים! . . .”
- (דותן) החוכמה היא לאכול את העוגה משני הצדדים . . .
- (אלון) כן . . . מה שכן - אמרת פה משהו שאני קצת חולק עליו: יש פה עניין באמת של CPU ושל דברים שהם מאוד Internal כדי להבין, אבל אתה לא רץ ומחליף שפה ואז בודק אם זה פותר לך את הבעיה -
- קודם תבדוק האם שם הבעיה, ואז תחליט האם להחליף שפה . . .
- אני חושב שהכיוון הוא לבדוק את זה קודם כל ב-Go, ואז אולי תקבל החלטה להחליף ל-Rust ואז תמחא להם כפיים, שזה סבבה - אבל לא הייתי כותב קוד קודם כל ב-Rust ואז אומר “זה לא שיפר לנו כלום”, יכול להיות שהבעיה בכלל במקום אחר . . .
- (דותן) זה מבוסס הנחות שלי . . . אני מניח שלפני שהם יצאו למסע הזה - ונראה שזה מסע, יש פה כל מיני ציטוטים למאמרים אקדמאיים כאלה ואחרים - נראה לי שלפני שהם יצאו למסע, הם הבינו שיש להם בעיה גדולה
- לא יודע, הייתי שמח אם היה פה איזשהו Experiment בשפה אחרת, כדי לעשות השוואה איך זה בשפות אחרות.
- (רן) טוב, בכל אופן - אולי הם עשו מאמץ משמעותי, אבל עכשיו מי שרוצה להשתמש בזה . . . מי שכבר משתמש ב-Go ורוצה Profiler יותר טוב, לפחות לפי הכתוב, יכול פשוט להשתמש ב-Profiler הזה, פלוס/מינוס לקמפל יחד עם ה-Binary שלהם.
- אז אולי להם זו עבודה קשה - אבל לקהילת ה-Go זה כנראה רווח טוב.
- (דותן) זה לגמרי, נכון
- (רן) טוב, אז נקסט . . .
- (אלון) יש פה איזשהו מאמר, שהוא ממש ממש Hardcore, על מישהו שמדבר על Extreme HTTP Performance Tuning: איך הוא הגיע ל-1.2M API req/s על 4 vCPU EC2 Instance . . .
- הוא מתחיל פה את המסע שהוא התחיל מ-224 אלף Requests עד ל-12 מיליון Request-ים, וזה מאמר של משחקים קשוחים עם קונפיגורציות של הלינוקס ושל כל המערכת שהוא השתמש פה.
- והוא מסביר, Step by step ממש, איך הוא עלה מ-200 אלף ל-300 ול-400 ול-500 ו-600 ו-800 ו-1.2 מיליון בסוף - ממש בכל פעם Tune קטן ועוד Tune קטן
- אבל זה ממש היה Hardcore system, כאילו, המאמר הזה . . .
- (רן) כתוב ב-C, אני מבין? מה הוא כתב? . . .
- (אלון) קונפיגורציות של המערכת הפעלה, כאילו, מה שהוא מדבר פה . . .
- (רן) אבל מה ה . . .
- (אלון) ה-Service עצמו שלו? זה ב-C, למיטב זכרוני . . . זה json סטטי בכלל שהוא נותן פה בדוגמא, זה לא משנה . . .
- (רן) לא, חשבתי שהוא מדבר . . רגע, הוא מדבר על Server, לא? לא על . . .
- (אלון) הוא מדבר על Server, שמגיש פה, בדוגמא שלו, json סטטי, אבל הוא מדבר פה על המשחקים של ההגדרות של המכונה, בסוף, כדי להגיע ל-1.2 מיליון בקשות בשנייה.
- (רן) כן, אוקיי . . .
- (אלון) . . . זה לא “משחקי קוד”, זה משחקי . . . תשתית, בוא נגיד את זה ככה.
- (רן) כן, הבנתי - בסופו של דבר הוא השתמש ב-NGINX כדי להריץ את זה, הבנתי . . .
- הוא בדק כמה - בדק את NGINX ו-Netty ו-libreactor ו-Actix ו-AspCore, ומשהו ב-Go ומשהו ב-Node.js
- בסופו של דבר הלך על NGINX, אוקיי . . .
- (אלון) לא על ה-libreactor? בסוף הוא עבר אליו, בשלב האחרון, אם אני לא טועה? . . . נראה לי הוא החליף עוד אחד באמצע, באמצע הוא עבר ל-NGINX ובסוף ל-libreactor, כדי להגיע ליותר - אבל זה ממש למי שרוצה להוציא את המיץ מהדברים
- אבל זה כבר מאמר Hardware . . . לא Hardware אבל מערכות הפעלה, בוא נגיד את זה ככה.
- אם מישהו מוצא משהו מעניין שם אז שילמד אותי . . . חומר קשוח, בוא נגיד את זה ככה.
- טוב, בוא נעבור למשהו . . . היינו ב-Hardcore, בואו נעבור לדברים קלילים יותר - למי שעובד ב-Go, ודותן - אני אבקש שתשמור על שקט בחצי דקה הקרובה - אז אחת הבעיות היא שיש לך איזה API שמחזיר json, ואתה רוצה אותו ב-Struct-ים ב-Go, ואחד הדברים הנוראיים זה לך תכתוב עכשיו Struct ב-Go, לפעמים זה יכול להיות סיוט, כי זה נורא מעצבן . . .
- אז מישהו עשה פה איזה Web-page חמוד, שאתה פשוט עושה Paste ל-json שלך והוא מייצר את ה-Struct ב-Go . . .
- קליל, חמוד ופשוט - ודותן, אני רואה את החיוך שלך.
- (דותן) אני אעשה לך up - 1 . . . אז אל תשתמשו בזה - תשתמשו ב-quicktype.io:
- זה גם web-page,
- זה גם לכל שפה, כולל Go ו-Rust ושפות אחרות
- וזה גם Command-line, אם אתם רוצים לעשות את זה בצורה אוטומטית
- אתה נותן לו דוגמא של json והוא זורק עליך “Struct של Go”, נקרא לזה.
- (רן) אז אני משחק עכשיו עם quicktype, וזה נראה באמת נחמד, לא הכרתי את זה - ואני רוצה לראות באיזו שפה זה יוצא הכי ארוך . . .
- זאת אומרת - יש לי איזשהו בלוק קטן של json, ואני מחליף בין השפות ובודק מה יוצא הכי ארוך . . .
- בינתיים נראה לי ש-Objective C, אבל עוד לא עברתי על הכל . . .
- בקיצור - אחלה תחביב להעביר את הזמן . . .
- (דותן) אתה יכול לעשות כמו ה-Google Translate - לתרגם את זה ל-Go ומ-Go ל-Rust ומשם ל-JavaScript וכן הלאה . . .
- (רן) TypeScript יוצא נורא ארוך . . . למה TypeScript יוצא כל כך ארוך? הם עושים כאילו type-ים לכל ה-json? . . .
- (אלון) נו, מה - הם ילדים? אחרת מה עשינו פה? . . . ה-Type-ים האלה . . . איזו בעיה זה כל השפות Typing האלה . . .
- טוב - עכשיו תקשיבו: ממי שהביא לכם בפרק הקודם את github1s - אותו אחד מביא לכם בשורה אחרת - Dom Events
- (רן) אתה כבר לא יכול לחזור . . . רגע, רגע רגע . . .
- (אלון) האמת נכון - הבטחתי שזה הפרק האחרון, אבל היה חידוש חוזה, היה מו”מ, ובעקבות לחץ ובאמת דרישות והפגנות מול הבית, חזרתי לעוד פרק!
- אז עכשיו הגיע domevents.dev - והדבר הזה ממש חמוד: הוא ממש מראה, ויזואלית, מה קורה ב-Dome כשלוחצים על כפתור
- איפה הדברים רצים ואיפה ה-Event עושה Bubbling ודברים משעשעים ויפים קורים
- אז קודם כל - לכל מי שמתחיל לפתח JavaScript, בוא נגיד . . . או Web בכלל, For Beginners זה Must
- [בר-זיק!]
- וגם כ-Advanced זה ממש חמוד ויפה לראות את זה.
- אז ממש שמח שנהניתם מעוד אייטם מוצלח מבית היוצר של אלון . . . אז זהו, מרגש אותי.
- (רן) תודה, אלון . . .
- (אלון) אני מתרגש שיש לי להביא לכם כאלה דברים, אני פשוט מתרגש . . .
- (רן) אנחנו מתרגשים איתך . . .
- (אלון) ועכשיו שוב, אחרי השיא אני שוב מעביר אליך [דותן] . . . מקווה שתתמודד . . . זה המצב
- (דותן) טוב . . . בסדר, בפעם הבאה אני אשים לב לדברים האלה.
- (אלון) אין בעיה
דותן -
- טוב, אז האייטם הראשון שלי זו ספרייה, כלי שנקרא autocomplete - אני ככה גירדתי בראש וניסיתי להבין מה זה . . .
- לא ממש הבנתי - אבל אח”כ הבנתי.
- זה כזה סוג של טריק-חלונאות (Windowing?) מעל הטרמינל שלכם, וזה נותן לכם להקליד בטרמינל ולקבל Auto-Complete ב-Drop-down . . .
- ה-Drop-down הוא חלון Native-י כביכול של מערכת ההפעלה - שזה טוויסט נחמד למי שעובד עם טרמינלים, רוב הטרמינלים בעצם, שאין להם חוויית משתמש כזאת.
- אין פה מה . . לא מפסידים הרבה - אם מישהו מתחבר ל-Experience הזה אז מגניב, ואם לא אז לא . . .
- (אלון) רגע - זה עובד גם עם האייטם, כאילו? עם ה-Item-2? . . .
- (דותן) כן
- (אלון) אז מה אנחנו עושים פה? אנחנו יכולים להפסיק ולהתחיל לשחק עם זה . . .
- (רן) נשמע לי, דותן, שיש עוד כמה תוכניות, לפחות על ה-Mac, שמשתמשות בטכניקה דומה -
- למשל, אם תשים לב, ב-Zoom, כשאתה פותח את ה-Settings, אז אם אתה לא סוגר אותו ועובר לחלון אחר, אז החלון של ה-Settings נשאר פתוח, וצף מעל כל האפליקציות האחרות . . .
- (אלון) באמת?
- (רן) כן . . . וראיתי אתמול עם DBeaver, שזה איזושהי תוכנית שמבוססת על Eclipse [לא זה], איזשהו Database Client שמבוסס על Eclipse - וגם שם, אם אתה עושה Auto-Complete, אם אתה לא סוגר את ה-Auto-Complete ועובר לחלון אחר, זה עדייןצף לך מעל הכל . . .
- (אלון) נכון! שם זה תמיד מעצבן . . . אגב, למי שאין לו DBeaver ועובד עם Databases, אז מומלץ בחום . . .
- (דותן) מגניב . . .
- (רן) הטכניקה הזאת, של לייצר חלון נוסף בתור Auto-Complete, היא קיימת - אבל עוד לא ראיתי תוכנית אחת שאין לה באגים בתחום הזה . . .
- (דותן) כן, היא קשה . . .
- (אלון) רגע - אפשר להתקין את זה? רגע, את ה-Fig הזה? כי זה “Early Access” . . . מה זה Early Access?! תן לי את ה-Install, מה זה? תפנק אותנו! מה קורה פה? . . . אתה מוכר לי חתול בשק?
- (דותן) אני אשלח מכתב למערכת של Fig . . .
- (אלון) מה זה - אתה נותן אייטם סגור?! חבר’ה . . . עכשיו תיקח מכל מאזין Donation?! מה קורה פה?
- (דותן) עלית עלי . . .
- (אלון) טוב, בסדר . . .
- (דותן) אייטם הבא - זה גם אייטם שצריך לשלם בשביל לראות מה זה: מכירים סט כלים שנקרא Rome - רומא? יצא לכם לשמוע על התנועה הזאת? תנועה יציבה אבל מאסיבית? . . .
- (רן) יצא לי לשמוע, אבל האמת שאני לא זוכר . . .
- (דותן) אז Rome זה “התחליף של כל הדברים” ב-JavaScript ו-TypeScript
- זה כלי למי שצריך לעשות Linting או Bundling או קומפילציה, Formatting של Style והכל ביחד . . .
- עם Zero Configuration ו-Zero Dependencies
- אז Rome מגיעה ככה לעוד Milestone - ויש עכשיו Release חדש ונראה לי שאפשר להתחיל לנסות את זה
- אני, דרך אגב, אחת הסיבות שעברתי ל-TypeScript יחסית מזמן כבר זה בגלל ה-Tooling -
- האמנתי שה-Tooling עדיף לי, ושהוא יתקדם יחד איתו - ובאמת זה קרה.
- כש-Rome עדיין יכול להיות שימושי בלהחליף את כל הדברים שאני מביא יחד איתי, שזה לקנפג (Configure) את Jest ולקנפג את Prettier ו-Linting וכל הבאלגן הזה
- כלי אחד שעושה הכל - מדהים
- (רן) אני מנחש שהרעיון מאחורי ה- Zero Configuration זה שמשתמשים רק בקונבנציות ידועות מראש ולכן לא צריך לקנפג
- ואם אתה רוצה לעבוד אחרת אז “לא בבית ספרינו” . . .
- (דותן) כן - וגם קצת להיות חכם, ואם יש React בפרויקט, אז אתה יכול להביא איזה שתי ספריות של Linting ל-JS6, למשל.
- אבל אם אין React אז לא צריך.
- (רן) אוקיי . . .
- (דותן) ועוד פרויקט מעניין שנקרא rustdesk - זה בעצם RDP Client, Remote Desktop, שבנוי ב-Rust
- יש כאן גם איזשהו שיעור אקדמי מאוד מעניין, שאותי לפחות זה מאוד סיקרן
- וגם Client, שאפשר להשתמש אם אתם עובדים עם RDP
- האמת שהאייטם הבא הוא לא האייטם הכי שימושי, זה נקרא The Rust Performance Book
- הסיבה שהוא לא שימושי היא שלא צריך לעבוד על Performance ב-Rust, אתה מקבל את זה כבר מחוץ לקופסא . . .
- (אלון) בום! וואו . . . איפה התופים?! תוסיף את האפקט פה . . .
- [אתה מדבר אלי? אוקיי - אה, מצאתי חצוצרה ♬. . . ]
- (רן) אז זה בעצם ספר ריק? ספר ריק עם דפים לבנים, משקולת? . . .
- (דותן) . . . אבל אם בא לכם סתם לראות, ויש לכם זמן מיותר לראות מה היה קורה אילו הייתם צריכים לשפר Performance ב-Rust, אז יש ספר שנכתב לצורך הדבר.
- אגב, הספר הוא מאוד קטן - כי אין הרבה מה לשפר בשפה . . .
- (רן) Rust הוא כל כך מהיר, שגם אם לולאה היא אינסופית - שם היא נגמרת.
- (דותן) נכון, ככה מתחיל הספר . . .
- (אלון) אתה יודע, הבעיה ב-Rust היא שאף אחד לא הוכיח שזה לא מהיר כי הם עדיין מקמפלים (Compiling) . . .
- (דותן) זה גם נכון . . .
- ולאייטם הבא - האמת שנוצרה איזו שהיא בעיה, אני לא יודע אם שמתם לב: Google הכריזו שהם סוגרים את “החינמי לאחסון תמונות” [ב-Google Photos], ומה שקרה זה שיש כמה פרויקטים של “סנכרן בעצמך”, אם יש לך NAS בבית וכל מיני דברים כאלה, שהיו תמיד שם אבל פתאום “קפצו לתודעה”.
- אחד מהפרויקטים שאני זוכר לטובה נקרא syncthing - “סנכרן-דבר” בעברית . . .
- זה פרויקט שתומך בסנכרון - לכל דבר, מכל מקום, בעצם סנכרן-דבר . . .
- (אלון) אהבתי את זה שעשית לזה כבר עברות . . .
- (דותן) אני חושב שאחד מהדברים שאנחנו צריכים לעשות זה לעברת את האייטמים . . .
- (רן) יש לנו AI שמעברת . . .
- (דותן) לגמרי . . .
- זהו, אז אפרופו עברית וישראלי, אז יש פה פרויקט מעניין שנקרא openpilot, שנוצר ע”י comma.ai, איזשהו ארגון / תנועה
- זה בעצם, איך שקראתי את זה וככה, הסתקרנתי - חס וחלילה לא נסיתי להשתמש בזה על האוטו שלי - אבל זה היה לי מרגיש טיפה לראות איך עובד MobilEye, נגיד . . .
- זה פרויקט Open Source שהמטרה שלו זה אלגוריתמיקה וטכנולוגיה - כמו לקחת נתיבים ולשמור על רכב בנתיב ולעשות איזשהו Cruise Control חכם
- אז למי שזה מעניין ומסקרן, או אולי שימושי - שווה להסתכל.
- אייטם הבא שגם היה לי מאוד מסקרן לקרוא ולראות - זה נקרא livego, שזה live video streaming server in Go
- (אלון) מה?! Live-Rust אמרת?
- (דותן) לא, Go . . . השפה Go . . .
- אז למי שרוצה לדעת ולראות וללמוד איך עושים Video Streaming ב-Go, אז מוזמן.
- ועכשיו שני אייטמים של חפירה, שאני חייב להתנצל מראש כי הם כבדים מאוד . . . אבל
- א’ - אני שמח להעמיס עליכם מעמסה פסיכולוגית, שתחלקו את זה איתי
- ו-ב’ - יכול להיות שזה יהיה שימושי למישהו
- אז יש איזשהו קונספט שהולך ומתפתח בעולם של Security שעוסק באיך לאבטח Supply Chain, שרשרת אספקה.
- בעצם, הרעיון הוא לקחת הרבה רעיונות מהעולם “האמיתי”, הפיזי - מפעל, ואיך מפעל מייצר, לא יודע . . . iPhone, או איך מפעל מייצר פיצה מוקפאית - ולנסות להבין איך זה קורה בצורה בטוחה
- לקחת משם, ולייצר את המודל של ה-”Software Factory”
- כשאתה חושב על הפקת תוכנה כעל Software Factory, כשבתוך מפעל אתה חווה Hand-Offs של שרשרת אספקה, מקבל חלק מהחומרים מבחוץ, מייצר חלק בתוך המפעל וכו’ - ואתה חושב איך לאבטח את זה.
- אז בעצם קם איזשהו Committee או קבוצת עבודה, שהתפקיד שלה זה לחשוב על כל הדבר הזה ולייצר סטנדרטים.
- (רן) בוא רגע ניתן דוגמא, דותן - אז כשאני מדבר על שרשרת אספקה, נגיד אתה מדבר על ספריות קוד פתוח, על כלי CI . . . מה עוד קיים בשרשרת אספקה?
- (דותן) אז זהו, האמת שזו שאלה ממש טובה, כי זה חלק מה”כובד” של הנושא הזה.
- פה ספציפית מדובר . . . דרך אגב, אחד מהראשונים שיישמו את המודל האידאלי, אידאליסטי, הזה זה בעצם DataDog
- כש-DataDog מייצרים Agent, בעצם זה ה . . . אם הם היו מפעל, הם היו בעצם Producing Agents
- ול-Agent הזה - יש לו המון תחנות בתוך החברה של DataDog, בין אם זה החבר’ה שכותבים את הקוד, בין אם זה החבר’ה שכותבים את ה-Plug-ins, כי ה-Agent הזה בעצם אחראי לקחת נתונים מכל מיני טכנולוגיות שונות ומשונות שיש לך בארגון, עד החבר’ה שאורזים את זה וחותמים את זה ובעצם מאחסנים את זה ומדלברים (Deliver) את זה . . .
- (רן) בעצם, זאת אומרת שה-Agent הזה הוא Extensible - זאת אומרת שאם אני יוצר איזושהי מערכת Monitoring או מערכת Logging, אני יכול לכתוב Plug-In ל-Agent, כדי שיבין את הפורמט שלי, ואחר כך ייצא את זה החוצה
- זאת אומרת שקוד של צד שלישי או רביעי אולי אפילו נמצא אצלי ב-Data Center . . .
- (דותן) כן - כשכל הצדדים הם בעצם חלק מהארגון,
- ועכשיו אני אוהב לתת את הדוגמא של “נגיד ומישהו משלם לך” . . . אתה חלק מהארגון, אבל מישהו משלם לך סכום מאוד יפה, ב-Bitcoin, כדי להחליף את הקוד . . .
- בוא נדבר רגע על אנשים שהם, לא נקרא לזה . . הם Tainted, מזייפים, והייתה רוצה למנוע - או לגלות או למנוע או לעשות Traceability - להגיע לבנאדם ששילמו לו כדי להחליף חלק, סתם לקחתי עכשיו דוגמא מאוד פרועה, למרות שהיא יכולה להיות אמיתית והיא כבר קרתה, נגיד ב-Twitter
- [וד”ש ל-SolarWinds?]
- אז פה אתה מדבר על “איך אני מייצר איזשהו Framework או Process, שגורם לכל הדברים הרעים האלה לא לקרות”.
- אז יש Process שעבדו עליו וכתבו Draft, הכל ממש בחיתולים עכשיו - יש Framework שנקרא In-Toto - אין לי מושג למה השם הזה, לא יודע וגם לא טרחתי לבדוק . . .
- זה Framework ב-Python, שהוא Reference-Implementation של המודל של Software Factory
- זאת אומרת שאם יש לך חברה מורכבת, שמייצרת מוצר מורכב כמו DataDog וגדולה כמו DataDog, אז אתה צריך פתרון כזה
- וכדי להיות ממש Buller-Proof, אתה יכול לקחת את ה-In-Toto הזה
- יש לא מעט לבנות, לא מעט דבק - כי זה עדיין בחיתולים - ולייצר פתרון.
- יש ל-DataDog מאמר ענק על איך הם עשו את זה
- נושא מאוד מאוד כבד, אבל יכול להיות שמעניין לחלק מהאנשים.
- (רן) ו-In-Toto זו בעצם יוזמה שלהם? זה איזשהו Brand שלהם?
- (דותן) נכון - זה בעצם מישהו שבנה את זה, יש Committee ב-CNCF שעובד על הנושא הזה, ממש נפגש פעם-פעמיים שבוע . . .
- התהליך, נראה לי, מאוד מאוד ארוך, עם שחקנים כמו Apple ו-Google וכו’
- יותר בקטן, אם אני אנסה רגע לפרוט את זה לדברים, ככה, יותר מעשיים - יש מה שנקרא the update framework - שזה חלק אחד קטן בתוך הסיפור הזה של Supply Chain
- הוא בא לפתור גם . . זה גם Spec, גם סטנדרט וגם כלי - בא לטפל בבעיה של איך עושים Update Secured
- יש לא מעט תקיפות ב-Updates של מוצרים - למשל, אם היום אנחנו מעדכנים Chrome, יש פה איזשהו Trust בין ה-Chrome שלנו לבין ה-Server ששולח את העדכונים
- אם מישהו משתלט על ה-Server ששולח את העדכונים, הוא יכול או לשלוח עדכון, נקרא לזה, עם Malware בפנים, הכי פשוט, או לעשות סוג של Denial of Service - לשלוח עדכון בעתיד, או לקחת עדכון מהעבר שהייתה בו פרצת אבטחה מאוד קשה - ופשוט לתת לך אותו שוב פעם, כדי שתיהיה לך שוב פעם את פרצת האבטחה.
- יש כל מיני טקטיקות כאלה, מהלכי שחמט כאלה, שה-Update Framework מונע אותן
- כך שבעצם זה גם כלי וגם Reference Implementation.
- והדבר האחרון בשרשת הזו - No Pattern Intended . . . - זה לדבר קצת על מה שקרה ב-Codecov
- למי שמכיר - הייתה פרצה די מזוויעה ב-Codecov - שזה Coverage SaaS, אפשר להגיד
- הדרך שבא אתה משתמש במוצר זה שהם נותנים לך שורה אחת שאתה צריך לשים ב-CI שלך והשורה הזו זה Curl של Bash - והרצה עיוורת של ה-Script הזה
- אז ההרצה העיוורת היא בעצם הפתח לגנב - ובא מישהו ל-Codecov, שינה את ה-Script הזה - ותחשוב שיש להם אלפי . . . או מספר גדול - של לקוחות, ובן לילה יש לך גישה לכל ה-CI של כל הלקוחות
- וב-CI יש קוד רגיש - יש מפתחות, יש Secrets, יש את כל הדברים היפים האלה . . .
- וזה בדיוק מה שקרה ב-Codecov
- הם עדיין מלקקים את הפצעים . . .
- יש כמה חברות ישראליות שנפגעו מזה, כולל כמה חברות גדולות בארה”ב
- עדיין חוקרים את זה, אבל ה-Bottom line הוא שזה Attack של Supply Chain - רק שבעצם זה הלינק האחרון ב-Supply Chain שנפגע
- מישהו בא, הלך ל-Codecov, שינה את החלק האחרון הזה - והמון חברות שצורכות את המוצר שלהם נפגעו.
- אז כתבתי על זה מאמר, עם מה שצריך לעשות, מה הבעיה ואיך אפשר להתמגן מפני הבעיה.
- (רן) דרך אגב - התוקף, סתם, לא שזה כזה משנה - אבל התוקף הוא מתוך החברה? או שהחברה עצמה, Codecov, הותקפה?
- (דותן) כרגע מה שפורסם רשמית זה שזה מחוץ לחברה - מה שאומר שהייתה צריכה להיות פרצה אחרת, התחלתית . . .
- אבל זה לא באמת משנה, כי . . . אנחנו בעולם סופר-מוזר, שמישהו יכול לקבל כסף ב-Bitcoin ולעשות את ה-”Perfect Crime” מתוך החברה . . . [ד”ש לאדוארד נורטון?]
- לא שזה קורה הרבה [איך אתה יודע? . . . ], אבל זו אפשרות
- (רן) כן . . . נכון, זה לא משנה, סתם מתוך סקרנות - זה יכול להיות מישהו מבפנים וזה יכול להיות מישהו מבחוץ, אבל צריך לצאת מתוך נקודת הנחה שזה יקרה, איכשהו - ואתה צריך לחשוב איך להגן על עצמך.
- (דותן) כן, אז יש לנו מכתב למערכת שהגיע אלינו [מה-90s?]
- (אלון) הגיע בגלויה? איך הוא הגיע? . . .
- (דותן) כן, הגיע בגלויה, לכתובת שלנו [משאל מאזינים על מי יודע מה זו גלויה או ראה כזו פעם?] - וכתוב שם כך:
- “שלום חברים וחברות, רציתי לדעת מה זה Slackware-3.2? כמה דיסקטים אני צריך כדי להוריד את המוצר הזה ואיזה Linux Kernel יש שם?” . . .
- (רן) לקח לו הרבה זמן להגיע, למכתב הזה . . . מה, הוא נשלח דרך רשות הדואר הישראלית?
- (דותן) כנראה . . . כתוב פה “בתודה, זוהר”
- [זוהר?!]
- אז עבדנו קשה, בעצם - כל אחד מאיתנו קיבל משימה, והשגנו את התשובות.
- אז Slackware-3.2 נולד ב-1997, ובזמן הזה היה צריך 24 Floppies של 1.4Mb . . . מישהו זוכר?
- וה-Linux Kernel היה 1-נקודה-משהו . . . זה עדיין תחת ויכוח, עדיין צריכים לחקור טיפה - אבל זה היה ה-Linux Kernel
- מקווה שעזרנו, למי שרוצה להשתמש ב-Slackware-3.2, וכמובן - לקחת את זה ל-Production, כמו שצריך.
- (רן) אז זוהר - אפשר לנסוע עם הדיסקטים שלך ל-Production ולהתקין על שרתים . . .
- (דותן) כן, צריך לקחת Floppy לשרתים, לבקש מ-Amazon רשות להיכנס לחווה ולשים Floppy, דיסקט אחרי דיסקט, לשים ולהתקין . . . קל, לא קשה.
- (רן) בטוח יש איזה רובוט שעושה את זה, מחליף לך את הדיסקטים . . .
- [ברור, זה AWS, יש פשוט מתחרה להם בשירות של Snowball . . .]
טוב, והאייטם האחרון להיום - מצחיקולים! אלון . . .
- (אלון) כן - אז נתקלתי באתר שנקרא kometbomb - הבחור הזה עושה משחקי רטרו, אבל מה שמעניין פה, ושמתי לינק לזה, זה ש-Zen Pong הוא כל כך קצר, שהוא עשה לו Twit . . .
- הוא שם ב-Twitter את הקוד שמריץ אותו, ככה אגב הגעתי אליו - הוא פרסם Twit עם “הנה המשחק, זה כל הקוד”, וזה היה ממש משעשע
- ואז גיליתי שהוא עושה עוד הרבה דברים חמודים חוץ מלדחוף משחקים לתוך Twit, כאילו - זה התחביב שלו . . .
- (דותן) ממש אדיר . . . יש פה אחד שממש אהבתי, שזה ה -Gravity . . . הוא קרא לזה Gravitus Minus
- זה משחק שכאילו . . . הסוג הזה של המשחקים של ה-Gravity Flyers האלה . . . הייתי משחק בהם כל הילדות שלי בערך, מדהים . . .
- (אלון) כן, אז יש פה משחקים שצריך לעשות להם Download, כי הם ב-C, אבל יש כאלה שאפשר להריץ ב-Browser
- כל אלה של “לשבור את הקירות” ו”פינג-פונגים” וכאלה
- גם ה-Breakout 280, שזה “Popcorn” נקרא אחרי זה, בגרסאות אחרי זה - שיש לך למטה כזה שאתה זורק כדור . . .
- אז גם הוא נכנס ל-Twit, הקוד שלו . . .
- זה ממש משעשע - חוץ מזה שהוא כותב משחקי רטרו, הוא גם מצליח לדחוס אותם כל כך קטן שהוא מצליח לדחוף אותם לתוך Twit
- זה מהפנט . . . מה שהוא עשה פה זה, כאילו, אוצר מדהים של משחקי רטרו, וזה בכלל . . .
- חלקם רצים ב-Browser, והקוד שלהם כל כך קצר שזה לא להאמין . . . לא נתפס.
- (דותן) קודם כל, זה נראה כאילו . . . לא בדקתי, אבל אולי הכל חינם?
- (אלון) כן, אני חושב שהכל חינם, הוא רק רוצה Follow . . .
- (דותן) . . . יש פה . . . מה שעוד אהבתי, שזה גם רטרו - אתם זוכרים שפעם היינו קונים משחקים כאלה - King's Quest וכל הדברים האלה - והייתה את החוברת של המשחק? שהיית מתעמק בחוברת, כי לא היה שום דבר אחר, לא היה אינטרנט . . .
- אז הוא עשה גם כזה - הוא עשה PDF עם הספר של המשחק . . . מדהים . . .
- (אלון) בקיצור - בחור ממש רציני . . . אז זהו, מוזמנים לעקוב אחריו
- זהו . . . משעשע מאוד, שווה להסתכל ולהתפעל.
- (רן) מסתכל לפחות על Gravity, שב-Download יש ל-Linux ויש ל-Windows, אבל אין ל-Mac, לדעתי . . .
- (אלון) כן - הוא לא עושה ל-Mac, זה Linux ו-Windows . . . אבל דותן הראה לנו איך ב-Windows הוא מריץ Linux וב-Linux מריץ Windows וככה הוא מריץ הכל וככה הוא יכול מכל מקום להריץ כל דבר - בפעם שעברה . . .
- אז אין שום בעיה, הוא יכול לשחק בהכל . . .
- (דותן) שמע, זה נראה . . . אני ככה עושה Stocking לבנאדם -
- אז קוראים לו Tero Lindeman, ונראה שאת המשחקים שלו הוא בונה ב-Pico-8, שזה אותו Virtual Machine כזה שהוא ערכת “צור-משחק”, שאחד מהדברים החזקים שלה זה שזה מלא הגבלות . . .
- יש לך רק . . . לא-זוכר-כמה-Kb של זכרון, ויש לך רק איזה כמה . . . מספר-מוגבל-של-צבעים ואת ה-Coding אתה עושה בפנים . . . מאוד-מאוד מאתגר . . . מגניב.
- (רן) טוב, נחמד, שעשוע . . .
טוב - אז כאן אנחנו מסיימים להיום.
לפני סיום - נתזכר שה-Call For Papers ל-Reversim Summit 2021 נפתח - צריך להיות פתוח ברגעים אלה [נבואה . . . ] - הוא פתוח לתקופה של בערך חודש [עד ה-15 ביולי בחצות], אז תלוי מתי אתם שומעים את הפרק . . .
הכנס עצמו מתוכנן לסוף דצמבר - אז כבר תתכוננו נפשית, הסיפור הזה הולך להיות מהמם, ככה אני מקווה . . .
(אלון) אני בטוח - לא צריך לקוות . . . תאמין בעצמך! יהיה מהמם , בואו בהמוניכם!
הקובץ נמצא כאן, האזנה נעימה ותודה רבה לעופר פורר על התמלול
אין תגובות:
הוסף רשומת תגובה