קטגוריה: אירגונים וחברות

עלייתן ונפילתן של רשתות חברתיות – דעה

ב2007 קיבלתי הזמנה לקחת חלק מאנשים מובחרים באמת ברשת חברתית חדשה ואנונימית בשם פייסבוק.

לאחר שנכנסתי, היו לי רק 5 אנשים שיכולתי להכניס לאתר, ורוב האנשים שהכרתי לא כל כך הבינו למה להם להיות שם, ונשארו הרבה זמן 3 הזמנות, שאח"כ גדול ל7 (כי נוספו הזמנות) והרבה זמן אנשים לא הבינו למה בעצם.

במהלך השנים עזרתי לנהל דף פייסבוק מאוד נפוץ שהגיע ליותר מ50,000 עוקבים, שהיו מפולחים מאוד, וקיבלו פרסומות (מתוך פייסבוק) לעסקים שהם באמת רצו להחשף אליהם, עד שיום אחד פייסבוק משום מקום או התראה החליטה לסגור את הדף, להשעות לכלל המנהלים את החשבון ו… הייתי צריך להוכיח שאני לא בוט.

פייסבוק היו מקבלים הכנסות מהדף, ולמרות זאת החליטו לסגור אותו.

ולא היינו הדף הראשון שנסגר על ידי פייסבוק או השני שנסגר למרות שהכניס לחברה כסף.

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

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

האתר עצמו קיבל אזהרות אחרי הורדת חשיפה והעלמת תכנים רבים כי עוד הפרה אחת (ללא ציון אילו הפרות ב"כללים" שמנוסחות בצורה מאוד לא ברורה וניתנות לפרשנויות רבות) תגרום לו להשבתת העסק שלו לצמיתות.

בעל האתר כרגע מתמודד לראשות עיריית לונדון, אולי במטרה לשנות את המקצוע בעקבות הנושא.

להמשיך לקרוא

מבחן שגוי

אתם מחפשים עבודה, מגיעים לראיון, ונשאלים שאלה שלא קשורה למשרה עצמה. בטוח שאתם מכירים את זה נכון?

נניח ואתם מגיעים לראיון עבור משרה עבור לימוד מכונה בניתוח תמונה, ואתם מתחילים לקבל מבחנים, הייתם מצפים למבחנים בנושא אלגוריתמיקה, ניתוח מידע, אולי אפילו שימוש בOpenCV, נכון?

אבל במקום, מקבלים שאלות בנושא של TCP/IP, כיצד מסד נתונים עובדים, איך יוצרים מודולים לקרנל וכיוב'.
מה עכשיו? האם אתם מתאימים לתפקיד?

אז הגזמתי קצת, נכון? ובכן לא.

זה קורה, אבל לא בגישה הזו.
למשל אתם מגיעים להיות מפתחי full stack עבור פיתוח מערכות מבוססות web. זה נחמד שאלות על אלגוריתמיקה, אך לא צריך לזכור בעל פה כיצד לממש אותם. יש לי ספריות וכלים שעושים את זה.
האם אני מבין את אותן הספריות? במה להשתמש? איך לבחור? זה יכול להיות מבחן נהדר, אך לא רלוונטי.

שאלות בנושא התפקיד להראות יכולת והבנה חשובים הרבה יותר מאשר היכולת אז אני מדבר על full stack עבור פיתוח web, הנה מבחנים טובים יותר מאשר שאלות מדמ"ח:

  1. יש לי צורך לאסוף את הנתונים הבאים – מה הסכמה למסד הנתונים שתתכנן ולמה?
  2. האם מסד נתונים מבוסס סכמה באמת מתאים לזה, או אולי מסד נתונים מסוג אחר?
  3. תן לי הדגמה מתי תבחר בdjango/rails ומתי ב sinatra/flask?
  4. מתי Go עדיפה על פיתון/רובי?
  5. מה ההבדלים בין Vue/React לבין Angular?

אלו לא רק שאלות, אלא ניתן לפתח אותם כמבחנים ממש, והם ממוקדים מאוד אודות התפקיד, כי הם נדרשים לתפקיד עצמו.

שאלות כמו "יש לי מטריצה לא ממיונת, על כל שורה בה איך תמצא את המספר הגדול ביותר והקטן ביותר, מה התוצאה של המכפלה השלישית של כלל המספרים האלו? ואם יש גם מספרים שליליים?" הן שאלות לא רלוונטיות.

למה הן לא רלוונטיות?
נגיד ואני יודע לשלוף את האלגוריתם הכי יעיל, להגיד לכם מה ה O(n) שלהם, וכמה סייקלים של cpu יקח לסרוק את המטריצה, האם אני יודע לענות על חמשת השאלות שהעלתי למעלה? לא בהכרח, אבל הן חשובות לתפקיד.

במידה ולא אצליח לענות על השאלה עם המטריצה ואצליח לענות על השאלות עבור תפקיד ה full stack האם אינני מתאים לעבודה שכזו? הרי כיום אלא אם התפקיד דורש ממני יכולת לענות על הנושא, יש לי המון כלים להתמודד עם הנושא. כמובן שעדיף שאדע, אבל המבחן אינו מתאים לתפקיד.

זו כמובן דעתי, בלבד, בהצלחה 🙂

כניסה לפרויקט קיים

כאשר נכנסים לקוד קיים (שזה בערך מרבית הפעמים שאנו המתכנתים עושים), אנחנו צריכים להתמצא ולהבין מה הולך בקוד. ישנם אין סוף דרכים לעשות את זה, וכל מפתח יכול למצוא מה קל ונוח עבורו.

בעקבות מספר דיונים שהיו לי עם אנשים, החלטתי להסביר מה הדרך המרגישה לי בנוח להיכנס לפרויקט וקוד קיים, ביחוד כאשר מדובר בפרויקט גדול.

התחלה

הגעתם לעבודה ביום הראשון ואתם טכנאים של חללית.
מגיעים אליכם ומבקשים ממכם לטפל בבעיות שיש לחללית בשביל להכניס אותה לכשירות מקצועית.

טעויות בכניסה לקוד/פרויקט קיים

אחת הטעויות שאני מרגיש שמתבצעת היא להיכנס מיד למים סוערים ולטפל במשהו רציני בפרויקט מבלי שהבנתי את התשתית שלו. לפחות, עבורי זו טעות נוראית.

הנה הדגמה:
ביום הראשון לפרויקט, באים ומספרים לכם כי החללית אינה מניעה.
מה הדבר הראשון שאתם תבדקו?
אני יודע, האם יש חיבור למיכלי דלק!
אה, רגע, החללית לא נוגעת בדלק. עכשיו בזבזתי זמן רב וארוך להבין למה היא לא מחוברת למיכלי דלק רק בשביל להבין כי המנוע שלה לא יודע להתמודד עם דלק.

פתאום מגיע מהנדס מנוסה בפרויקט החללית ואומר לכם לבדוק אם הפאנל הסולארי מורכב.
ואתם בשוק, כי לא ראיתם פאנל כזה, וכנראה שזו הבעיה.
ברגע שאתם מחברים את הפאנל הסולארי, פתאום החללית מניעה.
הצלחה! אבל איך זה עוזר לנו עכשיו עם תקלה חדשה שבה ההמראה נכשלת?

על פניו אנו מרגישים שיש קשר, כי בשביל אנרגיה להמראה צריך פאנל סולארי, אבל המראה עצמה עם האנרגיה מהשמש עדיין נכשלת. אבל לא בגלל שהמנוע הפסיק להגיב.

ושוב פעם אתם נכנסים ללימוד מ-אפס של החללית והמנגנונים שקשורים רק בזה.

הדרך שלי ללמוד

כאשר ארצה ללמוד על החללית, יעניין אותי לגעת בדברים הכי מפגרים בהתחלה, כאלו שלאחר הלימוד הראשוני לא אגע בהם אם יש לי אפשרות בחירה.

מעניין אותי איזה מנוע יש. וארצה לטפל בבעיות מנוע. אבל גם את זה לפרק לגורמים קטנים.
למשל, מה גורם למנוע לעבוד.
כאשר אבין שהוא מונע מכוח סולארי, קל לי להבין בעיות כלשהם, כולל הבנה כי מדובר במנוע חשמלי, וכי העדר חשמל, או אפילו מערכת גיבוי לחשמל, ומערכת אגירת אנרגיה נוספת יהיו חייבים להימצא, ומכאן למדתי המון על המערכת עוד מבלי שבאמת אני יודע איפה כל דבר ממוקם, איך זה עובד בפועל וכיוב', אבל כבר יצרתי תמונה עבור עצמי להתנהגויות מסוימות שאני יכול לצפות להן.

המנוע עובד?
יופי, מה העקרונות הפיזיקלים שהחללית מתבססת עליהם?
הבנה כזו יכולה להסביר לי המון על מערכת ההמראה שלה, וגם על מערכת הנחיתה שלה, וגם על מערכת התנועה שלה, ולמעשה מה זו החללית הזו.

עדיין אני לא מכיר את המנוע, אבל יש לי תמונה בראש מה הדברים לחפש כאשר יהיו תקלות עם המנוע.

רכיבים קטנים

הדרך שלי ללמוד היא מלהבין את הרכיבים הקטנים שמרכיבים מערכת גדולה. כלומר במקום להסתכל על תמונה שהומרה לשחור ולבן, ולנחש מה הצבעים המרכיבים את התמונה, יש לראות אותה על כלל הצבעים המרכיבים אותה.

כאשר אני מבין מהם העקרונות עליהם עומד הפרויקט, גם כאשר אני לא מכיר את הפרויקט, אני יכול להתמקד בחיפוש אחר דברים שונים, גם כאשר אין לי הכירות והבנה של הפרויקט כמכלול השלם על כל המרכיבים שלו.

לאחר שיש לי הבנה ותובנה כיצד הבסיס עובד, קל מאוד להתחיל לעלות למעלה ולהבין דברים גדולים ומסובכים יותר כי יש בסיס להתמקד עליו.

אך בהעדר בסיס שכזה, לא ניתן באמת לדעת כיצד להתמודד עם דברים שונים.

עבור מה השיטה לא מתאימה?

עכשיו הסברתי כיצד אני רוצה לגעת בפרויקט קיים. הכל טוב ויפה, אבל השיטה הזו לא מתאימה לכל כניסה, אלא רק כאשר מדובר בפרויקט שהוא העיסוק העיקרי.

במידה ויש פרויקט, וכל מה שאני מעוניין לבצע בו זה תיקון קטן וכירורגי, השיטה לא נכונה עבורו. היא בזבזנית ומיותרת. יותר מכך, היא לא מסייעת לי, אלא מפנה את הריכוז שלי לדברים לא רלוונטיים.

אז מה הדרך לבצע את הדברים עבור דבר שכזה?
ובכן עבורי זה להבין את האיזור שחייבים לגעת בו. לקחת דוגמאות קוד, לראות במידה ויש תיעוד אז להעזר בו, ולהבין כיצד השימוש מתבצע בפועל.

לפעמים קל מאוד להבין את הקוד ולוקח פחות זמן לתקן דברים, למשל הבנה של שגיאה, ולפעמים הבנה רחבה יותר נדרשת, אך לא בצורה בה צריך להכיר את כל הרכיבים השונים, אלא רק את הקשר של דברים שונים באחרים.

כך במידה ומצאתי באג ספריית JS שאני משתמש בה, אך לא מפתח אותה, אתמקד במקור השימוש הבעייתי בשביל לתקן את הבעיה, או לנסות ולהבין אותה.
אך במידה והייתי כחלק ממפתחי הספריה, היה חשוב לי להיכנס לבסיס כמו שצריך.

מתודולוגיות – חשיבה מחודשת

המון שנים אני מוצא את עצמי יוצא מנקודת הנחה כי מתודולוגיות תוכנה הן כלי אחד מהחשובים ביותר שיש לנו המתכנתים לניהול פרוייקטים ותוכנות בכלל.

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

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

כיצד זה התחיל?

על פניו קוד משוכפל זה גרוע, וזה מקום שאפשר ליפול בו, נכון?
אז זהו, שזה מורכב יותר. היה לי review כזה לקוד, ובמקום להעיר על השכפול, שאלתי למה זה משוכפל. כלומר ביקשתי את הסיפור מאחורי הדברים.
מסתבר שהכותב (מתכנת מוכשר ביותר), הגיע להבנה כי מה שהוא מפתח לא צריך להיות בשימוש לאחר יד, וחשוב להבין את המשמעות של השימוש של מה שעושים.
לכן, לדעתו עדיף לכתוב מעט יותר קוד, כי צריך לעצור ולהבין לעומק את המשמעות של הדברים.

בזכות השאלה שלי, הוא הוסיף גם הערות בקוד שמסבירות את זה. והנה סיבה שכנראה מספיק טובה מדוע שכפול קוד במקום הספציפי הזה דווקא חשוב לעשייה.

העניין הוא שעבדתי גם עם אנשים שהם מאוד מוחלטים בעשיה. הם מעירים בשחור ולבן, ולא שמים לב שבין review ל review הם לא אחידים בדיעות שלהם. כלומר אם פעם אני כותב קוד בגישה של ההערות הקודמות שלהם, פתאום בהערות החדשות, זה כבר לא טוב וצריך לכתוב קוד בגישה אחרת על אותו סגנון שהם במקור רצו שאקח.

אני חושב שזה מה שגרם לי לשנות את הגישה שלי.
כאשר אנחנו עובדים בקבוצה, מי שמבצע משימה כלשהי נמצא עם הרבה יותר מידע מאשר מי שעושה לו review.
הוא מבין יותר את כל מה שקשור למה שהוא עובד עליו, עשה ניסויים, מבין את ההשכלות של דברים (בתקווה לפחות) וכיוב'. כאשר אני עושה את ה Review, אני מקבל תוצר לעיניים שלי, אבל לא את התהליך שהוביל אליו.

הסיפור של התהליך מאוד חשוב לא פחות מהתוצר. כלומר הדרך המתמטית שתמיד ביקשו מאיתנו להציג, ולא רק את התוצאה, פתאום אני מבין כמה היא חשובה.

שאלה אחת שווה אלפי שורות קוד

נגיד ויש לי דיווח על באג, ששדה מסוים לא מוצג על המסך.
זה כל המידע שאני מקבל. חסרים כאן המון פרטים.
גם אם אני יודע בדיוק על מה מדובר (מסך בודד, ושדה בודד), עדיין אין מספיק פרטים!

  • באיזה שלב הוא לא מוצג?
  • האם הוא היה מוצג בעבר?
  • האם הוא צריך להיות מוצג?
  • מתי הוא אמור להיות מוסתר?
  • האם יש שימוש בשדה הזה בכלל?

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

כלל השאלות ששאלתי, מובילות אותנו למסלולים שונים. חלק מהשאלות נראות זהות, עם ניסוח שונה, אבל למעשה הן שונות לגמרי.
כי המסלול שהתשובה תספק יהיה שונה. למשל "מתי הוא אמור להיות מוסתר" לא זהה ל "האם הוא צריך להיות מוצג".
כי אלו שני תהליכים שונים, הסתרה והצגה. כי האם צריך להסתיר את השדה כאשר הוא כבר מוצג? אם כן, אז מתי?

ככול שיהיו יותר שאלות, ככה נוכל לקבל תמונה ברורה ומוגדרת מאוד. התמונה הזו, למרות שהיא מאוד לא ידידותית למתכנן, מובילה לבניה נכונה יותר של מערכת או משהו מסוים.
ככול שנבין יותר לעומק את הצורך והרצון, ככה התוצר יהיה טוב יותר, ולא נכתוב קוד מיותר או נשקיע אנרגיה מיותרת.

ספר לי סיפור

בארץ רחוקה, לפני הרבה שנים, חיו להם יצורים מוזרים בשם מתכנתים.
אותם יצורים היו לוקחים משהו לוגי והופכים אותו לאומנות, ומשקיעים בהרבה תפל במקום להתמקד בעיקר.

כל מה שנדרש מאיתנו לעשיה דורש מאיתנו להבין תמונה המורכבת מהמון פיקסלים קטנים, ברזולוציה מטורפת.
אם אנחנו לא מבינים הקשרים של עשייה, אנחנו עובדים לחינם ומשקיעים זמן בדבר הלא נכון.
אבל יותר מזה, אם עוד שנה מהיום אני צריך לחזור לקוד ואני לא זוכר מה ביקשו ממני, לא תמיד יהיה אפשרי להתמודד כמו שצריך עם הקוד.

