רשומות

איך לעבוד עם Claude Code ו Codex מהטלפון הנייד

תמונה
כשעובדים עם Claude Code או Codex לאורך זמן, כמעט תמיד מגיע רגע שבו צריך התערבות ידנית. אישור להריץ פקודה, שאלה על שינוי קוד, או החלטה קטנה שחוסמת את ההתקדמות. הבעיה היא שזה קורה דווקא כשאני לא ליד המחשב. רציתי פתרון שיאפשר לי להמשיך סשנים קיימים מהטלפון, בלי לפתוח פורטים לאינטרנט, בלי חיבורים מסוכנים, ובלי לשנות את צורת העבודה הרגילה שלי. אחרי ניסוי וטעייה, הסטאפ שעובד לי בצורה יציבה משלב שלושה כלים: Tailscale ליצירת רשת פרטית בין המחשב לטלפון tmux בשביל סשנים ארוכים ומתמשכים בטרמינל Termius לחיבור SSH נוח מהטלפון הפתרון בקצרה הרעיון פשוט. לא צריך לאפשר גישה מהאינטרנט. צריך לאפשר גישה רק לעצמך. הארכיטקטורה נראית כך: טלפון │ │ Termius │ Tailscale ▼ רשת פרטית מוצפנת ▼ מחשב │ │ SSH │ tmux ▼ Claude Code / Codex כל התקשורת מתבצעת בתוך רשת פנימית מוצפנת. המחשב לא חשוף לאינטרנט הציבורי בכלל. הערת סקיוריטי אני לא נכנס כאן לעומק של אבטחה או מודל איומים. כל אחד צריך לעשות את המחקר שלו ולהחליט אם הסטאפ הזה מתאים לו. למי שרוצה לקרוא לעומק: https://tailscale.com/security-policies...

איך להתחיל חלק במקום עבודה חדש

תמונה
להתחיל מקום חדש כמעט תמיד מלווה בהתרגשות ולחץ. מצד אחד אתה רוצה להוכיח את עצמך, מצד שני אתה לא בטוח עד הסוף מה מצופה ממך ואיך נראה שבוע או ספרינט “טוב” בעיני מי שמנהל אותך. ב־11 השנים האחרונות התחלתי תפקיד בצוות חדש חמש פעמים (כולל שני מעברים בתוך אותה חברה), אבל מה שבאמת עזר לי להבין את התמונה היה דווקא כשנהייתי ״באדי״ – וליוויתי מעל 25 אנשים חדשים בכניסה שלהם לצוות שבו עבדתי. במקומות מסוימים תפקיד ה־״באדי״ מתמקד ביום הראשון – לקלוט את העובד, לוודא שיש לו סביבת עבודה, הרשאות, כיסא ושולחן. אבל במקרה שלי (ושל המנהלים שעבדתי איתם) זה תמיד הלך רחוק יותר: לנסות לייצר התחלה חלקה לא רק לוגיסטית, אלא גם מקצועית. להבין מה היכולות של מי שעומד מולי, מה הוא אוהב יותר ומה פחות, ולנסות להתאים לו – יחד עם ראש הצוות – את המשימות שיכולות לתת לו גם אימפקט וגם ביטחון עצמי. הפוסט הזה עוסק בכמה דברים (אולי קצת פחות טריוויאליים לחלק) שאני זיהיתי שיכולים לעזור מאוד בכניסה לצוות חדש – ואולי גם לעובדים ותיקים שרוצים להתחיל “פרק חדש” באותו מקום. תיאום ציפיות אמיתי פעמים רבות, במיוחד בהתחלה, יש פער בין...

תסמונת המתחזה שלי

