12 בינו׳ 2008

אנרגיה נקיה

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

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



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



3 בינו׳ 2008

Tech Talks

בגוגל העולמית, כמו גם בגוגל חיפה ישנה מסורת של tech-talks, הרצאות של שעה ואולי קצת יותר בכל מיני נושאים, ובעיקר נושאים טכניים.
בארה"ב יש הרצאות כאלה כל יום וגוגלרים בוחרים, ע"פ הנושא המדובר אם מעניין אותם להצטרף או לא.
בחיפה, כמו גם בתל אביבֿ יש הרצאות אחת לשבוע בערך.
נושאי ההרצאות הם שונים ומגוונים. במקרים מסויימים ההרצאות ניתנות ע"י גוגלרים שמבקרים אותנו ממקומות אחרים ומספרים על המוצר שהם עובדים עליו או מחקר שהם עשו באקדמיה, לעיתים ההרצאות ניתנות ע"י גוגלרים מקומיים גם כן על מחקר שעשו או על תחום המומחיות שלהם בגוגל, או כל נושא אחר שבתחום מומחיותם. יש גם הרצאות בנושאים פחות מדעיים כגון אמנות או גאוגרפיה, בגדול הגישה היא כל דבר שיכול להרחיב את הדעת ויש קהל מעוניין הוא נושא טוב להרצאה.
לעיתים מוזמנים למשרד מרצים בעלי שם מחוץ לחברה שבאים לספר לנו על תחום עיסוקם. השבוע התמזל מזלנו ופרופסור דוד הראל ממכון וייצמן, חתן פרס ישראל הרצה בפנינו.
דוד, מרצה מחונן בעל יכולת מעולה לשבות קהל, הציג בפנינו את גישתו לתכנות מערכות מחשב מורכבות.
מערכות מחשב מורכבות, ע"פ דוד, מתאפיינות בתגובתיות, כלומר אלו הן מערכות שמקבלות את הקלט שלהן תוך כדי ריצה, בניגוד למערכות שמקבלות את כל הקלט לפני תחילת הריצה.
דוד הציג בפנינו את תפיסת עולמו, כפי שמוצגת במאמר הרואה אור בימים אלה ממש (או אולי עוד מספר ימים) בשם Can Programming Be Liberated, Period ב IEEE Computer, פרפרזה על המאמר המפורסם Can programming be liberated from the von Neumann style , כיצד מתכנתים מערכות מורכבות. לתפיסתו, ואמנם קטונתי, אבל אני נוטה מאוד להסכים, תכנות של מערכות צריך להיות הרבה יותר high-level ממה שהוא היום. אז זה נכון שבערך כל מדען שלישי וכל מתכנת שני יכול להגיד את זה, אבל דוד גם מציג כלים ותפיסה בהחלט הגיוניים לדעתי, ולכל הפחות, פותחים את המחשבה.
דוד מציג גישה של "לימוד המחשב באמצעות משחק". בפוסט קצר זה לא אתאר את כל המתודה, שעליה עובד דוד כבר מספר שנים, אבל אנסה להציגה על קצה המזלג. באמצעות "משחק" play-in המתכנת מראה למחשב דוגמאות חיוביות או שליליות של פעולות, כגון "אם חייגתי מספר בטלפון הסלולרי ולחצתי send צריכה להתבצע שיחה", או "תוך כדי שליחת הודעת טקסט אסור לטלפון להיכנס לתהליך כיבוי". המשתמש מראה למחשב תסריטים או דוגמאות כאלה, ואז אפשר להורות למחשב לשחק בתגובה ולבצע play-out. ה play-out הוא תהליך הרצה של כלל ההתנהגות שכבר הוכנסה מתוך התסריטים והדוגמאות שניתנו בשלב ה play-in , כולל לקיחה מלאה בחשבון גם של התסריטים השליליים, כלומר אלה שאסור שיקרו. וזה, כמובן החלק הקשה בכל העניין. אמנם דוד לא הציג בפנינו את האלגוריתם המדוייק של שלב ה play-out אבל אלגוריתם זה אכן קיים. כאשר המחשב משחק בחזרה למשתמש, המשתמש בודק אם התוצאות אכן נכונות ונותן משוב למחשב. כך, על קצה המזלג, נראית סביבת הפיתוח העתידית של מערכות מחשב, כלומר לא עוד תכנות אימפרטיבי כמו ב C או Java, ואפילו לא עוד תכנות פונקציונלי כמו ב Lisp או ML, כי אם תכנות לפי אילוצים, כלומר ברמת אבסטרקציה אף גבוהה יותר. אני באופן אישי אוהב את הגישה הזו.
דוגמה טובה שנתן דוד כדי להמחיש את גישתו היא איך הורה "מתכנת" את ילדיו. ההורה נותן לילד דוגמאות של נכון ולא נכון, ובנוסף נותן לילד אילוצים כגון "עד 12 אתה בבית". הילד, עם הזמן לומד מה נכון לעשות בסיטואציה כלשהי אפילו אם זו הפעם הראשונה ממש שהוא נתקל בה. גם הילד, כמו תוכנה, צריך להגיב לקלט אשר לא היה ידוע מראש. לא שאני או דוד באים לטעון שילד == תכנה, אבל בתור דוגמה זה ממחיש את העניין.
אז תודה לדוד על הרצאה מעניינת ותודה גם על עזרה בכתיבת פוסט זה.