סיפור על מה כתוב כרגע כחלק מתיעוד של PR ו/או אפילו bug כתוב יכול לסייע להתנהל ולהתמודד עם הרבה שאלות. לפעמים תיאור המצב הקיים ומה הניסיון לשנות בו, או להוסיף אליו גם יסביר את הלך החשיבה במימוש אותו קוד. כאשר זה קורה השאלות של "למה לעזאזל זה כתוב בצורה הזו, אפשר לעשות את זה בצורה אחרת", יכולים להפוך ל"אוקי, אז זה כנראה התאים מאוד, כי זה שיפר מצב קיים, המצב הנוכחי דורש שינוי חדש".

גם אדם חדש הנכנס לקוד או אפילו לחברה או פרויקט יכול לעשות זאת בצורה טובה ומהירה יותר, כי יש לו נקודת התייחסות.

מתכנת ❤ קוד

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

זה עבד בדיוק חודש, ו…אנשי הפרודקט האלו לא מבינים כלום. אני אומר לכם,הם אנשים מעצבנים שרק רוצים להרוס למתכנתים. לקחו את הקוד המדהים שלי, אלגוריתם כל כך מדהים, ו… לפח 😠

וכאן מתחילה הבעיה. שלי, לא של אנשי ה product. התאהבתי בקוד שיצרתי. הוא היה כזה מושלם, ממש לקחת להכיר להורים. אבל הדרישה העסקית השתנתה, והתפקיד שלי כמפתח הוא לממש דרישה עסקית ולא את האהבה שלי לקוד, את זה צריך לעשות בזמני הפרטי (אוהב אותך אלגוריתם שלי ❤).

ההבנה כי קוד זה דבר נחמד, יפה, וכיף לכתוב אותו מגיעה מאוד מהר, אבל ההבנה כי זה כלי בלבד להשיג משהו שבסופו של דבר משלם את המשכורת, או את התקציב לפרוייקט שאתה בו,  לוקחת הרבה שנים לקבלה. קשים הם חיי האמן.

משחק סכום אפס

יצא לי לעבוד עם בוגר טכניון שלמד שם תואר ראשון ושני. כל משפט חמישי שהיה יוצא לו מהפה על מידע שהוא היה מתעסק איתו "תשמע, זה משחק סכום אפס, לא משנה אם אני אעביר את זה כאן או כאן, עדיין זה אותו מידע ויקח אותו זמן לנתח אותו".

יש לי בעיה עם האמירה הזו. זה לא אומר שהיא לא מתקיימת, אבל לרוב מה שחסר זו הגישה לסדר פעולות נכונה, ולא כמשחק סכום אפס בדיוק.

לאחרונה עברתי דירה. ירשתי שם מקרר עם מקפיא. שניהם קטנים מאוד יחסית לדירה הקודמת. כאשר העברתי את כל מה שהיה לי שתפס מדף במקפיא הישן, כמעט שום דבר לא נכנס לחדש. משחק סכום אפס נכון? לא משנה כמה אנסה לסדר את הדברים, הרי הם תופסים אותו נפח, ולכן אי אפשר למצוא להם מקום.

אז השקעתי חמש דקות בלעשות סוג של sorting לגבי הצורה, גובה, רוחב וכו',  לאחר החמש דקות האלו, לא רק שהכל נכנס כמו שצריך, נשאר לי הרבה יותר מקום ממה שחשבתי שיש.

הדרך הראשונה שלי לסדר את המקפיא היתה סוג של brute force. מה שנכנס ראשון הוא נמצא איפה שנמצא. אבל זה חסם דברים אחרים, ובגישה כזו לא גיליתי שיש הרבה רווח כלוא לא בשימוש ולא מנוצל שאין לי גישה אליו.
שינוי הגישה הזו של brute force יצרה פלא הנדסי שבו אני מגלה כי אני לא משתמש נכון במקום שיש לי, וניצול נכון שינה לגמרי את ההתיחסות לגודל והנפח של הדברים. עכשיו יש לי פי 3 יותר דברים ממה שהתחלתי, ועדיין יש לי מקום פנוי במקפיא.

אותו הדבר עם תוכנה! הרבה פעמים נדמה לנו כי לא משנה סדר פעולות תמיד התוצר יהיה איטי מאוד, או יקח הרבה נפח וכו', אבל לא תמיד זה המצב.

למשל קרה במקום שעבדתי בו מצב אשר קראו מתוך מסד נתונים לתוך מערך מאוד גדול את כל הנתונים ואז היו שופכים את המידע לקובץ csv. יום אחד הגיע אותו המידע לגודל של 64 מגה, והbuffer נגמר. ראינו load על השרת והמון שימוש ב swap.

חמש דקות אחרי זה הראתי למתכנת שטיפל וכתב את הקוד כיצד לפתור את הבעיה. בתכנות יש מושג שנקרא callback. הוא אומנם יהיה בהכרח איטי יותר מאשר שימוש בזיכרון רציף, אבל הוא מאפשר לי לקבוע אחרי כל כמה זמן אני יכול לכתוב buffer מסוים לזיכרון, ובכך אני למדתי את אותו מתכנת את האפשרות לכתוב כמעט ישירות לקובץ, והגענו למצב שהמערכת כתבה למעלה מ68 מליון רשומות לקובץ csv, ואז גילינו משהו חדדש. אקסל ושאר גליונות האלקטרונים לא מסוגלים שקובץ אחד יכיל כל כך הרבה מידע.

אין בעיה. אני סופר 65,000 רשומות ויוצר עוד קובץ וכיוב'. הנה מימוש pagination רק עם קבצים. כאשר יש את כל הקבצים, לוקחים את כל הקבצים ומאגדים אותם ב zip.
כמות הזמן של כל העיבוד הזה של מספר קבצים ואז zip לקחה שניה וחצי, כאשר לפני השינוי המקורי המערכת היתה קורסת אחרי למעלה מעשר דקות של עבודה, בגלל נושא הבאפרים וניהול הזיכרון.

סיכום

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

ואשמח לשמוע את דעתכם בנושא.

מחשבות על Github ומיקרוסופט

לפני כשבוע נפלה פצצה בעולם התוכנה בעולם – מיקרוסופט רוכשת את Github. זה הגיע לאחר גל שמועות, למרות שהרכישה עצמה לא התבצעה עדיין (הרכישה מיועדת לסוף 2018), אך ההכרזה הגיעה בגלל עודף שמועות, וספקולציות אף פעם לא טובות לשוק.

לקחתי לעצמי מספר ימים לחשוב על הנושא, והגעתי להבנה עם עצמי שאני לא אוהב את המצב.
עכשיו נשאלת  השאלה למה?

ובכן אני מאוד אוהב סדרות מדע בדיוני, ואחת הסדרות היא מסע בין כוכבים. שם יש את שני החוקים הבאים של עולם ה"פרינגי" שהם יצורים אשר מבוססים על תרבות מסחר ענפה, שהם הגיעו לביקרות על תורת מרקנטיליזם הקיצונית בעיני מספר אנשים:

  1. מלחמה טובה לעסקים.
  2. שלום טוב לעסקים

החוקים האלו הם חלק מחוקי הרכישה, כאמור של העולם הפרינגי. והם די מתארים את הבעיה שיש לי עם מיקרוסופט.

מעולם לא באמת שנאתי את מיקרוסופט, היו לי כמה שיחות על זה בתקופה של באלמר שאמרתי את זה במפורש. הבעיה שלי היא בכך שיש לי חוסר אמון בחברה.

תראו את ביל גייטס. הוא היה צריך ליצור לעצמו שוק אשר לא היה קיים, אז הוא יצר את עולם רישוי התוכנה. אבל הוא עשה עת זה בצורה בעייתית מעט, אשר גרמה לזעזוע עמוק בשוק בצורה שכיום אנחנו חושבים כאילו מאז ומתמיד היה רישוי תוכנה, אבל זה לא המצב.

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

אז הגיע המנכ"ל הנוכחי – סאטייה נאדלה. הוא "אוהב" קוד פתוח, לא מעניין אותו אם העובדים שלו עובדים על מחשבים לא עם ווינדוז ולמעשה עובד המון גם על תמיכה בלינוקס.

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

על מנת לקחת את החברה קדימה, נאדלה חייב ללכת עם הזרם, וזה לאהוב קוד פתוח. וזו בדיוק הבעיה שלי.

אתם מבינים? כיום מיקרוסופט אוהבת קוד פתוח, כי היא הבינה איך עושים דרכו כסף, אבל מחר? מחר הוא יכול להיות חזרה אויב אכזר לחברה, ומה אז?

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

השאלה הראשונה שעלתה לי לראש כששמעתי על הרכישה היתה מה יקרה למידע של המתחרים, איך הוא יכול להיות שם? מיקרוסופט לא תסתכל על הקוד? היא לא תתחרה בהם יותר? כלומר מה בדיוק יהיה המשחק כאן?
כמובן שאלו עם קוד פתוח, לא בבעיה, אבל שאר התעשייה, מה איתה?

ולכן אני לא מאמין ברכישה הזו. אני חושב שלאורך זמן רחוק יותר אנחנו נסבול מהרכישה יותר מאשר נהנה ממנה, ולכן אין לי אמון ברכישה הזו, ואני העברתי גרסאות קוד של לקוחות שלי לשעבר למקומות אחרים, בעוד שכל פעילות קוד פתוח שלי תשאר כפי שהיא באתר, היות וזה לא מפחיד אותי בשלב הנוכחי.

אנחנו לא יכולים להרשות לעצמנו להחזיק קוד לא פתוח בGithub כאשר מיקרוסופט היא הבעלים שלו. לפחות כל עוד שמיקרוסופט היא שחקן קצה ולא שחקן תשתית בלבד, ואני לא מצליח לראות את השינוי הזה בחמש שנים הקרובות.

סיכום אוגוסט פנגווין 2015

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

הגעתי יותר מקודם ממה שהציגו ברכבת,שהיה דבר נהדר, אז הגעתי מוקדם וסייעתי לארגן דברים כמה שיכולתי עד שהפריעו לי לגמרי.
ניסיתי גם למצוא את השם שלי, אך הוא עוד לא הודבק, אז חיכיתי עוד קצת, וגם זה הגיע 🙂

ואז התכנסנו בחדר המרכזי. הייתה פתיחה של שי, ואז הרצאה מאוד מעניינת של אחד ממפתחי systemd. זו מערכת שאני מאוד אוהב באופן אישי, כאשר משווים אותה למה שהיה קיים עד לפיתוח שלה. ובהרצאה גם הבנתי למה.
ממש נעשה מחקר בנושא לפני שהחליטו על כיוון, אבל כמו כל מערכת, היא לא מושלמת ותמיד יש מה לשפר אצלה כפי שעודד הראה לי בצורה חיה במחשב שלו.

הרצאה על systemd

הרצאה על systemd

לאחר מכן, הגיע הפרס, לאדם מעניין מאוד שתרם רבות לדו כיווניות ובעיקר לשפה העברית בהרבה מערכות ותכנות. עם נאום ארוך.

ואז התפזרנו לצילום קבוצתי (שכמו כמעט בכל כנס – לא השתתפתי בו) ומסלולים שונים.

לצערי ההרצאות די לא עמדו בזמנים, ובכלל היו קצת דחוסות בעיני, דבר שרק סיבך את כל האנשים.

הלכתי להרצאה של אבטחת מידע באנדרואיד, וקצת אכזב אותי שהיא הייתה בסיסית מידי, ולא מספיק טכנית לטעמי, אך בכל זאת היה בה הרבה עניין.

לאחר מכן, הלכתי לשמוע על מערכות הפעלה, והמרצה ניסה לסמן מטרה גדולה מידי, ופספס אותה לגמרי תוך כדי הציור שלה.
הוא לקח את לינוקס והגזים עם המון דברים, כמו למשל הרעיון שיש לך הרבה tty פתוחים גם בשרת ווירטואלי. אבל אפשר לכבות את זה. במידה ואתה עם מערכת init של sysv יש לך את הקובץ Inittab ואם אתה משתמש ב systemd אז אפשר גם שם לסגור דברים.
העניין הוא, שהוא פספס לגמרי את השימוש ב tty ומה הם אומרים – שזו תקשורת סיריאלית אשר מסוגלת לעשות המון דברים, בהתאם לסוג המסוים, כמו למשל text terminal, או teleprinter וכיוב'… כן זה עולם ישן, אבל הפשטות שלו גורמת לו להיות מאוד יציב ואיכותי יחסית, שניתן לזרום איתו להרבה כיוונים שונים.

הוא מצד אחד מדבר על שרתים, ותוך כדי מספק דוגמה דמגוגית של שימוש במערכת הגרפית של איקס וcups, ואז מדבר שלא צריך אותם בשרת.
וכמובן עוד הרבה מאוד דברים, אשר די פספסו את המטרה של מה שהוא רצה להגיד – שיש צורך במערכות הפעלה ייעודיות יותר לסוגים שונים של דברים.

לאחר מכן, הלכתי לשמוע על רעיון חדש עבור shell. המרצה העלה הרבה רעיונות מאוד מעניינים. למשל, אם הרצתי פקודה וקיבלתי פלט, מן הסתם הפקודה הבאה כנראה רוצה להשתמש במידע שקיבלתי, אז מדוע אין shell שמספק לי את זה?

הרעיון בגדול מאוד, היה מעניין עד מאוד, אם כי לדעתי יש מספר דברים שעדיין צריכים להתפתח שם ולהבשיל, אך בהחלט יהיה בעיני מאוד מעניין להשתמש ב shell כזה (במידה וגוגל יוכל למצוא את השם).

לאחר מכן, הלכתי להרצאה של חץ על מערכות קבצים, שמן הסתם ניחשתי מבעוד מועד כי הוא בעיקר ידבר על zfs שאותו הוא מאוד אוהב.
לצערי, כמעט בכלל לא קיבלתי שם מידע חדש (דווקא הנושא מאוד מעניין אותי), אך בכל זאת מעניין לשמע דברים, וחץ תמיד נכנס לעובי הקורה כאשר הוא ממליץ על דברים.

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

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

סה"כ מאוד שמחתי לפגוש כמה אנשים שלא ראיתי מספר רב מאוד של שנים, ואחרים "רק" מספר חודשים.

כיף לראות שיש אנשים בקהילה שלנו שמגיעים לכל כנס ותורמים רבות להצלחה.
לצערי מרבית האנשים שמתנדבים, הם אנשים קבועים, עם פחות "דם חדש" שנכנס ומארגן דברים, אך מצד שני, גם אני מתקשה להתנדב, אז זהו, עד לשנה הבאה 🙂

מזלגות נעוצים

בתקופה האחרונה, נעשו מספר פעולות fork לפרויקטים מוכרים, בהם node.js ודביאן.
בנוסף, פרויקט docker מקבל מתחרה, לאחר שחברת CoreOS הודיעה כי לא מקובל עליה הכיון של docker.

אני מוצא כי חלק לא מבוטל מהדברים האלו די קטנוניים, ואנסה לסכם אותם כאן, עם קורטוב של ציניות.

אתחיל בדביאן
יש המון טינה על systemd, ובעקבות כל הנושא, עם כל הזעם, הוחלט ליצור fork בשם devuan, אשר ימשיך לספק יכולות של sysv init במקום systemd ה"נורא".

החשיבה כאילו systemd גוזל משהו, בכך שהוא בא לסדר בלאגן ובעיות שיש במערכת הקיימת כיום, מקבלת תירוצים של "נוצרת תלות במערכת", והתשובה שלי היא: "כי עד עכשיו התלות ב sysv לא היתה קיימת ?"

המאבקים המפגרים האלו, האם להשתמש בsystemd או לא, פוגעים בלינוקס, ולא האם systemd טוב או לא.

node.js
לפני מספר חודשים הבעתי חשש לגבי הפרויקט, והתלות שלו בגוגל. מסתבר שאני לא היחיד שמפחד ממעורבות של חברות בצורה כל כך דרסטית בפרויקט, אז קבוצה של מתכנתים שמפתחים ל node.js בהתנדבות, החליטו לנעוץ מזגל בפרויקט, וליצור את הפרויקט io.js.