תמונה
מה לי ולזה כשנכנסתי לצבא הגעתי כמעט בלי ניסיון למסלול שכולם בו כבר עשו הרבה מאוד דברים כבני נוער – חלקם עם תואר שעשו בתיכון, חלקם מתכניות סייבר יוקרתיות. אחרי כשנתיים הציעו לי לנהל אנשים פי שניים ממני בגיל, ולעלות לדיונים עם בכירים – וגם שם אמרתי לעצמי: מה לי ולזה? איך אני יכול לנהל מישהו עם 15 שנות ניסיון? אחרי זה, לקראת השחרור, התקבלתי להרצות בכנס Appium העולמי בהודו ודיברתי על מתי לא להשתמש בכלי שהכנס היה עליו – מול היוצרים של Selenium ו-Appium. הייתי בטוח שאני עושה פדיחות מטורפות. אחר כך הגעתי לסטארטאפ ושאלתי את עצמי איך אני אצדיק את המשכורת שקיבלתי (שהייתה די מוגזמת לתקופה). משם למיקרוסופט - המגרש של הגדולים. בכל שיחה אמרתי לעצמי "וואו, הפערים ביני לבינם עצומים. איך אי פעם אגיע לרמה הזו?" גם שם, עברו כמה חודשים, המשימות נעשו ברורות יותר, והיום אני אולי בעמדה טובה, אבל גם עכשיו כשאני עומד מול שינוי או משימה חדשה, תסמונת המתחזה תוקפת חזק. הפחד הוא אותו פחד ישן: "מה אם יגלו?" מה אם יגלו שאני לא מתכנת מספיק טוב, שאני לא מכיר לעומק את המוצר, שאני לא ברמה שכולם ...

איך אני נשאר רלוונטי בעידן ה-AI

תמונה
בכל כמה שנים יש “רעידת אדמה” בעולם ההיי-טק. פעם זה היה ה־Cloud, אחר כך Docker ו-Kubernetes, אחר כך המעבר למיקרו-סרוויסים. היום זה ה-AI. פתאום בכל שיחה שומעים על Copilot, על Agents, על LLMs. כולם מדברים על איך זה ישנה את הדרך שבה אנחנו כותבים קוד, מתכננים מוצרים, ואפילו חושבים על העבודה שלנו. בשנה האחרונה במיקרוסופט שמים דגש גדול על AI — בהטמעת כלים, בשילוב רכיבי AI בקוד שלנו, וגם בשימוש יומיומי בפרודוקטיביות כמו כתיבת דוקומנטציה ובדיקות. ובכל פעם שאני שומע על עוד גל פיטורים "בשם ההתייעלות והעברת אחריות ל-AI" — אני עוצר לחשוב: האם הנתיב שאני הולך בו הוא הנתיב הנכון לעתיד הזה? כי מצד אחד, אני סיניור במוצר עם אלפי לקוחות, עם עבודה שוטפת אינסופית — תיקוני באגים, שיחות עם לקוחות, תכנון פיצ'רים וגרסאות. ומצד שני, יש עולם שרץ מסביבי במהירות מטורפת, ואני לא רוצה למצוא את עצמי "לא רלוונטי" עוד כמה שנים. אף אחד לא יודע באמת איך השוק ייראה, אבל הפוסט הזה מסכם את המחשבות והמסקנות שלי — ומה אני באופן אישי בוחר לעשות כדי להישאר רלוונטי. להיות Early adopter - אבל לא...

בראסט ה Enums טובים יותר

תמונה
     כשאנחנו מתחילים לגעת בשפות תכנות, פעמים רבות אנחנו מנסים לחקות את מה שאנחנו כבר יודעים ומכירים משפות קודמות בשפה אחרת. זו אמנם יכולה להיות דרך להכנס לכתיבת קוד מהר יותר, אבל כשנוקטים בגישה הזו עלולים לפספס יכולות ייחודיות לשפה שנותנות דרכים הרבה יותר יעילות ועוצמתיות לפתור בעיות. בכל שפת תכנות יש מבני נתונים בסיסיים שמאפשרים ייצוג של אפשרויות שונות, ובמקרים רבים כשנרצה להשתמש בכאלה נפנה ל enums. באצמצעות enums נוכל לייצג אוסף מוגדר של ערכים, אבל ב-Rust יש להם יכולות מתקדמות שמקנות להם גמישות ועוצמה המקדימות בהרבה את מה שמוכר לנו משפות אחרות.  הפוסט הזה ידבר על למה enums ב-Rust כל כך ייחודיים ואיך ניתן להשתמש בהם לפולימורפיזם בצורה שלא אפשרית ברוב השפות. Enums בראסט ברוב השפות, enums מייצגים אוסף קבוע וסגור של ערכים שניתן לבחור מתוכם. לדוגמה, אפשר להשתמש ב-enum כדי לייצג ימים בשבוע, צבעים או סוגי אירועים. אבל enums מסורתיים הם בדרך כלל מבנים די מוגבלים. ב-Rust, לעומת זאת, enums הם הרבה יותר גמישים; הם מאפשרים לכל variant (או ערך) לשאת נתונים משלו ולהשתמש במערכת ה...

