יום חמישי, 5 בדצמבר 2019

381 Bumpers 63

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


רן - 
  • שפת V (או - V language) - שפה חדשה, שיש יש לה Compiler (גם אם לא כל הפיצ’רים כבר במקום)
    • והכי חשוב - כבר יש סט מאמינים!
    • רן קרא את התיעוד ו - 
      • השפה ממש דומה ל - Go (למי שכותב ב - Go זה יראה אותו הדבר) - עם כמה “תיקונים” להחלטות שגויות, לדעתם, של Go.
      • נראה מעניין, רחוק מלהיות מוכן אבל בהחלט משחק מעניין, והאתר שלהם כבר כולל כמה דוגמאות יפות - שווה להוריד את ה  -Compiler ולשחק.
      • פיצ’ר בולט - השפה מקמפלט (Compiling) את עצמה - ועושה את זה בתוך פחות משנייה, לטענתם (can be built in 0.09 - 0.6 seconds)
    • בהשוואה של Space required - נראה מרשים - על הנייר (ויחסית לשפה שלא עובדת) זה נראה טוב.
    • גם Hot code reloading - נראה ממש מגניב, ועושים Templates כבר מההתחלה (לא מומש עדיין).
  • להבדיל - שפה נוספת שפורסמה לאחרונה בשם bell language 
    • פורסמה ע”י פול גראהם (Paul graham) - אישיות בולטת בעולם הטכנולוגיה, מהמייסדים של Y Combinator ומי כשכתב את האתר HackerNews (שממנו אנחנו שואבים המון מהאינפורמציה כאן).
    • והוא גם “Lisper” ידוע - כתב את HackerNews ב Lisp ומתעקש להשאיר אותו ככה - ועכשיו גם כתב ספסיפיקציה ומימוש לשפה חדשה שהוא קורא לה bel.
    • וכמובן שכתב גם מסמך שמתאר את על התיאולוגיה ואת האמונה שלו “שככה צריכה להיות שפה”. האיש יודע לכתוב.
    • השפה היא מעיין ז’רגון של Lisp ותמצאו הרבה דברים מוכרים (Closures וכו’)
    • שונה מאוד מ- V מהאייטם הקודם  - זו שפה פונקציונאלית, אולי לא טהורה אבל כן פרקטית, עם הרבה מאוד מחשבה ו”תיאולוגיה” מסביבה.
  • הנושא הבא - aquameta
  • מדובר ב Web framework שלם שנכתב ב  -PostgresSQL (אפשר לקרוא פעמיים)
    • רץ מעל ה Database, משמתמש בטבלאות ובשפת ה - SQL המורחבת של PostgresSQL כדי לממש Web framework.
    • למה?
    • זו שפה קיימת ועובדת, לפחות לפי ה GitHub (במפתיע לא ניסינו בפועל).
    • ובכל זאת - למה? “ניסיתי בהתחלה MySQL ולא הלך, אז ניסיתי PostgresSQL”. אוקיי . . .
    • מזכיר קצת את Access . . . זה Database, כותבים קוד, זה נשמר בתוך ה  - Database ומעל זה Visual Basic . . . אם כי Visual Basic זו שפה אימפרטיבית (Imperative) ולא דקלרטיבית (Declarative) כמו SQL. סיפור דומה בסך הכל.
  • תמיד אהבתם מערכות מבוזרות? (כן!), ותמיד נתקלתם בכל מיני מונחים כמו CAP Theorem ו - Harvest ו - Yield ו - Consistency ולא ידעתם מה זה אומר (בסדר -  ידעתם ושכחתם)?
    • אז הנה בלוג פוסט שמסביר הכל ממש בקצרה (פסקה-שתיים) - Distributed systems vocabulary
    • קצת היסטוריה ותיאוריה - נחמד ושימושי
    • כולל Conflict resolution, Consistency level וכו’, כמה אלגורתימים במערכות מבוזרות כמו Paxos, RAFT, SWIM, Two-phase commit ועוד.
    • לא ארוך וכתוב בצורה מאוד נגישה, מומלץ למי שרוצה להיזכר (אפשר גם כאן למי שבעניין של קורס).
  • מאמר שפורסם ב - Slate (חצי טכנולוגי, קצת כמו WIRED), שסוקר את שורות הקוד ששינו את ההסטוריה
    • כמה פרויקטים מעניינים לאורך השנים שעשו היסטוריה, למשל - הקוד של Apollo 11 , וגם Facebook (להבדיל) או !Spacewar שנכתב בכלל ב  -Assembly.
    • נחמד, אם אתם רוצים קצת נוסטלגיה של קוד.
    • וכמובן - ה Hello World הראשון! - שפורסם מסתבר ב 1972, ככל הנראה ב - C.
  • ועכשיו - Linkerd - מעיין Service mesh או Proxy, מהעולם של istio ו - Consul connect.
    • במקור נכתב ב Scala ע”י Twitter, היה ה-Service mesh הראשון (?) וזכה להרבה פופלאריות, אבל מאז הרבה דברים השתנו
    • עכשיו כתבו אותו מחדש, ובחזרה למלחמת השפות של Go vs. Rust - מי ניצח ? (רמז: לא Java)
    • אז יש באמת הסבר ללמה לא JVM, ובסוף הלכו על גם וגם - כתבו ב - Rust את ה - Data plain - Proxy הקטן שנמצא בכל host), ואת כל ה - Control Plain ב - Go (קצת פחות זריז, אבל קצת יותר קל לכתיבה).
    • תיקו?! Linkerd באוויר כבר יותר משנה וזוכה (לטענתם) לפופלאריות רבה.
    • מעניין - לפני שנתיים, ה - default היה לבחור משהו על JVM בגלל שהיה יותר נוח עם ה - Ecosystem, והיום מתחילים לברוח מזה כמו מאש.
    • עידן Java מאחורינו? כדי להוסיף שמן למדורה, רן האזין בדרך להקלטה לפודקאסט (מוצר נישה כזה) של Go Time עם היוצרים של Kubernetes, ואחת השאלות שנשאלו הייתה על הבחירה ב - Go (כבר לפני כמה שנים).
      • מעבר לזה שבתוך Google, זה בכלל כתוב ב ++C
      • הם אמרו שכשרצו לעשות גרסת Open Source החוצה, כתבו את הגרסא הראשונה ב - Java, ואמרו - “לא בא לנו את זה יותר” . . . חיפשו משהו יותר רענן וזורם, ובחנו כמה אופציות.
      • בזמנו Mesos היה המוביל בתחום והיה כתוב ב - ++C והיה גם Docker שכתוב ב - Go. הם התחליטו שה - Tool Chain של Go יותר בשל (Mature), והשאר היסטוריה.
      • יכול להיות שאם בזמנו גם Rust הייתה בתמונה אולי גם זה היה חלק מהעניין, אבל בין Java ל - Go ל - ++C, הבחירה הייתה Go.
    • יפה גם שלקחו את הטוב משני העולמות, ולא רק Rust vs. Go - ה - Sweet spot של Rust זה ה Low latency ו -Low footprint, וזה מאוד קריטי בצד של ה - Sidecar, וה - Sweet spot של Go זו הפרודוקטיביות, והיכולת לעבוד בצורה מבוזרת ומקבילית, וזה יותר מתאים ל - Control plain. 
  • ועדיין באיזור ה - Service Mesh - בלוג-פוסט שסוקר מספר אפשרויות Service Mesh ומשווה ביניהם:
    • מתייחס ל Istio, ל - Linkerd 2 ול - Consul connect
    • מה היתרונות והחסרונות ומה השיטה של כל אחד עובד - עוזר להבין מי נגד מי ועושה סיכום יפה.
  • ונושא שלא קשור ל - Service Mesh - הנורה החכמה של Philips - Philips Hue Lightening) הגיעה ל Shitdex . . . 
    • כן, גרסת ה Shit ל - Internet of Things - פרצות אבטחה, תקלות מביכות, כאלה.
    • “סך הכל נורה”, ועדיין - פוטניציאל ל - DDoS או סתם לכבות לך את האור בבית.
    • וכן - DDoS מנורות נשמע כמו קטיגוריה מבטיחה. ויש גם אופציה להחלפת צבעים אז בכלל.
      • קטיגוריות הטרלת חברים לעבודה תחזור בהמשך.
  • ועוד אחד - Visual Studio Online
    • מיקרוסופט הכריזה על גרסת Visual Studio - בתוך הדפדפן (יותר VSCode, ועדיין).
    • לא ה Code Editor הראשון בדפדפן, אבל אם זה כולל את כל הפיצ’רים של VSCode אז זו בהחלט קפיצת מדרגה.
    • (אלון) לא בטוח - יש את ה - A9 של Amazon, שאמור להיות ברמה מאוד גבוהה
      • לא בהכרח כולל את מנגנון ה - Plug-Ins שיש ל - VSCode
      • דורש לעשות Login לחשבון Microsoft, ומי זוכר את הסיסמא . . . התגעגתם ל - Skype?
        • שווה פרק מיוחד בפני עצמו (אם כבר הטרלות . . .).

