יום חמישי, 7 בנובמבר 2019

380 Bumpers 62

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

רן - 
  • סטנדרט חדש הולך ומתהווה - GQL
    • סטנדרט שאילתות ל- Databases ראשון מאז SQL שנקבע אי שם בשנות ה- 70-80 . . .
    • המטרה היא להסדיר את נושא השאילתות ב Graph Databases (דוגמת Neo4j שמניעים אותו, אבל יש גם אחרים) - וזה כרגע בתהליך של קבלה לועדת הסטנדטים ANSI
    • יש כל מיני הצעות ועדיין לא הוחלט באופן סופי - בעולם ה - Databases יש לא מעט שפות שבהן ניתן לתשאל Graph databases, ובסופו של דבר המטרה היא להתקבע על אחת, שתיהיה סטנדרטית בדומה ל-SQL.
    • אזהרה (!) - חשוב לשים לב ולא להתבלבל בין GQL לבין GraphQL  . . . . אלו שני דברים שונים:
      • מצד אחד -GraphQL זו שפת שאילתות או בעצם קצת יותר כמו פרוטוקול בסגנון REST - משתמשים מעל HTTP אבל זו לא השפה שבא “מדברים” עם ה - Database.
      • לעומת זאת - GQL, קצת כמו SQL,  הוא הסטנדרט (המיועד) - סטנדרט טקסטואלי שבו ניתן לכתוב שאילתות טקסט ל Graph Databases.
    • הרבה מאוד זמן לא ראינו תנועה באיזור הזה, ומעניין שעכשיו יש.
  • מי מבין מאזינינו שהוא במקרה גם בעלים של טסלה (אפי?!) ודאי מאוד התרגש לשמוע שהגרסא החדשה של התוכנה - 10.0 - יצאה.
    • גם למי שאין לו במקרה (רן, למשל - מסתבר שזה פחות הולך בישראל בינתיים) - מעניין לראות שהגרסא נראית פחות או יותר כמו עדכון של IOS או Android: אם מסתכלים על רשימת הפיצ’רים, קשה לנחש שמדובר ברכב . . .
    • הרבה דברים שקשורים לפנאי ולבידור - חיבורים ל - YouTube ול - Spotify, קריוקי וכאלה
    • כמעט שלא תראו פיצ’רים שקשורים למנוע או לחלקים אחרים של, ובכן - רכב…
    • הרכב נראה כפלטפורמת בידור, לפחות לפי הגרסא הזו. מעניין - הופך למערכת הפעלה לפנאי ופחות מערכת הפעלה לרכב.
    • אלון - מישהו אמר (Twitter …) שלא האמין שיגיע לתקופה שבה עדכון של רכב יותר מרגש מעדכון של טלפון . . . מגניב.
    • מתי העדכון הבא של אאודי? אה.
  • ספריה בשם chart.xkcd - מעיין גרפים ב - JavaScript או HTML וכו’ שרצים בתוך הדפדפן - בסגנון xkcd:
    • סדרת קריקטורות גיקיות פופולארית, בעיקר סביב מחשבים וטכנולוגיה, בעיצוב שדומה לעיפרון או עט גס, בשחור לבן “פשטני”.
    • הספריה הזו מייצרת גרפים ותרשמים בסגנון - “כאילו שורטטו בעיפרון או טוש על נייר”.
    • יש גם צבעים - לא רק שחור-לבן כמו ב”מקורי”.
    • אחד המגניבים . . . יש טרנד כזה של מצגות שנראות כאילו עכשיו שרבטו אותן? אז כזה - נראה טוב וקריא מאוד.
  • הפינה האמנותית - Repo ב - GitHub בשם The art of command line
    • מעניין סקירה של כלים (Unix, Linux) מאוד שימושיים , החל מאיך משתמשים ב - Bash - Shell עצמו) והלאה.
    • למשל - מה קורה שעושים Alt+B ואז Alt+F ? - מסתבר שזה מביא אתכם לתחילת השורה - במקום ללכת “אחורה בהיסטוריה” בשיטת “חץ למעלה-למעלה-למעלה” ואז לנסות להגיע למשהו באמצע, Alt+B ואז Alt+F מאפשר לעבור מילה אחרי מילה.
    • אפשר גם להשתמש ב VI Mode” בתוך ה - CLI עצמו - לעבור ולהשתמש בקיצורי הדרך של VI.
    • אפשר גם לערוך את ה - Command Line שלכם בתוך Editor ועוד כל מיני פטנטים שאולי לא הכרתם.
    • למי ש”חי בתוך ה - Command Line” (גרסא מאוד מוזרה של Jumanji?) - מומלץ.
      • לא מאוד ארוך, חלק סביר שאתם מכירים - רן לא הכיר הכל. שווה לנסות.
  • בלוג-פוסט מעניין ומעורר השראה - Logs were our lifeblood. Now they're our liability
    • יש הרבה מאוד סוגים של לוגים - החל מלוגים “אופרטיביים” (Operational) בסגנון “נגמר לי המקום בדיסק” או exception כזה או אחר ועד לוגים “אפליקטיביים” (Application)  - שהבלוג מגדיר כ - Events ואליהם הוא מתייחס.
      • דברים כמו Analytics למיניהם ש Google ו - Facebook אוהבים (לכאורה) לאסוף (לכאורה!) על פעולות של משתמשים.
    • אומרים ש”דאטה זה הזהב החדש” וזה כנראה נכון בהרבה מובנים - ככל שתאספו יותר מידע על המשתמשים שלכם כך תוכלו לההפיק יותר תובנות, אבל . . .
    • עם הגידול ברגולציות השונות, מתברר שזה לא כל כך פשוט לתחזק את כל הלוגים האלה - אם זו רגולציה באירופה וארה”ב וסין ועוד - מגלים שמצד אחד הדאטה שווה זהב, ומצד שני - “יכולים לתבוע לכם את התחת” אם לא תשמרו על הזהב הזה כמו שצריך ולא תדעו למחוק אותו ולעשות לו סגרגציה (Segregation) כמו שצריך, אז אם חס וחלילה מתרחשת דליפת מידע . . .
    • הבלוג טוען שאם פעם היינו רק רוצים לאסוף כמה שיותר מידע, היום - ובטח שבעתיד - צריך לעשות את זה במשנה זהירות.
    • הצפי הוא לפיתוח טכניקות שבהן נוכל אולי לשמור את ה  -Essence של המידע - מבלי לשמור את ה - Data עצמו.
    • ציטוט ממישהו שנראה שמגיע מ - Facebook, שאומר ש”את הקהל שלנו אני יכול לייצג באמצעות חמישה משתמשים בלבד” - 5 Archetypes של משתמשים שמהם אפשר ללמוד את כל מה שצריך, ולא צריך את כל המיליארד או 2 מיליארד או כמה שזה לא יהיה.
    • למעשה, זה מצביע על טרנד ב - Data Science שיודע לקחת הרבה מאוד Data, להוציא ממנו רק את הייצוגים המעניינים - “ולזרוק” את כל השאר.
      • ה-MP3 של כל שאר הדאטה?
    • (אלון) מעניין מאוד לחברות בתחילת הדרך - חברות ענק כבר מאוד מתעניינות ב - Long Tail, ואם תבוא ותגיד להם “הנה רק 5 ייצוגים” הם לא יגיבו יפה.
    • יכול להיות - אבל מצד שני הרגולציות הולכות וגדלות, ולא נראה שזה הולך להיעלם - באיזשהו מקום הם יהיו חייבים. לחברות בתחילת הדרך זה אולי יהיה “יותר קל” (לוותר), אבל דווקא לחברות הגדולות יש את ה Liability היותר גדול ואולי לא תיהיה להן ברירה.
      • את מי כבר תבעו - ?Google? Facebook -  שתיהן?
    • אם מסתכלים על GDPR - ההגבלה היא על מה שהוא Tractable למשתמש ספציפי - אם שומרים בצורה אנונימית אז אין עם זה שום בעיה.
      • ברגע שלוקחים רק Samples אז מראש יוצאים מבעיות רגולציה - אבל העניין הוא שחברות כאלו כן רוצות את כל ה - Data ... 
      • זה נחמד לדברים מסויימים, אבל לא למשל עבור פרסונליזציה…
    • הבלוג בא להצביע על בעיה - ולא טוען שיש לו פתרון להכל. הפתרונות שכן מוצעים הם אגרגציה ואנונימיזציה (Aggregation, Anonymization), שזה מה שעושים למשל ב - Google.
    • הבעיה קיימת, ואי אפשר להתעלם ממנה - אם פעם (ועדיין) לוגים היו הזהב החדש, היום אנחנו מבינים שלזהב הזה יש מחיר ויש ריבית, וזה בטח לא בא בחינם.
    • צריך לחשוב על איך לא להחזיק מידע מיותר - לא משיקולי Storage אלא משיקולי Liability - ואיפה שאפשר לעשות אגרגציה ואנונימיזציה או דברים אחרים.
    • זה בהחלט מציג אתגרים - גם ליישום יעיל ונכון וגם מבחינת פגיעה בפיצ’רים עתידיים - אם בעוד שנה תרצה לעשות פרסונליזציה - תיהיה לך בעיה.
    • האמירה שלוגים הולכים והופכים ל Liability נראית נכונה, ונראה שתיהיה אפילו יותר נכונה עם הזמן.
    • עד כאן סוגיות חוקיות להיום? ספויילר - כנראה שלא . . .
  • תראו מי חוזר - !The Stack Overflow Podcast is Back
    • למי שזוכר (רומז שאנחנו זקנים?), הפודקאסט היה קיים משך שנים רבות ולאחרונה נכנס לקצת תרדמת
      • הפודקאסט עצמו יותר ותיק מרברסים (!), בן למעלה מ-12 שנים
      • רן עוד זוכר את עצמו מאזין ל Joel Spolsky וחושב שאולי כדאי שיהיה גם אחד כזה בעברית... יצא בסדר בסך הכל slightly smiling face 
      • רץ הרבה שנים, בשלב מסויים כבר בלי Joel Spolsky, ואז בשלב מסויים קצת נעלם - ועכשיו שחררו מחדש פרק ראשון, מומלץ לחובבי הז’אנר.
    • אז איך הפודקאסט (אם כבר מפרסמים מתחרים . . .)? לפי רן לא משהו (מדבר מפוזיציה?), אבל יש תקווה כי יש שם חומר טוב - 
      • שלושה אנשים שמדברים על שאלות מעניינות ופופלאריות ב - Stack Overflow ועל Compilers באופן כללי.
      • לדוגמא - שאלה (פילוסופית) על “האם כשאתה מצליח לגרום ל Compiler לעשות משהו לא חוקי - האם אתה Liable? שואל בשביל חבר . . .
        • והנה חזרנו לשאלות החוקיות
      • האם במקרה שהצלחת לנצל חולשה ב compiler וככה להשתלט על משהו שלא היית אמור - האם האחריות היא עליך או על יוצר ה Compiler, או משהו בסגנון
    • (דותן) הייתה גם דרמה גדולה ב - Stack Overflow השבוע - הם שינו את ה Term of service, ועכשיו אי אפשר לפנות למשתמשים כ “He” או “She”, וזה עורר דרמה -
    • רן לא זוכר אם זה עלה בפודקאסט, אבל יש מצב שכן. תקשיבו.
  • הרבה זמן לא דיברנו על Rust vs. Go, הא? אז הנה חדשות חמות בנושא - נקודה נוספת (או כמה בעצם) לטובת Rust: הודעה של AWS על מתן חסות ל Rust Project
    • מבחינה היסטורית, Rust התחיל את פיתוחו בתוך Mozilla, ולמעשה עד היום נמצא תחת הכתפיים שלה  -אעפ”י שהמפתח הראשי כבר עזב - Apple) והיה נראה שהקהילה קצת איבדה את ההנהגה שלה.
    • עכשיו AWS הודיעו על מתן Sponsorship (לא נראה שבלעדי) - יחד עם Google, Microsoft ו - Mozilla
    • כך שעכשיו יש כמה אבות לפרויקט, מרשים ביותר - לא עוד נקודה ל-Rust אלא 4 גדולות. . . בשורה מטורפת.
    • מי שכותב ב - Rust יכול להמשיך.

