יום ראשון, 19 במאי 2019

369 Bumpers 58

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

רן - 
  • מקום נחמד להתחיל - repository בשם Hacker tools - מעניין הקדמה בסיסית אך כתובה היטב לכלים, שמיועדת כביכול להאקרים אבל רלוונטי גם מפתחים, אנשי אופרציה ועוד.
    • מעיין checklist נחמד של כלים שימושיים, שכל מי שנמצא בעולם הזה כנראה כבר מכיר, ועדיין נוח וכתוב טוב - איך עושים backup? איך מתחברים ל-Remote Machine? ענייני אבטחה ועוד הרבה.
  • בלוג-פוסט בשם Operable Software - איך כותבים תוכנה שקל לתפעל?
    • מתחיל בסיסמאות מסוג Simple is Complex” ואומר שכל מערכת פשוטה בסוף מסתבכת מתחת לפני השטח, כי המציאות יותר מורכבת ככל שמסתכלים מסביב ולעומק - ומה שצריך זה לא בהכרח פשטות אלא מודל מנטלי נכון של המערכת.
      • לדוגמא - מפה של עיר עבור מערכת רכבת תחתית: ההיבט הגיאוגרפי פחות רלוונטי עבור הנוסעים, ויותר התחנות עצמן והקשרים בינהן. זה מודל פחות מדויק גיאוגרפית, אבל מאפשר מודל פשוט יותר עם מידע שקל יותר לתפוס ולהבין.
      • ההשלכה על עולם התוכנה - איסוף לוגים או כל מערכת Monitoring או Visibility לדוגמא, מצריך חשיפה של אלמנטים שונים, אבל חשוב להבין מה חשוב באמת - לא כל שורות הלוג או כל ה - Metrics, על מנת שלא להציף את המשתמש ולהפוך את המערכת ללא שמישה.
      • יכולים להיות כמה מודולים שונים של המערכת עבור משתמשים שונים שחושפים מידע שונה.
    • חשוב לשים לב שההפשטה בשלב הראשון נובעת מהסתכלות על איזורים שונים כעל Black-box, וגם שמערכת משתפרת ומתכנסת עם הזמן (למשל - בתהחלה יש הרבה לוגים ועם הזמן מבינים מה רלוונטי), לפחות בתיאוריה.
      • לא קל למצוא את המודל הנכון ויש הרבה ניסוי וטעייה בהתחלה, אבל מציאת המידע הרלוונטי (והמודל שמדגיש אותו) חשובה על מנת לבנות מערכת שעובדת כמו שצריך - ואת המודל הזה חשוב לבנות מראש.
      • עוד שיקול הוא שבפרטים הקטנים השינויים יותר מהירים - ומודל מנטלי כללי אמור להיות יותר רובסטי ברוב המקרים - וכמובן שצריך לתקף את זה כל הזמן ולראות שעדיין רלוונטי.
  • פרויקט קוד פתוח שרן עבד עליו לא מזמן - Kafka replication test suite
    • מתוך עבודה עם Multi-regions ורצון לבדוק את יכולות השכפול (Replication) של Kafka בתנאים אמיתיים - 
      • כמויות מידע אמיתיות (או לפחות נגזרת שלהם), Clusters אמיתיים, Latency אמיתי (אוקיאנוס בין ארה”ב לאירלנד…) וכו’.
      • בדיקה של ביצועים, האם כל ההודעות באמת מגיעות ליעדן, ועוד.
    • הפרויקט משתמש בשתי טכנולוגיות עיקריות - Kubernetes ו - Go 
    • יש Producer ו - Consumer מאוד ספציפיים שיודעים לעבוד אחד עם השני עם פרוטוקול מוגדר וכך אפשר לבדוק שכל ההודעות אכן הגיעו ובסדר הנכון (עם חלוקה פנימית לנושאים)
    • כל זה רץ על שני Clusters שונים של Kafka, עם כלי רפלקיציה ביניהם - בעיקר uReplicator, (במקור מ- Uber). בנוסף, תוך כדי הניסוי מוזרקות תקלות, שיהיה מעניין.
      • אין הנחות מיוחדות - Vanilla clusters של Kubernetes.
    • בסה”כ שני Clusters עם כמה עשרות Nodes בכל אחד, עם תעבורה משמעותית ביניהם -
      • שורה תחתונה:  הכל עובד, לפעמים קצת בעיות Performance.
    • בונוס - הצוות שכתב את uReplicator ב- Uber אהב ואמר זה ישמש לבדיקת הפיצ’רים הבאים :-)
    • כל הטוב הזה הוצג ע”י רן ב-Meetup של Go Israel (בפתח תקווה!), אבל זה כבר קרה בין הקלטת הפרק לפרסום - למתעניינים: יש מצגת.
  • כלי שנקרא Git History - מאפשר לראות את כל ההיסטוריה של Git Repository בצורה ויזואלית נוחה.
    • ה - Commits ושורות הקוד עפים לצדדים, ה - Diff נראה יפה, קצת כמו ויזואליזציה של מסע בזמן (או הכחדת חצי יקום). צעצוע נחמד.
  • עמוד פייסבוק בשם My Tech Life - אנימטור ישראלי שמאייר את חייו כעובד היי-טק בישראל.
    • קריקטורות יצירתיות על ביזנס, תרבות (מישהו אמר משקפיים נגד ספויילרים של משחקי הכס?) ועוד.
  • סאגת AWS / Elasticsearch
    • כבר קרה לפני יותר מחודש ועדיין - AWS יצאו בהצהרה ש Elastic Search “לא מספיק פתוח”, ושהם יספקו מוצר “אמיתי” פתוח - בחינם.
    • תקציר - תעשיית הקוד הפתוח מבוססת על שכבת בסיס חינמית עם פיצ’רים מתקדמים (ותמיכה) בתשלום. ב-AWS אמרו תודה, לקחו את השכבה החינמית והנגישו את הפצ’רים המתקדמים כחלק מהמערכת שלהם, שהיא היום בחינם. המהלך נתפס כמעיין “הפרת אמון” - אותו אמון עליו מבוססת רוב התעשייה (היכולת להרוויח בהמשך ממוצר ששוחרר ללא תשלום בשכבה הבסיסית).
    • אפשר להסתכל על זה מהרבה כיוונים - יש הרבה חברות שעשו את זה זה קודם (מקרים עם MongoDB למשל), ואולי יש כאן קצת(?) תמימות מצד היזמים, ועדיין ברגע שחברה בסדר גודל של AWS עושה את זה יש לכך השפעה מאוד משמעותית על התעשייה, ומוצרי קוד פתוח עשויים להיתקל ביותר קשיים בעתיד.
      • הלקוח יכול לקבל בטווח הקצר יותר פיצ’רים מתקדמים בחינם, השאלה היא האם ימשיכו לפתח הרבה כאלו כשהמודל העסקי מאויים בפועל (ולא רק תיאורטית).
  • עוד מסד נתונים - AresDB: מסד נתונים מבוסס GPU שנכתב ב-Uber ומשמש ל - Analytics.
    • בלוג-פוסט ארוך (21 דקות קריאה לפי Pocket) ומאוד מעניין על אופן המימוש של analytics Database מעל GPU. 
    • ספציפית לעבודה עם ה-GPU משתמשים בספרייה קיימת, אבל יש הרבה ארכיטקטורה מעבר.
    • מסבירים למה פתרונות קיימים עם Databases על GPU לא התאימו - מעניין הנדסית וגם ככיוון שנראה יותר ממנו בעתיד.
  • עוד על פוליטיקה של עננים - בלוג מעניין וכתוב היטב שמשווה את המתח בין AWS ו - Kubernetes למתח ההיסטורי בין Windows ו - Linux.
    • לא רעיון חדש, אבל מוסבר יפה - המאבק שבין ה-Vendor וה - Open Source. המציאות יותר מורכבת אבל עדיין מעניין ויפה.
  • פרויקט של Google בשם Pi in the sky שיצא ביום הפאי הבינלאומי (3.14) - חישוב של פאי עד 31.4 טריליון ספרות אחרי הנקודה.
    • מעניין האם מדובר בטריליון אמריקאי או בריטי (כן, מסתבר שזה לא אותו הדבר).
    • ארכיטקטורה, חומרה, וכו’ - נחמד. זמן ריצה? 2,795 machine-days . . . חימום כדור הארץ על הדרך.
  • תוכניות ל - Error handing לקראת Go 2.0
    • ב- Go כמעט כל פונקציה מחזירה שני ערכים (או יותר), כשהאחרון הוא ערך השגיאה.
    • ההצעה מדברת על שני Constructs חדשים - check ו -  handle (לא Try ו - Catch . . .), מה שיכול להפוך את הטיפול בשגיאות לקצת יותר זורם ואמין.
    • תאריך ל - Go 2? בינתיים סופרים עדיין בגרסאות של 1.משהו . . .
  • בהמשך לשיחה על Nuclio באחד הבאמפרס הקודמים (והיה את פרק 333 עם ירון חביב) - בלוג פוסט מעניין של Yan Cui, אחד המומחים בתחום של Serverless, שמשווה את Nuclio ו -  AWS Lambda
  • חזרה לעולם ה - Go ול - Goroutines - שמאפשר להאיץ חישוב לינארי ע”י חלוקה.

