Saturday, December 07, 2019

Warning: Bug of 2038 is ahead! (English)

Заметка полностью.

To be more precise: 19 January 2038 at 3:14 am.

It’s 31.12.1999 and 9 years old me was sitting in my grandma’s living room, waiting to watch the millennium countdown and fireworks on TV with my little sisters, but secretly waiting to see what is going to happen with bug y2k (bug 2000). Are planes really going to fall down from the sky? Are elevators going to stop working and nuclear plants going to explode?

Ниже есть продолжение.

Data takes up space. If you can represent data in two different ways, say - year ‘1990’ versus ‘90’, you surely will choose the more efficient way. Why waste two more digits when you can represent the same with only two? Up until the 90’s, many systems were indeed saving up space by using only 2 digits to represent a year, setting the machines up to a failure once we hit the year 2000 and would programmably go back in time and represent it by ‘00’ - making it indistinguishable from year 1900. The world went nuts and prevention and remediation teams were set up, working extra hours and spending a total cost of 300 billion dollars for preparations and another 13 billion for damages remediation.

Unix was originally developed in the 60's and 70's and when engineers had to decide how to represent time, they chose to start counting how many seconds have passed since 1.1.1970 at midnight. Up until today, this is one of the main methods of representing universal time in many systems, allowing a single representation of time no matter where in the world you are, being super useful for computer systems that are dynamic and distributed - like most are today.

The timestamp is stored as a signed (positive or negative) 32-bit binary integer, which can represent up to 2^32 numbers, equals to 4,294,967,295 seconds. Since it’s a signed integer, the actual values can be any number between -2,147,483,647 (The time before 1.1.1970) and 2,147,483,647 (the time since). This seems like quite a lot - and surely UNIX engineers thought so too when back in the 60’s they chose to set the “zero time” to be 1.1.1970. But those two billion one hundred forty-seven million four hundred eighty-three thousand six hundred forty-five second ARE going to pass on 19 January 2038 at 3:14 am. Sounds familiar?

You know how you download a file and need to choose between 32bit version and 64bit version? This represents the architecture of your computer’s CPU - the processor. The processor’s most basic memory units are the registers, and their size determines how much data can be stored in one chunk. 32bit architecture implies the size of the registers and how much data it can store - which means that without migrating to 64bit arch, developers cannot keep using the UNIX timestamps. Many systems today are of 64bit arch, but all computers that by January 2038 will still use 32 bit Unix Time will *overflow* - Meaning the counter will run out of usable digit bits, and will affect the sign bit instead, causing errors and bugs.

Who is at risk? Mostly embedded systems that are meant to last decades. Since most modern computers are coming out with the 64bit arch, the systems that have the potential of issues are old systems. Those transportation systems, equipment like sensors and control systems, computers embedded in machinery and others - most of their software cannot be simply upgraded. In reality - many 32bit systems will be completely replaced in the remaining time to y38k bug - or we will all be eating popcorn waiting for planes to come crushing from the skies in 19 years.
https://www.facebook.com/intrototech/posts/1412893952168133

איך אגו פגוע וחשש ממתקפה גרעינית סובייטית גרמו להמצאת האינטרנט (Hebrew)

Заметка полностью.



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


Ниже есть продолжение.

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

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

הרשת נקראה ARPAnet וההודעה הראשונה בה הועברה ב-1969 בין מחשב בUCLA למחשב בStanford, כל אחד מהם בגודל של מקרר. החוקרים דיברו בטלפון על מנת לוודא את הגעת המילה הראשונה – שתוכננה להיות LOGIN, אך לאחר שהאותיות L ו-O הועברו בהצלחה והקלדת האות G ע"י החוקרים בסטנפורד, המחשב שלהם קרס – וכך יצא שההודעה הראשונה ברשת האינטרנט אי פעם היתה “LO”.

