ארכיון חודשי: יולי 2008

לשטוף את הסבון

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

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

אחת התכונות העיקריות של .net היא השימוש בטכנולוגיית SOAP גם כאשר ממש לא צריך. למי שאינו יודע, השם הלא מתאים של SOAP אומר Simple Access Object Protocol. הטכנולוגיה כל כך פשוטה, עד שהיא דורשת מבנה מיוחד של ראשי HTTP, מעטפות, קבצי סכמות/הוראות (קובץ wsdl) וכו' בשביל לשלוח נתונים באמצעות פורמט XML בסופו של דבר.

יש אמנם שימושים לSOAP, מעטים אבל הם קיימים (למשל RPC מסובך יתר על המידה שבו צריך להעביר מידע על אובייקטים). הבעיה היא שבעולם ה .net גם כאשר אין צורך בכלל להשתמש ב XML, שלא לדבר שלא צריך להשתמש ב SOAP, עדין יותר פשוט בכלים שמיקרוסופט מספקת להשתמש בSOAP, מאשר משהו חליפי כדוגמת פעולת HTTP GET פשוטה בה מקבלים תשובה ממש פשוטה (בדיוק המקרה שקיים אצלי כרגע), XML-RPC ועוד טכנולוגיות רבות טובות ופשוטות יותר.

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

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

סיכום ההרצאה על רובי

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

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

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

Freelancer

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

אם בנימין פרנקלין אמר פעם שהטעות הראשונה כשעושים עסקים זה להיכנס לתחום (The first mistake in public business is the going into it. Ben Franklin), אז האתר הזה מנסה לעזור להתנהל מול הטעות הזו.

מומלץ לכל מי שנכנס לעולם העסקים, או שכבר נקבר עמוק בפנים.

אוגוסט פנגווין 2008 חלק א'

ביום שישי הבא (כלומר ה1 לאוגוסט) יערך כנס אוגוסט פנגווין ה7 במספר (רם-און, השנה אני מכוון ליותר מ5 אנשים נוספים שיגיעו לכנס, בזכות [?] הבלוג שלי). השנה יש מהלך שגרם להרבה מאוד דיונים די לא מפתיעים בנושא.

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

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

מתכנתי copy paste

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

אני לא זוכר אם זה היה צפריר כהן או מני ליבנה שהגדירו את הגישה של אותו מתכנת, בתור מתכנת Copy Paste. הכוונה במתכנת כזה, הוא שהמתכנת לא באמת מבין מה הוא עושה, ואיך דברים עובדים, אלא הוא פועל לפי איך שאומרים לו לפעול. למשל הוא צריך לכתוב תוכנית שמדפיסה Hello world על המסך, אז הוא לא ינסה להבין כיצד מתחילים תוכנית בשפה שהוא צריך, וכיצד מדפיסים על המסך, אלא הוא יחפש מישהו שעשה את זה פעם, יעתיק וידביק את הקוד, ויגיד שיש לו תוכנית שעושה את מה שצריך.
למעשה מתכנת copy paste יודע רק מה שהוא חייב בשביל להגדיר את עצמו בתור מתכת, ולא ינסה ללמוד שום דבר מעבר לכך, ובהרבה מיקרים גם לא יהיה מסוגל לעשות את זה אם יחפוץ בכך.

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

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

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

בעיות הקוד הפתוח

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

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

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

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

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

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

נשיקות לתער של אוקהם

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

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

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

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

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

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

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

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

מלכוד 22 בעסקים

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

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

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

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

שוחררה FPC 2.2.2 RC2

לפני חודש שוחררה גרסת בדיקה ל FPC 2.2.2, והיום שוחררה גרסת ניסוי נוספת.

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

המרת widechar ל char והפוך

אפשרות להמיר בין wide char לבין תו "רגיל" והפוך, בין תו "רגיל" לבין wide char. ההמרה מתרגמת (בניגוד לעבר) את המידע בהתאם להמרה שמתבצעת בצורה אוטומטית.

דוגמא:

ansi_char := char(wide_char)

ההמרה תמיד ממירה את התו מערך ה widechar לתו שנמצא כרגע ב code page שבו התוכנה נמצאת. ההמרה מתבצעת באמצעות מנהל ה widestring שבו מוגדרים פונקציות ההמרה (שכמובן אפשר לשנות בהתאם לצורך).

ביצוע typecast לקבוע סידורי

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

דוגמא:

TMyIP = record
Network, classA, ClassB, ClassC : Byte;
end;
var MyIP : TMyIP;
MyIP := TMyIP(10003445);

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

שינוי גודל של קבוצות

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

עוד פרטים ניתן למצוא כאן.

ניתן להוריד את הגרסה החדשה כאן.
או להוריד מ SVN:

svn co http://svn.freepascal.org/svn/fpc/tags/release_2_2_2_rc2/ fpc_2_2_2_rc2

להורדה של "שחרור" ניתן להוריד מsvn:

svn co http://svn.freepascal.org/svn/fpc/branches/rc_2_2_2/ rc_2_2_2

puts ruby

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

ההרצאה מתרחשת בבניין שריבר כיתה 008. ההרצאה מתחילה ב 18:30.

ההרצאה נועדה בראש ובראשונה לאנשים המגיעים מעולם ה C# Java ואולי אף מ ++C, ומעוניינים להכיר עוד שפה שאולי תוכל לעזור להם במערך הכלים שלהם.

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

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

סיפורי לקוח (המשך)

לפני חודש ו11 ימים כתבתי את הפוסט הבא.

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

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

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

ראו הוזהרתם !

עידו

טאקס, המפקד !

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

מכירים את Total Commander לWindows ? התוכנה הזו היא תוכנה שכתב כריסטיאן גליסר (במקור, היום החברה שלו מפתחת). כריסטיאן הוא אדם אשר כשעבדתי בדלפי, היה מישהו שמאוד הערכתי את העבודה שלו, וחלק מהעבודה שלו על Total Commander (בזמנו עוד היתה תחת השם Windows Commander) הוא שיחרר בקוד בפתוח, וסיפק להרבה אנשים ספריות ויחידות שהוא כתב עבור התוכנה (שמן הסתם כתובה בדלפי). במקור (בתחילת שהעשור משהו כמו 2002-2003) הוא דיבר על זה שהוא מעוניין גם לכתוב גרסה ללינוקס (תוך שימוש ב Kylix), אבל בפועל הפרויקט לא יצא לדרך (כנראה בגלל שהוא לא חשב שזה יהיה לו כלכלי -> עדיין זו חברה שזו רוב הפרנסה שלה).

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

בית להרצאות

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

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

כמובן בלי קשר לכך שזה הופיע באוגוסט פנגווין, חיפוקס, תלוקס, הרצלינוקס, BGU [לא הצלחתי למצוא אתר 😦 ] מועדון הלינוקס הירושלמי וכו'…

הרעיון של מאיר היה שהאתר יציג את המצגות כנראה בפורמט ווב ולא בקבצי PDF/Oasis/MS Office וכו' לדעתי גם אולי כדאי לצלם/להקליט הרצאות ולשדר אותם בתור cast בנוסף למצגות (כמובן להרצאות חדשות).

אז מה אתם חושבים על הרעיון של מאיר ?

פיראטים הם לא לוחמי צדק (דעה)

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

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

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

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

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

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

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

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

מתכנתים טובים משתמשים בקוד פתוח

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

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

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

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

אאאבק

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

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

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

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

להיות עצמאי

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

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

הבעיה בלהיות עצמאי, היא ש90% מהאנרגייה שלך הולכת אל הלקוח. כלומר אתה צריך לתקשר איתו, אתה צריך לגבות כסף, אתה צריך לראות אם הוא מרוצה וכו'.

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

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

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

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

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

מערכת גדולה

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

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

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

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

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

התמקצעות טכנולוגית

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

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

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

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

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

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

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

עוד חומר למחשבה

Ruby שונה שפה

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

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

האפליקציה מקבלת מידע ב XML-RPC, ובגלל שיש לי ספרייה ממש נחמדה ב PHP אשר משתמשת בה, החלטתי להישאר איתה, וקליטת המידע מתבצעת בPHP.

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

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

בשביל לכתוב שדון (daemon) ברובי, כל מה שאני צריך זה 3 שורות קוד, כאשר 2 מהן עושות import, ועוד שורה שלמה של להגיד למחלקה בשם Daemons להריץ קובץ שנמצא תחת do loop. ממש ממש פשוט.

ובנוסף היו לי ספריות לAsterisk Manager Interface וכמובן ל Asterisk Gateway Interface, מה שאומר שאני לא צריך להתעסק בשטויות (כמו להגדיר daemon בפרל, PHP, C ופיתון, או יצירת התממשקות של AMI בפסקל).

מה שנשאר לי לעשות זה Copy Paste (לאחר בדיקה וניסויים) ל ThreadPool שנבנה בשביל רובי ע"י אנשים נחמדים וזהו ! אני יכול להתעמק רק בקוד שאני חייב לכתוב.

התוצאה היא 300 שורות קוד (כולל copy paste של ה ThreadPool, הערות, רווחים וכו') ב3 קבצים, כאשר קובץ אחד הוא השדון שלנו, הקובץ השני הוא קוד שמדבר עם AMI, והקוד השלישי הוא בעצם משמש בתור AGI.

לפעמים הגמישות בטכנולוגיה משתלמת.