הרעיון הוא לא להיות תלוי בהחלטות של חברה מסחרית בפרויקט, ובכך להשאיר אותו פתוח בתפיסה, אם כי זה לא אומר שהתפיסה של המפתחים תהיה מוסכמת על שאר השוק …

אני חושש יותר מהתלות הבלתי מסוייגת ב v8, מאשר בתלות על חברה זו או אחרת בפרויקט, היות ו v8 זה למעשה הפרויקט, השאר זה מעטפת עבודה, ומעטפות לדעתי יכולות להתחלף, ממש כמו קרונות רכבת, אבל אם אין את הקטר – הרכבת לא תזוז לשום מקום.

Rocket
במידה ולא שמעתם על docker, אתם כנראה ישנים איפשהו, או שרחוקים מעולם ה IT. זה השם החם ביותר מאז שסייבר ומחשוב ענן נכנס לעולם, או אולי זה היה 42 ?

docker במקור הוא סוג של container אשר מאפשר לקחת תמונה כלשהי ולהריץ אותה ולבצע דבר מה צורה מבודדת משאר המחשב, אבל תוך שימוש בברזל ולא שימוש בוירטואליזציה.
זה למעשה העולם הבא אחרי הפרה-וירטואליזציה,היות ו containers עד לדוקר היו שייכים לחלק ממערכת ההפעלה עליה הם רצים, אבל דוקר מאפשר להריץ מערכת לגמרי שונה ב container תוך שימוש בברזלים, ולכן ככה אני לפחות רואה אותו.

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

החברה של CoreOS, רוצים container ומשהו שזו כל ההתמחות שלו, אבל docker מתחיל להיות stack שלם של דברים, והם ממש לא אוהבים את זה, כי בסופו של דבר,זו סוג של תחרות, לא ?

אז הם החליטו ליצור פרויקט בשם Rocket, הספק של Rocket גם מתפרסם ומשתנה כל הזמן, וכרגע הוא במצב של prototype.

דווקא rocket סבבה בעיני, כי הוא מאפשר ליצור מבחר כלשהו ברעיונות ותפיסות שאפשר לבחור מה טוב ונוח עבורי, וזה דבר טוב. לדעתי זה יהיה סוג של פתח לעוד פתרונות שונים.

יחידות בדיקה, כן, לא, אולי

אחד הדברים שהכניס המושג Agile Development הוא הצורך ליצור לכל פיפס קטן במערכת יחידות בדיקה שונות.

הטענה התחילה ב "כי אם בודקים הכל, אז לא יהיו בעיות שונות". כאשר זה לא הוכיח את עצמו, שינו את הטענה "אתה בודק כי הקוד שלך לא נשבר". ובפוסט הזה אני רוצה גם לשבור את הטענה הזו.

מכירים את המצב הזה, בו אתם רושמים דבר מה, ואדם אחר קורא את הדברים, ואומר "אבל היית צריך להוסיף גם על האפשרות הזו הקיימת", ואתה אומר "אבל הוספתי", מגיע לטקסט בשביל להראות לאותו אדם, ואתה נדהם לגלות כי אמנם חשבת על האפשרות הזו, אבל לא הוספת אותה ?

זה מצב שנעשה גם ביחידות בדיקה, אבל שם זה עוד יותר בעייתי. שם מה שאתה לא כותב בכלל, אינו נבדק, אך זה לא אומר שהמצב הזה לא יתקיים, אלא, זה רק מצב שאתה לא כתבת בדיקה עליו בלי קשר לכך אם ידעת ו"שכחת", או לא היית מודע אליו.

יותר מזה, אתה בודק את זה בתנאי מעבדה, כאשר התנאים אידיאליים, והכל משחק לטובתך.
אבל מרבית המשתמשים, ובכן הם לא חושבים כמוך.

עבורך ברור שהכפתור "שמור" זה לשמור מידע. למשתמש הממוצע, ובכן אם הוא לא מפחד לנסות, הוא יגלה שזה המצב, אבל אם כן, הוא ישאל אותך איך לשמור את המידע, וזה למרות שכתוב לו, והסביבה הגרפית מאוד ממוקדת לזה, ועדיין, המשתמש לא מבין. וזה קורה כל יום בהמון תוכנות וסביבות שונות, זה לא רק המשתמשים שלך, זה כלל האנשים.

עכשיו מה קורה במצב הזה ? האם הקוד שלך יודע להתמודד עם משתמש שמנסה דברים שלא בהכרח הוא צריך ? האם אתה יודע להתמודד עם משתמש שלא מבין מה הולך סביבו ?

יחידות בדיקה (מיד יצעקו הבודקים), לא נועדו לכך, ואני אומר להם כי הם טועים !

האם הלוגיקה של מה שיצרתם מסוגלת להתמודד עם מצבים לא ידועים ?
אי אפשר לדעת. למה ? כי זה לא ידוע.

אתם יכולים לכסות לכל פונקציה 100,000 יחידות בדיקה, עדיין יגיע מישהו שימצא בעיה כלשהי. לא סתם יש מערכות שלמות לסייע בגילוי באגים ובעיות.

לי קרה מצב כי ביקשו ממני מערכת מאוד low level שתהיה מאוד מהירה ובתגובה מאוד מהירה לכל דבר, ויצרתי API מאוד ממוקד מטרה, הגיעו שני מתכנתים שונים להשתמש בזה.
הראשון עבד לפי ההוראות והכל עבד כפי שציפינו.
השני לא עבד לפי ההוראות, ושום דבר לא עבד והמערכת "קרסה". אבל לא מה שאני כתבתי קרס, אלא התשתית שהייתי מבוסס עליה, שלא אני פיתחתי, וזה בגלל שלא עבדו עם ההוראות.

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

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

האם בדקת באמצעות ‎ /dev/full האם המערכת שלך יודעת להתמודד עם מצב בו אין מקום יותר לשמור מידע ?
רק השבוע סידרתי את MySQL שהרס טבלה כי מערכת הקבצים הגיעה ל 100% ולא היה מקום לרשום את הרשומה, אז הטבלה נהרסה.

מדוע MySQL לא יודע להתמודד ולחזות מצב שכזה ? ובכן התשובה היא לא פשוטה. מה אם הוא כן יודע, אבל כשהדיסק מתמלא בזמן מסויים, או בצורה מסויימת זה היה מעט שונה ממה שציפו לו ?

יותר מזה, אתה בודק את הקוד שלך על 10,000 רשומות, הלקוח קצה שלך אבל משתמש ב10,500 רשומות, ואז יש איטיות (ב10,499 עדיין אין), איך לא ידעת להוסיף עוד רק 500 רשומות לבדיקה ? זה מה שמנהל מסוים יצעק עליך, לא ?

ומה אם האיטיות הזו נגרמת בגלל שלאותו לקוח אין מספיק זיכרון לשלוף 10,500 רשומות, אבל לך יש ? האם יכולת בכלל לחזות שימוש וכמה זיכרון להגיד ללקוח להחזיק ? ומה אם אצלו זה נגרם כי יש לו עוד תוכנה שרצה, לא קשורה אליך שבזמן השליפה, למרות שאתה בדקת בדיוק לפני כן אם יש מספיק זיכרון והיה, תפסה את הזיכרון הזה שאתה רוצה להקצות לעצמך ?

האם בכלל יש פתרון למקרי קצה כאלו ?

עוד מקרה שקרה לי, הוא שלקוח שינה על דעת עצמו את הסיסמה למסד הנתונים, בלי להגיד, וליידע, ואז התלונן שאני לא מציג את המידע שלו, והוא גם לא יכול ליצור את המידע מחדש כי זה לא נשמר.
האם בכלל יכולתי לחשוב על מצב שכזה, למרות שזו הפעם היחידה אי פעם שזה קרה לי ?

יחידות בדיקה לפחות בתפיסה של Agile לדעתי שגויות ביסוד שלהן.
הן נותנות לך הרגשה שגויה שכאשר הבדיקה עוברת, הכל טוב בקוד שלך.
אבל זה לא נכון. הן מוכיחות כי בדרך ובצורת הבדיקה שלך, הכל עובד.
אבל זה לא אומר שום דבר אודות הקוד שלך.
זה לא אומר כלום האם יש לך בעיות שונות, האם המשתמש יקבל משהו יציב וכיוב'.

אני רואה מערכות מאוד מסורבלות שעובדות כמו שצריך בלי בעיות ובלי יחידות בדיקה, אבל לפעמים יש איתן בעיות שאז נפתרות.
אני גם רואה מערכות שמפרסמים כי יש להן 100,000 יחידות בדיקה, וגם הן, לפעמים עובדות כמו שצריך ולפעמים יש איתן בעיות שגם הן נפתרות.

אז עכשיו חלק מהקוראים כאן (שעוד נשארו ולא עזבו בזעם או שיעמום) יגידו "כן, אבל תראה את סוג הבעיות ב X מול סוג הבעיות של Y".

אבל התשובה היא שזה לא משנה.
בדיקה מוכיחה כי היא מסוגלת לעבור (או לא), אבל היא לא מוכיחה העדר בעיות, אלא רק שהיא עוברת (או לא).

אני לא אומר כי אין צורך ביחידות בדיקה (או מה שאני עושה – תוכנות בדיקה קטנות שמשתמשות בספריה שאני יצרתי), אלא להתעורר ולהבין כי יחידות בדיקה לא משפרות את המערכת שלכם, הן נותנות לכם הבנה כי במצבים שאתם יודעים, חשבתם וגם יוצרתם להם בדיקה, בתנאי מעבדה הבדיקה עובדת, לא הקוד שלכם.

גם אם הקוד שלכם 100% נקי מבאגים (ואין כזה קוד באמת), וגם יחידות הבדיקה שלכם ללא באגים (שוב זה קוד, ומי אמר ששם אין בעיות ?), לפעמים החיבור למשהו נוסף, לפעמים בשליטה שלכם ולפעמים לא יכול לגרום לנפילה.
לפעמים מסך שלא מכוייל כמו שצריך יגרום בעיה חדשה, שאותה אתם לא יכולים לבדוק ביחידת בדיקה ומעולם לא חשבתם על הנושא.

כך שצריך להבין כי המערכת שלכם יציבה אבל לא בגלל יחידות בדיקה, היא יציבה כי יושבים ומתקנים בעיות המתגלות תוך כדי עבודה, יודעים להתנהל מול חריגות. וכמה שנורא להגיד את זה, לפעמים הלקוח -> משתמש הקצה הוא איש הבדיקה הטוב ביותר, כי הוא לא תמיד טכני ובעיקר לא יודע לחשוב כמוכם.

מוגש כחומר למחשבה.

אריקסון ו webrtc

כבר כתבתי בעבר על webrtc, אך זה עולם שכל הזמן משתנה ולא רק טכנולוגית.

אחד הדברים שמאוד נחמדים בעולם ה webrtc, זה היענות של מרבית החברות הגדולות בשוק בשביל לאמץ אותו.

גוגל היא החברה הכי מפורסמת שמנסה לקדם את webrtc, ויש לה אתר שהיא פתחה בנושא, והיא משחררת מימוש (בראש ובראשונה נועד עבור כרום) ברישיון MIT.

לעומת זאת, חברה גדולה אחרת גם נכנסה לתמונה, והחליטה שהיא לא סומכת על המימוש של גוגל, והיא יוצרת מימוש עצמאי משלה ל webrtc.

החברה היא Ericsson. והיא עושה זאת באמצעות Ericsson-Labs – מעבדת המחקר של החברה.
כידוע, אריקסון היא חברת טלפוניה,וזה מעניין לראות אותם נותנים קרב של ממש לגוגל.

החברה פתחה אתר בנושא, ושמה את הקוד שלה ב github, וגם הוא ברישיון פתוח – BSD.
הכלים שהיא משתמשת גם הם פתוחים, כדוגמת Gstreamer .
הם גם משתמשים במימוש של סיסקו – מימוש קוד פתוח עבור H.264, למעשה זה משהו שהם מספקים שגוגל בכלל לא.

הם גם משחררים דפדפן עבור iOS בשם bowser אשר מאפשר בעצם לקבל תמיכה ב webrtc, ובכך הם הופכים להיות הדפדפן הראשון במערכת הפעלה זו שתומך בזה.
הדפדפן נועד לקדם דווקא את H.264, אבל בנתיים גם מאפשר להשתמש ב webrtc.

הסיבה לכך שאין דפדפנים אחרים, נעוצה באפל, אשר אינה אוהבת את webrtc ורוצה שהטכנולוגיה שלה תתקדם במקום (משהו שאף אחד אחר בתעשייה לא רוצה), אך מתרצים את הנושא, בכך שהם מעדיפים מערכת טבעית ולא משהו בדפדפן, ולכן מוזילה וגוגל, אינם תומכים ב webrtc כאשר מדובר ב iOS.

בנתיים גם מיקרוסופט הודיעו בבלוג של סקייפ על התמיכה שלהם ב webrtc, והיכולת לשלב את סקייפ בדפדפן שלה.

כרגע יש קרב גדול על בחירת קודקים לוידאו, כאשר הקרב הוא בין H.264 לבין VP8 ובעתיד גם VP9.

אם להתעלם מהקרב הזה כרגע, נראה שהגישה של webrtc כרגע היא בגישה פתוחה, שבה כולם רוצים להראות שהם בעד השימוש, האימוץ ובעיקר הרצון שזה יהיה השלב הבא של עולם זרימת המדיה.

בסופו של דבר, זה עולם מאוד חם ורק נהיה כל הזמן יותר מעניין, ואפל כנראה תיכנס באיזשהו שלב, או תפספס את השוק ותהפוך להיות לא רלוונטית לרוב השוק.

webrtc ORTC

הקדמה

במידה ולא הכרתם, יש בעולם הHTML5 (באזז וורד בפני עצמו) טכנולוגיה מדהימה לזרימת מדיה בשם webrtc (אשר אפילו אני מספק עבורה פתרונות).

הרעיון הוא לקחת SDP ו RTP (שכמובן מכיל RTCP) ולאפשר להזרים אודיו ווידאו בצורה טבעית בדפדפן ללא שימוש בתוספים.
הטכנולוגיה גם מגיעה עם תמיכה ב STUN, ICE ו TURN.

היא תומכת ב OPUS, ו G711, ומחייבת אותנו לעבוד בצורה מאובטחת תחת DTLS,

עכשיו כל מה שנשאר זה לממש מערכת סיגנלים כדוגמת SIP או כל פתרון אחר – פשוט יותר עם web sockets,שגם הוא כיום (לפי התקן של webrtc) חייב כבר להיות מאובטח תחת TLS, ויש לנו פיתרון סטרימינג מלא.

אבל יש בעיה: SDP הוא אחד הפרוטוקולים הכי לא קריאים שיש, ובנוסף ישנו תיאור של מידע יחסית ארוך.

SDP הם ראשי תיבות של Session Description Protocol. התפקיד של הפרוטוקול הוא לספק מידע אודות המדיה, כדוגמת אילו קודקים נתמכים, מה כתובת התעבורה למדיה, ואפילו מה החלק של המדיה שנשלח, כלומר איפה הוא מבחינת התחלת "לוחות זמנים", האם אני מקבל את ההחלה, או משהו אחר.

הדגמה קלה (מה RFC):

v=0
o=alice 2890844526 2890844526 IN IP4 host.atlanta.example.com
s=.
c=IN IP4 host.atlanta.example.com
t=0 0
m=audio 49170 RTP/AVP 0 8 97
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:97 iLBC/8000
m=video 51372 RTP/AVP 31 32
a=rtpmap:31 H261/90000
a=rtpmap:32 MPV/90000

הסדר של השדות משנה, השדות עצמן כפי שניתן לראות קריפטיות לגמרי לקריאת בני אדם, וגם מסתבר שלא באמת כזה פשוט ליצור לכך מפרש נורמאלי בלי להשתמש במאפיינים של מפרש לקסלי בשפת תכנות כדוגמת  yacc.

הנה הסבר על מה שאתם רואים מול העיניים שלכם:
האות v, מייצגת version – גרסת הפרוטוקול, שלפחות כרגע היא תמיד 0.
האות o, מייצגת origin של הבקשה, ומכילה (לפי הסדר) – שם משתמש, session id, בנוסף session-version, סוג רשת (אינטרנט), סוג הכתובת, כתובת הרשת.
האות s מייצגת את session, כלומר השם שלו.
האות c מייצגת מידע על connection. זה אומר סוג הרשת, סוג כתובת הרשת, כתובת הרשת.
הכוונה היא לאן רוצים להתחבר בשביל המדיה.
האות t מייצגת זמנים.
האות m מייצגת מדיה, עם סוג מדיה, פורט דינאמי, פרוטוקול משלוח של המדיה, ומידע הקשור לפרוטוקול.
האות a מייצגת attribute, שזה תכונות שונות, למשל כאן, זה מייצג איזה קוקדים של אודיו ישלחו, כולל הקוד שלהם שמוגדר ב RFC עבור כל סוג קודק.