הרשת גדלה והאינטרנט הכיל יותר ויותר מחשבים, אך רשימת ה-Hosts, המחשבים ברשת, לא היתה מבוזרת, וכל מחשב היה צריך לשמור מיפוי של כל מחשבי הרשת ושמותיהם. לא היתה דרך לוודא נכונות או עדכניות של המיפוי שמשתנה כל הזמן, ולא היה ניתן לשתף את קובץ המיפוי על גבי הרשת. בתחילה, האדמינים של הרשתות קיבלו עותק מודפס של המיפוי העדכני או התקשרו לברר אותו בטלפון ויותר מאוחר – הופץ להם קובץ hosts.txt שהם נדרשו להוריד באמצעות FTP ולעדכן כמה פעמים בשבוע. את המיפוי יצרה והפיצה אליזבת פיינלר.
אליזבת פיינלר היתה ביו-כימאית שעבדה באותו בניין שבו פיתחו את ה-ARPAnet. אחד המובילים סיפר לה על הפרויקט ושאל אותה אם תסכים להיות אחראית על המשימה שכל מתכנת שפוי שונא – לתעד. מכיוון שלא היה אינטרנט, לא היתה דרך קלה להדריך משתמשים חדשים איך להתחבר לאינטרנט, ופיינלר למדה את הטכנולוגיה החדשה על בוריה וניהלה את מרכז המידע של הרשת (NIC). היא כתבה והפיצה את המדריכים שמתארים כיצד הרשת עובדת, איך מתחברים, לאילו מספרים ניתן להתקשר בשאלות ובקשות, היא ניהלה את מוקד התמיכה והשירות, והיתה אחראית על פיתוח שירותי 144 הממוחשבים של הרשת - whois ו-whatis. מנהל רשת עצלן שלא עידכן את המיפוי שלו בזמן עשוי היה להפיל את הרשת, וטירחה רבה הושקעה בלשכנע את האדמינים להשאר מעודכנים בכתובות ובלשמור על הרשת יציבה.

הקשיים הובילו ליצירת ה-DNS (Domain Name System), מערכת מיפוי שמות היררכית שבנויה מדומיינים במקום הדומיין היחיד באותה תקופה שהיה .arpa. הוחלט לחלק את הרשת לדומיינים ראשיים שינוהלו בנפרד ושהם יהיו מסווגים לפי איזור בעולם ולפי תעשייה. כך נולדו הדומיינים .gov, .edu והדומיין שכולנו (לא) מכירים bus.. הדומיין bus (קיצור של business) היה אמור לשרת את המגזר העסקי, אך לאחר שגילו שיש במחשב רגיסטרים חומרתיים שמסתיימים בbus. הוחלט לשנות את הדומיין ל- com. – קיצור של commercial.

רשתות נוספות הוקמו ע"י יזמים פרטיים ברחבי העולם, אך בגלל שכל רשת עבדה בצורה שונה, עדיין לא ניתן היה לחבר את הרשתות וליצור רשת עולמית (world wide web). הכל השתנה בעקבות הפרוטוקולים TCP/IP שאפשרו ליצור רשת-בין-רשתות, inter-net, עם פוטנציאל תיאורטי של אינסוף מחשבים. הרשת גדלה והתחברה לרשתות נוספות, הפך להיות בלתי אפשרי לקבוע מי משתמש מורשה בה, ובהיעדר כלי אבטחת מידע והגנה על התקשורת הממשלה האמריקאית התחילה לדאוג לביטחון הלאומי והחליטה להתנתק לרשת משלה. רשתות פרטיות נוספות צמחו והתמזגו, לא היה צורך יותר ברשתות ממשלתיות ואלו הושבתו, ולאחר עוד אי-אילו מהפכות ושיפורים הרשת הפכה להיות רשת האינטרנט שאנחנו מכירים היום.

בתמונות – תרשים של הצמתים ברשת לאורך השנים ומיפוי המחשבים שהיו מחוברים לרשת בראשית דרכה. מוזמנים לקרוא עוד באחד ממסמכי התיעוד של רשת ה-ARPANET.
https://ban.ai/multics/doc/a164353.pdf

https://www.facebook.com/intrototech/posts/1210831285707735

Польские читатели: Дуде осталось только добавить, что Россия нам друг и союзник

Заметка полностью.