אלון - 
  • עבור מי שיש לו את ה - Touch-bar ב - Mac - אז pock זו אפליקציה שמאפשרת לשלוט ב Touch bar, ולהפוך את הכל ליותר צבעוני ויפה.
    • שימושי? לא ברור, אבל ממש נחמד, אפשר לשים שם לינק ל - Spotify וכו’.
    • משהו לגבי ה- Mac החדש בגרסת ה - 16’’? הביקורות טובות, כולל אפילו מ DHH שלאחרונה די קטל אותם ואומר דברים טובים על המקלדת ועל ה - Build.
    • טובים ויקרים - וענקיים . . . גודל דומה ל 15’’ רק עם אופטימיזציה, רק שגם ה - 15’’ גדול. מתי יוצא 13’’ חדש?
  • ראיתם שיצא Github Mobile? אז יצא.
    • למה זה טוב? לא ברור מי רוצה לעשות PR ב - Mobile, לא נראה נוח במיוחד, אולי למשהו ממש קטן, אחרת זה די קשוח.
    • צריך להכריז על משהו, עדיף על GitHub for Windows, שבטח ירוץ רק ב - Edge או משהו.
  • כמה כלים נחמדים לעבודה על Kubernetes - 
    • ממתי אלון ב - K8s? מאז ההצטרפות ל GCP, ואז K8s עובד טוב . . .
    • אז יש את stern, שזה Multiple container log - נוח למי שרוצה לראות לוגים, שמאפשר לעשות Queries ולראות לוגים בטרמינל, נוח ושימושי.
    • יש את k9s, עם דשבורד Fancy בתוך הטרמינל (הזכרנו כבר בעבר).
    • ויש גם kubectx, שמאפשר לעבור בין סביבות K8s - מאוד נוח למי שעובד עם כמה סביבות, מזכיר קצת את איך ש NVM עובד.
  • ועוד אחד - Web Almanac: היישר מה - HTTP Archive, מדובר ב - state of the web report.
    • המון תחומים, החל מ JavaScript, CSS, Security, Performance ועוד הרבה - הרבה מידע על מה קרה, התפלגויות, מי מריץ את מה, כמה עולה והרבה סטטיסטיקות מגניבות
  • ואחד אחרון - Pull Reminders הוא extension מגניב ל - Slack שמזכיר לכם PR ב Git . . .
    • נחמד ושימושי למי שיש PR שהוא שוכח לעבור עליהם (לא אתם כמובן, אנשים אחרים).
    • עובד ב - GitHub, נראה ש GitLab בקרוב.

  • קורס שעוסק ב Hacking לרשתות ניורונים (Neural Networks
    • כן . . . הקונספט מעיף את הראש. 
    • מאמר (מדעי) שמסביר את השכל מאחורי העניין - וזה גם קורס. כשמתחילים לקרוא זה לא כזה מטורף אבל לגמרי פותח את הראש.
    • לדוגמא - אם יש רשת מאומנת ויש לכם גישה לפרמטרים, אפשר לגרום לרשת לעשות חיזוי לא נכון (נגיד - סורק רשתית שרוצים לגרום לו לפתוח את הדלת), שימוש ב  - Overflow או inputs עויינים, בדומה לעולמות אחרים.
    • חלק תיאורטי, חלק מעשי - נשמע מאוד פורץ דרך.
  • כאן יש Repository שעוסק ב - Internals של שפת Go
    • למי שכבר עובד עם Go ומרגיש שזה הזמן להעמיק - מקום טוב להעמיק בו.
  • וקצת למשהו שכולנו איכשהו יודעים פחות - הערכות (Estimations) . . .
    • בעקבות שיחה מעניינת של דותן עם VP R&D על איך עושים הערכות (הערכת משך זמן)  - והמשיך ברפרנס למאמר המקורי של כהנמן וטברסקי מ-1977 על Intuitive Prediction: Biases & Corrective Procedures
    • יכול להיות שנתקלתם בזה דרך דן אריאלי
    • בין השאר - נראה שבני אדם (אחרים, לא אנחנו) נוטים שלא להתייחס להיסטוריה, וגם לייחס לעצמם אופי מיוחד: אנחנו מיוחדים והפרויקט מיוחד ופורץ דרך ושונה ולכן ניתן לו הערכת זמנים שונה מכל מה שקרה קודם לכן. 
      • אמ;לק - זה כנראה לא ממש נכון, והערכות הזמנים קיימות והסיכונים קיימים ואנחנו מתעלמים סתם.
    • מאמר קצת קשוח מבחינת הניסוח, אפשר לקרוא פעמיים-שלוש וזה יושב טוב
    • המחקר מומן ע”י הצבא האמריקאי והנתונים באים מסביבה צבאית, אבל הטקסט נראה מתאים להחלטות בכל תחום, גם תוכנה.
    • אוסף של Command Line Tools
      • צף לדותן דרך ה Reddit של Rust
      • רוב הכלים הם החלפות לכלים (CLI) פופלאריים שקיימים היום, חלקם כבר הזכרנו כאן - exa (בתור ls על סטרואידים) וכו’. מומלץ לעבור ולראות מה אפשר להחליף מהסטנדרט.
  • ועוד מהבלוג של Microsoft Security Response Center - עוד מאמר שאומר שהם בגדול מתעסקים עם Rust
    • אין משהו Conclusive, בגדול אומר שהם עובדים עם זה - חלק מתאים, חלק לא - ובסופו של דבר עוד סימן לארגון גדול שמסתכל לעומק על Rust.
  • ולמשהו אחר לגמרי - דותן עוסק כבר כמה שנים ב-Hackintosh.
    • בגדול - לקחת חומרה שאינה של Apple ולהרכיב אותה כך שניתן להריץ עליה macOS.
    • התחיל כי Mac זה ממש יקר, והמשיך כאתגר לגרום לתוכנה לרוץ על חומרה שהיא לאו דווקא רוצה להיות בה.
    • אז עכשיו KVM (שכבת הוירטואליזציה) נותנת היום פתרונות Virtualization ל macOS שלא נופלת מחומרה.
      • תחשבו על VM שרץ בלינוקס, מריץ macOS, ויש משהו כמו 1-2% של (ירידה ב)ביצועים כ”תשלום”.
    • זה קצת אומר שאמנות בניית החומרה הזו פחות רלוונטית - אפשר להריץ macOS ו - Windows במקביל, בלי לשלם ב - Performance.
      • מגניב למי שרוצה לבנות Mac בבית שהוא סופר-חזק או זול. בלי Touch Bar (תשלחו לאלון, הוא בונה ממלא כאלה iPad. . .).
  • לא רוצים לקחת intercom? אז chatwoot
    • גם עבור מי שלא רוצה פתרון Chat support חיצוני
    • וגם - בנוי ב Rails . . . שכבר הספדנו
    • נראה מוצר טוב למי שלא רוצה או יכול להרשות לעצמו פתרון 3rd party
    • אלון גילה שיצא Rails 6, אז אולי זה עדיין חי, ואולי במבט לאחור DHH צדק, לפחות לפעמים.
      • חולצת “DHH אמר את זה קודם” למאזין הראשון שידפיס כזו.
  • ואנחנו כבר לא רלוונטיים . . . Real-Time-Voice-Cloning כאן
    • מערכת AI שמחקה קול אנושי - רק שלזו מספיקה דגימה של 5 שניות וזה מסמפל את הקול שלכם. כן, כזה.
    • לפחות כשקוראים אין את הבעיה הזו, אבל באודיו אכן לא ברור כבר מי זה מי . . .
    • יש תזה, יש דמו בYouTube, יש pip install, יש הכל.
    • פתח להמון רעיונות, מדהימים ואיומים כאחד - ועדיין סביר להניח שהשימוש הראשון יהיה הצורך האנושי הבסיסי ביותר (אחרי דמו על Doom כמובן) - להטריל אנשים בעבודה.
    • ואחרי נייר כסף על המקלדת 
  • בהמשך (?) לאייטם שהוזכר קודם - vscode on the browser
    • לא קשור ל - Microsoft אבל אפשר להריץ על הדפדפן - ומישהו עשה את זה . . .
  • וזה כבר כנראה באמת קשור - הכרזה של Facebook על זה שהם אוהבים את Microsoft - ומעבירים את הבחירה שלהם עבור light-weight code ל vscode.
    • עד עכשיו היה Atom - שעכשיו הופך ללא הרבה יותר מפלטפורמת הדגמה ל Electron.
  • בהמשך לאייטמים על GitHub action - כאן מישהו הסתכל על זה ומצא דרך לעשות DDoS . . .
    • בתוך הקובץ Config יש תיאור של מאיפה GitHub לוקחים את ה Action, ויש שם Short Hash (גודל של 6-7 characters) - ומי שקצת אוהב את זה זוכר שיש סיבה לזה שה Commit ארוך -על מנת להיות ייחודי . . .
    • ברגע שלקחתם את זה, שברתם משהו - על 20K commits בכל Repo, סטטיסטית יהיו שניים אותו הדבר בסבירות לא אפסית בכלל (“פרדוקס היומולדת” — > שובך יונים)
    • אמ;לק - הצליח לייצר ככה Collisions, קיבל Bounty יפה מ GitHub ומתקנים.
    • הלקח - כל פעם שאתם רואים Short Hash ב - Production, תחשדו . . .
  • ובהקשר דומה - רן נתקל בפרדוקס על אותו עיקרון בחלוקת עומסים בין שרתים - המרחב (זכרון במקרה) זה לא מספיק גדול כדי שהתנגשויות יהיו בהסתברות נמוכה מספיק.
    • לוקח זמן להבין מאיפה זה מגיע כזה דבר, שווה לזכור.
    • ולפעמים באמת יש יומולדת לילד מהגן וצריך לשנות תוכניות. ככה זה.
  • ואחרון נחמד SQL Engine שכתוב ב - Go בשם ramsql
    • נחמד לצרכי Testing למשל
    • היה כזה ב  -Java - בטח SQLite
    • ב - Go  זה אולי עובד יותר חלק
    • מעניין, כרגע רק ל Unit test, ואם לא מעניין Performance אז יכול להיות נחמד.

ולחלק האמנותי  -
  • לסיום - מה קורה בדקה אחת באינטרנט?
    • 70 אלף שעות של תוכן נצפה ב Netflix,  לפחות 3 מיליון וידאו רצים ב Snapchat, בגוגל נשאלות 2.4 מיליון שאלות - ונכתב JS Framework חדש . . .
    • רק אחד? חשבנו שיותר. בכל מקרה לא מדע מדויק (לא מדע בכלל).
זה היה אנחנו. נתראה בפעם הבאה . . .

הקובץ נמצא כאן, האזנה נעימה ותודה רבה לעופר פורר על התמלול