אפשר לראות כמה זה לא קריא וידידותי, אבל גם מגביל מאוד.
למשל attribute יכול להגיע רק לחלק מהפרמטרים, ויש פרמטרים שחייבים אותו. הוא תמיד חייב להיות מתחת לאותו פרמטר.

אף אחת מהאותיות לא יכולה להיות ריקה, ולכן במידה ונגיד שלא נרצה לייצג את שם ה session, יהיו אלו שישימו שם תו כמו נקודה או מינוס. אסור גם רווחים עם הסימן שווה מאיזשהו כיוון, ורשימת החוקים עוד ארוכה.

בנוסף ישנם פרמטרים אשר בכלל לא נגעתי בהם בפוסט שקיימים בנוסף, וגם להם חוקים שונים.

תוכן

אז למה אני נכנס לכל זה ?
ובכן בעולם ה webrtc, רוצים לרדת מ SDP לגמרי. כאן ציינתי חלק גדול מהסיבות לכך. אפילו מיקרוסופט חיבקה את הרעיון והודיעה שזו הדרך שלה להיכנס לעולם הזה, שכרגע נשלט בעיקר על ידי גוגל (כרום) ומוזילה, מבחינת דפדפנים, אך גם אופרה תומך בזה.

לפני ORTC, תכננו פרוטוקול אחר לגמרי, אשר היה מאוד low level, ומאוד קשה להגנה, וסיפק יותר מידי כוח בצד המשתמש. הפרוטוקול קיבל את השם Open Peer. אז בגלל הסיבות האלו, החליטו לרדת ממנו.

ואז ישבו הרבה אנשים, אשר רובם יצרו את webrtc ואת Open Peer, והחליטו על גרסה 1.1 לwebrtc בכנס מסחרי מסוים, אם כי למרות ההכרזה על 1.1 ההכרזה מרגישה יותר כמו 2.0.
השם לפרוטוקול החדש באותו כנס, קיבל את השם ORTC או Object Real Time Communication, אשר ה draft הראשון (מבחינת יכולת מימוש) שלו שוחרר באוגוסט 2014.
היכולת לעקוב אחרי דברים, נעשת באתר ייעודי לכך בשם ortc.org.

הרעיון הוא לספק סוג של API, שמצד אחד קל לתכנות, ומצד שני קל לאבטח, אשר מאפשר לשלוט בצורה קלה ופשוטה יותר במידע על המדיה, כאשר יש API בצד ה javascript, אך גם עם תאימות לאחור, בשביל לא לשבור פתרונות קיימים.
אבל לא סתם API, אלא הדגש הוא על גישה של Object Oriented, כאשר בעבר דיברו על כך שהיא תכלול את היכולת להחזיק אובייקטים של סוקטים בשם RTCSocket אשר ניתנים לשימוש מחודש במידת הצורך, ובכך בעצם לעשות שימושיות ב RTC ללא צורך באתחול מחודש של הכל. אך אינני מוצא זאת בdraft האחרון (נכון לכתיבת פוסט זה).

ישנם הרבה תיאוריות קונספירציה בנושא, למשל שמיקרוסופט עומדים מאחורי זה בשביל לגרום לגוגל לאבד את היתרון שלהם בנושא, או שזה בעצם קונספירציה בסגנון של תחרות בפרוטוקולים, אך נראה כי דווקא כלל השחקנים שקובעים את הפרוטוקולים כולל גוגל עצמה בעד.

הבעיה היא שORTC הוא סוג של API שבסוף משתמש ב SDP (אבל רק בהתחלה – תאימות לאחור) ואח"כ כנראה שיפרד מהגישה הזו. אבל הם עוד לא בטוחים בזה. כלומר הרעיון שלהם, הוא שבסופו של דבר לא יהיה SDP, אלא דיבור ישיר בין ה"ענן" (מערכת כלשהי שאתם תבנו בצד השרת) לבין הדפדפן, ואיכשהו יוחלט מה יורץ.

זה רעיון נחמד, אבל איך הוא מתבצע כאשר אין לך SDP ?
התשובה פשוטה – אתה תממש משהו כזה מחדש, ואתה תספק לו שם חדש, למשל השם Media Information Protocol או משהו בסגנון.

ואכן, זה מה שORTC מבצע. הם יצרו אובייקט בשם RTCRtpCapabilities, אשר התפקיד שלו לדבר על "מה אני צריך" עם הצד השני וניתן אפילו לעשות החלפה בזמן ריצה של המידע (ב SIP זה נקרא re-Invite).

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

יש עודף שאלות פתוחות לדעתי בנושא, והוא לא באמת כזה ברור בשלב הנוכחי, והוא צריך עוד להתבשל ולהתפתח יותר.

אבל הגישה הזו של ORTC ובעצם שכתוב של חלק מאוד חשוב ב webrtc גורם לכך כי במקום לסייע לאנשים לאמץ את webrtc, מרבית השוק כרגע מנסה להתעלם ממנו לגמרי, וזה רק מעקב את האימוץ הזה, אך האם המאמץ הזה יהיה שווה ? רק ימים יגידו.

אז מה דעתי בנושא ?
מצד אחד, אני חושב ש SDP זה כאב ראש. מצד שני, אני לא עד הסוף סגור על הרעיון של ORTC, ולכן אני לא ממהר לקפוץ ולהגיד שזה טוב או רע, רק מפריע לי שהוא שונה כל כך מהתקן הקיים היום (שעדין ב draft), היות ולי אישית כבר יש מימושים בנושא.

node.js כן או לא ?

למי שמכיר אותי, יודע כי אני תמכתי הרבה מאוד שנים ב3 פרויקטים מאוד וותיקים בעולם קוד הפתוח, ששניים מהם עם ותק של יותר מ20 שנה, והם ללא שום גב כלכלי או חברה מסחרית מאחוריהם.

לפני שבוע העברתי הרצאה באחד מאירועים המיועדים לאנשי VoIP בישראל.
אחד הדברים שעלו שם, זה שאסטריסק עדיף כי יש לו חברה מסחרית מאחוריו, בעוד שקשה מאוד לסמוך על פרויקט שאין לו גב מסחרי.

node.js הוא פרויקט שהוא כמעט כולו קוד פתוח, והוא מבוסס על מנוע בשם v8 של גוגל. עד כאן זה נחמד.

אבל יש לי עם זה בעיה, שגורמת לי לחשוב ולרעוד מפחד, כל פעם שאני מסתכל לכיון node.js.
גוגל החליטה לפני שנה לעשות fork לwebkit שהוא עצמו fork של khtml, וקראה לפרויקט שלה blink.
היא עשתה זאת, מבחירה מסחרית גרידא ("אנחנו בידלנו את עצמנו בצורת פרוססים וטרדים שלנו, ולכן עשינו fork").

אמנם node.js לא משתמש ב webkit או ב blink, אבל הוא יוצר לי בעיות קשות:

  1. האם v8 ישאר גם מחר ?
  2. האם יהיה fork ?
  3. האם הוא ימשיך להיתמך ?
  4. האם הכיון שלו כיום ישאר, או אולי ישוכתב/ישתנה לגמרי בגרסאות חדשות יותר ?

כפי שניתן להבין, קשה מאוד לדעת מה חברה מסחרית תעשה עם הכלים שלה. קל מידי לחשוב לכיון של "יש הרבה משתמשים, אז הם ישארו בכיון". הרי גוגל, שלא לדבר על מיקרוסופט, כבר הוכיחו שכאשר זה לא נוח להם כלכלית, הם משנים כיון ותפיסה. סוגרים שירותים, מפסיקים מערכות וכיוב'. אפילו הפצות לינוקס מקבלות End Of Life.

אם node.js היה מחזיק מנוע javascript משל עצמו ללא קשר לגוגל, לא היה לי כל פחד בנושא, אך כאשר הוא מבוסס על משהו ששיך למישהו אחר, גם אם הוא פתוח לחלוטין, מאוד קשה לי לסמוך עליו האם מחר הוא ישאר או יכנס למשבר, כי פתאום הפרויקט יהיה חייב או לשכתב מערכות ולעבור למשהו חדש, או לתחזק עכשיו את v8 בצורה שמתאימה לו.

יכול להיות שאם דבר כזה יקרה, אולי השוק פשוט יברח מ node.js ורק מי שאינו יכול להרשות לעצמו יתקע.

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

אני עדיין לא בטוח שיש לי תשובה לכך, אבל אלו כרגע החששות שלי בנושא. מה דעתכם ?

סליחה, יש לכם אולי זמן ללמוד טכנולוגיה חדשה ?

מידי פעם, כאשר אני נמצא בארגונים מסויימים, אני מגלה כי יש לחץ בפרוייקטים, ולעולם אין זמן לאנשים ללמוד טכנולוגיות חדשות שאולי ישפרו להם את העבודה, ואף יסיעו להם ליצור בזמן מהיר יותר את העבודה. כלומר לימוד אשר יכול לספק השקעה נמוכה יותר והחזר השקעה גדול יותר.

נוצר מצב בו מרבית הדברים שנוצרים, נוצרים עם לחץ של זמן לא הגיוני, ובכלים פחות אופטימליים, ובאיזשהו שלב מוצאים את עצמם תקועים ולא יכולים להתקדם, ופתאום צריכים לשכתב דברים, שאם מראש הם היו נכתבים אחרת, אז לא היו מגיעים לזה, ולמעשה הרווחיות היתה גבוהה יותר בטווח הארוך מאשר בטווח הקצר.

כמובן שאינני מדבר על מערכות של "כניסה לשוק", כלומר מצב שבו זמן הוא באמת הבעיה, אלא יותר לוחות זמנים לא הגיוניים, והתחלות שהיו צריכות להיות שונות לגמרי.

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

כאשר ארגון מונע מהאנשים שלו זמן ללמוד ולרכוש מיומנויות בטכנולוגיות שונות, או אם ארגון מחזיק באנשים שלא נוח להם ללמוד דברים חדשים, הוא פוגע בעצמו בטווח הארוך.

למשל לעבוד עם מכונה מאוד חזקה לווירטואליזציה, זה דבר נחמד, אבל האם אולי טכנולוגיה כמו docker מתאימה לצרכים שלכם יותר ? אם כן, היא תחסוך לכם המון כסף בארגון, ומצד שני תתן לכם מענה איכותי וטוב כמו ווירטואליזציה, רק על הברזל עצמו. אבל במידה והעובדים שלכם אינם מכירים או מסוגלים להתנסות בזה, איך תדעו ?

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

לאחרונה יצא לי לעבוד מול מישהו שעדיין עובד עם רובי 1.8.6 (אשר שוחרר ב2007), ואינו זהה לרובי 2.1.2 (נכון לכתיבת פוסט זה – הרובי האחרון בסדרה). מבחינת השינויים בין הגרסאות, יש כמעט גלקסיה שלמה, עכשיו אם הארגון יעבור למערכות לרובי חדש יותר, הם יהיו חייבים כמעט לכתוב דברים מאפס, רק בגלל שהם "נתקעו" עם גרסה ישנה.

אם מסתכלים על הקפיצה הגדולה בין 1.8.6 ל2.1.2 אפשר לחשוב כאילו לא היה מספיק זמן להמיר דברים, אך למעשה המעבר לרובי 2.0.0 היה מאוד ארוך, ובאמצע כלל גרסאות כמו 1.8.7 שהיו הרבה שנים בתמיכה, וגם 1.9 על סדרותיו, שנתנו את האפשרות להתאים את הקוד למעבר של גרסה 2.0.0. כלומר אותו ארגון נתקע מאחור, ועכשיו הקפיצה שלו יקרה מאוד עם המון בעיות, בעוד שאם היה "זורם", העלות הכוללת היתה נמוכה בהרבה, ושורת  הרווח שלו גבוהה יותר.

כך שלמעשה ארגון המונע התמקצעות ולימוד מתמיד של עובדיו, בנוסף לארגון המחזיק כאלו אשר אינם מסוגלים "להתקדם" וללמוד, פוגע בעצמו כלכלית וגוזר על עצמו להפסיד בסופו של יום בתחרות השוק.

העתיד של שפות התכנות, או לראות שונה מאת ברט וויקטור

מאיר נתן לי קישור להרצאה מאוד מעניינת, שלמעשה די מזכירה את הבלוג שלי, רק המרצה עושה את זה בצורה טובה יותר ממני.

ממליץ בחום לצפות בה:


 

עייפות הIT

אנשים בישראל, אשר שרתו בצבא, בייחוד בקרבי, זכו לקבל אימונים להתמודד עם עייפות. כלומר למרות שהם עייפים מאוד, הם עדיין זקוקים לתפקד ולהתנהג כאילו אין להם בעיה שכזו.
הבעיה היא, שכאשר עייפים, הגוף מכבה את עצמו, הוא מתקשה לחשוב, ואחרי עודף שעות עירות, הוא מגיב בצורה זהה, לצורה שאדם שיכור מגיב. מצב קיצון של מחסור בשינה, גם מסוגל לגרום בסופו של דבר למוות.

הסיבה שהצבא מכריח אותך להתמודד עם מצב קיצון שכזה, היא היות ואתה צריך להתמודד עם מצבים של חיים ומוות. הצבא, ובכלל במצבי קיצון, יש צורך להימנע משינה, ולהמשיך לתפקד כאילו אנחנו בשיא העירנות.
אך מצבי הקיצון האלו, אינם קיימים כמעט בכלל בעולמינו הנוכחי, למעט איזורי לחימה ואיזורים מוכי אסון ששם יש צורך להישרד בכל דרך אפשרית.

עולם העסקים, נחשב אצל המון אנשים כשדה קרב שבו כל יום הוא מאבק אין סופי, אך אפילו בצבא, יש מנוחה, והניסיון לחלץ אנשים משדה קרב כאשר רק ניתן, ולא להמשיך ולתת לחייל להיות בתוך המלחמה 24/7 במשך כל השנה ללא הפוגות שיאפשרו להם להתאושש, דבר שאינו באמת מתרחש בעולם העסקי של ימנו.
כאשר מדובר בארגונים, לפעמים שעה של אי זמינות, מתפרשת כאסון כאילו היקום קרס, וצריך בשניה הזו ממש מענה להכל.

הבעיה היא שהמון ארגונים בארץ ובעולם, משתמשים במניעת מנוחה ושינה, כדרך עבודה. אני נתקל בזה המון עם אנשי IT, אשר לא משנה כמה הם עייפים, הם צריכים לתת מענה כרגע לארגון כי אחרת העולם יקרוס.
אבל כאשר איש IT עייף, הוא עושה טעויות, וכל משימה לוקחת לו הרבה יותר זמן, ולא תמיד בצורה הטובה ביותר, אלא לפעמים דווקא הוא יצור נזק, ולא בגלל הרצון לכך, אלא בגלל שזה נבע מעייפות.

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

לא רק זה, הסיכוי כי תפגעו בכל הרשת הארגונית במידה ויש לכם גישה אליה, כל כך גבוהה, עד שעדיף לא לאפשר לאיש IT להמשיך ולתפקד במקרה קיצון שכזה. למעשה המשך תפקוד שכזה יכול לעלות יותר כסף לארגון, מאשר הפסקה של הפעילות למשך מספר שעות, שיוקדשו למנוחה, אך השירות לא יהיה זמין.

