יום חמישי, 15 באוגוסט 2019

375 Bumpers 60

פרק מספר 60 (!) של באמפרס (375 סוג-של-קוסמי למניין רברס עם פלטפורמה) - רן, אלון, ודותן שוברים את האינטרנט (AKA סקירה של טכנלוגיות ודברים מעניינים מהזמן האחרון)
הרבה מצחיקים היום, תשארו לסוף - יהיה נחמד (יהיה נחמד גם קודם, זה בסדר).


רן - 
  • קומודור 64 (Commodore 64) - מי זוכר? 
  • והפעם באמת מעונב - GitHub Repo בשם Awesome Scalability:
    • רשימה ממש (ממש) ארוכה (אבל באמת) של וידאו, מאמרים, בלוגים, Whitepapers ועוד - שעוסקים ב - Scalability  מכל הכיוונים - System Sociability וגם Teams וכו’
    • יש המון, וממה שרן קרא (Uber, Spotify, Google) - נראה ממש טוב ומאוד מומלץ
    • לא רק טכני - יש כמובן Load Balancing, Big Data וכו’, אבל גם מהכיוון של HR, מוצר וכיוונים אחרים
    • למי שיש שנה פנויה - מומלץ לקרוא הכל. אם לא - תבחרו מה שמעניין אתכם.
    • יש גם הרבה וידאו בסוף - לפחות-מיטיבי-לכת (רמז - וידאו אפשר להריץ ב - x2 . . .)
  • מכירים את הספר The Pragmatic Programmer
    • ספר שיצא לאור לפני משהו כמו 20 שנה (סוף 1999. כן, עברו 20 שנה face screaming in fear ), והיה (ועדיין) מאוד טוב ומאוד פופלארי
    • החדשות - (לא) יצאה מהדורה שנייה ומחודשת מאת אותם שלושה מחברים
  • יואל מרחובות! זאת אומרת - Joel Spolsky (קראתם Joel on Software? עשיתם Copy-Paste מ StackOverflow? בורד ב - Trello? אקסל? FogBugz? אז כל זה, ועוד)
    • פעם היה כותב הרבה (ונהדר), לא עושה את זה הרבה לאחרונה וגם לא כל כך מתראיין הרבה - אז כאן יש ראיון יחסית נדיר איתו ב - SE Radio
      • הוא כן מרצה ועושה Public speaking (כאלה) מדי פעם, אבל אין הרבה כתיבה וראיונות שלו Online מהשנים האחרונות
      • הפודקאסט של Software Engineering Radio טוב באופן כללי, ועוסק לרוב בעיקר בטכנולוגיה, כשבראיון הזה יש גם הרבה על יזמות ועולם המפתחים באופן כללי.
      • פרק טוב, וכיף לשמוע את Joel מסביר בצורה ברורה ויפה. האזנה מומלצת.
  • ועוד פודקסט מה - Changelog - פרק מעניין שמתכתב עם נושאים שעלו כאן בזמן אחרון - שיחה עם Adam Jacob
    • אדם (Twitter, GitHub) הוא אחד המייסדים וה-  CTO של Chef (שבעבר נקראה Opscode)
    • נמצא בעולם ה - Open source הרבה זמן, ופחות או יותר אומר (הנה זה בא) - “זה לא מודל עסקי טוב, בשבילי לפחות, לא מתאים לי, ביי” . . . 
    • הוא עדיין מגיע מאוד מתוך העולם הזה, ומנסה לנתח איפה מדובר בעייפות אישית שלו ואיפה מדובר במאפיינים מובנים בעולם הקוד הפתוח.
    • מתכתב עם נושאים שעלו אצלנו בפודקאסט, בעיקר סביב המוצרים של AWS וחברות אחרות, שלקחו מוצרי Open Source והפכו למוצרים שלהם
    • הכי חשוב - האם נתן לנו קרדיט על העלאת הנושא (פרק 365 הקוסמי עם נתי שלום על Open source Politics) לפני חודשיים (נו, ארבעה)?! ודאי, וספציפית לאלון מישראל (בטח פשוט ירד בעריכה או משהו, נחליק לו את זה הפעם).
  • עוד פרק בהימור המתמשך שלנו על Rust vs. Go - אז כמה חדשות בתחום:
    • גוף של מיקרוסופט בשם Microsoft Security Response Center ממליצים להשתמש ב - Rust
      • זה לא ”כל” מיקרוסופט (אלא “רק” Microsoft Security Response Center), אבל החלק שמתרכז מן הסתם ב - Security
      • ממליצים בגלל ה - Security Features של השפה
      • מעניין, כיוון שגם מיקרוסופט מושקעת המון ב - Go: מבחינת כלי מפתחים, Services וכו’ - ועדיין המלצה חד משמעית (לפחות מטעם החלק הזה בחברה) לכתיבה של Features ב - Rust.
      • לא בטוח שזו השוואה הוגנת לעומת Go, כי הייתם כותבים את זה בכלל ב - ++C ואז הם מעדיפים את Rust, אבל זו עוד איזושהי גושפנקא משמעותית ל - Rust.
      • אז מתי Rust.Net? השאלה באמת עלתה (האם זה #R או משהו בסגנון), נראה . . 
    • ועוד בנושא - מפתח עצמאי (לא קשור למיקרוסופט) שכתב בלוג עם השוואה בין Python, Go, and Rust
      • כתב ספריה שעושה השוואה בין תמונות - במקור ב-Python, ואז לאחר כמה זמן שוב ב-Go ואז לפני שנה שוב - ב-Rust
      • זה רק בהקשר של הפרויקט הזה וכו’, ועדיין עם מסקנות
      • אמ;לק - Python זו שפת האם שלי, מכיר ויודע וכמתפתח בודד כנראה שאת רוב הפרויקטים הבאים אעשה איתה”; “אבל בצוות יותר גדול, או אם יש שיקולי Performance למשל - יכול להיות שווה לשקול דברים אחרים, כמו Go - מאוד זרם, קל ללמוד, שפה מינימליסטית, הספרייה די טובה לפחות בהקשר של Image Processing ולא נדרשתי לעוד דברים חיצוניים,”; ואז - “ל-Rust צריך סבלנות (דותן כבר אמר), זה לא כמו Go - קודם כל צריך לקרוא כמה פרקים מהספר על Rust, אי אפשר פשוט לצלול - שפה מאוד חזקה אבל דורשת לימוד מקדים, אבל כשכבר נכנסתם - מאוד מהנה”.
      • אם הוא היה עושה פרויקט כזה מחדש - היה הולך על Rust, בעיקר בגלל ה”עושר” של השפה, יכולת הביטוי (לא הזכיר אבל כנראה שגם מבחינת ביצועים) - והכלים (בעיקר הקומפיילר שמאוד עזר).
      • בסוף כן מציג את עניין ה - Performance, אבל לא כנקודת החלטה (אחרת בטח היה הולך על Python - הכי מהיר, מלמטה).
  • חברת weaveworks עוסקת ב - Infrastructure, עם כמה מוצרים סביב K8s ו-Containers - ועכשיו הוציאו מוצר חדש בשם Ignite
    • זה בעצם MicroVM שמשתמש ב - Firecracker 
      • מעיין VM של AWS, שכתוב ב - Rust, ככה יצא . . .
      • הטכנולוגיה שמאחורי AWS Lambda ו - Fargate
    • מאוד Lightweight אבל עם כל הפיצ’רים וה - Security של VM (בניגוד ל - Containers) - ועושה Bootstrap מאוד מהר (סדר גודל של מאות ms), וגם שוקל מעט מאוד
    • מה שעשו ב weaveworks עם Ignite זה להגיד שאמנם ביצועים של Firecracker טובים, אבל חווית השימוש לא משהו - אז ננסה לקחת את חוויית השימוש של Docker (עם Build, Run וכו’) וניתן אותה מעל FireCracker . . .
      • זו מעיין שכבה שנותנת Usability דומה ל-Docker מעל Firecracker - פקודות דומות (בגדול להחליף Docker ב - Ignite וזו אותה חוויית משתמש).
    • שילוב מעניין - עדיין צעיר, אבל מאפשר Security Features של VM עם Usability ו”זריזות” של Container.
    • מעבר לזה - זה גם Aligned - יכול לרוץ על K8s? כן - מתאים לסטנדרט של OCI - Open Container Initiative.
      • לא בטוח שתפור עד הסוף עם K8s, אבל לגמרי יכול להגיע לשם
      • מגניב - בעצם מקבלים Lambda על K8s . . . מרווחיםי מכל העולמות, לא רק usability אלא תאימות, ואפשר כעקרון להריץ Nodes עם Ignite ו Nodes עם Docker. התפתחות מעניינת.
  • בלוג-פוסט מהצד העסקי, שמתאר את שוק העננים (Cloud Providers) - והשליטה המרשימה (עד כדי מפתיעה?) של AWS:
דותן - 
  • נמשיך בקו של Rust - אז Facebook מתכננים להוציא מטבע קריפטו בשם Libra, וכחלק מזה הם היו צריכים להופיע בפני הסאנט לשימוע.
    • מה שמפתיע בוידאו של זה הוא שהם מופיעים בפני סנאטור שמשבית אותם, טכנולוגית.
    • הסנאטור יושב מול Git ומנתח נתונים על committers ושואל על ארץ המקור, ואיך ניתן להבטיח שה - Committers מגיעים מארצות לא-עויינות, וממשיך בשאלות טכניות על Git ועל Rust, ולמה רצים על Nightly במקום על Stable . . . 
    • חמש דקות של וידאו שהשפיעו - פייסבוק הודיעו לאחר מכן שהם שוקלים את הגישה מחדש, מה שדי מפתיע בתור תוצאה של כזה שימוע. יהיה מפתיע אם הם ירדו בגלל זה מ - Rust, אבל אולי יעברו ל - Stable?
  • למי שמכיר את TechEmpower (מופיעים אצלנו פעם-פעמיים בשנה) - עושים Benchmarks עבור שלל Frameworks, ומנסים להבין מי הכי מהיר
    • עם השנים פיתחו מתודולוגיה להשוואה על חומרה יציבה וכו’, ולאורך השנה מפתחים מוסיפים ומשפרים וזה הפך למשהו מאוד “דמוקרטי ונכון”.
    • ה - Benchmark האחרון מראה ש(תופים!) Rust עלה לפסגה
      • לפני כן זה היה ++C ו- C ו - Java שהיו שולטים - מעבר מאוד מעניין.
    • דותן מוסיף שה - Frameworks ל - API ב - Rust זה עולם שעדיין “לא לגמרי אפוי” - זה עדיין בשלב התחלתי, ו - Rust כבר מנצחת. יש עוד מקום לשיפור . . .
    • אז אפשר לסגור את ההתערבות מלפני שבע שנים, על Go vs. Rust? לא . . . יש עוד נקודה לא סגורה: מי מממן ומוביל את Rust? 
    • בוא נדבר על זה - 
      • אחד היתרונות הגדולים של Go הוא שיש את Google מאחוריה, עם צוות פיתוח רציני והם משקיעים המון בשפה וב - Ecosystem, מה שנותן ביטחון
      • מצד שני - זה Google, ואם אתה חברה שמתחרה ב - Google (מעניין מה ה Crawler שלהם יעשה כשהוא יקרה את המשפט הזה), או אפילו (השם ישמור) יש לך אינטרסים אחרים ורוצה לפתח את השפה לכיוון אחר (למשל - Performance על חשבון Usability וכו’) - אין לך מילה בעניין (וגם אם תחפש - לא תמצא).
      • אז עצם זה שיש חברה אחת שנותנת Sponsorship לשפה זה נחמד - אבל זה מגיע עם מחיר של היעדר שליטה על כיוון ההתפתחות שלה. לא Clear Cut . . 
      • למשל - Python: התפתחה במודל יחסית דמוקרטי, אעפ”י שהיה לה דיקטטור-נאור לאורך השנים עד  שעזב (גם אז זה חצי-נראה כמו אייטם של 1 באפריל, ובמקרה אותו דיקטטור-נאור העביר הרבה משנותיו בגוגל…) - עדיין השפה התפתחה בצורה יחסית דמוקרטי, וזה עשה מאוד טוב לפופולאריות שלה ומאוד רע לשפה עצמה ול - Frameworks
        • בגדול - השפה היא בלגאן אחד גדול… מאוד (מאוד) עשירה, יש בה שתי גרסאות דומיננטיות, ובגדול הבסיס של השפה לכתיבה הוא מאוד בעייתי לכתיבת Tools. שוב - טוב לפופולאריות ,רק ל - Infrastructure.
      • אנחנו לא יודעים מה זה יעשה ל - Rust (אם וכאשר . . .)
      • רואים ש - Rust היא שפה מאוד טובה, שבאיטיות-אבל-בעקביות הופכת להיות השפה המועדפת עלי (דותן) - יכול לדמיין שאני עושה עם זה הכל - כי זו השפה היחידה שיכולה וכמעט אין לה חסרונות במובן הזה.
      • ברמה היומיומית - יש לשפה 4-5 מפתחים שבאמת מובילים אותה (רואים את זה ב - Commits וב - Issues), שאיכשהו רובם באים מ - Mozilla כמעיין Contractors, ורואים גם לא מעט חברות שמאמצות את השפה לאיזורים קריטיים בתשתיות שלהם (שזה סימן טוב, כמשהו מאוד יציב שאפשר לבנות עליו) 
        • ועדיין הייתי שמח אם היה יותר “כוח אש” של פיתוח ומפתחים מאחורי זה, או איזשהו תקציב שאפשר “לראות בעיניים” שחברות מקציאות - מספר Committers קבועים מ - Microsoft וכמה קבועים מ  -Google זה משהו שהיה משמח אותי יותר.
        • ועדיין - לא מתלונן. השפה מתקדמת בצורה מאוד יציבה, כמעט כל שבוע “עושה update מה - Nightly” ומקבל Boost Performance ועוד המון דברים טובים - בשלב הזה הכל ממש טוב, רק רוצה שזה ימשיך.
      • (אלון) אצל AWS זה כבר בתשתית של ה - Lambda, והם בכל זאת אלה שמכוונים את העתיד של ה - Cloud (ראה אייטם בתחילת השיחה…) - זה ממש ב - Core של AWS, כך שעושה רושם ש - Rust כאן כדי להישאר. אולי ישכתבו את התשתיות, אבל כרגע זה נראה ששכתוב התשתיות האחרון נעשה עם Rust . . .
      • אני (דותן) מאוד בונה על Facebook - כבר ראיתי ב - Reddit (מרענן את האתר שלוש-ארבע פעמים ביום כי דברים ב - Rust מתפתחים מאוד מהר…), ורואים אנשים מ - Facebook שמספרים שהם רואים את הפערים ב - Tools, ו - Facebook היא חברה שאוהבת להשקיע ב - Developers Experience - והם רוצים לסגור את הפערים האלה תוך כדי הפיתוח של המטבע שלהם (זוכרים שבזה התחיל האייטם? דותן אשכרה הצליח לסגור את הסוגריים האלה…) - אני מדמיין שעד סוף שנה או תחילת השנה הבאה “העולם יהיה שונה” מבחינת Developers’ Experience ב - Rust, וזה יהיה תודות לפייסבוק. אם זה יקרה אני אהיה מאוד שמח, ואפשר כבר יהיה להכריז מי ניצח בהתערבות (הסוגריים האלה פתוחים כבר כמה שנים).
  • האייטם הבא - Spreadsheet ענק עם משהו כמו 150 וריאנטים שונים של Kubernetes . . .
    • גם זה נושא שאפשר לפתח פילוסופית (כי מזמן לא היה) - אני (דותן) מהמר, ואפשר לקבוע הימור חדש (כי זה של Rust vs. Go מראה סימני התכנסות), שיש סיכוי שנראה עם Kubernetes עוד סיפור של Fragmentation של השוק - 
      • יש כאן משהו כמו 150 וריאנטים, וזו תשתית מאוד פתוחה ואג’ילית וגמישה - לא שולל מצב בו שעוד שנה-שנתיים (הזמן מתחיל לרוץ ע-כשיו) נראה IBM Kubernetes ו - Google Kubernetes - ממש Flavors, כמו שיש Flavors של Linux ושל JVM וכן הלאה - שתואמים במידה מסויימת אבל גם מאוד שונים במידה אחרת. 
      • (רן) זה קיים כבר היום - כשאתה הולך ל GKE אתה מקבל מוצר שונה לעומת AKS  או EKS (של Microsoft ושל AWS). . . נכון שבסיס הפקודות הן אותן פקודות, אבל ה - Load Balancers שונים, ה - Attributes שונים וכו’. כך שזה כבר קורה היום - אתה (דותן) אומר שזה הולך להיות הרבה יותר קיצוני?
      • אותי (דותן) הרבה יותר מעניין הנקודות של ה - “Extensibility” של Kubernetes - הכלי בגדול בנוי כך שתוכל להרחיב אותו “איך שאתה רוצה” ולהוסיף לו יכולות - כל הסיפור בנוי ככה - יש API Groups ו - CRDs וכך הלאה - אני מדמיין עתיד שבו יש Core שכולם מסתכימים עליו, והיתר מסביב מאוד שונה, כמו  Schedulers שונים לגמרי שצריך לזכור איך הם עובדים כדי להיות מסוגל לעבור מהפצה (Distribution) אחת לאחרת - עולם שקצת מפחיד אותי, אבל אני חושב שזה נובע מתשתית שהיא מאוד גמישה (Flexibility) בשלב מאוד התחלתי.
      • (רן) האם לא זו הייתה כוונת המשורר (מלכתחילה)? כנראה שכן . . . איך מגיעים לשליטה עולמית (פינקי) - אם פלטרפורמה אחת אחידה או עם פלטרפורמה אג’ילית? אני לא בא בתור מי שהגיע לשליטה עולמית (עדיין?), אלא מנסה לדמיין איך נראו הדיונים, ואני מניח שההחלטה לעשות את זה מאוד אג’ילי וגמיש ו- Extensible - חלק מהמוטיבציה הייתה "אנחנו רוצים לקבל כמה שיותר Footprint, על חשבון אחידות”, אז אני מניח שזה לא היה מקרי.
      • אותי (דותן) זה מפחיד - תפתח למשל Documentation של Kubernetes, תקרא - והמון ממנה יהיה חסר לך לעומת ה - Distribution הקונקרטי שאתה עובד עליו, או שהמון יהיה לא-רלוונטי או שונה - ואז אמנם יש לך את ה - Basics של Kubernetes (נגיד Pods, Deployments וכו’), אבל התכלס - הפרטים הקטנים (והשטן איתם) - יהיו שונים מהפצה להפצה.
      • (רן) מזכיר את השיחה מלפני חודש-חודשיים (שלושה), על מישהו שהשווה את המאבק בין AWS ל Kubernetes למאבק בין Linux ו - Windows - עם AWS כפלטפורמה הסגורה-אך-עקבית (Consistent) לעומת Kubernetes כפלטפורמה פתוחה-אך מפוצלת (Fragmented) - ההשוואה במקום.
    • אז תכלס - מי שרוצה מוזמן לנסות כ-150 הפצות שונות (כן, זה עדיין אותו האייטם) - ולטעום מהעתיד (או שלא?). בהצלחה (או שלא?).
    • אתם (אצל דותן) בחברה עובדים עם Kubernetes עכשיו? עוד לא - נכנסים (Every software company. Ever.).
  • עוד אייטם - TensorFlow Data Validation
    • הכלי / ספרייה (ראשונית) הזו שייכת לחבילה יותר גדולה בשם TFX - איך ש- TensorFlow מריץ את ה - Pipeline שלו (TensorFlow Extended) - זה בעצם Machine Learning Pipeline in a Box . . .
    • חילקו את זה לכל מיני silos שנמצאים ב - Pipeline הזה - ואחד מהם הוא TensorFlow Data Validation
    • אז מה זה עושה? נותנים לו קצת דאטה (או הרבה - זה לא באמת חשוב, אין בפנים “באמת” TensorFlow “אמיתי” ולא באמת צריך לאמן משהו - זו ספרייה “קלאסית” שעובדת על דאטה ומנסה להבין אותו …).
    • ברגע שמכניסים את הדאטה - זה ינסה להראות את הערכים החסרים (מה שכואב לכל מי שאי פעם קודד ידנית) - איפה יש “0” ואיפה NULL? מה היחס (%) של כל אחד מהם? - מאפשר להעביר את הדאטה דרך כמה מסננים ולהבין מהם “הדברים הרעים שמתחבאים בפנים”.
    • בנוסף - יש התפלגויות, כל מיני סטטיסטיקות, אחוזונים (Percentile), וכאלה
    • שוב - כלי התחלתי, אני (דותן) צופה לו עתיד מאוד טוב, ומהמר עליו בעולם של Data Quality, אם אתם מנסים לקחת את הדאטה שלכם ורוצים לעביר אותו דרך מעיין מסננת לפני שמשתמשים בו.
    • את כל הדברים הידניים שבדרך כלל עושים אפשר “לתפור” תחת ה Framework / Library / Tool הזה - שווה לנסות ולעקוב
      • די קל לנסות - לא דורש TPU או משהו כזה, הקשר ל - TensorFlow די מקרי
    • בנוסף - עוד מאמר קלאסי בשם Hidden Technical Debt in Machine Learning Systems של D. Sculley
      • מאמר מאוד מפורסם ודי ידוע, שמדבר על Machine Learning ועל הקשיים והאתגרים, ולוקח תמונה ומצייר את ה - Machine Learning כקובייה מאוד קטנה, כשמסביב יש את כל הסיפור של Feature Engineering ו - Data Cleansing ו - Data Quality וכו’
      • ככה אפשר לראות את הקובייה של Data Quality ואיך היא מתחברת, ואיך TensorFlow Data Validation יכול לעזור
      • חייב לציין TensorFlow Data Validation זה משהו שצמח בחצי שנה - שנה האחרונה - יש עוד כאלה (יש גם מאמר אחד של Amazon שמדבר על הנושא), אבל לא מצאתי תשתיות או שיח על Data Quality - נראה שזה מתפתח In the Open בשנה האחרונה או משהו כזה
    • (אלון) אייטם מההמשך-אבל-רלוונטי-עכשיו - אפשר להריץ TensorFlow 2 על Google Cloud Functions
      • מתחיל להיות יותר מעניין לעשות כל מיני דברים כאלה - בדיוק על פעולות ולידציה ונקיון וכל מיני דברים “מעניינים” כבר לא צריך להחזיק Clusters וכו’, אלא עכשיו עכשיו להחזיק את זה כ - Functions, ואני חושב שזה יכול להקפיץ את התחום הזה, וזה די מעניין
    • (דותן) אם לפתוח את זה קצת יותר - חלק מהמחקרים בנושא של Data Quality מנסים לקחת דברים שהיינו עושים בעולם של Hadoop (למשל) בצורה ידנית - ולתת להם שמות או Labels ולנסות לעשות אותם יותר מובנים (Structured).
      • למשל - יש דברים בעולם של Data Quality - למשל כשאתה חושב על טבלה: אם אני חושב על טבלה כ”ערימה של rows” אז אני יכול להריץ סטטיסטיקה, אבל אם אני מסתכל על שורה (row) אחת כעל Entity בודד  -אני כבר לא יכול להריץ סטטיסטיקה (כי יש לי רק יחידה אחת…).
      • מה שכן - אני יכול לעשות Scheme Validation -  על מה אנחנו מסתכלים ואילו Patterns אפשר להפעיל את ה - Data הזה על מנת להבין עד כמה הוא “איכותי”.
      • יש מחקרים שנולדים בשנה האחרונה סביב הדבר הזה, ומנסים ליצור איזושהי שפה משותפת - אפשר לקרוא לזה “Design Patterns” - על איך עושים Data Validation בהינתן מה שיש לך בידיים.
      • אז Cloud Functions בהחלט יכולים להיות מאוד שימושיים לזה - גם אם יש לך יחידה אחת (שהגיעה ב - Streaming?) וגם אם יש לך (למשל) 1000 שורות או משהו כזה (בעולם של Batch).
    • בכל אופן - מעניין לעקוב ולראות איך זה מפתח, שווה גם לעשות Watch על ה - Repo שלהם כי אני (דותן) רואה דברים שנוספים מיום ליום.
  • עוד כלי מבית TIMBER (שעושים Logs Collection למיניהם בתור SaaS) - הפעם זה VECTOR:
    • מה שמיוחד כאן זה שהכל כתוב ב - Rust (שוב מחזיר אותנו לענייני Performance).
    • מתחרה (כביכול) בכלי הזה הוא LOGSTASH (של Elastic) - מהצד השני של “זירת ה - Performance / Resource overhead”
      • נכתב במקור כ- JRuby שרץ על Java, ולאט לאט החליפו כל מיני חלקים - “Pure” Java)
      • כאן (VECTOR) אמרו “די” - ומימשו ב - Rust.
    • הניחוש של דותן - זה עובד הרבה יותר טוב, צורך פחות משאבים - ובאופן כללי נראה כמו תשתית יותר בטוחה לדברים כאלה.
    • מבחינת Benchmarks - ב- VECTOR מדובר על 76Mb/Sec בעוד ש- LOGSTASH על 3Mb/Sec . . .
    • יש באתר אוסף של Benchmarks שמוצגים מאוד יפה, מה שמאפשר להסתכל על ה - Throughput אבל גם על CPU או על Memory Consumption ואספקטים נוספים.
      • (רן) מעבר ל - LOGSTASH, שהוא אכן המתחרה העיקרי, יש עוד כמה מתחרים די קרובים כמו FILEBEAT (שמבחינת Performance הם די “ראש בראש”), וגם את המוצרים של - שהם גם לא רעים - אבל Proprietary.
    • ל - LOGSTASH יש את בעיות ה - Performance שלו, ואני (רן) בהחלט שוקל להחליף עם VECTOR (או לפחות לבחון את זה).
    • (דותן) צריך לחשוב מה רוצים לעשות . . . LOGSTASH הוא מעיין “אולר שוויצרי”, שאפשר כאילו לעשות איתו הכל, לעומת FILEBEAT שהוא “האולר-הפחות-שוויצרי”, יותר לכיוון “סכין קרבית” - מסתמך למשל על זה שאתה Logging כמו שצריך (אבל אתה לא…) וכו’, עם Sub-set די סביר של יכולות דומות ל-LOGSTASH
      • אם אתה מחפש משהו שממש יענה על כל הצרכים - כולל אלה שאתה לא מכיר עדיין - LOGSTASH הוא כנראה זה שיכול לעזור לך, כי אתה יכול פשוט לכתוב “מה שאתה רוצה”, בעוד FILEBEAT תואם לסט יותר מצומצם של use-cases.
      • כל זאת, כש - VECTOR (נושא האייטם, כזכור) לוקח את LOGSTASH ונותן לך תשובה על כל מה שאתה רוצה לעשות וגם על כל מה שאתה עדיין לא יודע שאתה רוצה לעשות.
    • בכל אופן - זה עולם נחמד, שבו אתה יכול פשוט לבוא ולבדוק Performance, כי זה משהו שאין לו State - פשוט לוקחים לוגים ומעבירים דרך הכלי ורואים מה קורה (באמת, עבור ה use-case הפרטי שלך).
  • עוד חדשות טובות - TC39 - הועידה של JavaScript שמתכנסת, חושבת אילו פיצ’רים יש להוסיף ל - JavaScript כל כמה זמן - ופיצ’ר מאוד פופולארי בשפות אחרות שנקרא Null-coalescing (“אופראטור נגד Null”) מתקדם מ - Stage 2 ל - Stage 3
    • זה אומר שאם למשל יש לכם Dictionary, ואתם רוצים “לחפור בו” (Property אחרי Property אחרי…) - אתם יכולים להוסיף “?” - והדבר הזה יגן עליכם מפני Null (!).
    • כלומר - אם  ל-Property הקודם יש Null, ואתם מנסים להיכנס אליו - לא תקבלו Exception, וזה רק יחזיר Null.
    • המשמעות של ההתקדמות ל  -Stage 2 היא ש TypeScript יכולה עכשיו להתחיל ולהכניס את זה לשפה
    • יש את זה בהרבה שפות, אולי ראיתם כבר ב - JavaScript דרך Lodash . . . 
      • יש Null-coalescing גם ב #C אבל לא כחלק מ - Property.
      • (אלון) ב - Ruby 2.5 זה כנראה מה שהרס את ה - Performance? כנראה שרן זוכר את זה משם . . . לקח 3 שנים להוסיף תו אחד ל - Syntax. מתי המהירות יורדת שוב כדי שיהיה אפשר להגביר x3?
    • חריגה קטנה - הספר Measure what Matters שמדבר (בין השאר) על ההחלטה של Google לשפר את ה - Performance של JavaScript: הציבו יעד של שיפור ה - Performance ל- x10 בתוך ארבעה חודשים.
      • אז כאן ל - Ruby לוקח כמה שנים לעשות x3 . . . כל שנה x1 גם עובד?
      • נשאיר את x10 לסוף הפודקאסט (Spoiler Alert).
  • עוד משהו - TypeScript 3.6 עובר לבטא
    • אין יותר מדי דברים מסעירים - בסימן ייצוב ושיפור מה שקיים. אנשים נראים יחסית שמחים מזה על פי התגובות
  • יש כבר וידאו מ - gophercon 19 (גם מRS19 יש . . .)
    • אחד המוצלחים הוא על Go 2.0 Roadmap ולאן זה הולך
    • יש גם אייטם על Generics (האם זה יהרוס את השפה?)
    • (רן) יש פרק שלם של Go Time (פודקאסט על Go…), שבו הם מדברים על Try (ועל זה שזה לא התקבל) - שווה ולו בשביל הכותרת if err != nil
      • אם מישהו מחפש חפירות - בואו בהמוניכם
    • נראה שזה שלב  Pivotal בחיים של השפה - יש את ההצעה על Try שלא התקבלה, ועוד מעט נראה מה יקרה עם Generics. הולך להיות מעניין.
  • אייטם על Functional Programming, והפעם - Functional programming jargon in Rust
    • עובר על הז’רגון של Functional Programming - אבל ב - Rust
    • הזדמנות מצויינת למי שמחפש “להרוג שתי ציפורים במכה אחת” - להיכנס ל - Rust “בצורה סופטית” (נפלא מכדי לתרגם) וגם להשתפשף קצת ב - Functional Programming
    • בוא נשלח אנשים לקפוץ מהגג וזהו . . . פעם היינו שולחים אנשים ללמוד Scala, אבל בואו לא נגזים.
  • ועוד אחד - github-do-not-ban-us
    • למי ששם לב על מה שקורה באינטרנט בשבועיים האחרונים (איפה האחראי?!) - קבוצה של מפתחים מאירן (?), ש GitHub חסמו להם את הגישה והעיפו להם את הקוד
    • הדיון מתרחש בעיקר ב-Twitter (איפה שהכל קורה - ר. ב. זיק), על מה הקשר שבין Open Source מאירן ופוליטיקה
    • קצת מזכיר את הדיון בקונגרס מהאייטם הקודם (אחד מהם)
      • “פתרו את הבעיה” - כל מי שמגיע מארצות “כאלה” ותרם ל - Libra פשוט לא יכול להשתמש ב - GitHub. לא יודע אם קשור, אבל פותר.
  • אייטם מגניב נוסף שאינו קשור לקו שאיתו אנחנו רצים היום (יש כזה?) - Component ב - React ש . . . צריך לראות כדי לתאר: זה לוקח כל אייטם והופך אותו לניתן-להזזה / גרירה - multipurpose movable/resize-able component
    • זאת ועוד - Scale-able / Rotate-able / Warp-able (אם יש כאלו מילים) . . .
    • למה זה טוב? הייתה תקופה (מזמן, ~15 שנה) שבה בניתי (דותן) אפליקציות לבתי דפוס (Gutenberg.com תפוס?), Lupa-style, ואחד הדברים שהייתי צריך לעשות זה לקחת רכיב, להעמיס עליו תמונה ולתת לך (הלקוח) “לשחק” עם התמונה ולמקם אותה איך שאתה רוצה כך שתוכל ליצור למשל פאזל וכו’.
      • זה היה מאוד קשה . . .
    • פה אני רואה את הדבר הזה עשוי ומחכה למישהו שיבנה מה שבא לו בעולם הזה - מי שרוצה לבנות אפליקציות לגרפיקה וכאלה על גבי React, Browser, Electron וכו’ - יש כאן ספרייה שנותנת את זה כמעט בחינם.
    • ממש חמוד - גם כי בסוף כולם צריכים Drag-able ובכל אפליקציה יש בסוף משהו כזה
    • יש כאן מעיין Handle, ואת הנקודות האלה שצריך לגעת בהן . . . לפני 15 שנה או יותר בניתי אפליקציה ב  -Flex (מעל Flash) לבתי דפוס, שהוציאו את זה כפלטפורמה (OEM) עבור גנים, למשל - ליצירת אלבומים וכאלה.
      • עם הדבר הזה אפשר לעשות את זה בחצי יום בערך. ממש מגניב.
  • ועוד Repo שמרכז חומרים בשם deep-learning-drizzle
    • מאוד מושקע - ומסודר לפי זמן - ב - Deep Learning יש משמעות לדברים שיצאו השנה לעומת שנים קודמות כי התחום מתפתח מאוד מהר
    • יש כאן באופן מאוד מסודר את החומרים ה”טקסטואליים” ואת הוידאו - 
      • למי שאוהב וידאו - הכל פה מסודר בצורה טובה, אפשר לקחת כמה קורסים (חלקם מחברות וחלקם מאוניברסיטאות), וזה ממש מגניב.
