אני לא רוצה לעבוד עם אנשים שלא מתכנתים לכיף

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

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

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

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

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

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

איך לטפל במצב של memory underrun בC++

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

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

אני חושב שהקוד ידבר בעד עצמו:

    void main( )
    {
    void outofMemory( );
    set_new_handler(outofMemory);

    char *pointer = new char[..Huge value here..];
    }
    void outofMemory( )
    {
    cout<<"System ran out of memory";
    exit(1);
    }d

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

איזה פריימוורק לPHP הייתם בוחרים לפרויקט הבא שלכם?

מה שהחל בStackoverflow.com כשאלה רגילה על פריימוורקים שונים לPHP התפתח לדיון פורה על ההבדלים, היתרונות והפיצ'רים השונים שבפריימוורקים Zend Framework, Code Igniter, CakePHP וכו'.

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

תרומות קוד? לא בדיוק. 75% מלינוקס נכתב ע"י מפתחים בתשלום

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

במהלך ההרצאה שלו בLinux.conf.au הציג ג'ונתן קורבט, הבעלים של LWN.net את הנתונים המפתיעים משהוא האלו ואת הניתוח שלו לקוד הלינוקס.לפי קורבט 18% מהקוד נכתבו על ידי מפתחים שלא השתייכו לשום תאגיד ולא דרשו תשלום, כלומר מתנדבים טהורים, עוד 7% מהקוד נתרמו ע"י כותבים שלא הוגדרו, כלומר אין לדעת אם מדובר במתנדבים או מפתחים בתשלום, אך 75% מהקוד נתרם ע"י אנשים ששולם להם בכדי לכתוב את הקוד הזה.

בתוך תחום הקוד שנכתב בתשלום נמצאות רד-האט שבראש הטבלה עם 12% מהקוד, כשאחריה אינטל עם 8%, מיד אחר כך IBM ונובל כשכל אחת עם 6% ואוראקל עם 3%. אף על פי שהחברות הן מתחרות ויריבות מטבען, הפיתוח המרכזי של הקרנל מתנהל מצוין לפי קורבט.

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

מערכת הקבצים הטובה ביותר? גוגל חושבת שזאת Ext4

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

במכתב ששלח מהנדס בכיר בגוגל לרשימת התפוצה של מפתחי Ext4 נכתב כך:

Google is currently in the middle of upgrading from ext2 to a more upto date file system. We ended up choosing ext4.

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

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

למה אתם צריכים לפתח עם OpenGL ולא עם DirectX

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

אז לפני שאני אפתח במלחמת הDirectX vs. OpenGL הנה הסבר קצר על כל אחד מהטכנולוגיות:

מהאודות של OpenGL באתר הרשמי כתוב כך: "..מאז נוסדה ב1992 הפכה OpenGL לפלטפורמת פיתוח הגרפיקה ב2D וב3D הנפוצה בעולם, כשהיא תומכת במגוון רחב של פלטפרמות (מערכות הפעלה)…". על פי ויקיפדיה לOpenGL שתי מטרות עיקריות, האחת היא לחסוך מהמשתמש את הכתיבה הכל כך קשה של קוד למנועי 3D שונים על ידי הצגת API יחיד שתואם לכולם, המטרה השניה היא לחסוך מהמפתח את כאב הראש שבהתחשבות ביכולות שונות של חומרות שונות על ידי תמיכה אחידה של החומרות בממשק הOpenGL. כיום, OpenGL מנוהל על ידי Khorons Group, מלכ"ר שעושה את עבודתו נאמנה. חשוב לציין, OpenGL תומכת בכל פלטפורמת משחקים קיימים, החל בווינדוס, מק, לינוקס, BSD, וגם בWII ובPLAYSTATION, באייפון ובמכשירי האנדרואיד והMaemo וכו' וכו'.. ובכן, היא תומכת כמעט בכל הפלטפורמות הקיימות, מלבד XBox שהסיבה לכך לדעתי ברורה, וזה מוביל לנושא הDirectX:

כבר מאז ימי הMS-DOS הותיקים הבינה מיקרוסופט שמשחקים על מחשב הוא אחד הדברים היותר חשובים למשתמשי המיינסטרים, לפיכך ב1995, עם יציאת מערכת ההפעלה הראשונה שלהם ב32BIT, הווינדוס 95, הם יצרו מערך ספריות שסייע ודירבן מפתחים לכתוב משחקים במיוחד למערכת הווינדוס 95 שלהם. הספריות הללו כללו את Direct3D, DirectInput וDirectSound, כאשר כל החבילה כאחד נקראה DirectX. כאשר מיקרוסופט נכנסה בכוחות עצמה לשוק הקונסולות היא קראה לקונסולה שלה DirectX BOX או בקיצור XBox.

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

למה לDirectX שימוש נרחב מאוד בקרב חברות פיתוח המשחקים?

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

אז… למה OpenGL עדיף?

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

OpenGL חזקה יותר

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

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

OpenGL חוצה פלטפורמותחוצה פלטפורמות

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

OpenGL היא טכנולוגיה שעדיף להשען עליה, היא טובה לעתיד

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

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

לסיכום…

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

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

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

הערות:

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

למה השירות הקהילתי לקוד הפתוח כל-כך איכותי?

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

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

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

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

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

גוגל היום: טוענים בחזרה לכתר הDon't be evil ואבטחה משופרת לGmail

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

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

Rails 3 בטא ראשונה בפברואר

לפי דיוויד היינמייר הנסון האדם שיצר את Ruby On Rails, למרות שהבטא אמורה הייתה להשתחחר בסוף החודש הזה היא כנראה תשתחרר בסופו של דבר בפברואר. היינמייר נתן פרטים נוספים ואף לוח שחרורים מוערך בראיון לInfoWorld. אם הכל ילך כצפוי, Rails 3 עתיד להשתחרר סופית כבר ברבעון הראשון של השנה.

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

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

האשמה היא של האחראים לתקנים ברשת

מסילקר עידן פירסם בבלוג שלו את הפוסט הבא (מובאת פה תמצית):

נמאס פשוט נמאס להיות תלוי בחברה צד שלישי שתגביל את חווית השימוש שלי ברשת.
מי כמונו משתמשי הגנו/לינוקס יודעים את חשיבות הנושא: תקנים אחידים.
איך הגענו למצב שחברה רודפת בצע כמו אדובי קובעת את חווית השימוש שלנו ברשת?
לא הספיק לנו חוסר התקינות שהפגינה מיקרוסופט ברשת?
עכשיו אנחנו “זוכים” גם לקצת חוסר בושה מ-אדובי הקובעת למי לפתח, מה יהיה טיב הפיתוח ואילו משתמשים “ייהנו” יותר מתכני הרשת העמוסים בפלאש הצורם…

רק עכשיו מתחילים להיראות ניצני החופש של HTML5 וגם זה חלש מדי ומאוחר מדי.
רוב הדפדפנים בשוק לא תומכים ברבע מהפונקציות הקיימות ו-99.9% מהאתרים בעולם עדיין לא מודעים למהפכה הקרבה.

ובכן מצאתי לנכון לפרסם כאן את התגובה שהגבתי לו בפוסט:

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

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