קודמתי לדרגת סיניור במיקרוסופט - מה למדתי בדרך

תמונה
אחרי 10 שנים בתחום, ו3 שנים במיקרוסופט, סוף סוף הגעתי לדרגה המיוחלת - סיניור. את הקריירה שלי התחלתי בצבא, 3 שנים סדיר, שנה וחצי קבע, (בתוך כל זה גם ניהלתי צוות כשנתיים), יצאתי לאזרחות להיות ״סיניור״ בסטארטאפ, הייתי שם שנתיים וקצת ואז התחלתי להתראיין למיקרוסופט. המגייסת פנתה אליי, היו לי ארבעה ראיונות לא רעים בכלל, ואז בשיחת השכר היא אמרה לי ״אתה מיועד לדרגת Software Engineer II״. ישר שאלתי בביטחון מופרז - ״למה לא סיניור? היום אני מתפקד כסיניור ויש לי 7 שנות ניסיון״ ואז היא ענתה משפט שלקח לי קצת זמן להבין כמה הוא נכון - ״כולם פה היו סיניור לפני שהגיעו למיקרוסופט״. אז קיבלתי את ההצעה והזכות להגשים את החלום ולהצטרף למיקרוסופט, והיום, 3 שנים אחרי קודמתי שתי דרגות (מ61 ל 63) וקיבלתי את הטייטל - סיניור. בפוסט הזה אני רוצה לשתף קצת ממה שלמדתי בדרך. למרות שבכל חברה יש מערכת קידומים שונה, אני מאמין שהנקודות הבאות יהיו רלוונטיות לכל עובד בכל חברה. חשוב לי להגיד, זה לא פוסט best practices לקידום, אלא החוויה האישית שהתאימה לפרופיל, לאישיות ולחוזקות שלי ולא בהכרח תהיה דומה בין עובד לעובד. שלושת מעג...

Rust MPSC Channels - צ׳אנלים בראסט

תמונה
אחת התכונות החזקות ביותר בראסט היא מקביליות ואסינכרוניות, וכשמדברים על תכנות אסינכרוני tokio  היא הספרייה הנפוצה ביותר. אחד הפיצ׳רים המרכזיים שטוקיו מאפשרת הוא channels, אשר מאפשרים תקשורת בין חלקים שונים בתכונה שלנו. קיימים בראסט מגוון סוגים של channels שמגיעים ממגוון ספריות (כמו crossbeam , std::mpsc וכו׳). בפוסט אדבר על Tokio Channels, ומתי ואיך נשתמש בהם. מהם צ׳אנלים? כשם כן הם - ״ערוצים״ אשר מאפשרים דרך לשלוח נתונים בין חלקים שונים של תוכנה (בדרך כלל בין threads או tasks). צ׳אנלים מורכבים משני מרכיבים עיקריים:  שולח (Sender):  החלק ששולח נתונים ו מקבל (Receiver): החלק שמקבל נתונים. MPSC (Multi Producer Singler Consumer) הספריה tokio מאפשרת לנו שימוש בצ׳אנלים מסוג MPSC - כלומר, מספר tasks יכולים לשלוח מידע אל מקבל יחיד. וזה נותן לנו יכולת נוחה וישירה להעביר מידע מאיזה סוג שנבחר, אל task מקבל שבו נעבד את המידע ונתמודד איתו. דוגמה פשוטה: בדוגמה הזו אנחנו רואים את יצירת השולח והמקבל tx ו rx. לאחר מכן, יצירת task ברקע ששולח בלולאה 10 מספרים באמצעות tx אל ה task הראשי בו ...