דותן - 
  • התחלה קצת מלנכולית - לזכור את ג’ו. Joe Armstrong, האבא של Erlang (זו שמאחורי כל תשתיות הטלפוניה בעולם, ומשם ל - WhatsApp והרבה דברים שאתם מכירים). פוסט של אנשים שעבדו איתו וראו הכל, וזוכרים אותו כמישהו שכבר ראה את הכל מגיע ורק חיכה לראות המימוש של הרעיונות.
    • הזדמנות להבין את Erlang ואת Elixir שבאה בעקבותיה
    • באותו הקשר - How Discord Scaled Elixir to 5,000,000 Concurrent Users - מתקשר יפה ומראה את היכולות של Elixir להרים כל כך הרבה Connections על שרת.
    • זו שפה מדהימה מצד אחד, ומצד שני אין גוף כלכלי משמעותי מאחוריה (לטוב מבחינת החלטות פחות ריכוזיות, לפחות טוב מבחינת היכולת להוציא לפועל את אותן החלטות).
  • מאמר יחסית בסיסי על הצורך לעדכן את מודל ה- Machine Learning שלך - Your ML models are dying quietly
    • ההתנהגות של העולם משתנה עם הזמן, וצריך לדעת לבנות מודל היזון חוזר (Feedback loop), או בגדול - Hire a data engineer… רלוונטי לחברות קטנות, אבל בעצם כבר לא רק.
  • מעבר לעולם ה - Security - מישהו לקח אפליקציות ניהול סיסמאות (One Pass וכו’) והסתכל על האפשרות, ובכן -  לפרוץ אותן
    • הפוקוס הוא על אופן השמירה בזכרון של הסיסמאות, מתי הן מועלות לזכרון ובאיזה אופן (יחד או רק לפי דרישה ספציפית), האם יש נעילה אוטומטית אחרי זמן מוגדר (והאם הזכרון מנוקה בשלב הזה) ועוד.
    • אנחנו זוכרים את כל הסיסמאות בע”פ, אבל אם יש לכם אחת ממש טובה - מוזמנים להשאיר בתגובות ונאמץ (אבל רק אם היא באמת טובה).
    • טיפ של אלופים - באיזה כלי להשתמש? אולי 1Password (לא פרסומת או המלצה רשמית או שום דבר, אפשר גם לשמור במקום אחד ואת ה - Database במקום אחר, או פשוט restart בכל פעם שזזים מהמחשב וכו’)
  • מעולם ה - Performance - איש בשם Brendan Gregg יצר סקירה של מתודולוגיות אנלזיה לביצועים
    • כולנו יודעים (כמובן) פחות או יותר, אבל יש מקומות בהם יש מתודולוגיות מוגדרות, כמו Compilers, CPU וכו’ - וכאן יש ריכוז של המתודולוגיות (וגם של ה Anti-patterns).
    • בהקשר דומה - Go-Perfbook הוא ספר וגם repository - מאוד שימושי לא רק בהקשר ישיר של Go (הספר אולי פחות אינטואיטיבי מהמתודולגיות היבשות, אבל הן יכולות לעזור בשלב של הטמעה  או בסטנדרטיזציה בארגון או קבוצה למשל).
  • יש הרבה Dissasemlbers בעולם - והם יקרים . . . REDsm הוא פרויקט קוד פתוח - מוצר UI טוב מעל ספרייה מאוד נפוצה לדה-קומפילציה ו Reverse Engineering
  • מאמר על Node 12 שיצא ב 23 באפריל 2019, ומדבר על עדכון משמעותי ב v8.
    • המון שיפורי Performance, כל היתר נראה פחות חשוב.
  • כלי בשם ink - מוגדר כ - React for interactive command-line apps
    • הקונספט - מתייחס אל הטרמינל או ה Command Line כאל משטח UI “ריאקטי”
    • ממש מגניב - זה ניהול לא רק של שורה בודדת אלא של הטרמינל כולו
    • באחד מקטעי הקוד של Zeit יש שימוש ב Redux או משהו דומה לניהול states של CLI - וזה נראה כמו קפיצת מדרגה, גם רעיונית.
  • איך לכתוב Commit Messages? ובכן - יש מדריך Commit Messages Guide
    • אם יש לכם שבוע לבזבז על ויכוחים, מוזמנים לשלוח ב Slack הצוותי (למתקדמים - בצירוף “מה אתם חושבים?”)
    • כן, רעיון לא רע ל Trolling או השבתת פרודוקטיביות של חברה . . . לא יפה slightly smiling face 
  • ה - UI Tookit של Uber -  קבלו את Base Web
    • עדיין מחפשים את ה- Holy grail של UI Tool Kit (יש למשל את ה - Ant.Design)
    • זה נראה כמו משהו שיכול להוות תחליף light weight, מאוד נקי
    • מאוד ממוקד Uber - לא מתביישים לנעול לעוד ספריות של Uber (דוגמאת Styletron), שזה קצת פחות נחמד. גם ה - API משתנה לעיתים, עדיין לא ממש יציב.
    • בפועל נועלים גם ל React
  • פקטור מגניב בשם IsometricSass
    • למי שמכיר “גרפיקה איזומטרית” - וזוכר את משחקי ה 90s בסגנון Ulitima
    • מאפשר להשתמש ב CSS כדי ליצור את הגרפיקה בלי JavaScript. לא ברור מה הצורך, אבל נחמד.
  • מי שעובד עם TypeScript מכיר את TSLint (של Palantir) - ועכשיו יש כיוון שלא בנוי על זה בשם ESLint
    • יחסית ניסיוני, ויש גם כלי נחמד שדותן עובד איתו בשם Zero Conf.
  • עדכון ל Ruby 3 - עדכון “יצאת צדיק”, גם אם לא ברור עד כמה העדכון משנה
  • באותו הקשר - Rails 6: מאמר שמנתח את השינויים וההתקדמויות
    • קצת דעיכה כמו Ruby, אבל זה נראה מאוד שלם כבר ב Rails 5, אז השינוי האינקרמנטלי יותר מתקבל על הדעת
  • עוד כלי בשם PySnooper מצטרף  - Ecosystem של Profiling ל - Python
    • יש ב - Ecosystem הרבה כלים חצי עובדים (וכן, אפשר ליצור כלי בערך שלם משניים חצי-עובדים. בערך)
    • היוצר של הכלי הזה הוא ישראלי בשם רם רחום (יש פרק עתידי איתו בקנה) - פרויקט חדש בן כמה שבועות, מניחים שצפוי עוד להתפתח.
    • באותו הקשר - כלי שדותן בנה (זה כמובן ממשפחת הכלים העובדים, בערך) על תשתית PyMongo בשם mongomon - בונה תשתית, מקשיב לכל השאילתות ומנסה לעשות Profiling ומאפשר viability - Python קשה אפילו לראות אלוקציות וכו’).
  • תופים! - שני(!) מאמרים על חוויות דותן עם Rust (הסיפור עוד לא גמור?):
    • מה למדנו תוך כדי (ו-30,000 שורות קוד)
    • ספריות שימושיות ספציפיות שלא קיימות (כנראה) בשפות אחרות, לפחות מבחינת בשלות
    • בכל מקרה -הכניסה לנושא קשה, גם עם יש רקע חזק בתיאוריה וב ++C, בעיקר סביב הנושא של Borrowing והבנת התרחישים של העברת פרמטרים By Reference לעומת By Value (כן, פלאשבק למבוא למדמ”ח).
      • ב - Rust זה נעשה עבורך, אבל רק אם עוקבים אחרי כללים מאוד ברורים (ואם לא - צריך לחזור להתחלה . . .)
    • האם בדיעבד היה שווה להתחיל עם Rust? לפי דותן - כן. לאחר שמשלמים את המחיר הראשוני, “הכל הולך חלק”’ - זה כמו Go עם Generics (מבוא ל Go 3?)
  • פנייה לכיוון Soft Skills”