אלון - 
  • קודם כל - מה יש לדותן להגיד על Rust? תמיד היה חשש שאין לזה אבא
  • ולעניין - פוסט על Postgres - ומה שאפשר לעשות איתו לפני שרצים לפתרונות אחרים
    • דברי שידעתם, או שלא - Caches ו - Text Search ופונקציות, Key-Value Data store, עוד כל מיני Data types ואינדקסים כמו Bloom filter ועוד הרבה דברים נחמדים.
    • למי שמכיר Postgres לעומק זה כנראה לא יחדש הרבה, אבל למי מחפש Database חדש רק כי “זה רק SQL ואני צריך יותר” - שווה להציץ בזה.
    • תמיד עולה השאלה (ע”י רן) של “האם נכון “להעמיס” על ה - Database את כל היכולות האלה?” - זה שהוא יכול לא בהכרח אומר שהוא צריך . . .
      • דוגמא קלאסית - מנגנון ה Stored procedures (“שאילתות שמורות”) - אפשר לכתוב כאלו כמעט בכל Database רלציוני, השאלה היא האם כדאי.
      • בתעשייה נראה שכבר הבנו שבגדול - לא.
      • למעט מקרים מסויימים, עדיף להשאיר את ה - Business Logic בתוך התוכנית שלך ולא בתוך ה - Database, מכל מיני סיבות, למשל - יכולות פיזור עומסים, Testability, מודולריות ועוד.
      • האם אנחנו לא רואים את כל זה  All over again? ל - Postgres יש כל מיני תוספים, כמו יכולת להחזיר GraphQL ולהיות ממשי REST-י ועוד כל מיני דברים, השאלה האם אתה באמת רוצה שהוא יעשה את כל זה?
      • בעיני רן זוהי דילמה פתוחה - מצד אחד מאוד מפתה, מצד שני - קצת מאבדים את המודולריות, ואולי עושים כאן איזשהו “חטא”.
    • אני (אלון) לא אומר שאפשר להשוות את זה ל Redis למשל עבור Key-value store, כי זה לא ה - Core business בסופו של דבר. 
      • אבל - הרבה פעמים, במקום להרים עוד מערכת - עדיף “לרכב” על ה - database הקיים כי אתה לא רוצה ריבוי מערכות.
      • בסוף זה תמיד שיקול בארכיטקטורה - האם לקחת את הדבר האופטימלי בכל מקום ובסוף למצוא את עצמך עם עשרה Databases, או לאחד.
      • קצת כמו הדילמה בין מונוליט ל - Micro-services . . . וכנראה שאין תשובה אחת נכונה.
      • לפעמים מונוליט זו התשובה הנכונה, בטח כשאתה מתחיל.
      • חוץ מזה - אפשר להחזיק ארבעה Databases, וגם המקצועיות של האנשים בסוף שונה - וחוץ מזה ל Postgres יש Plug-ins מטורפים שאין להם כל כך מתחרים
      • אנחנו (אלון) משתמשים ב - PostGIS, שקשה למצוא לו מתחרה ברמה הזו למידע גיאוגרפי, וזה מצדיק את עצמו בלי קשר ל Postgres או לא.
      • לפעמים אנשים מרימים MongoDB רק כי יותר קל לשמור משהו כ - Document, ותמיד שווה לשאול את השאלה, במיוחד עבור חברות קטנות - האם אתם באמת רוצים ריבוי מערכות או לא?
    • אצלי (רן) באו כבר כמה אנשים ושאלו “מתי בכלל תרצה להשתמש ב Database רלציוני? 
      • התשובה היא תמיד . . . 
      • לא תמיד אני יכול, אבל זו ברירת המחדל
      • אם אני מתחיל פרויקט חדש, אלך עם Postgres או MySQL, אלא אם כן יש לי סיבה ממש טובה להתחיל בכיוון אחר. 
      • ברירת המחדל, אם אין נתונים נוספים, היא Database רלציוני - הם גמישים, יודעים לעשות הרבה מאוד known-practices ידועים מהעולם, כמעט לכל בעיה ניתן למצוא פתרון בחיפוש קצר ב - Google, יש Ecosystem מאוד בריא - ברוב המקרים אתחיל מהם, ואם אחר כך אראה שיש סיבה מוצדקת לעבור, עם המחיר שהוא כנראה לא פשוט ב Community knowledge, אולי אעשה את זה.
    • (אלון) “כולם יודעים SQL”, תמיד יש את המשפט הזה (כולם דוברים את השפה הבינלאומית הידועה Bad-English) - קל לתשאל את ה  -database, לעומת NoSQL שבו אתה דוחף את הדאטה וצריך לתחזק אותו הרבה שנים…  גם ממליץ להתחיל ב-SQL, ואם תתקלו בחומה אז תעברו, ולא הפוך, ככלל אצבע (שתמיד יש לו חריגים).
  • בהמשך ל Postgres - אז יצא PostgreSQL 12!
    • לא הספקתי לראות שינויים משמעותיים מעבר ל Performance, שזה תמיד מעניין
    • כנראה שיש עוד שינויים, שווה להסתכל
  • פרוייקט Open source חדש של Microsoft בשם dapr
    • דפ”ר?
    • המון Buzz תקשורתי, נראה שהם מייעדים אותו לגדולות
    • בגדול - מדובר ב framework שיכול לעזור לבנות microServices על K8s
    • הוציאו בלוג-פוסט, הלכו ל TechCrunch, השקיעו . . . או שזה Here to stay או עוד פלופ
    • חשוב לציין - הם טוענים שזה עדיין לא Production ready, עדיין בחיתולים
      • למי שלא הבין - אל תשתמשו ב - Production
    • נשמע מעניין, אולי בשלב הבא ירצו לדחוף את זה ל - Azure כתחרות ל Built-in-K8s של Google.
  • מחפשים IDE ל - React? - אז The first dedicated IDE for React web application development
    • לא יודע אם טוב, עדיין לא ניסיתי - אבל אשמח אם מישהו יגיד לי אם זה שווה משהו
    • שלחו גלויה
  • ועוד אחד - נתקלתם כבר ב TwilloQuest? אחד המגניבים . . .
    • אז נראה ש Twillo (החבר’ה עם ה API ל-SMS וכאלה), הוציאו משחק Quest.
      • צריך Download והכל
    • המשחק מלמד תכנות ואיך לעבוד מול ה-API שלהם - מקבלים משימות ב - Quest, קצת כמו Ultima של פעם
    • ממש מגניב, אלון צריך למצוא קצת זמן ולשחק בזה, מוזמנים גם.
    • וכן - צריך ממש “להוריד משחק”, זה לא Web-י (רציתם 90s אז עד הסוף)
      • אולי גם בגלל כל ה-Tokens של ה-SMS, ליצור Isolation בתוך המשחק
    • באופן כללי רעיון מדהים, וגם רעיון מעניין של לתת API בלי לחשוף אותו (רעיון בתוך רעיון?)

