פרק מספר 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 וחושב שאולי כדאי שיהיה גם אחד כזה בעברית... יצא בסדר בסך הכל
- רץ הרבה שנים, בשלב מסויים כבר בלי Joel Spolsky, ואז בשלב מסויים קצת נעלם - ועכשיו שחררו מחדש פרק ראשון, מומלץ לחובבי הז’אנר.
- אז איך הפודקאסט (אם כבר מפרסמים מתחרים . . .)? לפי רן לא משהו (מדבר מפוזיציה?), אבל יש תקווה כי יש שם חומר טוב -
- שלושה אנשים שמדברים על שאלות מעניינות ופופלאריות ב - Stack Overflow ועל Compilers באופן כללי.
- לדוגמא - שאלה (פילוסופית) על “האם כשאתה מצליח לגרום ל Compiler לעשות משהו לא חוקי - האם אתה Liable? שואל בשביל חבר . . .
- והנה חזרנו לשאלות החוקיות
- האם במקרה שהצלחת לנצל חולשה ב compiler וככה להשתלט על משהו שלא היית אמור - האם האחריות היא עליך או על יוצר ה Compiler, או משהו בסגנון
- (דותן) הייתה גם דרמה גדולה ב - Stack Overflow השבוע - הם שינו את ה Term of service, ועכשיו אי אפשר לפנות למשתמשים כ “He” או “She”, וזה עורר דרמה -
- חלק מה - Moderators עזבו וכאלה.
- רן לא זוכר אם זה עלה בפודקאסט, אבל יש מצב שכן. תקשיבו.
- הרבה זמן לא דיברנו על Rust vs. Go, הא? אז הנה חדשות חמות בנושא - נקודה נוספת (או כמה בעצם) לטובת Rust: הודעה של AWS על מתן חסות ל Rust Project
- מבחינה היסטורית, Rust התחיל את פיתוחו בתוך Mozilla, ולמעשה עד היום נמצא תחת הכתפיים שלה -אעפ”י שהמפתח הראשי כבר עזב (ל - Apple) והיה נראה שהקהילה קצת איבדה את ההנהגה שלה.
- עכשיו AWS הודיעו על מתן Sponsorship (לא נראה שבלעדי) - יחד עם Google, Microsoft ו - Mozilla
- כך שעכשיו יש כמה אבות לפרויקט, מרשים ביותר - לא עוד נקודה ל-Rust אלא 4 גדולות. . . בשורה מטורפת.
- מי שכותב ב - Rust יכול להמשיך.
אלון -
- קודם כל - מה יש לדותן להגיד על Rust? תמיד היה חשש שאין לזה אבא
- דותן כותב יותר Rust מ-Go כבר יותר משנה - נראה שיש מנצח בהתערבות
- נחשב את עלות השקל בערכים של לפני שש שנים ונשלח בדואר ימי.
- ולעניין - פוסט על 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, ואז חזר
- ועכשיו עוזב גם את Dropbox ופורש? יש חומר ל-Bumpers הבא…
- בכל מקרה - החדשות הן ש 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, ובברזיל לא; בארה”ב שוב כן - וכן הלאה.
- יש גם תיאור של הקנסות והעונשים הצפויים אם אתה מפר את הרגולציה
- בגדול - מדהים: בדר”כ כשמייצרים כאלה טפסים מנסים לחשוב מה קורה למשל בארה”ב, אבל קשה לדעת מי באמת המשתמשים עד שלא מפיצים את המוצר.
- בדר”כ בסוף מדובר בעו”ד שאומר מה מותר ואיך, וגם העו”ד לפעמים לא כל כך יודע בארצות שבהן הוא לא מתמחה (“אני לא עובד עם הארצות האלה, לך תמצא מישהו שכן”).
- אם אתה ברשות עצמך, ואין לך כל כך איך לממן את כל העו”ד האלה - זו אחלה רשימה להתחיל ממנה.
- (אלון) האם אפשר לסמוך על הרשימה הזו? מי כתב אותה?
- כן, על הכל יש את ה - Disclaimer המפורסם שעיקרו “I’m not a lawyer” . . .
- או Legal Information: Do not hack
- בסוף זה משחק של סיכונים, קצת כמו במקרה של הלוגים עליו דיברנו קודם (והבטחנו לא ליפול לדיון משפטי…) - בבית משפט כנראה שתצטרך להוכיח שהשקעת מספיק 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 יש “הרבה בשר” לדבר עליו בעתיד
- יש סטארטאפים שלמים שעוסקים בזה
- אני מסתכל על זה מבפנים - ועכשיו למשל על Security issue חדש של Denial Of Service, שבעצם מגיע מפגם בספריית .yml של Go, שעליה מבוסס Kubernetes - שבעצמו מגיע מהתקפה ידועה אחרת
- בסופו של דבר - אם אתה מנסח קובץ .yml בצורה מסויימת, זה גורם לParser של YAML להיכנס לסיבוך אקספוננציאלי - שגורם ל-CPU גבוה ומשם ל Denial Of Service.
- מה שעוד גילו זה שבצירוף מקרים - גם unauthenticated user יכול להכניס איזשהו .yml שהוא malformed, ולגרום ל - Kubernetes ל - Denial Of Service.
- מאוד מעניין - יש חברה חיצונית שעושה Penetration test לKubernetes ומעלה PDF של הסיכום - מומלץ לעבור על זה, ולוודא שזה בסדר עם מה שאתם חתומים עליו.
- בלוג-פוסט שמדבר על 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 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) - מוזמנים.
זהו, תודה.
הקובץ נמצא כאן, האזנה נעימה ותודה רבה לעופר פורר על התמלול
אין תגובות:
הוסף רשומת תגובה