אלון - 
  • משהו שהיה חם בכותרות לפני חודשיים בערך (ימי הבחירות העליזים ופרויקט הבוטים הגדול) - מישהו (Peter Berthelsen) כתב מאמר בשם I created a Twitter Bot from nothing but a Google Sheet
    • בדיוק מה שזה אומר . . . 
    • האם אפשר לעשות עוד פרויקטים בסגנון? מאוד נוח - בלי שרתים, בלי עלויות, רק Application Script. רעיון מעניין.
  • ייצור אנשים באמצעות רשת ניורונים (לא בצחוק) - This Person Does not Exist . . .
    • קריפי? ובכן - כן . . . מדי פעם נופלים על מישהו עם שלוש אוזניים וכו’, אבל בגדול - מפחיד למדי, ונראה אמיתי לגמרי
    • באותו הקשר - קבוצת פייסבוק בשם עליית המכונות, שמדברת על טכנולוגיות שונות בנושא. ד”ש ל - Skynet.
  • התגעגתם ל - Windows 95?  אז יש כזה עם React Hooks, כולל שולה המוקשים!
    • בונוס - לחיצה על Start מפעילה את המוסיקה של Windows 95 (לחובבי הג’אנר)
  • פרויקט של Outbrain שייצר לוגואים של מלא חברות ב Pure CSS. מגניב ומשעשע (הוזכר גם בפרק 367 על הגילדות)
  • פרויקט בשם Google Cloud Run
    • דותן קרא לזה פעם “Lambda Objects”, הקדים את זמנו
    • להביא Serverless ל - Containers: לוקח את ה - Serverless ליותר ממשהו של שורה אחת ולכיוון של Scale. מאוד מעניין. עדיין בטא, אבל שווה לנסות.
  • מאמר נחמד של Twitch על איך מתגברים על העומס שנוצר כשמי שמשדר מאבד לרגע תקשורת, ואז כשהוא חוזר כולם מנסים להתחבר מחדש באותו הרגע - Go memory ballast: How I learned to stop worrying and love the heap
    • המסקנה - מה שמאט זה ה - Garbage Collector של Go. מאוד משעשע ומאוד מעניין.
  • סקר 2019 של Stackoverflow
    • ישראל עדיין על המפה
    • מסתבר ש - Rust זו השפה שהכי הרבה רוצים להיכנס אליה (most loved), אבל גם ברשימת ה - most dreaded.
  • מאמר משעשע על מעבר של Tinder ל - Kubernetes
    • בעיות במשך שנתיים של מעבר עם המון קשיים (ובדיעבד תועלת לא ברורה)
    • טכני ומעניין

ולחלק האמנותי - 

לפני סיום: כנס רברסים 2019 - 16-17 ביוני 2019, גני התערוכה
הקובץ נמצא כאן, האזנה נעימה ותודה רבה לעופר פורר על התמלול

אין תגובות:

הוסף רשומת תגובה