דותן - 
  • אז TypeScript 3.7 יוצא ל Beta, עוד שבוע-שבועיים יהיה Final (“נובמבר 2019”)
    • ה - Release הזה כבר כולל Null Coalescing, שזו היכולת להשתמש ב - Operator על מנת להמיר NULL לאיזשהו ערך רצוי (דיברנו על זה בבאמפרס 60), וגם Optional Chains (היכולת לשרשר עם “?” ואז לעשות Deep dive לתוך אובייקטים).
  • עוד בחזית השפות - Python 3.8 גם יוצא
    • עם האופרטור Walrus ( “:=”, כמו של Go, לא כזה)
    • זהו האופרטור בשבגללו Guido עזב את Python, ואז חזר
    • בכל מקרה - החדשות הן ש Python 3.8 יצא, ודי בשקט
    • יש גם Parallel bytecode cache - שזה אומר שכבר לא נצטרך לחיות עם ה - folders המגעילים האלה של PyCache בתוך ה - codebase שלנו (זה יכול לחיות גם במקום אחר)
    • ויש גם f-strings - מקביל ל-Interpolations שיש בשפות אחרות כמו TypeScript ו-JavaScript
      • רגע - f-strings יש גם ב-3.7 - מה השתנה?
      • הוסיפו לו יכולות? - לוקח משתנים מתוך ה-scope הגלובאלי
      • אלון משתמש ב-3.74, וזה עובד שם . . . אולי הוסיפו Feature, למשל האפשרות להשתמש ב”=” ולהכניס משתנים ל f-string באופן אוטומטי.
    • בכל אופן - בתוך ההכרזה הזו יש גם Infrastructure די כבד, שאני (דותן) מניח שבעקבותיו יבואו כל מיני כלי Profiling ואינסטרומנטציה - כדי להתגבש למה ש Python עושה מאחורי הקלעים - יפה, זה משהו שחסר.
  • ובאותו קו - Instagram, שידועים בכך שהם אוהבים לקסטם (Customize) את ה - Python שלהם, ועושים “Python at Scale”, הוציאו מאמר שמתאר סוג של Anti-Pattern שבו Python modules או “סתם” קבצים ב-Python יכולים להריץ קוד ברגע שעושים להם Import - והדבר הזה “הורג אותם”.
    • הם חיפשו דרך להימנע מזה, והחליטו לסמן Module כ - Strict, ולייצר יכולת לקרוא את הקוד, להבין שה - Module הוא Strict, ואז אם הוא מכיל קוד כזה (עם Initialization “כבד”) - למנוע את ה - Import שלו.
    • המאמר מתאר את הבעיה - ואת הפתרון - ומספר שהם עדיין מריצים את הדבר הזה, וברגע שזה יהיה “Final” הם ישחררו יותר מידע (דותן מניח שהם יוציאו את זה כ - Open Source או משהו כזה).
    • (רן) אגב - בעיה דומה קיימת ב - Go: גם ב - Go אפשר לעשות “initialization סטטי”, וזה יכול לדפוק אותך, אם אתה עושה שם דברים מוזרים אז זה רע . . .
      • במיוחד בספריות.
    • בדיוק - איך שאני (דותן) קראתי את זה בין השורות, אז קוד איטי ו - Bad Practice הם, ובכן - קוד איטי ו - Bad Practice . . . לא יודע כמה אפשר להתחמק מזה.
      • ב - Go יש תמיכה ברמת ה - Syntax, שזה נהדר - אבל אתה תמיד יכול לירות לעצמך ברגל, אז לקחתי את המאמר הזה עם כוכבית (*) קטנה.
    • בכל אופן - מעניין לראות מה הם מגדירים כ - Python at Scale, ואני בהחלט מזדהה עם כל מיני בעיות ב-Python שנובעות מכל שזו שפה מאוד Generalized, ומכילה המון Roles (עבור Data Scientists ו - Software engineers ו - DevOps וכל דבר…) - פונה לקהל הרחב, ואני לא יודע אם הם אי פעם לקחו עמדה בעולמות האלה.
  • עוד אחד - Repo ב - GitHub בשם email-marketing-regulations
    • מעיין Repository יותר טקסטואלי שמתאר כל מיני ארצות ואת הרגולציה שלהן לגבי email.
      • למשל - באוסטרליה opt-out זה required, ובברזיל לא; בארה”ב שוב כן - וכן הלאה.
    • יש גם תיאור של הקנסות והעונשים הצפויים אם אתה מפר את הרגולציה
    • בגדול - מדהים: בדר”כ כשמייצרים כאלה טפסים מנסים לחשוב מה קורה למשל בארה”ב, אבל קשה לדעת מי באמת המשתמשים עד שלא מפיצים את המוצר.
    • בדר”כ בסוף מדובר בעו”ד שאומר מה מותר ואיך, וגם העו”ד לפעמים לא כל כך יודע בארצות שבהן הוא לא מתמחה (“אני לא עובד עם הארצות האלה, לך תמצא מישהו שכן”).
    • אם אתה ברשות עצמך, ואין לך כל כך איך לממן את כל העו”ד האלה - זו אחלה רשימה להתחיל ממנה.
    • (אלון) האם אפשר לסמוך על הרשימה הזו? מי כתב אותה?
    • בסוף זה משחק של סיכונים, קצת כמו במקרה של הלוגים עליו דיברנו קודם (והבטחנו לא ליפול לדיון משפטי…) - בבית משפט כנראה שתצטרך להוכיח שהשקעת מספיק Reasonable effort כדי להוציא פרטים שאסור שיהיו ב Logs (נניח אם היה Crash dump שהוציא Stack trace עם ססמאות ודברים מגעילים אחרים (מי אמר Facebook?!) . . . אם היה באג, ויש service אחד שלא כולל מידול שמונע זליגה, אני (דותן) מניח שלא ישלחו אותך לכלא על באג כזה, כי הוכחת שהשקעת Reasonable effort.
    • שוב - מניח שזה משחק של סיכונים - לא עשית הכל עד הסוף אבל השקעת את המאמץ ומיממשת דברים שמייצגים את הרגולציה. ענייני Google ו - Facebook זה כבר מעבר להבנה שלי (דותן).
    • ושוב יצא פרק ליגאלי . . . אם אתה בנאדם אחד שמפתח מוצר, נראה לי שזו נקודת התחלה טובה.
  • עוד אייטם - onefetch
    • כתוב ב - Rust, קצת במו CLI App כזה מגניב - שנותן סיכום של ה- Repository ומה הוא מכיל
    • למשל - אם הולכים ל - GitHub ופותחים את השורה למעלה עם השפה וה-Committers והסטטיסטיקה - אז כאן תקבל את הכל ב  -Command line.
    • פשוט מריץ התוך Repo, וזה אומר לך את שם הפרויקט ובאיזה Branch אתה - ואילו שפות יש בפרויקט ומה התמהיל שלהן (15% ++C וכו’), מי ה-Committers המובילים ועוד.
  • קצת Kubernetes - אני (דותן) לפחות חושב שסביב Kubernetes ו - Security יש “הרבה בשר” לדבר עליו בעתיד
  • בלוג-פוסט שמדבר על Errors in Go 1.13
    • זו גרסא חדשה - ועכשיו Errors יכולים להכיל Context: “מאיזה Error ה- Error הזה בא” (בעיה בגישה לדיסק שנובעת מ-Error עמוק יותר בקוד, וכו’)
    • אפשר לשרשר Errors, וגם לבדוק היררכית מאיזה סוג ה - Error - והכל נתמך ע”י יכולות חדשות בתוך ה-API של Go.
    • מומלץ לקרוא - בסך הכל יישור קו עם שפות אחרות, ו”דרך מתורבתת” להתייחס ל-Errors כיום.
  • ולעולם ה - React native - פרויקט חדש יחסית בשם React Navigation meets native
    • מחדש ומוסיף יכולת Native ל - Navigation
    • הרבה זמן Native Navigation היה דבר יחסית “מקולל” ב - React Native, כי זה קצת מבטל את העולם של React - וכאן הצליחו לייצר תמהיל שלדעתי (דותן) הוא נכון, של “כמה שיותר ב-React אבל חלק הוא native בשביל ה-Performance”.
    • זה - בניגוד למשל לספרייה המפורסמת של Wix, שעושה הרבה Native וקצת JavaScript - כאן התמהיל קצת הפוך. מומלץ לבדוק. 
  • בחזרה ל - Rust - והפעם: Astropad red heart Rust
    • חברה בשם Astropad studio, מי שיש לו iPad ואוהב לצייר אולי מכיר - זה מאוד דומה ל Procreate
    • “יצאו למסע לחיפוש שפה לכתיבת ה - Core שלהם” . . . האפליקציה היא מעיין Photoshop ,אז צריך לדעת לעבוד עם גרפיקה ו-Performance והכל
      • ה-Core צריך לרוץ על  IOS
    • ועכשיו מכריזים ש - Rust זו השפה שנבחרה
    • ואיך זה עובד? פעם דותן היה עושה ניסויים, לוקח Go, כותב Core מסויים שאפשר להעביר אותו פלטפורמות (למשל - איך מתייחסים ל-Network), חושף API ב-C, שזה די נפוץ ועובד וה-tooling קיים ועובד מדהים
      • ואז עושה FFI - אם למשל יוצאים מ-IOS אז לוקחים Objective C (זה מה שהיה אז) - ואז יוצרים Interface מול C Libraries.
      • במקרה הזה (Objective C ו- C Libraries) יש Interface מדהים. היום גם ל - Swift יש.
    • אלו, בגדול, ה - Building blocks של לקחת שפה זרה ולהכניס אותה לתוך Mobile Platform - וזה בדיוק מה שהם עשו כאן.
    • (רן) אז מה שאתה צריך למעשה ב - Rust זה את היכולת לקמפל (Compile) למעבד שרץ על (מריץ את) אותו IOS - ואת ה - C Bindings
    • גם ל - Rust היום (נכון ללפני “חצי שנה”) יש סיפור מדהים של Cross-compilation, יחד עם Auto-binding - וזה הימור מאוד נכון לדעתי (דותן)
      • האלטרנטיבה (לפי מה שהם מספרים) זה לכתוב קוד ב - ++C, שזו הדרך שבה לפני משהו כמו 10 שנים היה אפשר לעשות Shared Core בין אנדרואיד ל-IOS.
      • הימור מעולה ומדהים, וכזה שהם רק יהנו ממנו.
      • האלטרנטיבה היא ++C, כן?
    • שווה לקרוא את המאמר ולהבין מה היו השיקולים שלהם בבחירה, אם אתם נמצאים באותה דילמה
    • לדעתי זה מושלם ל-Go, כי אין אפילו את ה - Overhead (בגדול Rust היא שפה שהיא Zero overhead) - כמעט לכל דבר שאתה עושה אתה יכול “לקחת נייר” ולחשב כמה זמן הקוד הזה ירוץ וכמה זכרון הוא יתפוס.
    • זה גם Zero cost abstractions - אם יש Class ואבסטרקציות מסויימות של השפה - בסוף זה מתקמפל ל Machine Code וזה שהשתמשתי בכל הדברים האלה “לא עולה לי כלום” (מאוד קרוב ++C במובן הזה. 
  • יצא GitHub package registry !
    • צריך Invite, אבל אני (דותן) כבר קיבלתי והתחלתי להשתמש בזה (ככה יצא).
    • קצת כמו GitHub Actions שהזכרנו (כאן) - התחלתי להשתמש בהתלהבות, אבל אז לא ממש הבנתי למה צריך להעביר הכל לשם או בכלל להשתמש בזה.
    • מעניין בהקשר של המוצרים האלה - זה נחמד שזה ב - GitHub וממש רציתי שיהיה - אבל עכשיו כשיש אני לא כל כך מבין למה כדאי לי לעבור . . .
    • (אלון) דווקא יש שימוש - במקום להשתמש ב-npm.
    • (דותן) יכול להיות שזה כיוון שאני מסתכל על השימוש שלי כרגע עבור ה - Open source שלי - יכול להיות שיש כאן Value מדהים אם אתה עובד מתוך חברה, יש לך Private repositories ואתה מייצר מוצר וזה שירות פנימי לחברה.
    • גם אז - הסתכלנו “במשקפיים של Open Source” (בהקשר של GitHub Actions) ושאלנו מה בעצם ההבדל לעומת למשל Travis ו-Actions ,ומה ה - added benefit אם בכלל.
    • (אלון) כשהכל חינם זה כנראה לא חוכמה . . .
    • (דותן) סתם לזרוק משהו לאוויר - "תסתכל על ה - Repo שלי, תבין אוטומטית מה לעשות, “תפרסר את ה - Travis שלי”, תריץ את החלק הזה שבו אני מייצר Package ותדחף לתוך ה - Package של עצמך”
      • בלי שאני אצטרך לעשות Setup של CI או Travis שדוחף ל-npm וכו’ . . .
    • זה יכול היה להיות נחמד, ולייצר משוואה שבה Repo בעצם שווה ל Package - ואני לא עשיתי כלום כדי לקשור את החוטים.
    • זה משהו אחר - להגדיר Repo כ - Package - אוטומטית.
    • אפשר לחלום… צריך להבין את ה - Build, וזה צריך להימצא במקום מוסכם מראש - ואז “דוחפים” את זה ל  -GitHub.
    • אם מישהו דובר עברית ב-  GitHub מאזין - אנא רשמו לפניכם.
    • כן - אתה. זה היה בעברית?
  • חברת Viro Media (חברה שעושה VR…) הוציאה SDK בקוד פתוח (MIT) של הפלטפורמה שלהם - מאפשר לעבוד VR על React
    • רשיון MIT - חדשות מאוד טובות
    • אם מישהו רוצה לעשות React, ורוצה להשתמש ב - SDK מסחרי (לשעבר) - איכותי, עם פיצ’רים, כזה שהשקיעו בו הרבה כסף - מוזמן.
    • מהסתכלות ברפרוף זה נראה משהו שיש לו שימוש מיידי - אפשר לדמיין אפליקציות שקיימות כיום ב - Market ואפשר לבנות ככה ב - React.
      • מי שמתעניין בתחום מוזמן.
    • די מדהים - ספריה מאוד מרשימה.
    • יש פרויקט שנקרא React VR, אבל הוא לא כזה שמיש (מעבר ל”ראיתי, מה אני עושה עם זה עכשיו?”)
      • בספרייה הזו יש גם AR ברמה שמאפשרת לעשות פרויקט מגניב בסופ”ש, וגם 3D Objects שאפשר לסמן אותם ועוד
      • נראה שיש הרבה בשר, ובגלל שהיה Closed Source ומסחרי אז אפשר להניח שהשקיעו בזה.
    • רק מלהסתכל על ה - Gifs זה נראה מדהים - וכל הדוגמאות זמינות, אחלה מקום לשחק ב-VR.
  • אייטם מאוד גדול, שעשה הרבה  Buzz - איזשהו Flaw ב - Sudo, אותה פקודה שכולנו משתמשים בה  -שמאפשר להריץ פקודות כ- Root בלי הרשאה
    • בתור התחלה - סוג של ביזיון, בלינוקס זה לא היה קורה.
      • זה לינוקס.
    • בשלב השני - אנשים הסתכלו על הקוד, וראו שהוא בכלל לא Tested . . .
    • זה יחסית קוד לא גדול ואפשר לראות בדיוק איפה ה -Flaw
    • אז קודם כל אין טסטים, וחוץ מזה - בתוך ה - Ecosystem של Rust הראו איך זה יכול היה להיכתב  ב - Rust, ואם זה אכן היה נכתב ככה אז בכלל לא היינו נכנסים לסיפור הזה
      • כלומר: Rust מכיל את מנגנון ה - Safety המובנה שמונע בעיות כאלה.
    • עוד נקודה ל - Rust (די, הכרזנו על ניצחון . . . ) - והפעם על Empowering Security.
  • עוד חדשות Borderline-מדהימות - למי שמכיר את ionic 
    • זה SDK שכל מי שעשה Angular או Mobile Web לפני 4-5 שנים - זה היה מטורף ברמה של “אני לא אעשה React כדי לעשות את זה” - עד כדי כך טוב.
      • זו הייתה טעות
    • בכל מקרה - הם עשו את המעבר, ועכשיו עובדים עם React.
    • זה Tool-kit מדהים שמשולב עם Framework מדהים  - ויש פה סיפור מעולה
    • הם עברו ל - React, מהלך מאוד יפה, מאוד מעניין לנסות - איך ה - Performance, איך חוויית הפיתוח, עכשיו זה פתאום מעניין.
      • לעומת  Angular, שם זה, ובכן, פחות.
  • ובנוסף - Cory House כתב מסמך עם 55 שיעורים מחמש שנים עם React
    • פחות משיעור בחודש . . .
    • לא הכל זה דברים שצריך לשנן, אבל לא מעט דברים שיכולים לעזור למי שמתחיל עם React
    • שווה לעבור על הכל ולראות אם פספסתם
    • וכל הכבוד להורים עם החזון שקראו ליד Cody (קוראים לו Cory, אבל בקטנה . . .) - ד”ש ל Coda Hale
      • לא בדיחה ולא שם עט - סופרסטאר בעולם ה - Java, “מתחיל תנועת ה Modern Java” של שימוש בספריות קטנות יותר ו Web Framework קטן יותר (בשם Dropwizard, שהוא גם יצר ו Spring Boot “חיקה” מאוחר יותר), עבד על ספרייה שהביאה את עניין ה Performance ב Json ל-Java (בשם Jackson), ועוד ועוד . . .
      • התחיל ב-Yammer, היום ב - Netflix (או MailChimp), והיה גם חלק מהתקופה עם Go, אבל הספריות שלו שם הרבה פחות פופלאריות.
      • בהחלט אדם מוכשר, ומעבר לספריות - יש לו גם המון הרצאות מעולות על Metrics וסטטיסטיקות מעניינות ודברים יותר ארכיטקטוניים ועמוקים. בנאדם חכם שיש המון מה ללמוד ממנו.
      • כן, שיא חדש בדיון אסוציאטיבי. איך הגענו לכאן?

ולחלק הקליל - 
  • דיאגרמה מגניבה שממחישה (יתרון לגרסא הטקסטואלית, באודיו זה פחות עובד…) מהו Upper-Case - 
    • אותן “אותיות גדולות” באנגלית שאתם מכנים Upper Case? אז השם הזה הגיע מ”המזוודה” שבה היו נושאים את האותיות (ממתכת) למכונת הדפוס, ויוצרים איתן את הגלופה (אותה היו “מדפיסים”).
    • בחלק העליון היו ה Capital letters, ובתחתון - “האותיות הקטנות”. אז משם Upper ו - Lower.
    • איזה מזל שלא הפוך - אם הגדולות היו למטה הן היו Lower (או שפשוט היינו מתרגלים הפוך).
    • עדיין לא ברור? אם אתם באיזור פילדלפיה אז ב Franklin Court Printing Office יש הדגמה ב-Live
  • עוד קריקטורה משעשעת מבית My Tech Life (שכבר הזכרנו כאן), והפעם - Kubernetes . . .
    • מה זאת אומרת “זה לא פותר את כל הבעיות?!” הרי אמרתי Kubernetes!
    • כן . . .
    • תודה ערן!
  • ואחרון - זה מ-2012 אבל לא נורא: Programmer Time Translation Table
    • כמה זמן המתכנת אמר שיקח לו - ומה זה אומר בפועל
    • בגדול: 30 שניות זה כנראה שעה; חמש דקות זה כנראה שעתיים; שעה זה כנראה שעתיים; 4 שעות זה כנראה באמת 4 שעות . . .
    • 8 שעות זה כבר 12-16 שעות; שבוע יכול להיות כל דבר שבין יומיים ל-20 ימים.
    • אם זו משימה שאתה ממש רוצה אז כנראה יש גם Under-estimation, ואם זו משימה שאתה לא רוצה אז יש Over-estimation, שגם ממנו תחרוג (ד”ש ל - Parkinson) - אם אתה אומר “שבוע” אתה כנראה לא ממש רוצה לעשות את זה וזה לא יקרה אף פעם.
    • מי לוקח על עצמו לייצר Plug-in ל-Jira שמייצר מזה הערכת זמנים נכונה? סטארטאפ מטורף.
    • הייתה על זה גם הרצאה מעניינת באיזה כנס שאנחנו מכירים (I want to grab the next 23 minutes and 11 seconds to discuss time estimations / Itay Maman) - מוזמנים.

זהו, תודה.

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