На пресс-конференции после встречи глав государств и правительств стран НАТО президент Анджей Дуда (Andrzej Duda) выступил против того, чтобы Россию называли врагом Польши. «Я хочу подчеркнуть здесь одну вещь, чтобы мы не впадали в не имеющую под собой оснований риторику: врага нет», — отметил он, добавив, что единственные враги, о которых теоретически можно говорить — это террористические организации.

Ниже есть продолжение.

«Сейчас у нас нет никаких врагов, на Североатлантический альянс никто не нападает. Пожалуй, врагами можно назвать субъекты внутригосударственного свойства, то есть разного рода террористические организации, которые позволяют себе совершать атаки на мирных граждан или военных из стран НАТО. При этом нет никаких оснований выдвигать тезисы о существовании врагов на межгосударственном уровне. Такой ситуации сейчас нет, и я хотел бы особо это подчеркнуть», — говорил Дуда.

Далее он отметил, что Россия — сосед Польши, и хотя две страны не согласны друг с другом по многим вопросам, а Альянс считает часть действий Москвы неприемлемыми, российское государство нельзя назвать врагом польского. Президент добавил, что миропорядок, сформировавшийся после 1989 года, появился благодаря мирным преобразованиям, и Варшава выступает против его расшатывания.
http://m.inosmi.info/polskie-chitateli-dude-ostalos-tolko-dobavit-chto-rossiya-nam-drug-i-soyuznik.html

Джангиров: Польша не считают Россию врагом НАТО

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

Заметка полностью.

См. также:
Garry Kasparov DEF CON 25 Deep Thinking

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


יש המך למטה.
Ниже есть продолжение.

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

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

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

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

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

במהלך 78 הדגים לי מהי חשיבה מחוץ לקופסה, במובן המקורי ביותר של הביטוי העבש הזה. אולי נכון יותר יהיה לומר שהוא חשב מחוץ לעץ; עץ המשחק. לעולם לא היה עושה מהלך כזה מול בן אנוש. כל שחקן גו, אפילו חלש ממנו בהרבה, היה מוצא את הדרך לנצל מהלך כה מוזר ובעייתי. אבל המחשב איבד את זה מולו. כמו בטכניקות מן השנים האחרונות, שבהן מצמידים מדבקות פסיכדליות ללחיים ולמצח כדי להטעות מנגנונים לזיהוי פנים, כך שיבש לי את אופן ההתנהלות של האלגוריתם. אף אדם, בלי שום קשר לרמת התבונה שלו, לא יחשוב שאדם אחר עם מדבקה צבעונית על הסנטר איננו אדם. אבל אלגוריתם עלול להגיע למסקנה כזו בקלות. הוא מסוגל לסווג אדם עם מדבקה מסוימת בתור לכלוך רנדומלי, רעש לבן על המסך. לא-אדם. ומכאן גם לא לדווח עליו לאח הגדול. אחת אפס להומו סאפיינס.
קספרוב טוען שאין עוד טעם להתמודד מול מכונות. הגיע הזמן לאחד איתם כוחות. בבוא היום, יכו ממילא המכונות את בני האדם בכל מערכת סגורה. שחמט וגו הן מערכות סגורות; קל לנו להבין זאת. גם אם מספר המהלכים האפשריים בהן הוא עצום, מדובר בכל זאת במספר סופי. שחמטאים אוהבים להזכיר את "מספר שאנון", 10 בחזקת 120, כהערכה למספר המשחקים האפשריים בשחמט. אבל בפועל, גם אם נקבל את דבריו של קספרוב, קשה לדעת איפה עובר הגבול בין מערכת סגורה לפתוחה. האם כדורגל, למשל, הוא מערכת סגורה? איך אפשר בכלל לכמת את מספר המשחקים האפשריים בכדורגל? האם יש לספור ולחבר את מספר העמדות על פני המגרש שבהן יכול כל שחקן להימצא ביחס למקום שבו נמצא הכדור? או את מספר המצבים שבהם יכולים כל האטומים שמרכיבים את 22 השחקנים והכדור להיות בהם בכל אלפית שניה? "מספר שאנון" הוא שבריר לעומת מה שנקבל.

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

https://www.facebook.com/groups/1742464739390368/permalink/2201945993442238/