ודרך אגב חזרתי מחופש זה עתה והיה מגניב!

24 בנוב׳ 2007

חופש


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

20 בנוב׳ 2007

פרסומים אקדמיים של גוגלרים


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

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

רשימת הפרסומים ארוכה למדי. ניתן למצוא בה פרסומים על מערכות פנימיות הממומשות כחלק מה infrastructure של החברה, כגון Cubby, מערכת נעילות מבוזרת וגם מיני-מערכת-קבצים, GFS המפורסמת, מערכת הקבצים המבוזרת, Map Reduce שכבר הזכרתי בעבר, Bigtable, סוג של database מאוד ייחודי ועוד.

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


13 בנוב׳ 2007

עוד על 20%


בבלוג של Google Reader התפרסם פוסט נוסף של שני גוגלרים שתרמו שני פיצ'רים נוספים לרידר.
אחד מהם הוסיף משהו שנקרא my blogroll והשני שיכלל את הגישה דרך התקנים ניידים כגון iPhone, Blackberry ואחרים (שדרך אגב, אני משתמש המון).
כנראה (בטוח) שרידר הוא מוצר מהונדס הייטב ויש לו צוות מאוד מזמין ופתוח למהנדסים ולכן יש לו כל כך הרבה תורמים 20%. גם אני תרמתי לו בעבר ואני יכול להעיד שזו היתה חוויה מאוד חיובית ומספקת.

אפשר לקרוא על זה עוד כאן


11 בנוב׳ 2007

עסוק עסוק עסוק


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

2 בנוב׳ 2007

בדיקות תוכנה


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

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

גם בגוגל יש שילוב של כלים סטנדרטיים, אבל יש דגש רציני על האחריות של כל מהנדס לאיכות של הקוד שלו, כלומר בדיקות יחידה (unit testing). אז בהמשך לפוסט קודם שמדבר על testing on the toilet רציתי להזכיר שקיים בלוג רשמי של גוגל (באנגלית) שסוקר שיטות והצעות לבדיקות תוכנה: http://googletesting.blogspot.com
בלוג זה נכתב ע"י עובדי החברה והוא מעניין ושווה קריאה (טכני).
ועכשיו - חידוש: כותבי הבלוג הציעו לקוראים לשלוח פוסטים משלהם שיופיעו בבלוג. אז למי שמתעניין, עוד פרטים כאן


ויש גם לוגו נחמד