רן, אלון, ודותן בפרק מספר 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 “לא מספיק פתוח”, ושהם יספקו מוצר “אמיתי” פתוח - בחינם.בגדול - לקחו הרבה פיצ’רים High-end והנגישו אותם בחינם. שזה נחמד, רק שזה בדיוק הענף עליו יושב המודל העסקי של Elastic (ורוב חברות הקוד הפתוח).ב-Elastic פחות אהבו את זה.למיטיבי שמע - יש פרק קרבורטור (365) שלם בנושא.תקציר - תעשיית הקוד הפתוח מבוססת על שכבת בסיס חינמית עם פיצ’רים מתקדמים (ותמיכה) בתשלום. ב-AWS אמרו תודה, לקחו את השכבה החינמית והנגישו את הפצ’רים המתקדמים כחלק מהמערכת שלהם, שהיא היום בחינם. המהלך נתפס כמעיין “הפרת אמון” - אותו אמון עליו מבוססת רוב התעשייה (היכולת להרוויח בהמשך ממוצר ששוחרר ללא תשלום בשכבה הבסיסית).אפשר להסתכל על זה מהרבה כיוונים - יש הרבה חברות שעשו את זה זה קודם (מקרים עם MongoDB למשל), ואולי יש כאן קצת(?) תמימות מצד היזמים, ועדיין ברגע שחברה בסדר גודל של AWS עושה את זה יש לכך השפעה מאוד משמעותית על התעשייה, ומוצרי קוד פתוח עשויים להיתקל ביותר קשיים בעתיד.הלקוח יכול לקבל בטווח הקצר יותר פיצ’רים מתקדמים בחינם, השאלה היא האם ימשיכו לפתח הרבה כאלו כשהמודל העסקי מאויים בפועל (ולא רק תיאורטית).עוד מסד נתונים - AresDB: מסד נתונים מבוסס GPU שנכתב ב-Uber ומשמש ל - Analytics.בלוג-פוסט ארוך (21 דקות קריאה לפי Pocket) ומאוד מעניין על אופן המימוש של analytics Database מעל GPU. ספציפית לעבודה עם ה-GPU משתמשים בספרייה קיימת, אבל יש הרבה ארכיטקטורה מעבר.מסבירים למה פתרונות קיימים עם Databases על GPU לא התאימו - מעניין הנדסית וגם ככיוון שנראה יותר ממנו בעתיד.גם כאן הפנייה למיטיבי שמע - פרק מאוד מעניין (ומלא רפרנסים על Skynet) עם Nvidia על 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 - שמאפשר להאיץ חישוב לינארי ע”י חלוקה.הבלוג-פוסט הזה מראה שאם לא עושים את זה נכון - החישוב מאט . . . Spoiler Alert - זה נובע ממנגון Cache-lines לאופטימיזציה של ה - CPU, וכן - יש דרך “נכונה” לעשות את זה (באמצעות channels).
דותן -
התחלה קצת מלנכולית - לזכור את ג’ו. 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מאוד מזכיר את IDA Proמאמר על 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 או השבתת פרודוקטיביות של חברה . . . לא יפה ה - 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 - עדכון “יצאת צדיק”, גם אם לא ברור עד כמה העדכון משנהנראה ש Type checking הולך להכנס ל Rubyכולל עדכון לגבי ה (JIT (Just In time compiler - כן, זה שהזכרנו שה- Benchmarks מראים שמוריד את הביצועים . . .באותו הקשר - 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”גיוס, וספציפית - גיוס לימונים: Hiring and the market for lemonsהמלצה כללית על הכותב - Dan Luu - כותב מענייןמתקשר ל Finding Great Developers (המיתולוגי) של Joel Spolsky (המיתולוגי גם כן - למיטיבי שמע גם כאן)המאמר המקורי שמאחור - The Market for Lemons - אומר (בגדול מאוד) שאם מוצאים משהו בקלות כנראה שזה לא ממש טוב (מאחורי זה- פערי מידע בשוק); כאן משליכים מזה על גיוס עובדיםבהמשך לזה - How B players hire C players: יש ציטוט מפורסם של Steve Jobs בהקשר דומההשאלה שנשארת - מי מגייס B players? התיאוריה לא שלמה . . .
אלון -
משהו שהיה חם בכותרות לפני חודשיים בערך (ימי הבחירות העליזים ופרויקט הבוטים הגדול) - מישהו (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בעיות במשך שנתיים של מעבר עם המון קשיים (ובדיעבד תועלת לא ברורה)טכני ומעניין
ולחלק האמנותי -
סדרה של סקרים הומוריסטיים בטוויטר שיצר משתמש בשם tefco value programmerהאם אתם מעדיפי את מלחמת ה “;” או את מלחמת (הסוגריים)?איזה מהפקודות הבאות אינה אמיתית?איזה טרנד HTML הכי מאוס בעינכם?ועודדיאגרמה שמתארת עקומות לימוד בעורכים שוניםב - Notepad זה עולה ומתיישר מהר מאוד; ב - VI עולה מיד ואז שטוח; ב - emacs זו בכלל ספירלה וכו’קומיקס שמסביר Eventual Consistency באמצעות הורדת חתול מהעץשום דבר שה Avengers לא עשו קודםולסיום - המשך לשפות ה - WTF?!: שפת JSFuck משתמשת רק ב [(!)]+יש הסבר על כתיבת Alerts עם 1227 תווים - עובד, אם בא לכם לגוון את התכנות ב-Assembly.כבר לא צריך להיות מפתח Rockstar בראיונות עבודה, ושיהיה לכם ]]+[][[]])[+!+[]+[+[]
לפני סיום: כנס רברסים 2019 - 16-17 ביוני 2019, גני התערוכה
ההרשמה כבר פתוחה.תוכן מעניין, רשימת Moderators מרשימה, ארבעה tracks במקביל (כולל postmortems) - יהיה מגניב, בואו.הקובץ נמצא כאן, האזנה נעימה ותודה רבה לעופר פורר על התמלול