אלון - 
  • לא הרבה היום - חלקם מהאייטמים נגנבו קודם, חלק מצורפים למעלה
  • ל - Cloudflare היה Outage רציני - לא רע בשביל חברה שמחזיקה “חצי מהאינטרנט”, כשירות CDN / DNS / Functions ועוד מלא דברים
  • הם עשו Postmortem על ה - Downtime שהיה להם (כמה שעות) - וזה אחד הכייפים לקרוא (כל עוד זה בעייה של מישהו אחר) . . .
    • מסופר בגוף ראשון, כחווייה של עובד חברה כפי שהוא חווה את זה - היה בישיבה, ואז ראה שיש נפילה, והקפיצו אותו וכו’ - והכל בגוף ראשון, שזה מאוד “סיפורי” ומעניין לקרוא ולא מאוד (קר ו)טכני כמו בדרך כלל.
    • אפשר ללמוד הרבה מהסיפור על הצורה שבה הם עובדים בפנים - מה קפץ, ה - Pager Duty, ה - Escalations - דברים יפים.
    • ובסוף - הבעיה מצחיקה (תלוי את מי): היה לנו (אלון ודותן) בדיוק את אותו הבאג לפני משהו כמו 10 שנים, עם Regular Expression . . . שמו ב - Web Application Firewall כנראה Regexp בעייתי.
    • אני (דותן) טוען ש Regexp זה משהו שימשיך להפיל ארגונים גם בעוד 5-10 שנים
    • אגב- הפתרון לזה (דותן הלך ובדק) הוא מצד אחד מנוע שמריץ Regexp “בעלות לניארית”, ועוד משהו שעוד לא הספקתי לבדוק (נשאיר לקוראים כתרגיל?) - האם ניתן לקחת כל מנוע של Regexp ולתת לו “תקציב” של CPU?
      • בעיקרון - אפשרי לתת לו לרוץ ולהגיד לו לעצור אחרי נניח 1000 איטרציות, צריך רק שה - Framework יתמוך בזה, וזה יכול להיות מאוד שימושי לכל מיני דברים כאלה שהם מאוד Time-sensitive, דוגמת Firewall למשל
    • לנו (אלון ודותן) זה קרה בערך בשבוע הראשון שהגענו ל Conduit - הייתה בדיוק את אותה הבעייה ב - Search ועד שמצאנו את זה . . “קטע”, מעורר הזדהות.
    • לסיכום - זה מפיל מערכות עד היום, Regexp מאוד מסוכנים - וזה קורה גם לחברה כזו “מטורפת” שמתעסקת עם Performance ועם Firewalls, ואפילו יש להם את ה - Workers שלהם, עם Benchmark יותר גבוה מ - AWS Lambda. . . חברה “פסיכית” לגמרי, ובסוף Regular Expression “קטן” מפיל את כל המערכת
    • מאוד אהבתי (דותן) את הכלי שיש כאן - Gif שמראה איך RegX רץ
      • רציתי לנסות ולהוסיף לארגז הכלים שלי - ואז גילית שזה כתוב ב - Perl, אז העדפתי שלא . . .
    • בקיצור - מאוד מומלץ לקריאה, כתוב מאוד סיפורי ולא משמים, קצת כמו ספר מתח חמוד כזה.
  • ואחרון (לתפר שלפני החלק המצחיק) - שאלון בשם So you think you know C?
    • מראים כל מיני קטעי קוד - ואז מראים לך את התוצאה: מראים Struct ואז עושים ((sizeof(*(&s שלו ושואלים אותך מה הגודל שלו - 4? 5? 8? כל התשובות נכונות?
    • התשובות מאוד מעניינות - גם למי שכבר לא זוכר C, שווה לעבור על התשובות - זה מאוד רציני והתשובה מאוד מעניינת, שווה לנסות
      • ספרו לנו כמה קיבלתם!* (*לא באמת).
    • (רן) יש חידה שמסתובבת בקבוצות של JavaScript על איזשהו ביטוי מאוד ארוך, עם שאלה של מה הערך של הביטוי, עם הרבה דיונים על זה. נוסיף את הלינק (אושלא ופשוט אפשר לצפות ב- Dan Shappir עם JavaScript riddles for fun and profit או לבחור מכאן)
ועכשיו לחלק ההומוריסטי והקורע (מיתוג מחדש של החלק?)
  • קודם כל - תמונה: השוואת הדיונים ב - Stackoverflow לדיונים ב - Github
    • בגדול, תמונה זה משהו עובר מעולה באודיו, בונוס לקוראי הבלוג (כן, אתה).
    • תיאור מילולי בכל זאת - הדיונים ב Stackoverflow נראים כמו קטטה בחוף הים (מכות, אגרופים, סכינים - בלגאן שלם, בריכה בישראל בקיץ או פשוט You don’t talk about Fight club), לעומת דיונים ב - Github שנראים יותר כמו עצרת האו”ם (או משהו אחר מאוד “אירופאי”) - מאוד מעונב, שולחן עגול, כל אחד יושב משהו כמו 20 מ’ מזה שלידו עם עפרונות מסודרים על הדף ומדברים בצורה מאוד תרבותית.
  • ועכשיו - הבטחנו x10 - אז דותן: x10 engineer
    • משהו שקצת קשה להסביר, וזה די “שבר את האינטרנט” (הוא הרגע סגר גם את הסוגריים האלה?! זה מהמשפט הראשון בפרק… ריספקט) בחודש האחרון - טוויט של אדם בשם Shekhar Kirani - נראה כמו יזם שמשקיע בהודו, ש(כנראה בתמימות, כי המחיר אח”כ מאוד כבד)מנסה לשכנע את החברים שלו (ושאר העולם) איך לזהות מהנדס שהוא x10 Engineer
    • אז הוא אומר קודם כל - “אם אתם רואים את אחד האנשים האלה שאני מתאר - תחטפו אותם”
      • אלו מהנדסים שלא צריכים להסביר את הקוד שלהם, לא צריכים לדבר עם אף אחד כי הם לא צריכים לתקשר, הם לא צריכים Code Review כי הם עושים לעצמם וכל מיני כאלה
    • והחלק ההומוריסטי - עושה רושם שאיש לגמרי רציני . . .
    • עוד דוגמא יפה - 10x engineers are poor mentors as they can't teach others on what to do OR parcel the work. They always think "It takes too long to teach or discuss with others, I would rather do it myself." They are also poor interviewers.”
      • אם אתם רואים כזה - זהו x10 Engineer! שווה לחטוף אותו
      • ויש עוד . . יש כאן 12-15 תת-סעיפים עם עוד מהטוב הזה
    • מתאר את ה x10 Engineer כסוציופטים-אמנים שאסור להפריע למלאכתם - ואם מצאתם אחד כזה, כדי שתתפשו אותו ואל תתנו לו לברוח.
    • ותגובת היא האינטרנט היא . . . ובכן, בגדול -  “פחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחחח”.
      • מזכיר משהו ש - Lemonade עשו - Job Description שבו הם מחפשים x10 Engineer עם יכולות שהן יותר משלהם, כולל (לכל הפחות) 20 שנות ניסיון עם מעל מיליון שורות קוד לשנה, 45 שנות ניסיון ב - TypeScript, יכול לעשות לעצמו Code Review כי אחרים כנראה לא יבינו את האיכות המדהימה של הקוד, מקודד סימולטנית ב Dvorak ו QWERTY, אינו Team Player ,מתייחסים אליו כאל brilliant jerk ועוד ועוד.
      • מעניין אם צ’אק נוריס התקבל? slightly smiling face 
    • והיו עוד נסיונות Trolling - והפעם ידיד המחלקה ערן הראל
      • יש מקרים שבהם אתה לא יודע האם זה בהקשר של ה Meme הספציפי הזה, אבל מניחים שכן
      • אז עדיין - Developers who are passionate about, or hate a specific configuration format: Are you using tabs or spaces?
      • אם כבר אז בואו נוציא את הכביסה המלוכלכת החוצה (גילוי נאות - ערן עובד עם רן) - היו לנו כמה דיונים נוקבים סביב פורמטים של קונפיגורציות ויש מצב שזה קצת הרגיז אותו, וזו התוצאה (אבל אולי זה קשור איכשהו ל - x10 Engineer)
      • הטרלה בסגנון חופשי, מה שבטוח - קשור או לא - רציני זה לא היה
      • לערן דותן ענה, למשקיע ההודי (עדיין) לא.
      • מחפשים צרות ( או לצחוק)? תבלו, רק לכו לשירותים לפני. ההנאה מובטחת.
    • וזכרו - זה באינטרנט אז סימן שזה נכון! (למעט מקרים מאוד נדירים)
הקובץ נמצא כאן, האזנה נעימה ותודה רבה לעופר פורר על התמלול