הבעיה של זמינות של 24/7 מחלחלת למטה, עד שאם כרגע יש תקלה ברשת כלשהי שכלל הציבור משתמש בה (למשל שרתי דוא"ל לא מגיבים, אתר מסויים למטה, רשת סלולרית אינה מגיבה), זה נחשב באותה מידה לאסון עולמי. למרות שרשת תקשורת אולי כן חיונית למענה של חיים ומוות, מרבית השירותים אינם כאלו, למשל שידורי תוכנית טלויזיה אהובה שמתפספסים בגלל תקלה, אך עדיין הגישה מכריחה את כולם לתת מענה מיידי, או שהשמים יפלו ומלחמת העולמות תתחיל בלעדינו.

מוקדש כחומר למחשבה

תם עידן הפרטיות, תחי הפרטיות

Le roi est mort, vive le roi !

אנשים נוטים להכריז כי עלינו לקבל את העובדה כי אין יותר פרטיות בעולם.ומשום מה אני לא מסכים איתם.

אנחנו חיים בעידן של מאגרי מידע, ואנחנו חיים בעידן בו אנחנו יכולים לחשוף את ערוותנו בציבור באמצעות האינטרנט (ואף מדיות אחרות). כל זה באמת קיים כיום. אך מדובר בנושא של בחירה מול הכרח.

האם אני רוצה לשתף את הרחוב בכל דבר העובר עלי, או האם אני מעוניין להשאיר לעצמי דברים ?
האם אני באמת חושש מכך שיראו תמונה שלי וידעו שזה אני, או האם אין לי בעיה בכך ?

אני למשל בוחר שלא לשים תמונות שלי, לא לפרסם מידע אישי מידי, ולא לערב את כל הרחוב בעיסוקי השונים, אך כן בוחר לחשוף מידע שכן מתאים לי לחשוף, ובכך בעצם מנסה לשלוט במידע שאני מפרסם על עצמי.

אך אני עושה דברים בצורה הטובה ומתאימה לי. מרבית האנשים אינם יודעים אבל על הסכנות. הם לא רואים באינטרנט כרחוב סואן בו כולם חשופים למידע, וחושבים שזה כמו קומונה קטנה שכולם זהים ומחזיקים באותם רצונות.

ההכזרה כי אין יותר פרטיות בעולם ולכן תחשפו את עצמכם לגמרי, היא סוג של נבואה שמגשימה את עצמה, היות והיא יוצרת נורמה מסוכנת, בה אנחנו בעצם מקבלים שצריך לחשוף הכל ולהראות את ערוותנו בצורה מלאה, וזה בעייתי עד מאוד.

כאשר אנחנו מקבלים את ההכרזה על מות הפרטיות כעובדה, פתאום קל לנו לקבל שהמדינה רוצה לקחת מאיתנו את הפרטיות, ולאגור אותה במאגרים שלה. הרי אם בחרנו לשים תביעת אצבע בשדה התעופה, אז אנחנו נבחר גם לשים פרטים אחרים בידי המדינה ולהיכנס למאגר ביומטרי, לא ?

וכך המעבר מבחירה מה לחשוף ואיך להחשף הופכת לאבסולוטית וכאן הבעיה – חוסר היכולת לשלוט במידע ובזהות שלנו יותר, וזו המשמעות של וויתור על הפרטיות.

זה נעשה אבל מבחירה שלנו, ולא מסיבה שאין יותר פרטיות בעולם, אנחנו בוחרים להעלים את הפרטיות על עצמנו, ולא הסביבה בוחרת לעשות כך.

זה תלוי בנו בלבד, ובבחירות שלנו. אני מקווה שכולנו ננהג בחוכמה בנושא.

מוגש כחומר למחשבה.

תרבות החשיפה

וידוי: יש לי פייסבוק, אני מאוד פעיל בו יחסית.
וידוי 2: אין בפייסבוק תמונות שלי או פרטים עלי.

יש בעיה, בפייסבוק ובכלל הרשתות החברתיות, אנשים נחשפים יותר מידי. פייסבוק כבר מוגדרת בהרבה מקומות כאמצעי ריגול. אם תחפשו, תמצאו הרבה מאמרים (1, 2, 3, 4, 5, 6) איך חברות ביטוח מרגלות אחרי משתמשי פייסבוק לדעת עליהם מידע וככה לדרוש תשלום או לא לשלם להם בעקבות הדברים, סתם לקחתי 6 קישורים ראשונים שמצאתי בגוגל …
אבל יותר מזה, אם את/ה בוגדים בבן/ת הזוג, אפשר לאתר אתכם דרך הפייסבוק. כן גם אם יש לך עוד חשבון ועוד בשם בדוי.

אפילו לא התאמצתי לגלות את המאמרים האלו, פשוט כתבתי בגוגל ומייד מצאתי.

פייסבוק - הדגמה למטריקות
עד כדי כך השימוש בפייסבוק יכול להזיק לכם במקומות שאתם לא מודעים אליהם, אבל זה לא הכל.
רשתות חברתיות מוכרות מידע לחברות משלמות, ויותר מזה, מספקות המון מטריקות מדידה על המון דברים, כמו איזור מגורים, חתכי גיל, שימוש בטכנולוגיה, מדינות, שפות, שעות שימוש, מקצועות, לפעמים אפילו תחביבים וכמות הכנסה חודשית.
המידע הזה משמש בסופו של דבר לעשות יותר כסף ולחקור את השווקים טוב יותר.

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

כל זה אומנם מידע יבש, אולי קצת מפחיד, אבל הוא חשוב, ומשום מה אנשים מתעלמים ממנו לגמרי. יותר מכך, יש כאלו שמצהירים מיד "אין לי מה להסתיר", מול אלו שמתחילים לפחד ורואים איום בכל דבר.

הבעיה אבל, שחשיפה ברשת חברתית (פייסבוק היא רק רשת אחת מתוך הרבה), הפכה לנורמה. פתאום אם אני לא מוכן לקחת חלק בסיפור ולהחשף, אז משהו לא תקין איתי. פתאום אתה מקבל לחץ חברתי של "זה בסדר, כולם עושים את זה, ובכלל לי, לא לא קרה כלום, ואני לא מכיר מישהו שקרה לו, מה לא בסדר אתך ?"

כיום אם אין לך תמונה לפחות אחת, כולל מידע פרטי נגיש, אתה לא תצליח למצוא בת זוג: "כבר נגמר העידן הזה של לחכות ולדעת דברים מפגישה", זה משהו ששמעתי יותר מפעם אחת.

אנשים רבים רואים בחשיפה מלאה של חייהם ברשת כנורמה, וכאמור, יש מי ששמח לקבל את זה.
כאשר אני שואל אנשים אם הם מוכנים ככה סתם להחשף ברחוב, הם מיד אומר לי שלא, ופייסבוק היא רשת ווירטואלית אז זה אינו אותו הדבר.

הבעיה היא שבעוד שהרחוב יכול לשכוח, האינטרנט אינו שוכח. דברים שפרסמתם לפני 15 שנה באינטרנט, סביר להניח שעוד נמצאים איפשהו, וסביר להניח שהם יהיו גם עוד 150 שנה איפשהו.

מוקדש כחומר למחשבה

דרך קצרה שהיא ארוכה ודרך ארוכה שהיא קצרה

ישנו סיפור על אדם אשר רצה לדעת מה היא הדרך להיכנס לעיר. בדרך הוא פוגש ילד, ושואל אותו בנושא.
הילד מספר לו כי ישנם שני דרכים: דרך קצרה שהיא ארוכה, ודרך ארוכה שהיא קצרה.
האדם ביקש ממנו את הדרך הקצרה, והילד אמר לו: "תמשיך ישר בדרך הזו ועוד 100 מטרים תגיע לעיר"
האיש נפרד מן הילד, וממשיך בדרך, אך הוא ניתקל בצמחיה, שדות ופרדסים אשר מפריעים לו להמשיך בדרכו.
האדם מתעצבן וחוזר אל הילד, ומטיח בו כי הוא אמר לו כי זו הדרך הקצרה. אז הילד לא נבהל, ואמר "והוספתי כי היא הארוכה".

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

מרבית התעשייה מתמודדת תמיד עם אותן הבעיות ואותן הכשלים באותן המקומות, ובמקום לשנות תפיסה וגישה, הם חושבים כי הדרך הקצרה והארוכה היא הדרך הנכונה, אך בסופו של דבר כמות האנרגיה המושקעת בדברים שונים כל כך נוראית שלמרות שכולם נוגעים בזה, ותמיד יש את המילים "בטוח שאתה לא היחיד שנתקל בבעיה הזו", מעולם לא עוצרים וחושבים אולי יש דרכים אחרות לגמרי. אולי ללמוד אותם לוקח יותר זמן, אבל אחרי הלימוד הן חוסכות זמן, עבודה קשה ובעיות, ובכך הן הופכות לדרכים ארוכות וקצרות.

מוזר שהשוק תמיד הולך בדרך הקשה ביותר להשיג משהו, רק בגלל שכולם עושים זאת, בלי לעצור ולחשוב אולי יש דרך טובה יותר. ואני ? ובכן אני משתמש בכלים שמתאימים עבור המשימה שאני צריך, במקום להשקיע במאמץ של מה כולם משתמשים. לא תמיכת חכמת ההמון היא הנכונה, לפעמים היא רק ללכת בעקבות העדר

האם מיקרוסופט נעלמת מהעולם העסקי ?

לאחרונה לקוח נפל בכך שהזמין מערכת ממישהו שהקים חברה על איזה קורס וחצי של פיתוח בטכנולוגיות מיקרוסופט שלקח, ואותו אדם לא הצליח לספק לו את מבוקשו.
כאשר הלקוח עוד חשב כי יקבל, ביקש ממני סיוע למצוא שרת אירוח מבוסס Windows, היות והוא היה זקוק להתקין את המערכת שאותה חברה בנתה עבורו.
אז שנינו חיפשנו משהו בסדר גודל מסויים, והמחירים שמצאנו במקרה הטוב התחילו ב50 יורו.
מיקרוסופט Azure עצמה כל כך יקרה ולא ריאלית לעסק קטן, אשר זה נפסל עוד ללא מאמץ.
אז הלקוח הזמין Windows Server 2012. וגילינו כי זה, מגיע עם ממשק של Windows 8 משום מה.
והשאלה הראשונה ששאלתי היא: למה ?

מי ירצה להריץ שרת שעובד קשה על מערכת טאבלט ? מדוע הממשק צריך להיות זהה גם כאשר מדובר בשרת ?

אבל זה לא הכל, עצם החיפוש עבור חברות המספקות מערכת ווינדוז, היה יחסית קשה למצוא, בעוד שמאוד קל, פשוט וכיום כבר זול להזמין. למשל אני עובד עם Digital Ocean (לחיצה על הקישור והזמנה דרכו יזכו אותי בכסף – אומר זאת בצורה גלויה), שרת במחיר של 10 דולר לחודש (120 דולר לשנה) והכל עובד, קל, אין בעיות, יש לי סנאפשוטים של מצבים שונים כאשר אני עושה ניסויים על המערכת, ונהנה מזה שאין לי כאבי ראש מיותרים.
הכל היה קל ופשוט מידי, בייחוד כאשר משווים זאת לאמזון, אשר הם לא ברורים במחירים שלהם, והממשק שלהם זוועתי, וכבר סיפרתי מה הם עשו לי.

כל זה לא קיים למי שבוחר במיקרוסופט.
אבל זה לא הכל.
הידעתם כי מיקרוסופט מנסה לאט לאט להיפתר מ .NET ?
היא רוצה להתחיל לספק סביבה שתתאים את עצמה ל"ענן", וכהרגלה, במקום לתמוך במי שאינו זקוק לכך, היא הורגת לו את הטכנולוגיה ומכריחה את כולם לעבוד לפי מיקרוסופט, לא לפי הצורך האישי שלהם. דבר שהופך את הביסוס העסקי על גבי מערכות מיקרוסופט כהתאבדות כלכלית.

למעשה מיקרוסופט היא הסיבה שעזבתי את העבודה איתה ועברתי להיות איש מקצוע בלינוקס. היא רצחה לי טכנולוגיות שאני פיתחתי על בסיס ווינדוז, וב2003, עברתי סופית ללינוקס (אחרי כמעט 4 שנים של משחקים עם המערכת וההפצות), ומאז אני כבר לא חושש שיהרגו לי את הטכנולוגיות.

עסק שנכנס כיום לשוק, במידה ויתבסס על מיקרוסופט, ימצא מספר שנים לאחר מכן, כי כל העבודה והכסף שהשקיע, ירדו לטמיון, ולמעשה מיקרוסופט הפכה כבר מזמן להיות לא רלוונטית יותר למי שחפץ ביציבות עסקית.
אינני מדבר על אופיס, או על ווינדוז כמערכת הפעלה שולחנית, או על ניהול "חזק" של הרשאות, אלא על התשתיות והכלים של מיקרוסופט אשר אנשי מקצוע טכניים מחפשים.

הפוסט הזה ד"א, הוא תובנה שהיתה לי לאחר שיחה קצרה עם מנהל קשרי לקוחות ישראל של חברה בין לאומית מאוד גדולה שכולם מכירים.
אפילו הוא כבר אינו מבין את הצורך בשימוש במוצרי מיקרוסופט.

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

אל תתנו להם לחוקק חוקים – חוק הנגשת אתרים

"The more corrupt the state, the more numerous the laws." — Tacitus

הקדמה

בסוף שנות ה90 ותחילת אמצע שנות ה2000, דפדפן אחד של מערכת הפעלה אחת שלט בעולם.
הדפדפן הזה קיבל את השם Internet Explorer, אשר כמו מגלה ארצות ה"מכבד" את עצמו, הכריח את כולם לעבוד לפי הלך החשיבה של החברה שיצרה אותו, במקום לעמוד בתקנים ולהכיר בתרבויות השונות שאליהם הוא נקלע.
אנחנו זעקנו בהרבה מאוד קולות שצריך לכתוב אתרים לפי תקן, ולא לפי דפדפן.
בישראל, מרבית העסקים, שלא לדבר על הממשלה, התעלמו לגמרי מהפניות שלנו. אפילו מאמרים שונים בעיתונות לטובת הדרישה שלנו, זכו להתעלמות.

רק כאשר מספר מקומות הבינו כי למרות שדפדפנים כדוגמת Firefox מהווים פחות מ5% מהתעבורה, אבל מהווים 90% מכוח הקנייה, שראינו שינוי מגמה.
פתאום אתרים התחילו להיות מונגשים לFirefox תחילה, היות והוא זה שהכניס כסף. אבל בשביל להיות תואם Firefox, כל מה שצריך זה לפתח לפי תקנים (תודה מוזילה), ולכן למעט באגים של הדפדפן, אם אתה כותב לפי התקן, תיאורטית זה אמור לעבוד עבור כולם.
בנתיים גם השימוש ב data עבור הסלולר גדל, ודפדפן Opera Mini תפס, וגם החברה הזו בחרה לעבוד עם תקנים, וראו איזה פלא, לא צריך לשכתב דברים (למעט התאמה לסוג תצוגה).

אם זה לא היה מספיק, Firefox הציג לנו גם חידושים אמיתיים בחווית השימוש, משהו שמיקרוסופט לא טרחו בכלל לספק, וככזה הוא הפך להיות נוח יותר, והאחוזים שלו תפסו יותר.
ב2008 יצא עוד דפדפן מבית גוגל בשם Chrome, והוא כבר התחיל שינוי אמיתי. הוא כבר נגיש יותר, ועובד גם לפי תקנים, לפעמים אפילו לפני שהם יוצאים, ולמעשה גוגל הצליחו להביא למצב בו למעט ארגונים גדולים, הרבה מעדיפים לעבוד עם הדפדפן שלהם, אשר לפחות למראית עין, הוא "מהיר" יותר.

כיום למעט 2 דפדפנים עיקריים, מרבית הדפדפנים מבוססים על אותו בסיס (אשר משתנה לאט לאט שוב), בשם Webkit, אשר התחיל בכלל את דרכו כ KHTML עבור פרוייקט KDE כדפדפן בשם Konqueror.

למרבה הצער, כיום רק אתרים כדוגמת בנק הפועלים ואתרי הממשלה אינם באמת תומכים במשהו שהוא לא Internet Explorer. בבנק הפועלים בחשבון עסקי, אתה חייב שהוא יהיה 32 ביט. בעוד שבאתרי ממשלה שונים, אתה חייב ש IE יהיה גרסה 6.

העיקר להמשיך לקרוא

מחדשנות לשמרנות

אחד מהדברים שמאוד מסקרנים אותי, הוא שיש חברות אשר היו פעם מאוד חדשניות, ופתאום עברו להיות מאוד שמרניות.

הכוונה היא שפעם החברות האלו היו חדשניות מאוד, בחוד החנית של הטכנולוגיות, אבל באיזשהו שלב, מה שסיפק להן יתרון משמעותי, גרם להן להעצר, ובמקום להמשיך בקו חדשני, הן ממשיכות לשמור על מה שהן כבר בנו, שפעם היה חדשני ונוצץ והיום כבר מזמן נמצא מאחור.

דן אריאלי ענה על שאלה בנושא, מה שהצית מחדש את ההתעניינות שלי בנושא. אריאלי מדבר על כך שבעיות כאלו כנראה נוצרות בעקבות אפקט הבעלות.

אפקט הבעלות הוא נושא מאוד מעניין בפני עצמו.
הוא מדבר על מצב בו אתה רואה את מה שאתה יצרת שווה יותר (העלות שאתה רוצה עליו – WTA) מהנכונות שלך לשלם על מוצר זהה של מישהו אחר (העלות שאתה מוכן לשלם עליה – WTP). דבר זה חופף גם את אפקט איקאה, אשר מדבר על כך, שאם יצרת משהו בכוחות עצמך, תראה אותו שווה יותר ממה שהוא שווה באמת.

לדברי אריאלי, כאשר אין לך שום דבר ביד, אתה מחפש בעצם את הנכונות של רווח מול הפסד, ובוחר במה שהכי כדאי עבורך להשיג את הרווח.
אך כאשר כבר יש לך משהו ביד, הצורה שאתה מביט בה שונה. אנשים אינם אוהבים להרגיש הפסד, ולכן יש נטייה לרצות לשמור על מה שכבר קיים, במקום "לזרוק" ולהתחיל מההתחלה. כלומר החשיבה וכן המנטליות שמרנית הרבה יותר.
ואם חשבתם שזה מאפיין רק את ניהול החברות, אז טעות בידכם, הדבר מתקיים בהרבה צורות ניהול, כולל אלו של ערים ומדינות.

הרבה מהדברים שלמדתי בשנה האחרונה, או יותר נכון הפנמתי, הם שאנשים ממש לא רציונאלים בהחלטות שלהם. כלומר הרבה מהדברים שאנשים עושים, הם לפי תחושה, רגש, והשפעה סביבתית, ופחות מסיבות אמיתיות. אם כי זה נראה לאלו המחליטים, כסיבות לגמרי ממשיות ואמיתיות.

כך כאשר אתה שואל אדם למה הוא בוחר או עושה משהו, הרבה פעמים התשובה שתקבל תשאיר אותך "בשוק".
אתה תקבל תשובה כדוגמת "כי כולם עושים את זה", או תשובות כמו "יש סיבה", אבל התחמקות מלהסביר אותה (בגלל שאין באמת סיבה), תירוצים שונים אשר לא באמת מסבירים את המצב, והרשימה עוד ארוכה.

מסתבר שיש מחקרים פסיכולוגיים מאוד מעמיקים בנושאים האלו, ויש אפילו נושאים כדוגמת פסיכולוגיה התנהגותית, ובתוכה יש תת עולם שנקרא כלכלה התנהגותית, אשר מנסים להבין את הלך החשיבה האנושית והגורם לקבלת החלטות כאלו ואחרות.

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

בזיון השעון (או איך חברות סלולר דופקות את הלקוחות שלהן)

בזמן כתיבת שורות אלו, קיבלנו צורך לשנות את השעון בטלפון החכם לשעון אתונה.
הסיבה לכך היא שישראל שינתה את החוקים להזזת השעון, אשר צריך להיות ב27/10/2013, אך לפני השינוי הזה, הזמן היה צריך להיות שונה, ולכן חברות הסלולר ממליצות להעביר את השעון לאתונה, ששם גם המעבר יהיה ב27/10/2013.

העניין הוא שאנדרואיד וגם iOS מבוססות על יוניקס, ומי שאינו יודע, יש מערכת ניהול זמנים די איכותית שם, אשר כיום מנוהלת על ידי ארגון תקינה בשם IANA.

אם חברות הסלולר היו משחררות firmware מעודכן לטלפונים שברשותן רק עם שינוי של tzdata, מעולם לא היתה צריכה לעלות הבקשה להחליף מישראל לאתונה, היות והשעון היה מתחלף כמו שצריך בכוחות עצמו (אצלי בלינוקס):

$ zdump -v Asia/Jerusalem | grep 2013 | grep Oct
Asia/Jerusalem  Sat Oct 26 22:59:59 2013 UTC = Sun Oct 27 01:59:59 2013 IDT isdst=1 gmtoff=10800
Asia/Jerusalem  Sat Oct 26 23:00:00 2013 UTC = Sun Oct 27 01:00:00 2013 IST isdst=0 gmtoff=7200

אך החברות לא עושות זאת, ולכן דורשות מהשמתשים שלהם לעבוד קשה וללמוד איך לטפל במכשירים שמכרו להם, כשרוב אלו אשר קיבלו את המכשירים לידיים לא באמת יודעים כיצד לעשות זאת.

רמת הזלזול הזו, מראה כי כבר עדיף לקבל טלפון עם root פתוח, ולהתקין תוכנות כדוגמת ההמלצה של חץ ולסיים עניין.

Beware of Amazon AWS

Last year I'ved tested AWS with small server that is "free" for a year (unless you exceed the usage).
When the testing was done, I removed the server, and on my account, there was not even one type of service to remove or delete anymore.

Recently I'ved discovered charges of AWS in my credit card, that I gave them last year, but I haven't used any of their services anymore.
So I'ved email them and now, after two weeks, I still have no answer from them, so I removed my account completely and left them feedback at the web site on this issue.
Furthermore, I've also added a complaint at the Facebook page of AWS.

Taking from you money without giving you any service is theft, and as such, it is a criminal act.
I don't know exactly why the company stole from me, but they did, it was in a very small amount, but still they took money without giving me anything in return, or me asking them for anything, and they took it without my knowledge.

So before you are going to open any cloud service with Amazon, please beware, you might find yourself paying them even after you long stopped using it.

האם זיהוי ביומטרי יפתור בעיות זיהוי ?

פרולוג

יום אRudolf_Abel_FBI_mugshotחד, משום מקום, קם לו  אדם, אשר קיבל על עצמו את השם רודולף אבל, ומצא עצמו בניו יורק, שם התבקש להמשיך בעבודות הריגול שעשה עבור ה KGB, רק הפעם במקום הגרמנים, היה זה כנגד ארה"ב.

אדם "חביב" בגיל ה50, אשר היה משתמש במטבע ניקל להחביא בתוכו מיקרופילם עם מידע אשר היה מגיע לסוכני KGB.
רק הלשנה עלתה על אבל, אשר נתפס על ידי הFBI ב1957, וב1962, בעקבות משבר הפלת מטוס הריגול U2 שנים קודם לכן, הועבר חזרה לידי הרוסים.

במידה ולא היתה הלשנה, על ידי אדם אשר רצה לערוק, לא היו מצליחים כנראה לעולם לעלות על האדם ה"חביב", אשר נולד באנגליה, והגיע בסופו של דבר לניו יורק. להמשיך לקרוא

Let's learn go – הרצאה

העברתי הרצאה על שפת גו של גוגל, אשר מדברת יותר על הדברים העיקריים בשפה, והיא בנויה עבור אנשים שכבר מגיעים מרקע של תכנות, מאשר כאלו ללא ידע כלשהו.

ההרצאה היתה במסגרת הרצאות Qt, ולבקשת ינון. לצערי היא הגיעה אחרי ההרצאה על C++11 אשר נתן לי תחושה כאילו הכניסו שפה המתחילה ב P והיא מהודרת ורובכם מזלזלים בה, לשפת ++C, רק שמרו על חוסר הקריאות ומבחני הרורשך בשביל חלילה וחס לא לגרום לה להיות שפה שמישה.

את ההרצאה ניתן למצוא כאן. רשימות ההרצאה ניתנות להרודה מכאן. ו"קוד המקור".

ניוד צרות

אז אתם יכולים לנייד את מספר הטלפון שלכם 20 פעם ביום תודות למשרד התקשורת. אממה, עם הניוד באו הצרות.

כיום אין קשר בין מספר חד חד ערכי כדוגמת קידומת, לספק טלפון. על מנת להתמודד עם הבעיה, כל ספק טלפוניה הקים לעצמו מערך מסדי נתונים, במקום להקים מערך אחד לכולם, אשר תפקיד מסדי הנתונים הוא לקבל את המספר שחויג, לבדוק לאן הוא שייך ולפנות לאותו ספק עם המספר הלאה.

אבל יש כמה בעיות עם זה. למשל לא כל מסדי הנתונים מעודכנים כמו שצריך, לפעמים יש מידע שלא מגיע מספק אחד לספק שני, או מגיע באיחור של מספר שעות (אפילו יום או יומיים).

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

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

כלומר, אינני יכול לדעת בכלל האם מספר כלשהו הוא כיום מחובר או שייך למישהו, ולפעמים אני מקבל סטטוס לא נכון על המספר עצמו. רק ה"תקליט" (הודעה על חשבון הצלצול במקרה הזה), היא הדבר היחיד שמסביר מה קורה, אבל המערכות האלקטרוניות ממש לא יודעות לפענך את זה.

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

על כל בעיות הניוד, נוספו גם ספקים חדשים, אשר רוכבים על ציוד של חברות קיימות. חברה כדוגמת גולן טלקום, בנוסף גם פורסת אנטנות וציוד משלה, וכעמט כל יום יש תקלה כזו או אחרת שם. חלקם אפילו תקלה ארצית לפרק זמן של מספר שעות.

יוצא לי לראות עם גולן טלקום כי לפעמים הם מדווחים שיש בעיה בציוד שלהם, לפעמים יש בעיה במספר השייך אליהם, לפעמים מדווחים כי מספר אינו שייך אליהם (למרות שהוא כן מופיע במסדי הנתונים של הניוד ככזה) וכיוב'… ואני מדבר על מספר בודד שאני מנסה לחייג אליו, ובכל חיוג אני מקבל סטטוס שונה (כמו שהזכרתי למעלה).

אז מצטער לאחר שנה להרוס לכם את השמחה, אבל המפכה הזו היא בעיקר כאב ראש טכני, אשר פוגע גם במשתמשים הרגילים, ולא, אי אפשר באמת להתנייד 20 פעם ביום. אפילו פעם אחת בשנה היא לפעמים בעייתית בראש ובראשונה עבורכם.

הפצת לינוקס מול תוכנה

לפני מספר חודשים היה ויכוח גדול בwhatsup בו הועלו הרבה נושאים מדוע גישה מסויימת היא לא נכונה והגישה הנכונה היא כי יש לחשוב לפי הפצת לינוקס, ולא לפי צרכי התוכנה שלך.

אבל יש מספר בעיות שאנשי תוכנה אשר אינם מתמקדים בהפצה זו או אחרת נתקלו בהם, ופתאום אנו רואים כי נכתבים מערכות ניהול לשפות תכנות. ואם זה לא אומר דרשני, אז כמעט כל סביבת ניהול שפת תכנות מודרנית כיום מנסה לספק לבעיות שהפצות הלינוקס הולידו מענה.

אז מה הן הבעיות ? הנה רשימה חלקית:

  • עדכון דחוף מידי של ספריות שזקוקים להם
  • חוסר עדכון של ספריות שזקוקים להם
  • תיקוני באגים של הפצה, השוברים אפליקציה
  • צורך בלשמור גרסאות כלים מסויימת
  • שימוש במספר גרסאות שונות של ספריות לביצוע עבודה (למשל שרת המחזיק מספר אתרים)
  • שוני בין הפצות שונות, קצב ההתקדמות שלהם, ניהול הקבצים בתוכם וכיוב' …
  • שינוי ABI/API בספריות שונות תלוי בגרסאות הספריה. להמשיך לקרוא

דרושה חשיבה חדשה לחקיקת מזיקים

אחת מהבעיות הגדולות שרובינו חווים, היא ספאם אלקטרוני.

ישנו "חוק הספאם", אך הוא לוקה בחסר, היות והוא דורש ממני בכל זאת לעבוד קשה ולהתמודד עם התופעה באופן פרטני. כלומר כל מטריד צריך לקבל ממני פעולה שתסיר אותי ממנו, ובמידה וזה לא עוזר להגיש תביעה משפטית.

אבל אז מגיעים גופים למשל כמו קבר רחל, ומתחילים להספים בצורה שהיא חסרת גבולות,
אני חושב כי הפתרון לכך יכול להיות די פשוט – רשימה כחלק ממשרד ממשלתי (למשל משרד התקשורת) בה מספרי טלפון ודוא"ל יכולים להרשם בצורה שאומרת כי אסור לפנות אליהם בהצעות שיווקיות, תרומות ועוד (לפי אפשרויות שונות). במידה ותהיה פניה שכזו, העונש יהיה תשלום גבוה של מינימום כ10,000 ש"ח ועד 30,000 ש"ח (אם היתה יותר מפניה אחת) ללא הוכחת נזק כלשהו, או דרישה ממקבל הפניה להסיר עצמו קודם לכן.

ויותר מזה, גוף אשר מטריד באופן סדרתי אחרים, יועמד לדין על ידי משרד התקשורת, ויקבל קנסות יותר גבוהים אשר יכנסו כהוצאות לאכיפה הזו, וכן עם אפשרות לשלם פיצויים לנפגעים השונים, גם אם הם לא הגישו תביעה בנושא.

כך בראש ובראשונה יהיה כלכלי יותר לתבוע את המטרידים, ומצד שני למנוע הטרדות מאלו שלא רוצים לקבל מהם הטרדה.

כל מה שצריך זה לנסח בצורה ברורה את הרשימה של מה רוצים למנוע.

האם יש צורך בQA ?

לפני מספר חודשים היה לי דיון ארוך וללא תוצאות על הצורך באנשי QA בארגון. אני חושב שאין צורך בהם, אבל אינני מגיע מרצון לפגוע בעבודה של אנשים, אלא תובנות מעולם התכנות.

אתחיל בקביעה שאין עליה עוררין – אין תוכנה שאין לה בעיות או באגים. יכול להיות שהם לא מתגלים, לא מדווחים, או הופכים להיות כלי שרת למשתמשים (ובכך משנים את יעודם), אבל אין מצב שאין באגים במערכת.

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

קלקלה ישנה חוב חדש

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

הפוסט מעט ארוך ומחולק לפרקים.

הקדמה

ב2008 גילינו כי העדר פיקוח על פעולות הבנקים בעולם, גרמו לקריסה כלכלית.
הבעיה על קצה המזלג – הבנקים וחברות פיננסיות שונות החליטו שהן רוצות "למקסם רווחים" ממשכנתאות, התחילו לקחת הלוואות שלקוחות שלהם לקחו על עצמם למימון דירה, ובמקום לבדוק את יכולות ההחזר של אותם לקוחות, החליטו למכור אותם שוב פעם כהלוואה לאנשים שעוד יותר קשה להם להחזיר חוב, עם עוד ריבית, ובכך יצרו מצב בו יש הלוואה שנמכרה מספר פעמים למספר אנשים שונים, כאשר לא נבדקו היכולת להחזיר את הכסף עצמו, וכאשר הרבה מידי אנשים לא הצליחו לעמוד בתשלומים, כל הפרמידה קרסה.

במידה וזה היה מצליח, אז הריבית מכל אחד בנפרד היתה גבוהה מאוד ומכניסה רווח פסיבי גבוה לכל מי שמכר את ההלוואה. בפועל, אבל זה התפוצץ בפרצוף והרס את הכלכלה העולמית. חשוב להבין שזו רק הונאה אחת מיני רבים שהתרחשו בשל היעדר הפיקוח, אך היא הכי מוכרת מכולן.
פיקוח על בנקים והצורה שהם מסוגלים להתמודד עם כסף מאוד חשובה ומתגלה כל פעם כאשר מסירים פיקוח כזה, שיש קריסה של בנקים, ו/או פגיעה כלכלית חמורה, אך כאשר יש פיקוח, השוק מתנהל טוב יותר, ועם פחות מוקדי כוח גדולים שמסוגלים להשפיע על כלל השוק לכיוון כלשהו.

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

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

"מתקפת הסייבר" – או איך שוב פעם כושלת העיתונות הישראלית

ב7 באפריל היתה צריכה להיות "מתקפה" מקוונת על אתרים בישראל על מנת לפגוע בהם.

התקשורת בישראל עשתה Cybermanהמון רוח, רעש, וגרמה לאנשים לפחד הרבה מעבר לצורך, אבל שכחה כמעט כולה (למעט "צינור לילה" של ערוץ 10), לשאול שאלות מאוד קשות וחשובות – מצב אבטחת המידע בישראל.

ובכן, מצב אבטחת המידע בישראל, לפחות ממשלתי, והפיננסי כל כך מזהיר, שאי אפשר להגיד כי הוא קיים.

יש גוף שאמור להיות אמון על אבטחת המידע והתקשורת ממשלתית, אבל כבר ראיתי רשתות מסחריות של עסקים קטנים ללא תקציב שמאובטחים הרבה יותר טוב ממה שהוא מספק.

בישראל אין תקנים לאבטחת מידע, המידע הפיננסי עלינו לוקה ברשלנות, ואין ניסיון לשנות את המציאות הזו.

התקשורת יצרה באזז חדש בשם "מתקפת סייבר", אבל כאשר מדברים איתי על סייבר, אני מייד חושב על סייברמן מ"דוקטור הו", לפחות שם המונח "מתקפת סייבר" מתאים איכשהו …

אז גם כאן, שוב פעם נכשלה העיתונות הישראלית, ואח"כ זו בוכה על מצבה ועל כך שהיא מאבדת קהל וכסף …

profit by inertia

Some companies in this world have no legitimate right to exists, if you take what they sell vs what they have.

One such company was Sun, but one such giant that exists today is IBM.

I was asked by a friend to take a look at a product by IBM (it called connections), and I was shocked. IBM has a product that makes MS Sharepoint look like a bad written toy, yet I have never seen it, or heard about it prior to that request from my friend. The reason why my friend knew about it, was because he knows the manager behind the product at IBM.

A company asked me to look for them a replacement for sharepoint (they preferred open source based solution), and Google did not gave me any hint about this product back then or now, even though my search did not include open source.

But the product offer so much more then MS sharepoint. I don't know it's price, but it works on all standard based web browsers , and on many operating systems, such as Linux (deb and rpm based), Windows, Unix and Mac. It can integrate with many more tools then sharepoint, including MS Office, but not limited to it, and even offer web based office included.
It support Mobile based connection, and view that fit to your mobile devices, and the list of features just goes on and on.

And here is the Pitch that IBM needed to make, and remained silent. Such product is a sharepoint "killer", if it's price is the same as MS, or cheaper. And it's not the only product by IBM that you never heard about before, but can help you.

The same was with Sun and Open/Star office. They could make real "battle of the office suites" if they wanted, but they didn't, so MS kept selling their Office suite product.

Companies such as IBM earn the money that makes them run, by inertia, not by doing a good work of selling the things they do.

האם גוגל בצרות ?

גוגל בשנתיים האחרונות סוגרים הרבה שירותים אשר בעבר נתנו בחינם. רובם היו שירותים אשר לא היו בשימוש נרחב אם בכלל, ולכן נראה כי היה הגיון מסויים בהסרת השירות.
ואז גוגל הודיעה כי היא הולכת לסגור את reader שלה. למי שאינו מכיר, זהו שירות מבוסס ווב אשר מאפשר לקרוא מאתרי ווב שונים את התכנים שלהם, באמצעות RSS.

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

במידה ואין זה המצב, אז גוגל משדרת להרבה אנשים כאילו זו הבעיה, וכאשר זו תרצה לגייס כסף נוסף באמצעות הבורסה, אולי השווי של המניה שלה לא יהיה שווה את הסכום שהם ירצו לגייס כמו כן, זו יכולה להיות התחלה של נטישה של הרבה משתמשים, אשר פחות ופחות יקחו את החברה בחשבון, בגלל שהיא סוגרת את השירותים השונים.

בכל מקרה, התחושה כאן ממערכת שהרבה מאוד משתמשים בה, היא של טעם מאוד רע מגוגל.

Windows 8 לפי סמי

זוכרים ששאלתי האם Windows 8 מציג סוף עידן למיקרוסופט ?

התשובה היא שהמערכת ממש לא.
לפחות לא כל עוד יצרני המחשבים משתפים פעולה עם מיקרוסופט ומוכרים מערכות מובנות עם Windows.

כך שהמשתמש הממוצע ימשיך לעבוד עם מיקרוסופט. יקלל אותה, אבל כל מחשב חדש שימכר, יהיה עם Windows 8.

אבל זה לא הכל. הבעיה האמיתית היא עולם ה Enterprise. בעוד שנגיד כי לחברת IBM הגיוני הרבה יותר לתמוך באנדרואיד (הרי IBM מתפרנסת המון מג'אווה בין הייתר), אם היא תכניס Windows 8, אז זה לא יהיו גם מחשבי השולחן בחברה, אלא גם הלפטופים בחברה, ומשם מיקרוסופט גם תספק להם tablets ואפילו טלפונים, בייחד עם עסקה כוללת.

הבעיה היא ד"א לא מיקרוסופט, אלא בכך שגוגל למשל לא באמת מתאמצת לשווק את אנדרואיד, ואפל, ובכן אפל חיה ביקום משל עצמה, וארגונים זה לא השוק שלה. למעשה שום דבר זה לא השוק שלה. אתה לא ראוי למוצר שלה, אבל בזכות הכסף שלך, הם יסלחו לך על זה.

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

כך, שהמשתמשים פשוט יבכו על הממשק, אבל ישתמשו בו מחוסר ברירה.

What is the feature of Pascal ?

Borland created the name Object Pascal as a marketing way to sell Delphi, and set a boundary between Borland Pascal and Delphi.

Even though that Pascal constantly changing, and started so, not so long after it first released at 1968, only real developers learned the difference, and know what is going on.

Since then we see huge leap foreword with technology and with the language itself. For example the language itself support thread based programming, the object oriented syntax that was added by Apple in 1982 constantly expanding, and even creating support for thing that languages such as Java or C# lack of.

Pascal today is the only programming language that on one hand offer a very low level support for development – Yes! even lower level then with C, but support also very high level development that is closer to dynamic languages – such as mixin, string management, iteration syntax, and much much more…

Pascal today is also the only true multi-platform language, that can provide rich applications to desktop, web and smartphones/tablet platform with the same code base, and run native there. Yes, that includes iOS, Android with JVM/Dalvik.

Things looks good from far away, but closely there are more then few issues with the modern Pascal (and with some of the, I blame Embarcadero):

  • There are way too many dialects (FPC, Delphi, Delphi.NET, Oxygen, GNU Pascal [ISO Pascal] etc …)
  • There is some sort of vendor lock due to the dialect variation (Usually either Delphi or FPC to choose from)
  • Some of the syntax that is added to the language, well it's not longer Pascal, but closer to Java/C#/Ruby/D …
  • There are additions to closures – such as lambda, anonymous functions, generics and more, that not always implemented properly
  • There are support for dependency injection, extended namespace and much more
  • Not a single real standard, and lack of cooperation between Delphi developers and the true FOSS FPC project (due to Embarcadero side)

להמשיך לקרוא

הארץ סוגרת את התוכן, ללא מתן תמורה לקורא

עיתון הארץ הודיע כי יסגור את העיתון לקריאה מבחוץ, ויתן רק לרוכשי מנוי לקרוא את התוכן שלו.
על פניו אין לי שום בעיה עם הנושא. זכותו של עסק כלכלי להחליט כיצד הוא רוצה להרוויח את כספו.

הבעיה מתחילה שאני לא מצליח לראות שום רווח עבורי – הקורא במידה וארכוש מנוי. כלומר מה הוא מייחד לי במקום המידע הקיים לי באינטרנט בשביל שארצה לרכוש עבורו מנוי ?
האם יהיו לו ידיעות בלעדיות יותר ?
האם ידע לקלוע יותר לטעמי ופחות לטעם של מישהו אחר ?

כלומר אינני מצליח להבין מה היתרון של לרכוש מנוי ולקרוא את העיתון, וזו הטעות האמיתית של מר שוקן, בניגוד למה שהרבה אומרים. הבעיה אינה בדרישת התשלום, אלא בתמורה לתשלום.

הנה מספר רעיונות למר שוקן לגרום לאנשים (גם כאלו אשר לא קראו עד היום את העיתון) למצוא ערך מוסף ואף אולי להעדיף לשלם עליהם מספר מעות:

  1. תן לי להרכיב את הידיעות והנושאים שמעניינים אותי בלבד
  2. עזור לי להסביר לך מה באמת חשוב ומעניין אותי, ותן לי תוכן בכיוון הזה (כלומר קהל היעד העיקרי שלך הם מתכנתים כמוני, אז תן להם תוכן שקשור בזה בעולם הטכנולוגיה)
  3. תן לי לנהל דיונים אמיתיים על כתבות, כולל עם הכתבים שלך על מה שנכתב – סגנון slashdot ולא טמקא …
  4. אפשר לי לשלם על ידיעה בודדת שאולי תעניין אותי, ולא על מנוי, כך שבמקום שאשלם על מנוי כאשר פעם בחודש אתה מפרסם ידיעה שמעניינת אותי, אוכל לשלם רק על מה שמעניין אותי באותו הזמן
  5. תן לי לנהל ידיעות – כלומר לשמור ידיעות שפרוסמו, לדעת למצוא אותן וכו'
  6. תן טעימות קטנות גם למי שאינו מנוי – תן לי לקרוא רבע מאמר מעניין ולהחליט מה הלאה (זוכר את הרכישה של מאמר ספציפי ?)
  7. צור קהילה סביבך, כזו שתרגיש שאתה הבית שלה, נגיד תקרא לה קפה דה מארקר ?

אם תספקו ערך מוסף לרוכשי המנוי, יהיה שווה לשלם לך. אני הפסקתי לצרוך עיתונות, כי אני לא מוצא אותה רלוונטיות יותר. כבר כתבתי בעבר על זה.
הדרך שלך להצליח בנושא, היא שאלה של כדאיות הלקוח שלך, ולא רק הכדאיות שלך, ממליץ לך לזכור את זה.

מיקרוסופט ו PC – סוף עידן (?)

מיקרוסופט השיקה את Windows 8. מערכת ההפעלה הזו מראש הגדירה ממשק אשר מתאים למערכות בעלות מסכי מגע, והחברה הגדירה כי זו הגישה שלה.

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

ms-surface - windows 8אני חייב לציין כי למעט מספר בעיות קטנות יחסית, כאשר מתעסקים עם Microsoft Surface בחומרה שאליה החברה כיוונה, המערכת מתפקדת מצויין ונוחה מאוד (כאמור למעט בעיות קטנות).

העניין הוא, שכאשר מתחילים לרצות לאנוס את מערכת ההפעלה לעולם שולחן העבודה.
בראש ובראשונה, הממשק אינו מתאים לעכבר, וזאת למרות שניתן לבצע איתו פעולות שונות, אבל ישנם פעולות אשר לא יעבדו לכם בכלל כאשר תעשו זאת, או יתפקדו פחות טוב מאשר האצבע שלכם. להמשיך לקרוא

וואוו איזה כלי מגניב

בתקופה האחרונה אני עובד צמוד למספר מתכנתי .NET. חלקם באמת מוכשרים כמתכנתים, אבל הידע שלהם בטכנולוגיות אשר לא מגיעות עם .NET – אלא כלליות יותר, לוקה בחסר (וחבל).

אחד הדברים שאני כל הזמן מגלה הוא, עד כמה הם אוהבים את סביבת העבודה שלהם, אבל כל הכלים שיש לסביבת העבודה שלהם, ובכן איך להגיד את זה בצורה לא משתחצנת – משעממים מאוד אנשים שהתרגלו לעבוד עם כלי בורלנד (שנמכרו לחברת אמברקדו). אין באמת משהו מעניין או מסעיר בכלי הפיתוח הללו. עבורי זה משהו די סטנדרטי ב12-15 שנה האחרונות. למעשה ב vim יש יותר כלים מעניינים מאשר אלו המגיעים עם MS Visual Studio.

אבל זה לא הכל. הם מראים לי למה הם חושבים ש #C היא שפה טובה (ואם להודות, אז יחסית לג'אווה, #C בהחלט שפה מעניינת), ומה אני מגלה ? כל התכונות שהועתקו משפת פסקל מונחת עצמים נמצאות ברשימת הפיטצ'רים הכי חשובים וטובים עבור כל מתכנתי #C שאני מכיר.

זה מצחיק כי בד"כ אומרים לי אנשים אשר אינם מכירים את פסקל מונחה עצמים שאין לה שום דבר טוב או מעניין להציע. אני שומע את זה גם ממתכנתי Java למשל, אז הנה ההוכחה שיש לה עדיין מה לתרום לעולם.

אחרי מספר חודשים מול מתכנתי .NET (חלקם גם ASP), הגעתי לתובנות רבות, למשל כי העולם הטכנולוגי בישראל (לפחות) חי בבועה קטנה מאוד, ולא מכיר באמת מה קורה סביבו, אבל בטוח שמה שהוא מתעסק בו – זה הדבר הכי טוב שיש. גם כאשר הם לא מקבלים מענה הולם, הם נשארים בכלים שלהם, ולא בודקים מה יש עוד בעולם. הם בטוחים כאילו אין שום דבר מעבר (כאילו שלא כתבתי על זה עד היום, אבל ראיתי את זה מתבצע הלכה למעשה).

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

לשטוף את הסבון עם מתכנתיו

זה לא סוד שמרבית מתכנתי ה .NET הם מתכנתים ברמה מאוד נמוכה יתר על המידה. אפילו מתכנתים אשר מתחילים לתכנת בפיתון או PHP לרוב יודעים יותר מאשר מתכנתי .NET, או לפחות מראים פוטנציאל טוב יותר (למעט מקרים מיוחדים).

מרבית אנשי ה .NET הם ילדים קטנים בהתנהגות. כאלו שכאשר מראים להם טריק אחד "מגניב", יתחילו עד עייפה להציג אותו לאחרים וישתמשו בו בכל מקום ובכל מצב אפשרי, ובעיקר לא אפשרי. אבל כאשר נדרשת מהם יכולת ההמצאה או ההתמצעות במרחב הגדול מעבר לטריק – זה כבר לא קיים.

אם באבטחת מידע, אנחנו קוראים לאלו שרק משתמשים במה שאחרים עושים Script Kiddies, אז לאנשי .NET האלו צריך להיות שם בסגנון Monkey puppets או משהו כזה (כל הזכויות לא שמורת). כי יש לנו Code Monkey למישהו שרק כותב קוד בלי להיכנס לעובי הקורה, אבל כאן, אפילו להבין מה הם עושים, זה לרוב יותר מידי עבורם, ולכן, הם בובות של Code Monkey כי אפילו Code Monkey זה מסובך מידי בשבילהם…

הפוסט נכתב בעקבות דרישה נוספת לכתוב פונקציות SOAP מול .NET, והתנשאות מטופשת של האנשים אשר אפילו אמרו שהבעיות שנתקלתי בהם קשורות לכך שאני לא מתכנת בשפה נורמאלית (למרות שניסיתי את העבודה עם soap4r, soapui, php soap, nusoap ועוד ספריית ג'אווה נוספת – ולכולן היו את אותן הבעיות מול ה wsdl). לאיזו רמה הגענו, מתכנתי .NET חושבים שהם מתכנתים נורמאליים וכל שאר התעשייה כמו גוגל, פייסבוק וכו' לא יודעים כלום מהחיים שלהם. זו הסיבה כנראה שיש כל כך הרבה מערכות מבוססות .NET בעולם של הרשתות החברתיות בניגוד לשאר הטכנולוגיות (או שלא).

ביקשתי מהCTO שאיתו התנהלתי ישירות לקבל את ה dump של בקשות תקינות, שאוכל לשים אותם ב telnet ושזה יעבוד לי. הוא בתגובה אמר לי כי אי אפשר להשתמש ב telnet בשביל לבצע בקשות SOAP. וכל ניסיונותי החוזרים לקבל את המידע עלו בתוהו.

היו לו עוד הרבה פניני חוכמה אחרים, והwsdl היה מאוד בעייתי בפני עצמו בתוכן שלו, אבל בסופו של דבר הוא הוכיח כי אינו מבין טכנולוגיה, ואולי הוא מכיר טוב כלי מיקרוסופט, אבל זה לא נחשב לתכנות בדיוק, ורוב העולם משתמש בטכנולוגיות נוספות או אחרות לגמרי לפיתוחים שהם לא לסביבת שולחן העבודה.

אחרי למעלה משבועיים שהתעסקתי בשטויות האלו של לגרום ל2 פונקציות לתפקד, וחוסר היכולת לתקשר עם CTO שחושב שהשמש זורחת לו ממקום מסויים, החלטתי לפרוש מהפרוייקט. מצטער, אבל בזמן הזה של לנסות להתמודד מול ה .NET, כבר יכולתי לכתוב בעצמי את כל המערכת גם מהצד השני, ולגרום לזה לעבוד בצורה גלובלית ופשוטה יותר.

סיפרתי לבוריס את הסיפור, ומסתבר שגם לו היה באותו הזמן אותו סוג כאב ראש. רק האנשים השתנו, אבל הסיפור זהה.

ActiveRecord, ODBC and SQL Server

I was required to use MS SQL Server with my Ruby while my application is running on Linux.
I do not like such things, because like always, stuff goes wrong, and when the close golden gates of Microsoft closes on you, well – you are theirs, and they decide what will work, and who can play …

In order to make things work on Linux, I had first to install unixODBC and FreeTDS .After installing them I was required to configure them, and that's a bit of a pain …

The people who are responsible for your database must create a user name and password that belongs to the database and not to Windows itself. Make them test the connection by creating their own ODBC connection and make sure it worked for them. It's the only test I found to actually make them understand that they did things wrong, instead of blaming Linux etc…

When their work is done, make sure you know the SQL Server version (2000,2005 etc..) for making FreeTDS works properly. Then configure it like so: להמשיך לקרוא

בין IE ל Firefox

אתמול יצא לי לראות משהו מאוד מעניין. מחשב שלא היה בחשמל הרבה זמן, והסוללת BIOS שלו כבר לא מתפקדת הודלק, ועלה הWindows שהיה על המחשב, והשתמשו ב IE8 בשביל לגלוש לGmail.
ואז הגיעה ההפתעה: יש הודעה שמשהו לא תקין בתעודת הצפנה, אבל הכל המשיך כמו שצריך למרות זאת.

החלטתי לנסות את הדבר עם Firefox גרסה 3 שהיתה מותקנת על המחשב, והוא גם הציג הודעה על בעיה בתעודת ההצפנה, אבל לא הסכים להמשיך בכלל.

התחלתי לחקור את הנושא, ורק אז שמתי לב שלא רק התאריך והשעה לא נכונים, אלא גם השנה במחשב היתה לא נכונה – 2006, וFirefox אמר שהתעודה בכלל מכילה תקופה של 2011 והתאריך לא מסתדר לו ולכן הוא לא מוכן להמשיך, כי משהו בתעודת ההצפנה לא תקין.

כאשר הרבה מדברים על אבטחת מידע בדפדפנים, הם כמעט אף פעם לא חושבים על התנהגות של תעודות הצפנה למשל, אבל מסתבר שFirefox שומר טוב יותר על המשתמשים שלו מאתרים שיכולים להיות זדוניים, מאשר Internet Explorer, ואם למישהו עדיין יש ספק, אז זו עוד סיבה מדוע יש להפסיק להשתמש במוצר הזה.

אבל זה לא מספיק. מסתבר ש IE גם שולח מידע של ההתחברות שלכם לכל דורש, אם הדורש יודע לנסח נכון את הבקשה. כלומר אני יודע מה שם המשתמש שלך במחשב עצמו. ואם לרגע חשבתם שזה באג, אז טעיתם, זה פיטצ'ר,ואפשר למצוא עליו הרבה מידע באתרי אינטרנט שונים.

כך שהאם אתם באמת מוכנים לסמוך על הדפדפן הזה ?

רישיון מיקרוסופט מול רישיון RedHat

לפני שאתחיל, גילוי נאות: אני לא מקושר לRedHat בשום צורה. אינני מקבל כסף מהם והדבר היחיד הוא שיש לי אינטרס ברור ומובהק שחברות ועסקים ישתמשו יותר בלינוקס מאשר במוצרי מיקרוסופט. הפוסט עוסק בהבנה שלי של מה חברת מיקרוסופט מוכרת ומה חברת RedHat מוכרת.

כאשר אתם רוכשים רישיון מחברת מיקרוסופט, אתם לא רוכשים מהם תוכנה, אלא הסכם. ההסכם הזה שווה לחברה הרבה מאוד כסף, והוא מאפשר לכם לעשות דברים מסויימים ואוסר עליכם דברים אחרים.

הרישיון לרוב מתאר איך מותר לכם להתקין את התוכנה או תוכנות של החברה ובזה הכל מסתיים בעצם. כלומר רק מה שמוזכר באופן ברור ברישיון שרכשתם, הוא מה שמותר לכם לעשות, וכל דבר אחר נחשב בעיני חברת מיקרוסופט הפרת חוזה.

לעומת זאת, יש את חברת RedHat, אשר תפקידה בעולם הוא למכור שרתי לינוקס לעולם הEnterprise. כלומר לא לעסקים קטנים, או בינוניים, אלא רק לגדולים (וחבל שזה המצב). הרישיון שחברת RedHat מוכרת הוא רישיון שונה לגמרי בתפיסה שלו מאשר הרישיון של מיקרוסופט. אפשר להגיד שהתוכנה היא תמיד בחינם. אבל חברת RedHat מוכרת תמיכה. הכוונה היא לא רק תמיכה של "איך אני עושה …." אלא ממש תמיכה בתוכנות שהיא מספקת, והיא מספקת המון תוכנות.

כלומר נגיד ויש במאגרים של RedHat תוכנה שאני יצרתי (לצערי עדיין אין), ויש לך בעיה עם התוכנה שאני יצרתי, אז RedHat בהסכם שלהם שאתה רכשת, מתחייבים לפתור לך את הבעיה בתוכנה. וזה למרות שהם לא המפתחים של התוכנה. ואין להם קשר למפתח התוכנה, עדיין, בהסכם שאתה רכשת מהם, מתחייבים לתת לך תמיכה בנושא ולפתור לך את הבעיות.

אז כן, הרישיון של RedHat בהכרח יקר יותר משל מיקרוסופט, אבל הוא מספק משהו לגמרי שונה…

אז עכשיו אולי צריכה להישאל השאלה: "האם מיקרוסופט מאמינה בעצמה מספיק בשביל לספק כזו תמיכה ללקוחותיה ?"

מיקרוסופט וסקייפ, מבט מעט שונה על הפרשה

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

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

מיקרוסופט היא חברה גוססת (לא, היא לא תמות מחר או עוד שנתיים גם). היא בפאניקה, והיא לא מצליחה להשתחרר מההבנה שלה של שנות ה80 וה90 של איך טכנולוגיה צריכה להראות, והם עסוקים כל הזמן בלהשלים פערים ולהעתיק גישות שלמות מעולם הלינוקס והמאק.

עד כאן אני לא חושב שיש למישהו ויכוח כלשהו. העניין הוא שמיקרוסופט מנסה לרכוש כיום שווקים קיימים במקום להמציא טכנולוגיות חדשות. כי בסיסי לקוחות ו/או משתמשים שווים המון כסף, גם אם לעסק/חברה אין משהו רציני להציע מבחינת שירות, אם יש לה בסיס לקוחות גדול היא שווה הרבה כסף.

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

העניין הוא שגם לסקייפ יש בסיס לקוחות מאוד גדול, שגם אותו מיקרוסופט רוצה לקבל. סקייפ זו לא רק תוכנת VoIP/IM אלא זה גם הרבה סוגי שירותים כדוגמת SIP Trunk ואפילו Calling Cards על סוגיהם. הם מספקים גישה לשירותי שיחות בהרבה מדינות בעולם ממקום אחד (התוכנה שלהם), ועוד מספר שירותים שונים שאתם מוזמנים לגלות בעצמכם. כל זה פותח למיקרוסופט (במידה והעסקה תאושר ונדע מה הם באמת מתכננים) עוד בסיס לקוחות עצום של שירותים עסקיים ופרטיים כאחד אשר מיקרוסופט יכולה אולי להרוויח כסף, ועוד לשים דריסת רגל במקום שאותו היא לא מבינה, ולמעשה נראה כיום שחיסול חברת Netscape היה יותר "פוקס" מאשר הבנה אמיתית של המתרחש.

העניין הוא שאף אחד לא יודע מה יקרה בשוק, ואי וודאות רע מאוד לבסיס לקוחות קיים, אשר הקהל אשר כן קורא ידיעות ומאמרים יחליט אולי להתרחק ולחפש תחליפים שונים לסקייפ, והמרוויחים מכך יהיו חברות אשר מספקות שירותי VoIP (או מפתחות כאלו – כמוני), וחברות אשר מוכרות Calling Cards (כרטיסי חיוג לעולם), אשר במידה ומיקרוסופט תפגע בגישה הנוכחית של סקייפ יעברו אליהם במקום.

התשלום של 8.5 מליארד דולר מראה הרבה פאניקה ומצב בו אנחנו רואים ענק אשר ממשיך להתפורר. הבעיה היא שאותו ענק מבין רק כוח ומחזיק בגישה בעייתית וחושב שזו הדרך היחידה לעשות עסקים. ריי אוזי ניסה ללא הצלחה לשנות את התפיסה של מיקרוסופט, והחליט לברוח מהחברה לאחר מספר שנים בהם נכשל במשימה, כך שאנחנו לאט לאט נראה התפוררות מרשימה ממיקרוסופט, ואולי עוד כ5-10 שנים החברה סוף כל סוף תצדיק את שמה ותהיה חברה קטנה ורזה שמספקת מעט תוכנות לעולם שגם הן כבר לא כאלו חשובות.

Nokia – Sic transit gloria mundi

"How the mighty have fallen"

Nokia has reported on 11/02/2011 that it starting to collaborate with Microsoft in the smart phone industry. This announcement is the end for a lot of speculations regarding the path that Nokia will take, and is mostly came as a big shock to most of us, we thought it might be the news, but hoped for the best.

Nokia was for many years the main pioneer in Cellular technology but it lack the vision of what Google and Apple saw. So instead of going in a specific path, they started to sit back and let the market change it's leaders, instead of creating a new path to the market they mostly shaped themselves until then.

Apple mostly ride on a big wave of "believers" in a cult like marketing (at least that's how it feels), while Google took a much more realistic approach, where their cellular operating system is not a phone dependent operating system, but an idea for the hardware manufacturers.

Nokia started the same idea of Android long before Google ever entered with their vision, but they only experiment with it using the Maemo operating system. The idea was one clean operating system, that like with Google's Android, Maemo is based on the Linux operating system, but unlike Android, they kept the GNU part inside. That made a lot of people, including myself very happy and I even bought a phone based on it, and returned to the Nokia lap by my own choice, because they provided me a tool that suited not only for my personal ideals of Open Source, but it also had more then 80% of the tools I need for my work, while 20% are not suited for cellular phone (due to it's screen size, and memory [ram], and not fast enough CPU at the N900). N900 can run any Linux based application that exists today. It's better to convert it to the Maemo interface, but it will work, and that's a big plus.

Many people including myself did not like the idea of moving Maemo into MeeGo, but we gave Nokia a chance even though most of us thought that it's not the time to rewrite (a very good) an operating system. Well, we were right apparently because Nokia could not match to Apple's iOS or Google's Android, and they started to fall hard. Now there are more Android based phones, that Nokia did not want to manufacture, then Nokia's phones.

So they replaced their CEO, and moved into the dead hands of Microsoft. For many of us, the lack of proper MeeGo support and the running into the Microsoft cold hands and sit in their laps are the last straw. We got used to have good products from Nokia, but now, a Windows based mobile phone is never the choice we will make, so Nokia is loosing a big crowd of people that loved most of their products, and drag them by force into the hands of Android based phone. It's the second big wave of customers that leave them for Android.

So all I can say is: "Thus passes the glory of the world".

And here is a song that represent my feelings regarding that issue: Mostly Autumn – Fading Colours

לאן הרוח הטכנולוגית נושבת ?

הבלוג הזה בהיסטוריה שלו מכיל הרבה מאוד פוסטים על טכנולוגיה ובעיקר בחירה טכנולוגית. הסיבה היא שדבר ראשון אני כל הזמן מנסה ללמוד עוד טכנולוגיות ולא להישאר במקום, אבל הסיבה השנייה היא שאני צריך להתממשק מול הרבה טכנולוגיות אחרות.

הבחירה שלי של טכנולוגיות היא בד"כ בטכנולוגיות הנותנות לי גמישות ויכולת לתת מענה מהיר ומסודר ללקוחות אצלי בעסק, בלי להגביל את עצמי בפלטפורמה. כך שגם אם כתבתי במקור תוכנה לסביבה מסויימת, בד"כ לא תהיה לי הרבה עבודה להמיר אותה לעוד פלפורמה. זו עוד סיבה שאני לומד כל כך הרבה טכנולוגיות וגישות עבודה – למצוא את הכלי המתאים לי ביותר לשם כך, וזה גם מה שמבדיל אותי מרוב המתחרים שלי.

אבל הגישה שלי מאוד לא נפוצה בישראל. היות וכאן יש בעיה שאין ברוב העולם. בעוד שמרבית העולם עובד בטכנולוגיות שפויות כמו רובי, פיתון, פרל, ונכניס גם את PHP לרשימה, דווקא בישראל בוחרים במיקרוסופט. הבחירה במיקרוסופט מבחינה עסקית היא סוג של התאבדות, לא בגלל שמיקרוסופט היא לא דגל לקוד פתוח,  אלא בגלל שמיקרוסופט יודעת לעבוד רק עם מיקרוסופט, וזה בצורה מכוונת. כלומר אם עכשיו ארצה ליצור מוצר אשר יתן לי מענה לכלל הלקוחות או למספר הגדול ביותר של לקוחות, בחירה במיקרוסופט תהיה בחירה לא נכונה, היות ואז אני אגביל את עצמי לאנשים שעובדים בגרסאות ספציפיות של מערכת ההפעלה Windows (שתמיד יהיו החדשות יותר), תמיכה בOffice החדש יותר, תוך התעלמות כוללת מגרסאות ישנות יותר, תמיכה בתוכנת דואר אחת, במקום ליצור תוכן בדואר בצורה תקנית שאז לא יהיה משנה תוכנת הדואר, והרשימה עוד ארוכה. להמשיך לקרוא

אשליות …

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

עכשיו כאשר אותם משיחי שקר מוכרים לכם פתרונות מבוססי מיקרוסופט, הם בד"כ יסבירו לכם שפשוט בפתרונות קוד פתוח אין מענה לצרכים האמיתיים, קשה עד בלתי אפשרי לנהל אותם וכמובן שהם לא ידידותיים.

מה שמדהים זה שכל כך הרבה מאמינים הולכים בדרך הזו במדינת ישראל, בלי להבין שהדבר היחיד שקורה זה שהם מוציאים יותר כסף על הרבה פחות מענה לצרכים.

זה גם לא מפריע למשיחי השקר ולקהל מאמיניהם להתעלם מהעבודה שחברות כמו גוגל, יאהו ואחרות עובדות רק עם מערכות לינוקס מבוססות קוד פתוח. מה אותן חברות לא עושות דברים רציניים ? זה שהעיצוב של מנוע החיפוש של גוגל הוא שורת טקסט אחת עם 2 כפתורים, לא אומר שיש שם משהו פשוט. אותו הדבר ד"א לגבי יאהו, ששם העיצוב מעט יותר מסורבל…

הם יראו לכם שחברות אירוח שכאשר מדברים איתם על פתרונות מבוססי מיקרוסופט, ידברו על כלי ניהול ועבודה של מיקרוסופט (הרי זה מה שאתם רוצים לרכוש מהם לא ? שירות על מערכות מבוססות מיקרוסופט), וישתמשו בזה בשביל לנגח ולהגיד "הנה החברות אירוח הרציניות והגדולות ביותר בעולם משתמשות במערכות מיקרוסופט, זה אומר הרבה". לא משנה שהם משלמים בערך פי 3 או פי 4 (במקרה הטוב) ממה שהם ישלמו על מערכות מבוססי לינוקס, זה לא יפגע להם באמונה הזו, שהם מקבלים את ההצעה לא בגלל שהם מחפשים פתרונות מבוסס מיקרוסופט, אל בגלל שרק במיקרוסופט יש פתרונות לצרכים שלהם.

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

ועל הגישה הזו נכתב פעם שיר ישראלי : "אשליות"