פלאנט תוכנה חופשית בישראל (Planet FOSS-IL)

26 May, 2020

Shlomi Noach

orchestrator on DB AMA: show notes

Earlier today I presented orchestrator on DB AMA. Thank you to the organizers Morgan Tocker, Liz van Dijk and Frédéric Descamps for hosting me, and thank you to all who participated!

This was a no-slides, all command-line walkthrough of some of orchestrator‘s capabilities, highlighting refactoring, topology analysis, takeovers and failovers, and discussing a bit of scripting and HTTP API tips.

The recording is available on YouTube (also embedded on https://dbama.now.sh/#history).

To present orchestrator, I used the new shiny docker CI environment; it’s a single docker image running orchestrator, a 4-node MySQL replication topology (courtesy dbdeployer), heartbeat injection, Consul, consul-template and HAProxy. You can run it, too! Just clone the orchestrator repo, then run:

./script/dock system

From there, you may follow the same playbook I used in the presentation, available as orchestrator-demo-playbook.sh.

Hope you find the presentation and the playbook to be useful resources.

26 May, 2020 05:52 PM

Kaplan Open Source Consulting

סדנאות QGIS ביוני 2020

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

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

  1. מה זה QGIS ופלאגאין עבור מידע ישראלי פתוח (17 ביוני, דרך Zoom)
  2. סדנת מבוא ל-QGIS (14 ביוני, דרך Zoom)
  3. סדנת QGIS למתכנני ערים (15 ביוני, דרך Zoom)

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

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

26 May, 2020 10:15 AM

24 May, 2020

ik

אופטימיזצית פרוייקט בזמן קורונה

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

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

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

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

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

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

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

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

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

יצרתי סוג של טיימר הסופר עד כמות מסויימת של מילי שניות ובמידה והגיע אותו timeout לפני שהתוצר הסתיים, הייתי מדווח שגיאה חזרה.
במידה והסתיים, המידע המתאים נשלח כי הוא התקבל חזרה, ובטיימר לא היה באמת sleep כלשהו אלא תפיסה של "אירועים" על ידי שיחרור מיוטקסים או לחכות לmutex מסוים להשתחרר. הידע מתי לשחרר אותו התבצע על ידי שמירת ה payload שמגיע בstreaming pipe עד אשר תו מסויים מגיע, או אורך מסוים הגיע (הראשון מבניהם). במידה ועד שזה מתבצע הגיע הזמן לשחרר, אז mutex אחר שספר ticks פעל כאשר הבדיקה היתה על אחד משניהם.

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

לאחר השינוי הזה, המערכת התחילה לחזור אלי לרוב אחרי 10-200 מילי שניות, כאשר 500 מילי שניות היו לתוכן גדול בהרבה ממה שאותו משרד ממשלתי שולח אלי.

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

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

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

24 May, 2020 10:40 AM

21 May, 2020

Hetz Ben Hemo

נקודות למחשבה ברכישת/שדרוג מחשב לעריכת/יצירת תכני וידאו

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

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

השאלה הראשונה בדרך כלל אינה קשורה למפרט טכני ומה לרכוש, אלא יותר להכיר את העבודה של אותו אדם. מה בעצם אותו אדם עושה למחייתו וסוג התכנים שהוא יוצר/עורך. יש הבדל ענק בין אדם שעורך וידאו AVC/H.264 של חתונות ואירועים אחרים, קצת עובר על תמונות בפוטושופ ואולי קצת נוגע באפטר. אותו אדם לא צריך ממש מחשב חזק. לעומת זאת, אותו אחד שעורך סרטים שצולמו ב-RED, שעורך תכנים שקודדו ל-DNxHR/Prores, ועושה גם דירוג צבע – יצטרך מחשב יותר חזק ומסך הרבה יותר רציני ומדויק מבחינת צבעים שעולה לא מעט. בין האחד לשני יש לא מעט שנמצאים ב"אמצע" ויש כמובן אלו שנמצאים בקצוות היותר גבוהים שעבורם צריך חומרה מאוד יקרה, והם הראשונים שיקנו לעצמם איזה Mac Pro (זריקת כספים, אבל היי, כל אחד וכרטיס האשראי שלו…)

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

  • מעבד – הליבה של המחשב. עד לאחרונה כשדובר על מעבד למחשב יצירת/עריכת תכנים, הרוב המוחלט בחרו במעבדים של אינטל. המעבדים של המתחרה, AMD, עבדו טוב, אבל עדיין המעבדים של אינטל נתנו ביצועים יותר גבוהים. במעבדי הדור האחרון של AMD (סידרת Ryzen 3000 במחשבים נייחים, סידרה Ryzen Mobile 4000 במחשבים ניידים) המספרים התהפכו, אחרי ש-AMD החליטה לא לחכות לחברות כמו Adobe ובעזרת שימוש בטריקים שונים (Cache מפלצתי במיוחד) המעבדים של החברה מראים שוב ושוב שהם נותנים ביצועים יותר גבוהים באפליקציות של אדובי/בלאק מג'יק/AVID בהשוואה למעבדים של אינטל. המקום היחיד שאינטל עדיין בתחום זה מובילה – זה בביצועים של פוטושופ, וגם שם – מדובר בהבדל של אחוזים בודדים.
    לפיכך – המעבדים של AMD עדיפים, הן מבחינת מחיר (יותר זולים מהמעבדים של אינטל), והן מבחינת כמות ליבות שמקבלים באותו מעבד. לחברה יש קטלוג מעבדים שמתחיל במעבדים שעולים 99$ ועד 4000$ לשוק הדסקטופ.
  • ה-GPU – זהו הכרטיס הגרפי. אחת הטעויות הקלאסיות שלא מעט עושים היא לרכוש כרטיסים גרפיים יקרים בשעה שהם כלל לא מנצלים אותה. הכלל הוא פשוט: אדובי פרמייר אינו מנצל את רוב הזכרון הקיים ברוב הזמן וגם כשצריך, הוא יודע לבדוק כמה זכרון לכרטיס הגרפי (לכרטיס הגרפי יש זכרון משלו שנקרא VRAM ולמחשב יש זכרון משלו שנקרא DRAM) ולחלק את העבודה בהתאם. לכן, אם לדוגמא רק מריצים תוכנת עריכת וידאו, כרטיסים כמו RTX2060 של Nvidia או RX5700/RX5600/RX5500 של AMD יכולים לעשות את העבודה בצורה מצויינת. אם לעומת זאת יש לכם הרבה עבודה על אפטר או על Davinci Resolve – כדאי לבחור באחד הכרטיסים של AMD או RTX 2070 (או 2070 Super) או RTX 2080. שוב, הכל תלוי בתקציב ובצורך במהירות.
    נקודה חשובה: אם אתם משתמשים בפרמייר, גירסה 14.2 בטא כוללת תמיכה הרבה יותר מאסיבית ב-GPU וכתוצאה מכך ה-Export (ישירות או דרך Media Encoder) יהיה מהיר פי 3-4 מהמהירות שאתם רגילים אליה, וזאת מבלי לשנות שום ציוד.
  • זכרון: הכלל הוא פשוט – כמה שיותר, יותר טוב, אך עד גבול מסוים. המינימום המומלץ הוא 16 ג'יגהבייט והכמות המומלצת בדרך כלל היא 32 ג'יגהבייט. במחשבים ניידים זולים הזכרון מולחם ולכן תצטרכו לבחור מראש כמות זכרון, ואם תבחרו 32 ג'יגהבייט זכרון תגלו שמחיר המחשב הנייד הינו גבוה מאוד. אם אפשר, חפשו מחשב נייד PC שניתן להוסיף לו מקלון זכרון, וכך תוכלו לרכוש מחשב עם 8 ג'יגהבייט ולהכניס מקלון של 8 ג'יגהבייט זכרון (ויותר מאוחר להחליף למקלון של 16 ג'יגהבייט ובכך הזכרון הטוטאלי יהיה 24 ג'יגהבייט).
    כמות זכרון של 64 ג'יגהבייט ומעלה דרושה אך ורק אם מריצים המון תוכנות יצירת/עריכת תכנים במקביל ולא סוגרים אף אחת מהן.
    מבחינת תמחור: מקלות זכרון DDR4 2666 בגודל 4 ג'יגהבייט הם המקלות הכי זולים (וברוב המחשבים הנייחים הזולים ניתן להכניס 2 או 4 מקלות כאלו), וישנם "קיטים" של 16 ג'יגהבייט שמורכבים מ-2 מקלות של 8 ג'יגהבייט זכרון, קיטים של 32 ג'יגה וקיטים של 64 ג'יגה, ככל שהקיט כולל יותר זכרון, המחיר עולה.
    שימו לב: לא ניתן להגדיל זכרון של כרטיס גרפי (ה-VRAM). לשם כך, יש צורך בהחלפתו בדגם אחר יקר יותר.
  • דיסק SSD: דיסקים מבוססי שבבי NAND קיימים כבר מספר שנים ומחירם צונח בכל תקופה בעוד ועוד אחוזים, לפי ההמלצות שלי קצת שונות מהמקובל. במקרים רבים ההמלצה היא לרכוש אחד ולחלק אותו ל-Partitions, רק שבניגוד לדיסקים מכניים, במקרים רבים כשה-SSD מתקלקל, שום דבר לא יהיה זמין, לא מערכת ההפעלה, לא האפליקציות ולא עבודות שנשמרו על אותו SSD, ולכן אני דווקא ממליץ כשזה מגיע למחשב נייח, לרכוש 2 דיסקים SSD (אחד בגודל חצי טרהבייט ואחד בגודל 1 או 2 טרהבייט). את העבודות לאחסן ולעבוד על ה-SSD הגדול, ואת האפליקציות ומערכות ההפעלה לאחסן על הקטן. תתפלאו, המחירים אינם יקרים, רק חשוב לציין בחנות שבוחרים את ה-SSD שיהיה מבוסס על תאי TLC ולא QLC (ההבדלים הם בכך ש-SSD מבוסס QLC יותר זול אך הכתיבה איטית בהרבה).
  • דיסק קשיח מכני: אם אתם קונים מחשב נייח, קנו גם דיסק קשיח מכני בגודל 2-6 טרהבייט. בדיסק הזה תאכסנו את הפרויקטים לאחר העבודה, ומה שהכי חשוב: לא לעבוד על הפרויקטים בזמן שהם מאוכנסים בדיסק הקשיח המכני. השאירו אותו רק לצרכי גיבוי, ואם אתם יכולים לרכוש לעצמכם NAS לאחסון חיצוני, זה יעזור בתור גיבוי משני. אתם אף פעם לא יודעים מתי לקוח יפנה מחדש וירצה שינויים על פרויקט מלפני שנה וכמובן שאין לו את קבצי המקור.
  • מסך: המסכים הפופולריים ביותר כיום לעריכה הם מסכי 27 אינטש עם פאנל IPS. יחד עם זאת, רוב הפאנלים הללו במחירים הזולים אינם מדוייקים בצבעים (באף אחד מהם, sRGB, AdobeRGB, DCI-P3, NTSC). אם רוצים מסכים מדוייקים (לאלו שהם קולוריסטים) – מסכים טובים קיימים במחירים שמתחילים בסביבות 4000 שקל וכוללים מסכים כמו Pro Art של Asus, ה-Ultra Sharp של Dell, ה-Color Pro של Viewsonic, וכל אחד מיצרני המחשבים הנייחים מוכר גם מסכים מקצועיים עם הלייבל שלו.
  • תוכנת גיבוי: אחד הדברים שכמעט כולם שוכחים. רכשו או התקינו תוכנת גיבוי שיכולה לגבות לדיסק מכני או ל-NAS את כל המחשב אחת לזמן מה (נניח אחת לחודש). יש תוכנות חינמיות ב-Windows כמו Macrium Reflect ויש תוכנות אחרות שעולות בסביבות ה-50$. שווה בהחלט להשקיע!

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

מק או Windows: לא נכנס לויכוח הזה, עניין של טעם, נוחות וכו' 🙂

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

בהצלחה 🙂

הטקסט המלא

21 May, 2020 05:46 PM

20 May, 2020

Hetz Ben Hemo

מקודדי ביניים – כדאי להשתמש?

אחד ההבדלים הגדולים ביותר שקיימים בשוק יצירת תכנים – קשור למקודדי ביניים, אותם Mezzanine Codecs כמו DNxHD/DNxHR/Prores/Cineform וכו'.

בדרך כלל כשמצלמים סרטים, או כל תוכן במצלמות מקצועיות ויקרות (ואני מתכוון למצלמות שמתחילות במחיר של 10-15 אלף דולר ומעלה), בדרך כלל הוידאו יוקלט עם מקודדים כאלו, או שיוקלט כ-RAW או עם דחיסה לא כל כך משמעותית, כמו במקרים של Red, Arri Alexa ולאחרונה גם מצלמות של חברת Blackmagic Design מאפשרים לשמור ב-RAW או במקודד קרוב לכך (חוץ מאשר אפשרויות שמירה ב-Prores בפרופילים שונים).

לעומת זאת, במצלמות שנמכרות במחירים החל מכמה מאות דולרים ועד כמה אלפי דולרים, קידוד הוידאו יהיה ב-H.264 או H.265 באחד מהפרופילים של ה-Codec, בהתאם להחלטת המשתמש. כך לדוגמא יש את H.264 GOP ששומר את כל הפריימים (כלומר הכל I) והוא יותר קל לעבוד בעריכת וידאו רצינית (אבל הוא עדיין לא "קל לעיכול" למערכת כמו מקודדי הביניים). בדרך כלל מי שיצלם בשיטות האלו יהיו אלו היוטיוברים למיניהם, צלמי חתונות ואירועים ועוד. יש כמובן גם כאלו שמשתמשים במצלמות הנ"ל יחד עם מקליטים חיצוניים כדי להקליט קבצים בקידודי ביניים.

להלן קליפ מהערוץ של Gerald Undone שיסביר את ההבדל המהותי בין ה-H.264/H.265 לבין מקודדי ביניים. שימו לב, הוא מדבר על הדברים בקצרה. יש קליפים אחרים שמסבירים הרבה יותר לעומק, למי שמעוניין..

אפשר לסכם את היתרונות של 2 השיטות כך:

  • קידודי Delivery כמו H.264/H.265 – מעולים בשמירה בקבצים בגודל קטנים, כל תוכנת עריכה תקבל אותם, ואפשר לנגן אותם ישירות בכל מחשב ובכל ציוד.
  • קידודי ביניים – יוצרים קבצים יותר גדולים אך שומרים הרבה יותר פרטים, מעולים לעבודות עריכת וידאו מורכבות ברמות שונות. ניתן להחליט איזה מקודד ואיזה פרופיל מקודד על מנת לשמור על איזון של גודל קובץ (או ליתר דיוק: Bitrate) מול איכות וידאו שתישמר.

חסרונות:

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

אז עם איזו שיטה כדאי יותר לעבוד? זה תלוי בעצם בראש ובראשונה מי אתה.

  1. אם אתה יוצר תכנים שמיועדים לפלטפורמות שידור באינטרנט (יוטיוב, Vimeo) וכל מה שחשוב לך זה התוכן, אבל לא כל ביט של צבע, אתה מוסיף אולי LUT, מבצע כמה חיתוכים וכמה אפקטים – אז שמירה ב-H.264 במצלמה יכולה לעשות את העבודה די טוב.
  2. אם אתה לעומת זאת יוצר תכנים עבור גופי שידור גדולים – H.264/H.265 יהיו המקודדים אליהם אתה תייצא את התוכן, וברוב הזמן אתה תצטרך לעבוד מול קבצים גדולים שקודדו במקודדי ביניים, ואם אתה משתמש במצלמות די "זולות" (פאנאסוניק S1H, קאנון אבל לא המקצועיים וכו') – תצטרך להשתמש במקליט חיצוני כדי לשמור את הקבצים מקודדים במקודדי ביניים
  3. אם אתה עורך מהבית עבור אולפן ולהעביר אליך קבצים גדולים זו בעיה, אפשר לקודד קבצים כאלו לפרופיל יותר נמוך (גם Prores וגם DNxHD/DNxHR תומכים בכך) שיצור קבצים יותר קטנים שאותם תוכל לערוך. את הקבצים היותר קטנים שומרים מקומית ומעבירים אליך וכשאתה מסיים עריכה, אתה שולח בחזרה את הקבצים שערכת (לא את הקבצים שקודדו במקודדי הביניים) ובאולפן אפשר בכמה קליקים של עכבר להחליף את הקבצים המקודדים בקבצים מקודדים עם פרופיל יותר גבוה. כל העבודה שעשה העורך – תישמר.

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

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

אפשר כמובן להשתמש בדיסק SSD NVME (בחיבור Thunderbolt 3 במק, במחשבים ניידים ב-PC במקרים רבים יש מקום ל-SSD NVME נוסף, וברוב המחשבים מהשנתיים-שלוש האחרונות יש מקום ל-SSD NVME בתצורת מקל על לוח האם או ע"י הוספת כרטיס PCIe זול שעולה 10$) ואז ניתן לערוך כל קובץ שקודד במקודדי ביניים. כך זה נראה כאן:

(במקרה הזה אני משתמש ב-Western Digital SN720 גודל 2 טרהבייט)

אחת הנקודות הנוספות שעורכים רבים מציינים היא חוסר האפשרות שלהם לאחסן מידע רב, ואני בהחלט יכול להבין זאת, אולם יחד עם זאת, לעניות דעתי, Work flow טוב חייב להכיל אמצעי גיבוי קבוע, כמו NAS. פתרון NAS נחמד שאני יכול להמליץ עליו הוא QNAP TS-228A שעולה 739 שקלים ב-KSP (על זה תצטרכו להוסיף מחיר של 2 דיסקים, כמו אלו לדוגמא שעולים 439 שקלים פר דיסק), ובכך אפשר בכל פעם להעביר פרויקט אל המחשב ולערוך, ובסיום – להעביר אל ה-NAS, ואם צריך לערוך שוב, אפשר להעתיק מה-NAS בחזרה (אם אתם בעלי מחשבים ניידים ואתם גם עורכים בשטח, אל תערכו ישירות מה-NAS. ראיתי מספיק מקרים של עורכים שהגיעו עם מחשבים ניידים ו..הם שכחו את הפרויקט בדיסקים בבית).

מבחינה טכנולוגית, דברים משתנים היום במהירות. בעבר, מקליטים חיצוניים היו יקרים מאוד. כיום לעומת זאת, יש מסכים מקליטים חיצוניים כמו Atomos Ninja V שעולים 2300 שקל כולל משלוח לארץ שיודע להקליט ל-Prores, ל-DNxHD, ל-DNxHR ואין צורך בדיסקים SSD קנייניים סופר יוקרתיים. גם SSD SATA טוב של סמסונג יכול לתת מענה מעולה, ואפשר להחליף דיסקים במהירות ולאחר מכן לחבר אותם בחיבור USB פשוט כדי להעביר נתונים. בגלל זה, כותב שורות אלו מתכונן כבר בקרוב לעבור מהקלטות של H.264 להקלטות DNxHR SQ או Prores 422 (אחד מהפרופילים, אני עדיין בודק, יש ל-Prores יתרונות בתחום ה-VBR). זה שקובץ ישקל 20 ג'יגה במקום 4 ג'יגה, לא כזה עקרוני, במיוחד אם אני לא מוציא אותו החוצה לשום מקום ואני כן מקבל איכות הקלטה הרבה יותר גבוהה.

לסיכום: אין שום רע בלהשתמש ב-H.264/H.265 להקלטה ועריכה, אבל לפעמים צריך לשבת כמה דקות ולחשוב ולראות שהשד אינו נורא כל כך אם מקליטים ועורכים עם מקודדי ביניים. מחירי דיסקים ירדו ויורדים, בין אם מדובר בדיסקים מכניים או SSD, המחשב לא צריך להתאמץ יותר מדי בעריכה כשהקבצים מקודדים במקודדי ביניים, והאיכות היא משמעותית הרבה יותר טובה.

הטקסט המלא

20 May, 2020 01:23 PM

12 May, 2020

Shlomi Noach

orchestrator: what’s new in CI, testing & development

Recent focus on development & testing yielded with new orchestrator environments and offerings for developers and with increased reliability and trust. This post illustrates the new changes, and see Developers section on the official documentation for more details.

Testing

In the past four years orchestrator was developed at GitHub, and using GitHub’s environments for testing. This is very useful for testing orchestrator‘s behavior within GitHub, interacting with its internal infrastructure, and validating failover behavior in a production environment. These tests and their results are not visible to the public, though.

Now that orchestrator is developed outside GitHub (that is, outside GitHub the company, not GitHub the platform) I wanted to improve on the testing framework, making it visible, accessible and contribute-able to the community. Thankfully, the GitHub platform has much to offer on that front and orchestrator now uses GitHub Actions more heavily for testing.

GitHub Actions provide a way to run code in a container in the context of the repository. The most common use case is to run CI tests on receiving a Pull Request. Indeed, when GitHub Actions became available, we switched out of Travis CI and into Actions for orchestrator‘s CI.

Today, orchestrator runs three different tests:

To highlight what each does:

Build, unit testing, integration testing

Based on the original CI (and possibly will split into distinct tests), this CI Action compiles the code, runs unit tests, runs the suite of integration tests (spins up both MySQL and SQLite databases and runs a series of tests on each backend), this CI job is the “basic” test to see that the contributed code even makes sense.

What’s new in this test is that it now produces an artifact: an orchestrator binary for Linux/amd64. This is again a feature for GitHub Actions; the artifact is kept for a couple months or so per Actions retention policy. Here‘s an example; by the time you read this the binary artifact may or may not still be there.

This means you don’t actually need a development environment on your laptop to be able to build and orchestrator binary. More on this later.

Upgrade testing

Until recently not formalized; I’d test upgrades by deploying them internally at GitHub onto a staging environment. Now upgrades are tested per Pull Request: we spin up a container, deploy orchestrator from master branch using both MySQL and SQLite backends, then checkout the PR branch, and redeploy orchestrator using the existing backends — this verifies that at least backend-database wise, there’s not upgrade errors.

At this time the test only validates the database changes are applicable; in the future this may expand onto more elaborate tests.

System testing

I’m most excited about this one. Taking ideas from our approach to testing gh-ost with dbdeployer, I created https://github.com/openark/orchestrator-ci-env, which offers a full blown testing enviroment for orchestrator, including a MySQL replication topology (courtesy dbdeployer), Consul, HAProxy and more.

This CI testing environment can also serve as a playground in your local docker setup, see shortly.

The system tests suite offers full blown cluster-wide operations such as graceful takeovers, master failovers, errant GTID transaction analysis and recovery and more. The suite utilizes the CI testing environment, breaks it, rebuilds it, validates it… Expects specific output, expects specific failure messages, specific analysis, specific outcomes.

As example, with the system tests suite, we can test the behavior of a master failover in a multi-DC, multi-region (obviously simulated) environment, where a server marked as “candidate” is lagging behind all others, with strict rules for cross-site/cross-region failovers, and still we wish to see that particular replica get promoted as master. We can test not only the topology aspect of the failover, but also the failover hooks, Consul integration and its effects, etc.

Development

There’s now multiple options for developers/contributors to build or just try out orchestrator.

Build on GitHub

As mentioned earlier, you actually don’t need a development environment. You can use orchestrator CI to build and generate a Linux/amd64 orchestrator binary, which you can download & deploy as you see fit.

I’ve signed up for the GitHub Codespaces beta program, and hope to make that available for orchestrator, as well.

Build via Docker

orchestrator offers various Docker build/run environments, accessible via the script/dock script:

CI environment: the “full orchestrator experience”

This is the orchestrator amusement park. Run script/dock system to spawn the aforementioned CI environment used in system tests, and on top of that, an orchestrator setup fully integrated with that system.

So that’s an orchestrator-MySQL topology-Consul-HAProxy setup, where orchestrator already has the credentials for, and pre-loads the MySQL topology, pre-configured to update Consul upon failover, HAProxy config populated by consul-template, heartbeat injection, and more. It resembles the HA setup at GitHub, and in the future I expect to provide alternate setups (on top).

Once in that docker environment, one can try running relocations, failovers, test orchestrator‘s behavior, etc.

Community

GitHub recently announced GitHub Discussions ; think a stackoverflow like place within one’s repo to ask questions, discuss, vote on answers. It’s expected to be available this summer. When it does, I’ll encourage the community to use it instead of today’s orchestrator-mysql Google Group and of course the many questions posted as Issues.

There’s been a bunch of PRs merged recently, with more to come later on. I’m grateful for all contributions. Please understand if I’m still slow to respond.

12 May, 2020 07:13 AM

18 April, 2020

Diego Iastrubni

המסע של אנדרואיד – הפצת אנדרואיד שונה – /e/ – חלק 14

כל מי שיחק עם הטלפון שלו מכיר את LineageOS. היא התחילה בשם CyanogenMOD על ידי משתמש ג’נטו לשעבר. הוא רצה לבנות מחדש את הסלולרי שלו – בדיוק כמו המחשב. אבל… אנדרואיד זה לא AOSP ולכן צריך להוסיף מלא תוספות של גוגל המוכרים אצלנו בתור gapps. וזה… מאוד קינייני והופך את הסלולרי למכונת מעקב של גוגל.

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

אני כבר כמה שנים מנסה להתקין רום כזה על המכשיר שלי, וכיום מצאתי הפצה חדשה של אנראויד בשם /e/ שכוללת אותו by-default (קישור למאמר וויקיפדיה שלהם כאן). היוצר של ההפצה הוא גאל דובאל (היוצר המקורי של מנדרייק -> מנדריבה). הוא רוצה להמשיך מה שעשה בדסקטופ – אל המכשירים הסלולרים. הוא מספק הפצה (פורק) של LineageOS והתקין עליו microG ועשה rebranding והטמעה של כמה תוכנות חופשיות אל תוך ההפצה. ההפצה היא מאוד opinionated אבל לדעתי היא עושה את זה בטוב טעם.

המכשיר בשימוש כמה שבועות, ולא ראיתי דברים רבים שחסרים. אבל יש… הינה רשימה:

נכון לעכשיו – מבחינתי, המכשיר נשאר עם ה־ROM הזה, אבל אני חייב להודות, שהוא פשרה לעומת מכשיר שמריץ את התוכנה המלאה של אנדרואיד. אני אנסה להפעיל את החיבור למשתמש שלי בגוגל שם, להתקין תוכנות “מקוריות” ולנסות שוב. יש מלא דברים קטנים שבורים… אבל בתור משתמש קצה, אין לי בעייה לוותר עליהם. מזכיר לי הרצה של לינוקס באמצע שנות ה־2010, עם כמה יישומי wine. זה עובד, אבל עקום.

הטקסט המלא

18 April, 2020 05:56 PM

Kaplan Open Source Consulting

סדנאות QGIS במאי 2020

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

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

  1. מה זה QGIS ופלאגאין עבור מידע ישראלי פתוח (10 במאי, דרך Zoom)
  2. סדנת מבוא ל-QGIS (11 במאי, דרך Zoom)
  3. סדנת QGIS למתכנני ערים (12 במאי, דרך Zoom)

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

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

18 April, 2020 11:55 AM

16 April, 2020

Hamakor

אסיפה כללית של עמותת המקור – 26.4.2020

שלום לחברי וחברות עמותת המקור,

בתאריך 26.4.2020 בשעה 19:00 תכונס אסיפה כללית של עמותת המקור – עמותה ישראלית לתוכנה חופשית וקוד מקור פתוח (ע"ר).

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

על סדר היום: 

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

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

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

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

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

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

16 April, 2020 07:11 PM

13 April, 2020

Guy Rutenberg

Prevent applications from increasing output volume in PulseAudio

By default, PulseAudio allows an application to change the max volume output to be louder than the one set by the user. I find it annoying that some apps tend to set volume to 100% which ends up increasing the system volume to unreasonable levels. You can prevent it by setting flat-volumes to no in ~/.config/pulse/daemon.conf.

$ echo "flat-volumes = no" >> ~/.config/pulse/daemon.conf 
$ pulseaudio --kill
$ pulseaudio --start

With flat-volumes = no PulseAudio uses relative volumes. Each applications sets its own volume relative to the system output.

References:

13 April, 2020 11:28 AM

12 April, 2020

Gilad Ben-Yossef

זכרונות מגלגול קודם בגלקסיה רחוקה

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

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

מעבר לכך בסוף ההרצאה יש קטע בונוס מיוחד – גילוי של גלגולו הנוכחי של יודה, כאן ועכשיו!

תהנו!

12 April, 2020 03:08 PM

04 April, 2020

Guy Rutenberg

Fast bytes concatenation in Python

So what is the fastest way to concatenate bytes in Python? I decided to benchmark and compare few common patterns to see how they hold up. The scenario I tested is iterative concatenation of a block of 1024 bytes until we get 1MB of data. This is very similar to what one might do when reading a large file to memory, so this test is pretty realistic.

The first implementation is the naive one.

def f():
    ret = b''
    for i in range(2**10):
        ret += b'a' * 2**10
    return ret

It is known that the naive implementation is very slow, as bytes in Python are immutable type, hence we need to realloc the bytes and copy them after each concatenation. Just how slow is it? about 330 times slower than the append-and-join pattern. The append-and-join pattern was a popular (and efficient) way to concatenate strings in old Python versions

def g():
    ret = list()
    for i in range(2**10):
        ret.append(b'a' * 2**10)
    return b''.join(ret)

It relies on the fact that appending to lists is efficient and then ''.join can preallocate the entire needed memory and perform the copy efficiently. As you can see below it is much more efficient than the naive implementation.

Python 2.6 introduced the bytearray as an efficient mutable bytes sequence. Being mutable allows one to "naively" concatenate the bytearray and achieve great performance more than 30% faster than the join pattern above.

def h():
    ret = bytearray()
    for i in range(2**10):
        ret += b'a' * 2**10
Comparing the naive, join and bytearray implementation. Time is for 64 iterations.
Comparing the join, bytearray, preallocated bytearray and memoryview implementation. Time is for 8196 iterations.

What about perallocating the memory?

def j():
    ret = bytearray(2**20)
    for i in range(2**10):
        ret[i*2**10:(i+1)*2**10] = b'a' * 2**10
    return ret

While this sounds like a good idea, Pythons copy semantics turn out to be very slow. This resulted in 5 times slower run times. Python also offers memeoryview:

memoryview objects allow Python code to access the internal data of an object that supports the buffer protocol without copying.

The idea of access to the internal data without unnecessary copying sounds great.

def k():
    ret = memoryview(bytearray(2**20))
    for i in range(2**10):
        ret[i*2**10:(i+1)*2**10] = b'a' * 2**10
    return ret

And it does run almost twice as fast as preallocated bytearray implementation, but still about 2.5 times slower than the simple bytearray implementation.

I ran the benchmark using the timeit module, taking the best run out of five for each. CPU was Intel i7-8550U.

import timeit

for m in [f, g, h]:
    print(m, min(timeit.repeat(m, repeat=5, number=2**6)))

for m in [g, h, j, k]:
    print(m, min(timeit.repeat(m, repeat=5, number=2**13)))

Conclusion

The simple bytearray implementation was the fastest method, and also as simple as the naive implementation. Also preallocating doesn’t help, because python it looks like python can’t copy efficiently.

04 April, 2020 03:34 PM

30 March, 2020

Diego Iastrubni

אתר נשבר – ושוחזר מגיבוי ישן

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

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

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

הטקסט המלא

30 March, 2020 07:21 PM

Gabor Szabo

Online Perl Mob Programming

For the full article visit Online Perl Mob Programming

30 March, 2020 05:54 AM

28 March, 2020

Boris Shtrasman

Packaging OSM for debian

בגלל המגפה כולם עכשיו מתחילים להרים שרתים ולהציג מידע על מפות, רק שכמעט כולם מתבססים על שירותי המיפוי של אחרים.  בדר"כ הפתרונות הן שימוש ב openstreetmap , google , esri  ואחרים (משום מה לא ראיתי איש שמשתמש במפה של  govmap.gov.il).

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

רק היום בדביאן יש בעייה באריזה של חבילות OSM.

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

כולנו אוהבים להשתמש בשירותי ה tile של OSM אבל אנחנו תלויים בשרתים של OSM שיעבדו במקום שיהיה לנו שירותי tile server משלנו.

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


לצערי אני לא יודע מספיק Java Script בשביל לפתור את בעיות האריזה של node-carto, וממה שהבנתי node-carto היא החבילה שתוקעת את שאר החבילות הנדרשות בשביל לבנות tile server של OSM.

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

את העזרה באריזה שלכם אפשר להגיש ב debian-gis@lists.debian.org וניתן לצפות בדיונים פה .

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

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

28 March, 2020 09:13 AM

23 March, 2020

Gabor Szabo

Remote or Distributed work

For the full article visit Remote or Distributed work

23 March, 2020 01:44 PM

11 March, 2020

Oz Nahum

Thoughts after leaving noris network after two years

After two years at noris network AG, yesterday was my last day with this company. It has been a long time since it felt so hard leaving a company. In my two years I worked with really great people on some of the most cutting edge technologies. All these things were not possible without the help of so many great people with whom I worked with. Some of them might read this post, so here is a big thanks. I wanted to summerize my two years and gather all the lessons I learned in one place for my future self and others too. It's quite hard summerize such an eclectic post. It's been a wild ride in noris network with lots of new technologies and ideas. We have had a lot of success. I would like to think that a great part was because we opted to work in an open source matter, even thougah not all our projects where open source. This blog post is a summary of the good things we did, and the positive leasons we learned. I hope reading through these will inspire you to choose a similar path. continue reading...

11 March, 2020 03:55 PM

30 January, 2020

ik

היה שלום פרל, ותודה על הסימנים

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

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

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

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

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

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

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

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

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

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

30 January, 2020 07:45 AM

22 January, 2020

Gilad Ben-Yossef

מאיפה מגיעה פיטי?

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

הפוסט הזה מדבר על "פיטי" (Pīti). זו מילה בפאלי שיכולה להיות מתורגמת כ- "שמחה"'. פיטי היא מצב מנטלי, אחד מהסנקהרות (מצבים מנטליים) שהם מצרף אחד מחמשת המצרפים שמרכיבים את מה שאנחנו קוראים וקוראות לו "אני". "שמחה" היא תרגום טוב, אני חושב (ותודה לקרן ארבל על התרגום!), אבל כמו הרבה מילים שמתארות מצב מנטלי רגשי מסויים, אני חושב שהיא לא בהכרח תתקשר את ההרגשה למישהו אחר. בויסודימאגה (מילולית: "נתיב ההתעוררות", טקסט פרשני לסוטות שנכתב על ידי בודהגוסה) מופיע תיאור של אדם צמא הנודד במדבר ופיטי היא התחושה שעולה בו למראה נווה מדבר ובו בריכה של מים וההבנה שהוא עומד לשתות – לפני המגע עם המים עצמם.

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

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

"לאחר שנטשתי את חמשת המכשולים, שהם פגמים של התודעה הגורמים להחלשת החכמה, ולאחר שנפרדתי מהתשוקה להנאות החושים וממצבי תודעה לא-מועילים [אחרים], נכנסתי ושהיתי בג’האנה הראשונה, [המאופיינת] בשמחה ועונג [גופני] שנולדו מהבחנה (viveka) המלווים במחשבה וחקירה."

מקור: https://www.buddhism-israel.org/5213

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

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

ובכן, מכאן כבר יותר קל להבין מה משותף בין פיטי ממקור ארצי חושני לפיטי ממקור לא ארצי ולא חושני. זוכרות מהם התנאים שמנה הבודהה לכניסה לג'האנה הראשונה? "…לאחר שנפרדתי מהתשוקה להנאות החושים וממצבי תודעה לא-מועילים [אחרים], נכנסתי ושהיתי בג’האנה הראשונה". אז גם פיטי לא ארצית ושאינה חושנית באה מסיום (זמני) של ההשתוקקות – סיום לא בעקבות שקיבלנו מה שרצינו, אלא מתוך ויתור על ההשתוקקות.

וזה בעיני מעניין מאוד, מדוע? ובכן, ב- Cula Dukkha Khanda Sutta מתאר הבודהה כיצד לא מספיק להכיר בחוסר השקט, אי הסיפוק והסבל שנובע מהשתוקקות להנאות החושים, אלא יש למצוא שמחה שאינה מגיעה מהנאות החושים כדי להגיע לשחרור. הניסוח מצביע כמובן על השמחה (פיטי) של הג'האנה. אבל יש פה פרט מעניין – לכאורה אפשר לחשוב כי הפיטי, השמחה הלא ארצית בג'האנה היא תחליף לשמחה מהנאות החושים.

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

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

מי יתן ותזכו לכל השמחה שתרצו.

22 January, 2020 09:24 AM

20 January, 2020

Boris Shtrasman

משלוח התראות של פיקוד העורף ב KDE ו Gnome

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

צריך להוריד את סמליל פיקוד העורף ולשים אותו ב
/usr/share/oref/240px-Pakar.svg.png

כשיש התראה קופץ חלון התראה גרפי:

בשביל חיבור ממשק טקסט (משל ssh) יש גם התראת טקסט :
Broadcast message from user@pi (pts/4):         

Oref : [{
"title" : "התרעות פיקוד העורף ",
"data" : ["מבקיעים"]
}]


הקוד עצמו  :
#!/bin/bash
#License : MIT
#Copyright (c) 2019 Boris Shtrasman

#Permission is hereby granted, free of charge, to any person obtaining a copy
#of this software and associated documentation files (the "Software"), to deal
#in the Software without restriction, including without limitation the rights
#to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
#copies of the Software, and to permit persons to whom the Software is
#furnished to do so, subject to the following conditions:

#The above copyright notice and this permission notice shall be included in all
#copies or substantial portions of the Software.

#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
#IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
#FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
#AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
#LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
#OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
#SOFTWARE.

if [ $# -ne 1 ]; then
echo "$0 expect alert url"
echo "example:"
echo "$0 http://www.oref.org.il/WarningMessages/Alert/alerts.json";
exit 1
fi
#send a notification for each user that has X session, and accept notif
function notify_user()
{
users=($(who | sed -nr "s/([a-z]*)[ \t]*.*\((:[^)]+)\).*/\1,\2/p" | sort|uniq))
summary=$1
text=$2
for i in "${users[@]}"
do
user=$(echo $i | cut -d',' -f1)
screen=$(echo $i|cut -d',' -f2)
id=$(id -u $user)
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$id/bus
#I use screen to avoid blocking the process for other connected users, I'm obligated to use sudo as notify-send need to be run under the same user which own the session.
#This unfurtunatly will take over fullscreen Firefox or flash video
screen -Dm sudo -u $user /bin/bash -c "DISPLAY=$screen DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION_BUS_ADDRESS /usr/bin/notify-send -t 15000 -i /usr/share/oref/240px-Pakar.svg.png -u critical \"$summary\" \"$text\""

done
}

result=$( wget --header="Referer: https://www.oref.org.il/" \
--header="X-Requested-With: XMLHttpRequest" --header="User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0" --header="Accept: application/json, text/javascript, */*; q=0.01" -qO- $1)

if [ -e "$result" ]; then
echo "empty"
exit 0
fi

if [ ${#result} -lt 1 ]; then
exit 0
fi

#Send alert over all shells on the system.
wall "Oref : [$result]"
#Send alert for each UI session that support notify-send
title=$(echo $result|jq -s -r '.[].title')
amount_of_alerts=$(echo $result |jq -s '.[].data | length')
#if there had been no data members we can not iterate over it
if [ ! -z "$amount_of_alerts" ]; then
for (( alert_index = 0 ; alert_index < $amount_of_alerts; alert_index++))
do
area=$(echo $result|jq -r -s ".[].data| .[$alert_index]")
notify_user "Oref $title $date" "$area"
done
fi

exit 0


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

עריכה :


הקוד הזה דורש ש notify-send , jq ו wget יהיו מותקנים במערכת.

הקוד הזה מיועד ל X , אין לי wayland מותקן,  ואין לי דרך לדעת איך wayland עובד עם notify-send או אם notify_user()  תעבוד שם.

יש להפעיל את התסריט הזה מטיימר  או שורת cron, בשביל למשוך התראות חדשות 

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

20 January, 2020 01:38 PM

14 January, 2020

Omer Zak

What to reply to a computer science student who asked you to be his accomplice in cheating?

You probably are familiar with the phenomenon of students, who pay other people to write term papers, theses and projects for them to submit in order to meet academic requirements.

Few years ago, a computer science student named R. (a pseudonym) approached me and asked me to write for him and his partner a computer program, so that they will submit it to meet a requirement in order to pass a course, which they were studying.

Instead of taking money from him, I replied to him as follows.

I am approaching your question from the point of view of a mentor, teacher or a wise person needing to advise a young person, who is in a difficult situation and who is considering a bad solution to his problem. What the young person really needs is not to have someone else do his project for him, but long-term thinking: what are the long-term consequences of this solution, what alternative solutions exist, which obstacles exist in the alternatives, how to overcome those obstacles, the need to summon courage to change course.

For starters, as far as I am concerned, what you asked for is in the grey area between cheating and having an original solution to the problem. This is because certificates are not worth that much in the vocation of software development. Either the developer knows how to program or he doesn’t know, no matter what degrees or impressive certificates he has. If he does not know how to program, then within half a year his employer, if the employer has a clue, knows about it, and gives him a kick in the ass – reducing the long-term damage. Also, there are several people, who take on big projects and hire other people to do the actual work. However, the difference is that they have to provide the project with services such as marketing skills, project management, search and selection of development tools, money handling, etc. – instead of (or in addition to) software development skills.

Now to the point. Before proceeding further with what you and your partner are contemplating doing – I highly recommend that both of you read Ayn Rand’s “The Fountainhead” and follow Peter Keating’s career development in the book. He started out relying upon other people, like you are contemplating doing, made an impression on the right people and reached the top of his profession.

But… he didn’t last long and eventually he fell. And the sad truth is that he trained for the wrong vocation. There was a vocation that suited him perfectly, and he could really excel at it, but his mother pressed him to learn the vocation he actually learned (and in which he eventually failed). The saddest thing about his story is that when he realized which vocation is right for him and started engaging in it – it turned out that he started it too late and could not reach a high level of proficiency in that vocation.

If you and your partner decide to pay someone else to do your project, then:

What to do now?

I suggest that you first carefully review the decisionmaking process that led you to decide on a vocation in the software world. If you have taken psychotechnic tests and consulted with a specialist in the area of vocational selection, one of the tests was probably as follows:

  1. Go over a very long list of topics and highlight those which interest you.
  2. Group the interesting topics into groups, such that the topics in each group have the same theme from your point of view.
  3. Go over the groups and identify potential vocations related to each group.

Why am I telling you all this? Because if you kept the papers from your evaluation (or you can get them), you might find there a clue for identifying a vocation, which really attracts you and in which you can excel.

The next step is to determine if you have relatives, who are unwilling to accept that your future is not in the lucrative and profitable software world, but in another direction. Then check if and how to neutralize their influence upon your choice of the vocation that fits you.

I assume that the computer world is appealing to you, so you may want to check out some other vocations in this world besides writing software (I remember that in Hadassah Institute for Professional Selection Counseling in Jerusalem, where I did my vocational counselling, there was a library with descriptions of thousands of vocations – such a library could help you choose the right vocation for you). Examples: training, installation and configuring, software testing, maybe even administrative project management. Then go on to specialize in the vocation that suits you and in which you can excel.

True, you already started studying and already invested two years in your studies, and now I am proposing to write off all this investment and start over? Yes, however as far as getting a certificate or a degree is concerned, some of the investment will probably be lost. But as I said above, certificates are not that valuable in the software world. Like a pilot’s license does not turn someone, not having the aptitude to pilot, into an ace fighter pilot; also a software developer’s certificate does not turn someone not fit to be software developer into a great software developer. In terms of content – I’m sure you’ve learned something that will help you in any direction you choose for the rest of your life. And as far as the requirements for finishing your studies are concerned, once you know which direction is right for you, you probably can switch to a major which fits your vocational goals. In this case, you’ll probably be able to use some of the credits of the courses that you already completed. So what you already studied is not a total loss.

P.S.:

A student, who is paying someone else to do his homework, term papers, projects or theses, is like a basketball player who is paying someone else to go to his team’s practice sessions.

14 January, 2020 03:08 PM

04 January, 2020

Ilya Sher

“Use Dumb Shell, don’t Reinvent the Wheel”

Opening Rant

You don’t hear one developer saying “Just use Notepad” to a colleague with argumentation that goes roughly like this:

Why are you using this horrible Visual Studio Code? It has built-in debugger! No!

JetBrains IDEs? No! They do too much! They are so into the code!

Vim? Emacs? Not pure enough! Who needs that stupid syntax highlighting?

Keep text editing pure! Any semantic understanding by the text editor is undesirable, other programs should handle that. You don’t want to complicate the text editor.

Developers are not saying that because user experience and productivity matter. Yet, “Use Dumb Shell” is considered to be an acceptable opinion. Is that so common that people fall on their heads so hard (alternatively, did not give it any thought)? WTF?

The solution (shell) should be as simple as possible but not simpler than possible. Current shells are simpler than required by good user experience. Wrong trade-off. Keeping something simple is important but not more important than the outcomes.

Source: https://www.flickr.com/photos/toddle_email_newsletters/15413603567/
Image is a link to http://www.workcompass.com/

Additional food for thought:

  1. Why use a car when bicycle is so much simpler?
  2. Why use electricity when fire is so much simpler?
  3. Why have water in your house when a wells are so much simpler?

Background

I was doing consulting. The usual suspects: AWS, bash, Python, Puppet, Chef. Got to Terraform later. I had and I am still having subpar experiences with these tools. Anything I wanted to do, was overly burdensome, complicated and full of pitfalls.

Since I can’t attempt to fix everything, I picked the worst offender and started working on the alternative programming language and shell combo. The motivating opinion is that Ops have no good programming language nor adequate shell.

The absence of good programming language for ops was covered in another post. In this post I will cover some of the things that are wrong with the interactive shell.

The Shell

The dominant player is bash. It didn’t change much for decades: you type commands and get a dump of text on your screen. Most of the alternatives are essentially the same in this regard, for decades.

Is this because of the brilliant design? I would ask: which design? This? Quoting:

I wrote quite complex shell scripts and my first suggestion is “don’t”. The reason is that is fairly easy to make a small mistake that hinders your script, or even make it dangerous.

The “Dumb Shell” Approach

In this post I would like to address common thought that I hear from people regarding Next Generation Shell, a new programming language and a shell that I’m working on. Note that other shells which are more advanced than POSIX shells also get this. Quoting @cup from lobste.rs:

Wouldnt it be better to just have a dumb shell, that can call programs to do heavy lifting (read: programming languages). This way you have a “division of labor”. Shell works best for launching executables, and programming languages work best for handling data structures and algorithms.

No, it would not. I refuse to accept under-powered tools.

Dumbness is Fundamental Flaw

The “dumb shell” has no semantic understanding and doesn’t care about programs’ inputs nor outputs. Let’s see how it plays out.

Today, “Understanding” of programs’ inputs is covered by completion. Completion was added because “dumb shell” had horrible user experience. It’s slightly better now when the shell “understands” programs’ input to some degree. To some people completion is a scope creep. I think of it as better user experience and productivity gain.

“Understanding” of programs’ outputs? We are not there yet. It also seems that interacting with objects on the screen is too novel of an idea for the shell. Considering how much time this idea is out there: WTF?

Let’s see how this “dumbness” manifests as bad user experience even at the very basic, “intended” functionality:

Programs’ Output – Size

Do you know of any real world scenario when a human supposed to go over 10K lines on the screen? I mean just sit there and read it. Let me know. I’ve never seen such use case.

The shell is dumb, the shell “does not intervene” in programs’ outputs. Sounds good until you get unlimited number of lines dumped on your screen.

“Should have used less” you think later. Right. What if you forgot? The buffer is now filled with useless output and you can’t see outputs of previous programs. Are you being punished? No, just nobody cared about the UX. Alternatively, “it would be to complicated to implement”.

Programs’ Output – All Mixed

  1. Want to know what’s on your screen is stdout and what is stderr? Well… you can’t. Your shell is dumb, it doesn’t deal with things like that.
  2. Want to know from which program the output came from? Nope. Some programs cope with that to some degree by prepending their name to error messages: ls xxx gives you ls: xxx: No such file or directory. What a wonderful strategy! Keep the shell dumb and push the burden to all the programs.
  3. You can’t type because some background job is continuing to dump text on the screen where you are trying to work? Too bad, should have used redirection because guess what … you shell doesn’t handle that either… and you can’t add redirection after the program is running; again not shell’s business.

Programs’ Output – Semantic Understanding

You just typed aws ec2 describe instances --filters ... and now you have some output.

You now see on your screen instance you would like to stop. The ID of the instance is right in front of your face. Now you type aws ec2 stop-instances --instance-ids. You would like to append the instance ID that you see on the screen. Nope. Your shell doesn’t do that. Too dumb. Select with the mouse and paste, because f*ck you!

Side note: amazing AWS engineers did not include any human readable output format so you get JSON dumped on your screen (or any other format which is still non-human-compatible).

Let’s imagine for a moment that the command output had some semantic meaning to the shell.

  1. The shell would display the output as a table.
  2. The table would be interactive (interactive output, what a heresy!) and one could navigate with arrow keys and have a shortcut for copy/paste the current cell value to the command line (for completion).
  3. You could interact with the objects in the table with the mouse (very new concept, another heresy for the shell).
  4. How about instead of typing aws ec2 stop-instances --instance-ids you navigate to the correct line, press enter, choose “stop” from the menu and the command is constructed for you? aws ec2 stop-instances --instance-ids i-123... amazing, ha? Well, your shell can’t do that.

Meaning, do you speak it mo***er?

How about after performing operations using the UI you would get as per your choice one of the below snippets which would re-create the operation:

  1. CLI commands
  2. CloudFormation tempalte
  3. Terraform “code”

Solution: UI for the Shell

Suppose I agree for a second, what do you suggest?

https://github.com/ngs-lang/ngs/wiki/UI-Design

I personally don’t see how the described features could be implemented as external programs, keeping the shell “dumb”.

We Can Do Better Today

The reality has changed. What was once amazing is subpar by today’s standards. The world outside of the shell moved forward while the shell stayed almost the same. Brilliant design? Brilliant what?

Let’s move this industry together from the stone age of bash shell to the bronze age of something a bit less subpar – Next Generation Shell.

Closing Rant

Imaginary UNIX people:

We wanted to separate things because they are semantically different so we split the things into stdout and stderr. Well… stderr was is actually for everything that is not stdout.

One bit of metadata (stdout vs stderr) for semantic meaning of the output should be enough for everyone forever. Well… at least it’s simple for us to implement.


Update: discussion on lobste.rs

04 January, 2020 03:05 PM

28 December, 2019

Artyom Beilis

בינה מלאכותית על ZX Spectrum

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

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

היום אני עוסק בתחום בבינה מלאכותית ומשתמש בכרטיסים גרפיים חזקים ביותר שהביצועים שלהם נמדדים ב־Terra FLOPS. אבל לאחרונה נתקעתי בסימולטור של ZX Spectrum ועלה במוחי רעיון. האם אפשר לקחת את המשימות שאני עושה היום ולעשות אותה על המחשב של אז?

אז לקחתי את ה-Hello World של למידה חישובית זיהוי ספרות בכתב היד והחלטתי לממש את זה ב-ZX Spectrum.

להלן התוצאות:

https://github.com/artyom-beilis/zx_spectrum_deep_learning

mnist2

ניתן למצוא מאמר מלא באנגלית והסברים מלאים על התהליך כאן:

http://blog.cppcms.com/post/125

הטקסט המלא

28 December, 2019 09:33 PM

06 December, 2019

Itzik Kotler

Don't Let Your Fear Of Nation-State Hackers Blind You

Mr. Magoo is an old cartoon character famous for his inflated sense of status and an extreme case of myopia, made worse by his refusal to wear corrective glasses. As a result of his poor vision and ego, Magoo would find himself in precarious — and hilarious — situations because he was unable to see the danger right in front of him. Typically, the oblivious Magoo would leave a trail of destruction behind him..

Enterprises today approach security a lot like Mr. Magoo, operating with the idea that they are more important than they really are and therefore are unable to see the real risks that beset them. The result? A lot of unnecessary damage.

Read the full article at Forbes here

Full text

06 December, 2019 09:24 PM

17 November, 2019

Hamakor

מנכ"ל חדש לעמותת המקור!

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

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

וכעת ניתן לו להציג את עצמו:

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

אשמח לעזרתכם וכאן למענכם, סחף.

17 November, 2019 01:19 PM

14 November, 2019

Omer Zak

Automatic localtime management in ESP8266 and other low-memory IoT devices

Justification

During the last several years, personal computers and smartphones became capable of displaying the local time, correctly adjusted for daylight saving time (DST) – and without requiring human intervention beyond selecting the correct timezone.

Nowadays, there are also some IoT devices, which need to support local time management – displaying it, or otherwise making it available.

Timekeeping is performed using the Internet protocol NTP, which provides the correct UTC. When using a PC or a smartphone, the timezone is usually selected by manual user action.

However, some IoT devices may not have the UI needed for convenient timezone selection. Then it is desirable to support automatic timezone selection as a default.

How to implement automatic timezone selection?

There are some websites, which discover your IP address and provide you with the best guess of your timezone.

Since those websites usually provide the timezone name rather than the string describing the DST transition dates (the so-called tz_string), the next step is to figure out the DST transition dates from the timezone name.

In devices with plenty of memory this is carried out by means of a timezone database.

For example, in Debian/Ubuntu based systems, this database is stored in the /usr/share/zoneinfo directory and occupies 3.5MB (the relevant package in Ubuntu 18.04 is tzdata and its version, as of Nov. 2019, is 2019c-0ubuntu0.18.04).

Memory constrained IoT devices

However, IoT devices are typically based upon memory-constrained controllers and cannot afford to store locally the whole timezone database – just to correctly determine the local time for a single timezone.

Therefore, IoT devices need to access an Internet based service to get the correct timezone information, just as they get UTC time updates using NTP. In other words, those IoT devices effectively outsource the timezone database management.

Internet service for providing the timezone information

An Internet service, for providing the correct tz_string corresponding to a timezone name, needs to keep the timezone database up to date at all times.

I implemented the internet service as follows.

  1. A machine, running an Ubuntu 18.04 installation with a webserver, is used.
  2. The Internet service is implmented as a small WSGI-based website. It uses the database mentioned below.
  3. A script scans the /usr/share/zoneinfo contents and creates a small database for translating timezone names into the corresponding tz_string values.
  4. There is a mechanism for invoking the above script and restarting the web server each time the tzdata package is updated/installed/re-installed.

Show us the code!

The GitHub project tddpirate/tzdata2tzstring includes redacted versions of both an implementation of the above website and a sample ESP8266 client.

Credits

I wish to thank the Python Israel Telegram group members for advice about selecting a Python WSGI framework. I ended up selecting Falcon because benchmarks indicated that it is faster than Flask and Bottle.

The members of the לינוקס Telegram group deserve thanks, too. They helped me find the mechanism for appending my own postprocessing scripts after a Debian/Ubuntu package installation or upgrade.

14 November, 2019 04:59 PM

24 October, 2019

Arie Skliarouk

MYSQL/BTRFS/NVME failure

It is a very bad idea to run database (especially production one with lots of I/O) on BTRFS because the filesystem at any random time might become readonly:

Oct 24 12:30:22 db02 kernel: BTRFS: error (device nvme0n1) in btrfs_run_delayed_refs:2936: errno=-28 No space left
Oct 24 12:30:22 db02 kernel: BTRFS info (device nvme0n1): forced readonly
And then you find that you need to do rebalance. You try and find out that rebalance can not be done because - you guessed it - there is no space left. They suggest to delete couple of snapshots though. You delete them, start rebalance and now the whole filesystem is stuck completely.

If you need HA mysql db with snapshots, then you should go with mysq/LVM/DRBD path, see this link for insight: https://rarforge.com/w/index.php/2_Node_Cluster:_Dual_Primary_DRBD_%2B_CLVM_%2B_KVM_%2B_Live_Migrations

24 October, 2019 03:02 PM

21 October, 2019

Ilya Sher

Section Syntax – Next Generation Shell

Problem

Using comments to denote code sections feels like subpar solution.

One starts with something like the following:

// workaround for API stupidity
if(result === null) {
  result = [];
}

Then somebody adds another bit so it becomes:

// workaround for API stupidity
if(result === null) {
  result = [];
}
if(result === [1]) {
  foo();
}

Now you are not sure whether the second if is still workaround. You don’t want that. What I usually do in this situation and recommend to others is clearly mark start and end:

// workaround for API stupidity - start
if(result === null) {
  result = [];
}
// workaround for API stupidity - end

if(result === [1]) {
  foo();
}

Now you have duplicated text and subpar programming experience.

Solution

Today (2019-10-21) I have added section syntax (to dev branch) to the language I am working on, Next Generation Shell. I think it solves the problem in a clean way, consistent with syntax and semantics of the language:

section "workaround for API stupidity" {
  if result is Null {
    result = []
  }
}

Or:

result = section "Use algorithm X to calculate blah" {
  a = 1
  b = 2
  a + b
}

In future, for programmer’s convenience backtraces could be augmented with sections’ names.

Update: discussion

  1. https://www.reddit.com/r/ProgrammingLanguages/comments/dkzcls/section_syntax_next_generation_shell/
  2. https://lobste.rs/s/gert97/section_syntax_next_generation_shell

Have a nice week!

21 October, 2019 11:34 AM

23 September, 2019

Itzik Kotler

Demystifying Criminal Hackers

As I write these pieces for Forbes Tech Council, I’ve tried to chip away at the Hollywood reputation that hackers have been given over the years. That reputation often keeps people from making good decisions about how to protect their networks and data, keeps people focused on the wrong security priorities, and causes people to give up before the game is over.

It’s important to keep in mind, however, that while criminal hackers may be smart and devious, they are also, in a sense, entrepreneurs who are in the game to make a quick buck. As such, they realize that hacking costs money and so they will do what they can to keep their operating costs low. Why, then, would you expect a criminal hacker to expend time and money developing specialized tools when there are easier ways to get to what they want?

Read the full article at Forbes here

Full text

23 September, 2019 11:38 PM

17 August, 2019

Ilan Shavit

מנסה לעשות קצת סדר: GPT, MBR, UEFI, Legacy Bios

בתקופה הקרובה אני מתכוון לכתוב סדרת מדריכים בנוגע להתקנת Arch Linux. בהסברים אתייחס להתקנות במצבים השונים: התקנה בסכימת מחיצות MBR או GPT והתקנה תחת Legacy Bios או UEFI, אז כדי שההסברים העתידיים יהיו ברורים אקדים ואסביר אה המונחים הללו (שאצל רבים לא ממש ברורים)

אתחיל בהסבר על GPT ו- MBR:
מדובר בשתי דרכים שונות להגדיר את מנהל האתחול ואת טבלת המחיצות (Partitions) בדיסק הקשיח. ה- MBR-Master Boot Record היא השיטה הישנה והמסורתית בה הביוס פונה לאזור שבתחילת הדיסק הקשיח, קורא את מנהל האתחול (446 בתים ראשונים בדיסק), קורא את טבלת המחיצות שמוגדרת אח"כ (64 בתים), ואז טוען את מערכת ההפעלה (באמצעות מנהל האתחול) מהמחיצה המסומנת כ- Active. בשיטה זאת ניתן להגדיר עד 4 מחיצות ראשיות (Primary Partition). במידה ומעוניינים בעוד מחיצות, ניתן, על חשבון מחיצת Primary Partition אחת, להגדיר עוד 23 מחיצות לוגיות (באזור שנקרא Extended Partiton). לפיכך MBR תומך בעד 26 מחיצות – כמספר האותיות האנגליות. שימוש ב- MBR, מעבר להגדרה המוזרה של המחיצות, מגביל אותנו להשתמש בדיסקים בגודל של עד 2 טרה בייט, אין לו שרידות של טבלת המחיצות ולא מתבצעת בדיקת של שלמות ונכונות הנתונים שלה (משמש מצע טוב ונוח להידבקות בוירוסים).

טכנולוגיית GPT נותנת מענה לחסרונות של MBR: היא תומכת בדיסקים הגדולים מ- 2TB (תמיכה בעד 9.4 מיליארד טרהבייט), היא לא מוגבלת (תאורטית) בכמות המחיצות ואין בה הפרדה ל- Extended Partition ו- Logical Devices. טכנולוגיית GPT שומרת 2 העתקים של טבלת המחיצות ומבצעת עליהם בדיקת CRC, ובמידה וטבלת מחיצות אחת משתבשת היא משחזרת אותה מהגיבוי. GPT מהווה שדרוג של ממש ל- MBR ואני לא מוצא שום היגיון להשתמש כיום ב- MBR בהתקנה של מערכת הפעלה חדשה.

אמשיך בהסבר על Legacy Bios ו- UEFI bios. אז כמו שכתבתי: שניהם מהווים את הביוס של המחשב. מדובר באותו רכיב קושחתי שמתווך בין מערכת ההפעלה לחומרת המחשב. כשמדליקים את המחשב הרכיב הראשוני שנטען זה הביוס. הוא זה שמבצע את בדיקת ה- POST, מאפשר להיכנס ולערוך את ההגדרות שלו, לבדוק את זיהוי החומרה ולשנות ערכים שונים (נניח לשנות את קצב השעון עבור ביצוע over clocking, לשנות את המתח שמזינים את זכרונות ה- RAM ועוד…). לאחר הבדיקות העצמיות של החומרה, הביוס ניגש לדיסק הקשיח ומעביר למנהל האתחול את המשימה של טעינת מערכת ההפעלה. אבל כאן לא נגמרת פעילותו. כשמערכת ההפעלה עובדת והיא, למשל, צריכה לכתוב מידע לדיסק הקשיח, היא תעביר את הבקשה (דרך הקרנל של מערכת ההפעלה) לביוס והוא זה שיפנה בפועל את הבקשה לבקר שבדיסק הקשיח. אז במחשב, כפי שניתן להבין, הכל עובר ועובד דרך הביוס!

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

תאימויות:
מערכת הפעלה חלונות תומכת בסכימת מחיצות GPT רק אם משתמשים ב- UEFI. בלינוקס אין מגבלה כזאת: היא תומכת בסכימת מחיצות GPT גם ב- Legacy וגם ב- UEFI

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

17 August, 2019 05:11 PM

26 July, 2019

Ilan Shavit

Arch Linux

מי שעוקב אחרי הבלוג שלי יודע שעברתי להשתמש ב- Arch Linux . אז נכון: Arch זאת הפצת Bleeding Edge (רחוקה מאוד ממודל ה- LTS השמרני של Ubuntu לא כל שכן מדביאן היציבה). מסיבות שונות נמנעתי בעבר מלהשתמש בה, אך עם פיתוח כלים נוחים לביצוע Snapshot (כגון Timeshift, CYA או אפילו Snapshot ברמת LVM), כבר לא צריך להיות קיים החשש של "מה יקרה אם…" (במקרה הכי גרוע מבטלים את העדכון האחרון וממשיכים הלאה).

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

אחד היתרונות הגדולים של Arch הן אפשרויות הבחירה: לא בוחרים עבורך את שולחן העבודה או את האפליקציות איתן תעבוד. אתה צריך לבחור הכל, ובכך אתה בונה לעצמך את שולחן העבודה האולטימטיבי. ב- Arch כמעט ולא עושים החלטות עבורך: בחרת Gnome תקבל Gnome טהור – ללא שום קוסטומיזציה של ההפצה (כנ"ל בכל שולחן עבודה אחר שתבחר). אתה צריך להפשיל שרוולים ולייפות בעצמך את שולחן העבודה: לבחור פונטים יפים, לבחור בערכת נושא ואייקונים הקולעים לטעמך, אך גם אם תעשה את כל הפעולות הללו, עדיין תצטרך לטפל בבעיות "פינתיות" (למשל שאפליקציות QT לא יראו טבעיים בשולחנות עבודה מבוססים GTK). בהתחלה יהיו לך כמשתמש לא מעט נושאים לטפל בהם אבל פה היתרון הגדול: אפשרויות הלימוד שלך כמשתמש הן עצומות. ל- Arch יש WIKI נפלא, בעיני הטוב ביותר מכל הפצות הלינוקס, ודרכו אתה יכול ללמוד המון על לינוקס ועל Arch. ההפצה מאפשרת לך כמשתמש להינות מחבילות התוכנה העדכניות ביותר (ועדיין מאפשרת לשמרנים מבינינו לבחור בקרנל LTS וב- OpenOffice  LibreOffice Still). כיום Arch די יציבה. אני נוהג לעדכן את ההפצה אחת לשבוע (sudo pacman -Syu). לא הייתי ממליץ לעדכן את ההפצה באופן יומי וגם לא לעדכן אותה אחת לפרק זמן ארוך מידי… בכל יום שישי אני מבצע Snapshot ואז מעדכן אותה. בינתיים Arch לא "נשברה" לי אפילו פעם אחת, אבל גם אם כן אוכל לתקן זאת בקלות.

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

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

שולחן העבודה שלי: Gnome Shell בהפצת Arch Linux

 

26 July, 2019 06:48 AM

17 June, 2019

Oz Nahum

Visualize almost anything with Grafana and Python

This is a short tutorial on how to build a data source for Grafana using Python Bottle micro-framework. Eventually, you can use this code to connect to any database (including SQLite). continue reading...

17 June, 2019 08:01 AM

25 May, 2019

Amir Aharoni

Happy Africa Day: Keyboards for All African Wikipedia Languages

Happy Africa Day!

To celebrate this, I am happy to make a little announcement: It is now possible to write in all the Wikipedias of all the languages of Africa, with all the special letters that are difficult to find on common keyboards. You can do it on any computer, without buying any new equipment, installing any software, or changing operating system preferences. Please see the full list of languages and instructions.

This release completes a pet project that I began a year ago: to make it easy to write in all the languages of Africa in which there is a Wikipedia or an active Wikipedia Incubator.

Most of these languages are written in the Latin alphabet, but with addition of many special letters such as Ŋ, Ɛ, Ɣ, and Ɔ, or letters with accents such as Ũ or Ẹ̀. These letters are hard to type on common keyboards, and in my meetings with African people who would write in Wikipedia in their language this is very often brought up as a barrier to writing confidently.

Some of these languages have keyboard layouts that are built into modern operating systems, but my experience showed me that to enable them one has to dig deep in the operating system preferences, which is difficult for many people, and even after enabling the right thing in the preferences, some keyboards are still wrong and hard to use. I hope that this will be built into future operating system releases in a more convenient way, just as it is for languages such as French or Russian, but in the mean time I provide this shortcut.

The new software released this week to all Wikimedia sites and to translatewiki.net makes it possible to type these special characters without installing any software or pressing any combining keys such as Ctrl or Alt. In most cases you simply need to press the tilde character (~) followed by the letter that is similar to the one you want to type. For example:

Some of these languages are written in their own unique writing systems. N’Ko and Vai keyboards were made by myself, mostly based on ideas from freely licensed keyboard layouts by Keyman. (A keyboard for the Amharic language, also written with its own script, has had keyboards made by User:Elfalem for a while. I am mentioning it here for completeness.)

This release addresses only laptop and desktop computers. On mobile phones and tablets most of these languages can be typed using apps such as Gboard (also in iPhone), SwiftKey (also on iPhone), or African Keyboard. If you aren’t doing this already, try these apps on your phone, and start exchanging messages with your friends and family in your language, and writing in Wikipedia in your language on your phone! If you are having difficulties doing this, please contact me and I’ll do my best to help.

The technology used to make this is the MediaWiki ULS extension and the jquery.ime package.

I would like to thank all the people who helped:

This is quite a big release or code. While I made quite a lot of effort to test everything, code may always have bugs: missing languages, wrong or missing letters, mistakes in documentation, and so on. I’ll be happy to hear any feedback and to fix the bugs.

And now it’s all up to you! I hope that these keyboard layouts make it easier for all of you, African Wikimedians, to write in your languages, to write and translate articles, and share more knowledge!

Again, happy Africa day!

The full list of languages for which there is now a keyboard in ULS and jquery.ime:

25 May, 2019 07:03 AM

19 March, 2019

Meir Kriheli

מצב התרגום לעברית של Django 2.2

לאחר הפסקה לא קצרה עקב שחיקה, חזרתי לתרגם את Django עם שחרור 2.2 RC1. נכון ליום שלישי ה־19 במרץ התרגום עומד על 100% עבור:

נשארו בחוץ, שוב, עקב חוסר זמן והיקף המשימה:

19 March, 2019 04:56 PM

22 January, 2019

Amir Aharoni

Amir Aharoni’s Quasi-Pro Tips for Translating the Software That Powers Wikipedia

As you probably already know, Wikipedia is a website. A website has content—the articles; and it has user interface—the menus around the articles and the various screens that let editors edit the articles and communicate to each other.

Another thing that you probably already know is that Wikipedia is massively multilingual, so both the content and the user interface must be translated.

Translation of articles is a topic for another post. This post is about getting all of the user interface translated to your language, as quickly and efficiently as possible.

The most important piece of software that powers Wikipedia and its sister projects is called MediaWiki. As of today, there are 3,335 messages to translate in MediaWiki, and the number grows frequently. “Messages” in the MediaWiki jargon are strings that are shown in the user interface, and that can be translated. In addition to core MediaWiki, Wikipedia also has dozens of MediaWiki extensions installed, some of them very important—extensions for displaying citations and mathematical formulas, uploading files, receiving notifications, mobile browsing, different editing environments, etc. There are around 3,500 messages to translate in the main extensions, and over 10,000 messages to translate if you want to have all the extensions translated. There are also the Wikipedia mobile apps and additional tools for making automated edits (bots) and monitoring vandalism, with several hundreds of messages each.

Translating all of it probably sounds like an enormous job, and yes, it takes time, but it’s doable.

In February 2011 or so—sorry, I don’t remember the exact date—I completed the translation into Hebrew of all of the messages that are needed for Wikipedia and projects related to it. All. The total, complete, no-excuses, premium Wikipedia experience, in Hebrew. Every single part of the MediaWiki software, extensions and additional tools was translated to Hebrew, and if you were a Hebrew speaker, you didn’t need to know a single English word to use it.

I wasn’t the only one who did this of course. There were plenty of other people who did this before I joined the effort, and plenty of others who helped along the way: Rotem Dan, Ofra Hod, Yaron Shahrabani, Rotem Liss, Or Shapiro, Shani Evenshtein, Inkbug (whose real name I don’t know), and many others. But back then in 2011 it was I who made a conscious effort to get to 100%. It took me quite a few weeks, but I made it.

Of course, the software that powers Wikipedia changes every single day. So the day after the translations statistics got to 100%, they went down to 99%, because new messages to translate were added. But there were just a few of them, and it took me a few minutes to translate them and get back to 100%.

I’ve been doing this almost every day since then, keeping Hebrew at 100%. Sometimes it slips because I am traveling or I am ill. It slipped for quite a few months because in late 2014 I became a father, and a lot of new messages happened to be added at the same time, but Hebrew is back at 100% now. And I keep doing this.

With the sincere hope that this will be useful for translating the software behind Wikipedia to your language, let me tell you how.

Preparation

First, let’s do some work to set you up.

Priorities, part 1

The translatewiki.net website hosts many projects to translate beyond stuff related to Wikipedia. It hosts such respectable Free Software projects as OpenStreetMap, Etherpad, MathJax, Blockly, and others. Also, not all the MediaWiki extensions are used on Wikimedia projects; there are plenty of extensions, with thousands of translatable messages, that are not used by Wikimedia, but only on other sites, but they use translatewiki.net as the platform for translation of their user interface.

It would be nice to translate all of it, but because I don’t have time for that, I have to prioritize.

On my translatewiki.net user page I have a list of direct links to the translation interface of the projects that are the most important:

I usually don’t work on translating other projects unless all of the above projects are 100% translated to Hebrew. I occasionally make an exception for OpenStreetMap or Etherpad, but only if there’s little to translate there and the untranslated MediaWiki-related projects are not very important.

Priorities, part 2

So how can you know what is important among more than 15,000 messages from the Wikimedia universe?

Start from MediaWiki most important messages. If your language is not at 100% in this list, it absolutely must be. This list is automatically created periodically by counting which 600 or so messages are actually shown most frequently to Wikipedia users. This list includes messages from MediaWiki core and a bunch of extensions, so when you’re done with it, you’ll see that the statistics for several groups improved by themselves.

Now, if the translation of MediaWiki core to your language is not yet at 18%, get it there. Why 18%? Because that’s the threshold for exporting your language to the source code. This is essential for making it possible to use your language in your Wikipedia (or Incubator). It will be quite easy to find short and simple messages to translate (of course, you still have to do it carefully and correctly).

Getting Things Done, One by One

Once you have the most important MediaWiki messages 100% and at least 18% of MediaWiki core is translated to your language, where do you go next?

I have surprising advice.

You need to get everything to 100% eventually. There are several ways to get there. Your mileage may vary, but I’m going to suggest the way that worked for me: Complete the easiest piece that will get your language closer to 100%! For me this is an easy way to strike an item off my list and feel that I accomplished something.

But still, there are so many items at which you could start looking! So here’s my selection of components that are more user-visible and less technical, sorted not by importance, but by the number of messages to translate:

I put MediaWiki core last intentionally. It’s a very large message group, with over 3000 messages. It’s hard to get it completed quickly, and to be honest, some of its features are not seen very frequently by users who aren’t site administrators or very advanced editors. By all means, do complete it, try to do it as early as possible, and get your friends to help you, but it’s also OK if it takes some time.

Getting All Things Done

OK, so if you translate all the items above, you’ll make Wikipedia in your language mostly usable for most readers and editors.

But let’s go further.

Let’s go further not just for the sake of seeing pure 100% in the statistics everywhere. There’s more.

As I wrote above, the software changes every single day. So do the translatable messages. You need to get your language to 100% not just once; you need to keep doing it continuously.

Once you make the effort of getting to 100%, it will be much easier to keep it there. This means translating some things that are used rarely (but used nevertheless; otherwise they’d be removed). This means investing a few more days or weeks into translating-translating-translating.

You’ll be able to congratulate yourself not only upon the big accomplishment of getting everything to 100%, but also upon the accomplishments along the way.

One strategy to accomplish this is translating extension by extension. This means, going to your translatewiki.net language statistics: here’s an example with Albanian, but choose your own language. Click “expand” on MediaWiki, then again “expand” on “MediaWiki Extensions”, then on “Extensions used by Wikimedia” and finally, on “Extensions used by Wikimedia – Main”. Similarly to what I described above, find the smaller extensions first and translate them. Once you’re done with all the Main extensions, do all the extensions used by Wikimedia. (Going to all extensions, beyond Extensions used by Wikimedia, helps users of these extensions, but doesn’t help Wikipedia very much.) This strategy can work well if you have several people translating to your language, because it’s easy to divide work by topic.

Another strategy is quiet and friendly competition with other languages. Open the statistics for Extensions Used by Wikimedia – Main and sort the table by the “Completion” column. Find your language. Now translate as many messages as needed to pass the language above you in the list. Then translate as many messages as needed to pass the next language above you in the list. Repeat until you get to 100%.

For example, here’s an excerpt from the statistics for today:

MediaWiki translation stats example

Let’s say that you are translating to Malay. You only need to translate eight messages to go up a notch (901 – 894 + 1). Then six messages more to go up another notch (894 – 888). And so on.

Once you’re done, you will have translated over 3,400 messages, but it’s much easier to do it in small steps.

Once you get to 100% in the main extensions, do the same with all the Extensions Used by Wikimedia. It’s over 10,000 messages, but the same strategies work.

Good Stuff to Do Along the Way

Never assume that the English message is perfect. Never. Do what you can to improve the English messages.

Developers are people just like you are. They may know their code very well, but they may not be the most brilliant writers. And though some messages are written by professional user experience designers, many are written by the developers themselves. Developers are developers; they are not necessarily very good writers or designers, and the messages that they write in English may not be perfect. Keep in mind that many, many MediaWiki developers are not native English speakers; a lot of them are from Russia, Netherlands, India, Spain, Germany, Norway, China, France and many other countries, and English is foreign to them, and they may make mistakes.

So report problems with the English messages to the translatewiki Support page. (Use the opportunity to help other translators who are asking questions there, if you can.)

Another good thing is to do your best to try running the software that you are translating. If there are thousands of messages that are not translated to your language, then chances are that it’s already deployed in Wikipedia and you can try it. Actually trying to use it will help you translate it better.

Whenever relevant, fix the documentation displayed near the translation area. Strange as it may sound, it is possible that you understand the message better than the developer who wrote it!

Before translating a component, review the messages that were already translated. To do this, click the “All” tab at the top of the translation area. It’s useful for learning the current terminology, and you can also improve them and make them more consistent.

After you gain some experience, create a localization guide in your language. There are very few of them at the moment, and there should be more. Here’s the localization guide for French, for example. Create your own with the title “Localisation guidelines/xyz” where “xyz” is your language code.

As in Wikipedia, Be Bold.

OK, So I Got to 100%, What Now?

Well done and congratulations.

Now check the statistics for your language every day. I can’t emphasize how important it is to do this every day.

The way I do this is having a list of links on my translatewiki.net user page. I click them every day, and if there’s anything new to translate, I immediately translate it. Usually there is just a small number of new messages to translate; I didn’t measure precisely, but usually it’s less than 20. Quite often you won’t have to translate from scratch, but to update the translation of a message that changed in English, which is usually even faster.

But what if you suddenly see 200 new messages to translate? It happens occasionally. Maybe several times a year, when a major new feature is added or an existing feature is changed.

Basically, handle it the same way you got to 100% before: step by step, part by part, day by day, week by week, notch by notch, and get back to 100%.

But you can also try to anticipate it. Follow the discussions about new features, check out new extensions that appear before they are added to the Extensions Used by Wikimedia group, consider translating them when you have a few spare minutes. At the worst case, they will never be used by Wikimedia, but they may be used by somebody else who speaks your language, and your translations will definitely feed the translation memory database that helps you and other people translate more efficiently and easily.

Consider also translating other useful projects: OpenStreetMap, Etherpad, Blockly, Encyclopedia of Life, etc. Up to you. The same techniques apply everywhere.

What Do I Get for Doing All This Work?

The knowledge that thanks to you people who read in your language can use Wikipedia without having to learn English. Awesome, isn’t it? Some people call it “Good karma”.

Oh, and enormous experience with software localization, which is a rather useful job skill these days.

Is There Any Other Way in Which I Can Help?

Yes!

If you find this post useful, please translate it to other languages and publish it in your blog. No copyright restrictions, public domain (but it would be nice if you credit me and send me a link to your translation). Make any adaptations you need for your language. It took me years of experience to learn all of this, and it took me about four hours to write it. Translating it will take you much less than four hours, and it will help people be more efficient translators.

Versions of this post were already published in the following languages:

I’m deeply grateful to all the people who made these translations; keep them coming!

22 January, 2019 12:45 PM

21 October, 2018

Lev Meirovitch

Linux new Code of Conduct

Collection of links to emails, articles and posts about Linux Kernel CoC situation arranged by date.

21 October, 2018 05:26 AM

20 October, 2018

Lev Meirovitch

How not to protect your app

Examples of several wrong ways to make your app secure

20 October, 2018 01:51 PM

02 October, 2018

Guy Sheffer

RealtimePi – out of the box real-time RaspberryPi Raspbian

RealtimePi logo

RealtimePi logo

Hey all,
So it started as a curiosity, and it looks like its working. I made a Raspbian-based distro that ships with a realtime kernel called RealtimePi. You can download the latest here.  It’s open source, sources are here.

A realtime system means its deterministic, it means you should know how long things take to run. They way to do is is to apply a patch to the linux kernel that makes it non-preemptible. To explain – Preemption is the act of temporarily interrupting a task being carried out by a computer system, without requiring its cooperation, and with the intention of resuming the task later.

This is useful for building hardware and robotics, low latency audio and other gpio because there are no surprises when it comes to timing. It seems like something good to try out with the RaspberryPi, because of the GPIO and IOT capabilities.

Bundled with CustomPiOS you can build your customized realtime-kernel device.

Features

Steps to install

  1. Download the image here
  2. Unzip and flash it to an SD card (small enough to fit a 2GB card)
  3. Open newly flashed image and edit two files, one for the wifi, and one for the bot token:
  4. Put in realtimepi-wpa-supplicant.txt your wifi address (skip if using Ethernet cable). Here is how it should look:
    wifi

You can test the realtime kernel is enabled, by running in the commandline

uname -a

You should see something like this, note PREEMPT RT which indicates its realtime:

 Linux realtimepi 4.9.52-rt37 #1 PREEMPT RT Fri Oct 6 22:29:28 UTC 2017 armv6l GNU/Linux

The line should  look a little different for armv7

I am not an expert with actually building realtime systems, so input on how it preforms, and examples would be appreciated!

 

Full text

02 October, 2018 12:33 PM

01 October, 2018

Guy Sheffer

How to build a telegram-controlled sous vide using CraftBeerPiOS

Sous vide pot with tempreture sensor

Sous vide pot with temperature sensor

Hey all,
So I’ve been cooking sous vide a few months now, with a sous vide I built myself. Its connected to a RaspberryPi and can be controlled via the web or telegram.

No soldering required!

Flash a ready made image to the Pi!

Bill of materials

  1. Slow cooker (crockpot) with a ‘high’ option. You can get them second hand, they are pretty cheap. Make sure it has no digital control.
  2. Raspberry Pi, even version 1 should work – also an SD card and power supply for the Pi.
  3. Pi Plate prototype board. Make sure you get one that matches your Raspberry Pi footprint if you are re-using an old Pi.
  4. Solid state relay that can handle mains
  5. Power cables
  6. Data cable to connect the relay to the Pi
  7. Power socket and power connector for your country – get locally so it fits your country standard.
  8. Water resistant temperature sensor DS1820 x2 – Get a spare one so you can measure the temperature difference and make sure your sous vide is uniformly heated.
  9. Important – 3D printed enclosure for raspberrypi (Raspberry Pi 1) and enclosure for the relay – you are mixing water and electricity in a kitchen, don’t be an idiot.

Assembly

  1. Build the following construction from the relay. You need phase to go via the relay, and in to the sous vide. Please look at this chart to understand what cable is equivalent in your country.

    Relay assemply

    Relay assembly – brown writes is phase

  2. Close up the relay in its box, and attach the power plugs

    Relay in its case and power sockets in place

    Relay in its case and power sockets in place, transparent sticky tape protects case

  3. Wire the temperature sensor DS1820 to GPIO pin 4 (you can use one on the screw terminal and another on the jumper slot, the second one is only to make sure you have a working sous vide.
  4. Connect SSR – terminal to ground, and + terminal to GPIO 17 (you can pick other GPIOs if you want).

    Raspberypi wiring . Two temp sensors on GPIO 4, one Solid state relay (SSR) on GPIO 17

    Raspberypi wiring . Two temp sensors on GPIO 4, one Solid state relay (SSR) on GPIO 17

  5. plug the relay in the your power supply and plug your slow cocker to it. DANGER: Make sure your connections are right with a multimeter before. If you are unsure don’t do this. Mains power can kill!
  6. That’s it!
Rasepberrypi and relay in cases

Rasepberrypi and relay in cases

Sous vide pot with tempreture sensor

Sous vide pot with temperature sensor

Software

I have built a distro called CraftBeerPiOS based on CraftBeerPi 2.2. Why 2.2 and not 3? Because there is an issue with the license. I would have picked something else, but Manuel the developer clearly writes in the README that CraftBeerPi is open source. Its dodge I know, I would welcome someone rewriting something like this. I would help build a distribution.

Why telegram? (which is optional)

I found that telegram was much faster and handy while I am in the kitchen, or if I want to turn the sous vide on before I come home. So I warmly recommend it over CraftBeerPi’s interface. I will mark all its step as optimal in case you don’t want it.

Anyway,

  1. All you got to do is just flash the img to the Pi. Which can be downloaded here. It has both CraftBeerPi and a telegram bot pre-install. The bot is written by me and is open source.
  2. [optional telegram] Create a telegram bot using the botfather here is an explanation how to do this. Its really easy – basically you text a bot the command /newbot, you are asked a few questions and get an API token, you place this token in the file /boot/config.ini where its asked for.

    Setting a new bot

    Setting a new bot

  3. Open the sdcard /boot partition, you can do this on windows. And edit the file /boot/craftbeerpios-wpa-supplicant.txt

    Set wifi setting you need to change

    Set wifi setting you need to change

  4. [optional telegram] Add your telegram token

    config.ini setting

    config.ini, Telegram token goes here

  5. Pop the SD card in the Pi and boot it
  6. You might want to attach a screen on first boot and make sure everything went well. If it did, you should have on your network a service on http://craftbeerpi.local:5000 .If you can’t find the hostname try the Raspberrypi’s IP address. Depending on your network router it might not work.
  7. Follow on that link the wizard to set up your temperature, relay, and kettle.
    CraftBeerPi all set up with a thermometer and relay

    CraftBeerPi all set up with a thermometer and relay

    Hardware setting in craftbeerpi

    Hardware setting in craftbeerpi

    Screenshot_20180929_121241.png

    How the kettle configuration looks

  8. [optional telegram] Text your new telegram bot the command /start this should make your telegram user appear in the telegram control panel located at http://craftbeerpi.local:5001.
  9. Login default user is admin, password 1234
  10. [optional telegram] Set yourself as an admin, otherwise you can’t control your sous vide. This is for security reasons.

    CraftbeerPiBot access control

    CraftbeerPiBot access control

  11. [optional telegram] Send /help to the bot to see the available commands. You can set the sous vide temperature, turn it on and off.

    Sous vide bot list of commands

    Sous vide bot list of commands

Thats it, enjoy! Share recipes!

Sous vide pork belly cooked in maple and liquid smoke and rosemary for 18 hours at 72C

Sous vide pork belly cooked in maple and liquid smoke and rosemary for 18 hours at 72C

Full text

01 October, 2018 06:07 PM

31 July, 2018

Lior Kaplan

Debconf18 – יום ראשון

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

לצערי הכנסים של דביאן נפתחים מאוד בעצלתיים מבחינת תוכן – יש הרצאת/טקס פתיחת ואחרי אין ישר רצף גדול של הרצאות אלא טפטוף קטן של נושאים והרצאות. קצת מאכזב מבחינתי. ומצד שני, אפשר לי להתחיל לעבוד על החבילות של עברית בדביאן בלי לדאוג לפספס תוכן כלשהו. אבל לפני שאפשר לעבוד על החבילות, צריך לייצר סביבה מתאימה. לקח לי זמן להוריד חלודה לגבי מה צריך, ואיך לייצר משהו שיודע לבנות בתוך chroot (גם כדי שהבניה תהיה נקייה, וגם כי אני משתמש ב-testing בעוד שהבניה נעשית ב-unstable). בעזרת כמה תזכורות מ-Bálint הכל הסתדר, ויש סביבה עובדת עם sbuild.

השלב השני היה להתחיל להמיר את ההיסטוריה של הצוות מ-SVN ל-GIT ואז לדחוף את זה לשרת ה-GitLab החדש של דביאן. עשיתי את זה בנפרד עבור כל חבילה, כאשר הראשונה בתור היא Hspell כי צפריר הספיק להכין את הרוב מראש. ואחר כך עבדתי על המרת Culmus כי לא הייתי רוצה שהגרסה הבאה תצא בלי פונטים בעברית (על הדרך כבר הועלתה גרסה 0.132). כל המאגרים זמינים תחת Debian Hebrew Packagers בכתובת https://salsa.debian.org/hebrew-team . למי שצריך לעשות משהו דומה, הכלי להמרה היא git svn clone ואפשר להשתמש בהוראות שיש באתר git-scm.com בכתובת https://git-scm.com/book/en/v2/Git-and-Other-Systems-Migrating-to-Git . על בסיס הפקודות שלהם עוד עשיתי כמה שינויים קלים, אבל החלקים החשובים נמצאים שם.

בין לבין שמעתי את הדיווח השנתי של Chris Lamb במסגרת תפקידו כ-Debian Project Leader. בין השאר גיליתי שם כי דביאן תחגוג השנה יום הולדת 25 באמצע אוגוסט, וישר החלטתי לפתוח event כדי לחגוג עם עוד אנשים. נתראה שם בקרוב (: בנוסף, גיליתי כי המעבר של דביאן ל-GitLab נובע בין השאר גם מהשינוי שלהם בנושא ה-Content License Agreement ושינוי ל-Developer Certificate of Origin מה שמאפשר ליותר אנשים לתרום קוד בלי לוותר על הזכויות שלהם או לקרוא מסמך משפטי כבד. שאפו ל-GitLab, ואיזה כיף לעבור לעבוד במערכת מתקדמת.

31 July, 2018 02:40 PM

29 July, 2018

Lior Kaplan

Debconf18 – קדם כנס

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

היום הפתוח התנהל בחלקו בסינית, כך שאפילו לא ניסיתי ללכת להרצאות (גם לבודדות שהיו באנגלית), ובמקום זה התמקדתי בקצת שיחות עם אנשים (למרות העייפות). הספקתי לדבר עם Bálint Réczey שעובד עבור Canonical בצוות Ubuntu Foundation שאחראי על הסנכרון עם דביאן והתרומה של שינויים לקהילה. גם ניצלתי את ההזדמנות כדי לשמוע באיזה כלים הם משתמשים בפעילות, כדי לתזכר את עצמי. אחרי כמעט שנה שלא נגעתי בחבילות, אני בהחלט חלוד (וגם צריך לסדר את סביבת העבודה על המחשב). אגב, קנוניקל מחפשים אנשים עובדים, אם מישהו מתעניין, צרו קשר בפרטי (יש אפשרות לעבוד מרחוק, ואוכל לעזור בסידורים הנדרשים).

בהמשך הערב ישבתי על באג שדיווח לקוח על פיצ'ר של PHP שלא עובד לו מול OpenSSL. תפסתי את Kurt Roeckx שאחראי על החבילה בדביאן וגם עושה עבודת upstream בכמה שנים האחרונות כדי לבדוק את הנושא. אחרי קצת שאלות מולו ובדיקות שלי הסתבר שהבעיה היא לא ב-OpenSSL אלא ב-PHP, ואחרי מספיק חיטוטים בקוד נפתח באג #76676.

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

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

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

מי שרוצה לעקוב אחרי הכנס מרחוק, אז הלוח זמנים נמצא בכתובת https://debconf18.debconf.org/schedule, רק לא לשכוח שהכנס מתקיים באזור זמן +8, כלומר 5 שעות לפני ישראל (ריאלית, אפשר לצפות בהרצאות של אחרי ארוחת הצהריים כאן, שזה 9 בבוקר בישראל).

29 July, 2018 04:17 PM

10 July, 2018

Rabin Yasharzadeh

Overwrite the default GTK theme per application

I love using a dark theme on my system, currently I’m running the Adapta theme. But not all applications looks great in dark themes, some need tweaking, this is a quick hack to overwrite the default theme used for a specific application.

In this example I’ll be overwriting the theme for virt-manager.

First we’ll copy the default launcher/desktop file to the local dir, and then we will change that file,

sudo cp /usr/share/applications/virt-manager.desktop /usr/local/share/applications/virt-manager.desktop
sudo vim /usr/local/share/applications/virt-manager.desktop

And do this small change, prefix the application Exec command with

env GTK_THEME=theme_name

--- /usr/share/applications/virt-manager.desktop 2018-02-28 22:48:50.000000000 +0200
+++ /usr/local/share/applications/virt-manager.desktop 2018-07-09 11:00:40.000000000 +0300
@@ -55,7 +55,7 @@
Comment[sv]=Hantera virtuella maskiner
Comment[uk]=Керування віртуальними машинами
Icon=virt-manager
-Exec=virt-manager
+Exec=env GTK_THEME=Adapta virt-manager
Type=Application
Terminal=false
Categories=System;

10 July, 2018 12:24 PM

03 June, 2018

Rabin Yasharzadeh

Convert certificate format with OpenSSL

Convert a PEM file to DER (crt etc)

$ openssl x509 -outform der -in certificate.pem -out certificate.crt

Convert a PKCS#12 file (.pfx .p12) containing a private key and certificates to PEM

$ openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes

Convert a PEM certificate file and a private key to PKCS#12 (.pfx .p12)

$ openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt

 

03 June, 2018 09:25 AM

07 May, 2018

Meir Kriheli

מצגת ההרצאה NoORM

למרות כותרת ההרצאה הפרובוקטיבית, ההרצאה שלי ב־PyWeb-IL 75 עוסקת במקרים בהם עלינו לעזוב את מחוזות ה-ORM/ODM.

מצגת ההרצאה NoORM זמינה בעמוד הרצאות ומצגות.

07 May, 2018 09:26 PM

25 April, 2018

Arie Skliarouk

GRUB-based multiple iso booting flash drive

With huge USB flash drives of today it is sad that one can't easily put several bootable ISO images on it and have nice on-boot selection menu.

GRUB to the rescue!

Historically GRUB is being used for hard disks and syslinux for floppies and flash drives. But nothing prevents using GRUB for flash drives as well. Here are instructions for creating bootable GRUB-based USB flash drive (disk on key):

  1. Create vfat partition. For big drives you must use fat32 format.
  2. Unpack the http://skliarie.meshanet.com/skliarie_blog/boot.tar.gz onto it. It will create single directory boot on the drive.
  3. Customize boot/grub/grub.cfg file, put iso images accordingly
  4. On linux box, put bootable MBR onto the DOK (for example on /dev/sdf):
    1. mount /dev/sdf /mnt/dok
    2. grub-install --force --no-floppy --root-directory=/mnt/dok /dev/sdf
    3. umount /mnt/dok 

    Caveats:

    The ISO image must support GRUB-based booting. Specifically it must be smart enough to locate ISO image on the DOK using parameters specified in grub.cfg file.

    Latest Ubuntu and Debian based ISO images are known to work.

    Thanks to Jonathan Vollebregt there is a way to boot knoppix as well. You will need custom initrd, with your flash drive specific tuning. I built one for mine: knoppix_minirt.gz, you are free to take and modify it according to your DOK and filesystem parameters. Important commands here are:
    1. Unpack the initrd
      gzip -dc /mnt/dok/boot/knoppix/minirt_ska.gz | cpio -i
    2. Modify the init file (put sector numbers that are correct for your DOK)
    3. Compress back the initrd
      find ./ | cpio -H newc -o | gzip -9 -c > /mnt/dok/boot/knoppix/minirt_ska.gz
    Please send me GRUB stanzas for other ISO images and I will put them into the grub.cfg file.

    25 April, 2018 08:21 AM

    19 March, 2018

    Tom Bigelajzen

    Font Progress Update

    The Ubuntu Font Hebrew v0.8 Design PrototypeThere was some progress made this week, especially with fine tuning the letters and revising those letters I’m not so sure about.
    The one letter I’m struggling with is Aleph (א), I can’t seem to find the right balance.

    I got a lot of feedback and many good tips, thank you everybody 🙂
    I’m doing my best to take them all into account.

    I was trying to add some Hebrew glyphs to a font file, but the free font creation programs I tried (FontForge and the Demo of TypeTool) are not so friendly, it will take some more time to do.

    Links to v0.8:
    PDF file
    Illustrator CS4 File

    19 March, 2018 08:15 AM

    Ubuntu Font Hebrew Subset now has an issue on Launchpad

    The Ubuntu Font Hebrew v0.8 Design PrototypeI opened an issue on launchpad and it was added to the Ubuntu Font Family Wishlist queue.

    As an added bonus Mark Shuttleworth himself gave his blessing to this design effort (!)
    It was a fun mail to start the day with 🙂

    I want to quote one thing he wrote:

    It *would* be useful if you could start building up a Hebrew community that can provide early and accurate feedback to DM when they start the Hebrew design process.

    And later, Paul Sladen wrote:

    developing a typeface takes a very long-time (months and months), and although
    work on Hebrew won’t be incorporated until the Ubuntu 11.04 development cycle,
    it is very useful to start working on it now!

    So, I really want to start working on it seriously (too bad I didn’t start this before August Penguin…)
    This week I guess I’ll finish the initial design with the good tips I got from Paul Sladen and from Maxim Ioresh, but this is only the beginning:

    A real OpenType font must be created and refined, people need to test it, to find where it breaks.
    And there are more variants –  we have to do the Bold font, the Italic and Bold Italic, and by the time these will be finished there most likely be some Condensed variants too… so I need designers, typographers and testers to pitch in, we have a bit more than 6 months, it’s enough, but not a lot of time for a community project.

    Original post: http://tombigel.com/2010/08/26/hebrew-for-the-ubuntu-font/

    This is fun! I love Open Source.

    19 March, 2018 08:15 AM

    05 March, 2018

    Lior Kaplan

    Running for OSI board

    After serving in the board of a few technological Israeli associations, I decided to run as an individual candidate in the OSI board elections which starts today. Hoping to add representation outside of North America and Europe. While my main interest is the licensing work, another goal I wish to achieve is to make OSI more relevant for Open Source people on a daily basis, making it more central for communities.

    This year there are 12 candidates from 2 individual seats and 5 candidate for 2 affiliate seats (full list at OSI elections wiki page). Wish me luck (:

    Full text

    05 March, 2018 09:37 AM

    25 February, 2018

    Ira Abramov

    עוד פרויקט שלא אגיע אליו: עוזר חכם ובית חכם

    האם אתם רוצים מערכת כזו? התשובה מורכבת.

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

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

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

    1. יש מיקרופון והמחשב שמאזין לו, מנסה לבטל רעשי רקע ולהתמקד במה שעלול להיות דיבור.
    2. אח"כ תוכנה אחרת שבודקת אם זה אכן דיבור ומתרגמת אותו לטקסט. זה אולי הרכיב הכי מתוחכם במערכת ונחמד שיש אופציה או שתיים ברישיון חופשי (אבל כרגע אני די בטוח שזה עובד רק באנגלית, ולא יעבוד בעברית בקרוב. מקווה שלא תהיה בעיה עם זיהוי מבטא לא ילידי :)
    3. אחרי שיש לנו טקסט אפשר לפענח ממנו את הפקודה גם אם לא נאמרה בצורה תקנית אחת. כלומר "התראה עוד שעה" או "בבקשה כוון לי תזכורת בעוד שעה מעכשיו, תודה" הם שני משפטים שונים למדי אבל המחשב צריך לזהות את שניהם. הרכיב הזה והרכיב הקודם הם הרכיבים שקורים בענן של גוגל או אמאזון או מיקרוסופט שאותם אני רוצה להביא אל תוך הבית.
    4. בשלב הזה אפשר להפעיל מיני תוכנות וסקריפטים (מייקרופט למשל קוראים לזה "כשרונות" והקהילה פיתחה כבר כ-140 כאלו), כאן מגיעה ההתממשקות עם MQTT ורכיבי חומרת Sonoff השונים, או גישה לרשת כדי לדבר עם חשבון הגוגל שלכן כדי לבדוק איש קשר או לדחוף ארוע ליומן, וכיוצא באלו.
    5. לבסוף לאשר או להחזיר משוב למשתמש בצורת רכיב אחר שהופך תשובת טקסט לדיבור, מסנטזים כאלו יש הרבה בשוק – היה לי אפילו על אפפל ][ עם 64K זכרון, לצערי האיכות התפתחה מעט מאוד מאז בתוכנה פתוחה. מקווה שישתפר בעתיד.

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

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

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

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

    25 February, 2018 03:50 PM

    16 January, 2018

    Artyom Beilis

    CppCMS עובר מ-LGPLv3 ל-MIT

    היום עדכנתי רישיון של CppCMS ל-MIT. הגרסה הקרובה 1.2 תשוחרר עם רישיון מעודכן

    ההחלטה נובעת ממספר סיבות:

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

    הטקסט המלא

    16 January, 2018 09:47 AM

    04 January, 2018

    Levi Shahar

    איך לא להגן על הרשת אלחוטית שלכם

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

    Full text

    04 January, 2018 09:25 AM

    28 November, 2017

    Lior Kaplan

    AGPL enforced: The Israeli ICT authority releases code

    Data.gov.il was created in 2011 after the Israeli social justice protests as part of the the public participation initiative and started to offer data held by the government. Back then the website was based on Drupal. In 2016 it was changed to CKAN, a designated system for releasing data. This system is licensed under the AGPLv3 requiring source code availability for anyone who can access the the system over a network, de facto for every user.

    Since the change to CKAN, open source people asked the state to release the code according to the license but didn’t get a clear answer. All this time when it’s clear it’s violation.  This led Gai Zomer to file a formal complaint in March 2017 with the Israeli State Comptroller. Absurdly, that same month the ICT authority mentioned a policy to release source code it owns, while failing to release code it has taken from others and adapted.

    With the end of the summer break and Jew holidays, and after I wasn’t able to get the source, I decided to switch to legal channels, and with the help of Jonathan Klinger and my company, Kaplan Open Source Consulting, we notified they should provide the source code or we’ll address the court.

    Well, it worked. In 3 days time the CKAN extensions where available on the website, but in a problematic way, so users weren’t able to download easily. This is why we decided not to publish this code release and let them fix it first. In addition we made it clear all the source code should be available, not only the extensions. Further more, if they already release it’s recommended to use git format instead of just “dumping” a tarball. So we told them if they aren’t going to make a git repository we’ll do that ourselves, but in any case, would prefer them to do that .

    While this issue is still pending, the ICT authority had a conference called “the citizen 360” about e-gov and open government in which they reaffirmed their open source plans.

    A slide about open source from the Israeli ICT authority presentation

    A slide about open source from the Israeli ICT authority presentation

    Now, a month later, after our second letter to them, the about page in data.gov.il was updated with links to the ICT authority GitHub account which has the sources for the website and the extensions. A big improvement, and an important mark point as the commit to the repository was done by an official (gov.il) email address.

    Beyond congratulating the Israeli ICT authority for their steps forward and the satisfaction of our insisting on them became fruitful, we would like to see the repository get updated on a regular basis, the code being given back to the various CKAN extensions (e.g. Hebrew translation). In general, we hope they would to get inspired by how the how data.gov.uk is doing technical transparency. If we allow ourselves to dream, we would like to see Israel becoming a dominate member in the CKAN community and among the other governments who use it.

    We’re happy to be the catalyst for open source in the Israeli government, and we promise to keep insisted where needed. We know that due to other requests and notifications more organizations are on their way to release code.

    (This post is a translation from Hebrew of a post in Kaplan Open Source Consulting at https://kaplanopensource.co.il/2017/11/20/data-gov-il-code-release/)

    Full text

    28 November, 2017 09:07 AM

    28 October, 2017

    Levi Shahar

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

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

    Full text

    28 October, 2017 09:25 AM

    18 October, 2017

    Ram on Agmon

    אובנטו 1710 – גירסה ששווה להתקין

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

    הטקסט המלא

    18 October, 2017 05:06 PM

    31 July, 2017

    Ira Abramov

    כפתור פראנויה לכל כיס

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

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

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

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

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

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

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

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

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

    שו"ת

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

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

    אני בונה היום אתר, להשקיע באימות כזה למשתמשים שלי?
    גם TOTP-2FA וגם U2F – לדעתי כן, במיוחד אם האתר שומר פרטים אישיים של כרטיסי אשראי, בריאות מטופלים ועוד כיוצא באלו. יש ספריות חופשיות שקל לשלב, ולמערכות כמו וורדפרס, דג'נגו, ג'ומלה, רובי-או-ריילז ואחרות יש כבר מודולים מוכנים לקטיפה מהעץ, אז חבל להתעצל!

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

    יש מתחרים ראויים?
    יש כמה. חלקם יתנו U2F בלבד בפחות מ$10-$20, חלקם יקרים מאוד אבל עושים דברים נוספים כמו לשמש כארנק קריפטומטבעות (למשל Trezor ואחרים) ויש גם אופציות "האקריות" פתוחות כגון OnlyKey שמוסיף שכבות הגנה כמו סיסמא, פיצ'רים כמו השמדה עצמית וכדומה. יש מצב שאקנה כזה בעתיד, למרות שהוא נראה פחות עמיד מכנית לשבירה ושפשופים.

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

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

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

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

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

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

    31 July, 2017 04:51 PM

    18 June, 2017

    Amir Aharoni

    סיסמה

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

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

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

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

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

    אני מרוצה מהשינוי של „תכנה” ו„יזמה” ל„תוכנה” ו„יוזמה”. אני גם מרוצה למדי מהשינוי של מילות היחס „אתי, אתך” ל„איתי, איתך”, ושל „עתים” ל„עיתים”, אבל מוזר לי ביותר שלא נוספה בהזדמנות הזאת האות יו״ד למילים כמו „אִגרוף” ו„מִחזור”, כדי לא להתבלבל עם „אֶגרוף” ו„מַחזור”. זה היה יכול להיות כלל פשוט ושימושי, והוא ממש לא היה אמור להיות שנוי במחלוקת. חבל שזה התפספס.

    עוד משעשעים אותי ה„אישורים” שנינתו למילה „אומנם” וליו״ד בצורת הגוף הראשון בזמן עתיד בבניין נפעל, למשל „איכנס” במקום „אכנס”. אני תמיד כתבתי אותם בכתיב מלא. את „אומנם” כתבתי בווי״ו כי גם „אֻמנם” הוא ניקוד תקני ולא רק „אָמנם”, וצליל u תמיד אמור להיכתב בווי״ו (אם כי עכשיו גיליתי לראשונה שהניקוד „אֻמנם” מיועד לשאלות, לפחות לפי אבן־שושן). ובבניין נפעל כתבתי תמיד „איכנס”, „איזהר”, וכו׳, כי הניקוד בחיריק תקין כמו בניקוד בסגול (ר׳ למשל גזניוס 51p).

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

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

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

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

    18 June, 2017 11:03 AM

    13 January, 2017

    Ram on Agmon

    סיכום שנה שנת 2016 + מצבה של התוכנה החופשית

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

    הטקסט המלא

    13 January, 2017 12:10 PM

    18 October, 2016

    PyCon Israel

    Pycon Israel 2016 wrap up

    A little less than six months ago, we held the first PyCon in Israel. To our dismay, it took us this long to post all the videos from the event, but now they’re finally up, and you can finally catch up on The Track Not Taken.

    We’d like to take this opportunity to clear the 2016 table and summarize the conference, to give it some closure.

    The conference was a lot of work and fun to organize, and truly wonderful to witness. We’ve had:

    Over and beyond the hard data, there was a great feeling of a community coming together.

    There’s a few points we want to discuss in more details:

    Diversity

    We made a conscious effort to make the conference more welcoming to diverse populations. This included a well-defined Code of Conduct, as well as reaching out to specific communities, which are usually underrepresented in technical conferences. This included, of course, the cooperation with Django Girls Tel Aviv, who were invited to the conference; we did not collect the statistics of visitor gender, but we have reason to believe it was significantly more balanced than usual. We also reached out to some other groups who were less clearly visible. By all the feedback we got, everybody felt very welcome.

    To our regret, we could not show the same level of diversity among the speakers. Only 3 of the 32 accepted talks were presented by women, and none of these were Israeli. Further, we did not have a travel-support plan for speakers, and partly as a result of that, we did not have any speaker from the less-privileged parts of the world. We still have some way to go there.

    We intend to keep pursuing diversity in future editions of PyCon Israel.

    Budget

    In the spirit of Open Source and transparency, we’re happy to share a summary of our budget (all numbers are thousands of Shekels).

    Income

    Sponsorship: 246

    Ticket sales: 54

    Total: 300

    Expenses

    Venue (incl. food): 134

    Conf. party (food+movie): 41

    Keynote speakers travel: 30

    Speaker’s dinner: 13

    Video recording & editing: 20

    T-shirts & other swag: 28

    Wireless internet: 5

    Various other: 3

    Total: 274

    As you can see, we ended with a positive balance of close to 26K ILS. This is more than we intended, a miss we attribute to over-cautiousness and inexperience. A small part of this surplus will go to support Hamakor, the Israeli F/OSS association which helped make the conference happen, and the rest will go into the budget of the next PyCon Israel.

    Community organizations

    We’d like to call out three special groups which could use your help — participation as well as sponsorship; groups whose ongoing work enabled this conference and will hopefully enable others like it in the future:

    2017

    Since so long has passed, we can also add a look to the future: Preparations for PyCon Israel 2017 have already started! You can join the organizing team, or just keep track of our progress via our different channels -

    Blog: https://medium.com/@pyconil

    Twitter: @pyconil, #pyconil

    YouTube channel: https://www.youtube.com/channel/UC8ApA9ibgkf0XK7lgTVZgEQ

    Facebook: https://www.facebook.com/pyconisrael/

    Google group: https://groups.google.com/forum/#!forum/pycon-israel (requires registration)

    Website: http://il.pycon.org/

    Final words

    Watching the months of preparations come to full fruition made our hearts burst with joy. We’d like to thank everyone involved — all CFP submission authors, the invited and accepted speakers, the sponsors (and in particular the Diamond sponsors, Red Hat & Cymmetria), the vendors (and in particular the helpful staff of our wonderful venue at Yes Planet), the Israeli Python community in general for making such an event possible, and you, the attendees, for making it a reality.

    See you in 2017,

    The PyCon Israel organizing team

    18 October, 2016 07:45 PM

    23 September, 2016

    Yosef Or Boczko

    GNOME 3.22 שוחרר !

    צהריים טובים.

    לאחר מחזור פיתוח בן שישה חודשים, שוחררה גרסה 3.22 של שולחן העבודה GNOME !

    GNOME 3.22 Hebrew

    גרסה זו מכילה 22980 שינויים שנרשמו ב־Git על ידי 775 תורמים, בהשוואה ל־28933 שינויים על ידי 837 תורמים ב־3.20.

    אחוז התרגום עומד על 80% (36912 מחרוזות מתורגמות, 3682 מעורפלות ו־49874 שאינן מתורגמות), בהשוואה ל־80% (36069 מחרוזות מתורגמות, 3702 מעורפלות ו־4937 שאינן מתורגמות) ב־3.20 ו־82% (37120 מחרוזות מתורגמות, 3326 מעורפלות ו־4675 שאינן מתורגמות) ב־3.18.

    על התרגום בעיקר אני אחראי, ולאחרונה הצטרף ניב באר ותרגם את חלק מהתיעוד למשתמש „צעדים חדשים ב־GNOME” (נקרא ‏gnome-getting-started-docs) ואפילו החל לתרגם ליישומים (טרם מצאתי זמן להכניס את התרגומים האחרונים שלו).

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

    כרגיל, אוסיף כאן שיר. שיר יפה, שפשוט נהניתי לנגן על הפסנתר.

    בברכה,

    יוסף אור

    23 September, 2016 02:47 PM

    14 August, 2016

    Yosef Or Boczko

    מצב תרגום GNOME – לקראת 3.22

    ערב טוב.

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

    אחוז התרגום עומד על 80% (36915 מחרוזות מתורגמות, 3727 מעורפלות ו־4987 שאינן מתורגמות), בהשוואה ל־80% (36069 מחרוזות מתורגמות, 3702 מעורפלות ו־4937 שאינן מתורגמות) ב־3.20 ו־82% (37120 מחרוזות מתורגמות, 3326 מעורפלות ו־4675 שאינן מתורגמות) ב־3.18.

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

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

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

    ערב טוב,

    יוסף אור

     

    14 August, 2016 04:05 PM