Categories
Blather Software and Programming

Snake in a crib

From a recent article titled “Python is eating the world“:

Python may never have existed at all had the popular programming languages in the late ’80s been better, with one of van Rossum’s motivations for creating Python being the incompatibility of the Perl scripting language with the Amoeba distributed computing system he was working on at CWI. “The lucky thing for Python is that Perl was unportable to Amoeba,” he says. “If it had been possible to port Perl to Amoeba, I would have never have thought of starting my own language.”

Pitch for a science fiction short story:
Knowing the perfect inflection point for altering the timeline to prevent Perl’s doom, our heroes enlist Damian Conway, who manages to construct a working Time Machine in five terse lines of Perl 6. Unfortunately(?), his code is not supported on any existing implementation, because of concurrency problems…

Categories
Blather Software and Programming

She’s Lost ConTroll Again (Hebrew)

רציתי להגיד משהו באינטרנט, בעניין תוכנת ניהול הכנסים שהעמותה משתמשת בה. אני מדבר כמובן על חומי. סליחה, קונטרול. קונטרול היה השם שאורי פולגר נתן לתוכנת ניהול הכנסים שכתב בשביל אחד מכנסי העמותה (תנ״כ? כונסה? כפי שאנו רואים מהעדר שם קצר וקליט, לא בדיוק תחום לוהט בעולם ההיי-טק). מאז התפתחה הקונטרול בהשפעת שני כוחות: מתנדבים מארגני כנסים שרצו להשתמש בה ולהוסיף בה מיני פיצ׳רים דרושים, ומתנדבים מכנתים שהוסיפו את אותם הפיצ׳רים בעודם מקטרים על פגמי המערכת ותחלואיה וחולמים בערגה על היום שבו יזדמן להם לבנות את הכל מחדש כמו שצריך.
לפחות זו הבנתי (החלקית והלקויה, אך רבת-השנים) לגבי תוכנת ניהול הכנסים של העמותה הקרויה קונטרול.
בימים האחרונים למדתי, שמישהו כתב מחדש כמו שצריך תוכנת ניהול כנסים לעמותה, והיא שימשה גם בביגור האחרון ואולי גם בכנסים קודמים. אני חושד שיש כל מיני משתמשים ותיקים של המערכת שהוחלפה שזועמים על הזזת הגבינה (פעם התעללתי בעידו פנסקי המסכן ואילצתי אותו לנהל ביגור עם אתר כנס שהודבק מכמה פלאגאינים של וורדפרס, אז אני יכול רק לדמיין מה אנשים פחות סטואיים ממנו עלולים להרגיש).
אבל מה שאני רואה או מבין (וכאמור, אני ג׳ון סנואו מוחלט בנושא) שמתנגדי המודרנה ממקדים את כעסם בכך שהבחור שמנהל את פרוייקט קונטרול הנוכחי (א) רואה בעבודתו הבלתי-מבוטלת פרוייקט עצמאי ולא משהו תחת מטריית העמותה (ב) ולמרות זאת קורא לפרוייקט שלו קונטרול.
עצוב לי שהאנשים הללו, Michael Pevzner ו Itai Assaf Raizman-Greif מפגינים בכך חוסר-הבנה בסיסי לגבי הפסיכולוגיה של ההתנדבות שמתעלמת מכל מה שמלמדת אותנו ההיסטוריה של העמותה לדורותיה.
זוכרים את האחווה? גרעין מרכז? דרקוניקון? כל לארפ המוני וכל כנס נישתי? למה מתנדב שמרים כנס לראשונה בחייו רוצה לעשות את זה לבד, ולעצב את אתר הכנס בעצמו, אפילו שהינה רגע אני מחולל לך וורדפרס על אתר העמותה?
כי אנשים רוצים בעלות על הדברים שהם עושים. אנשים רוצים להיות מסוגלים להצביע על דבר ולהגיד *אני עשיתי את זה*. ההצלחה היא שלי, ההברקות והפאדיחות והפאקים הם שלי. או שלנו. אבל שלנו זה אני ואוגי, לא ״העמותה״, לא הקולקטיב.
כבר החוותי דעה שהעמותה לא אמורה לכתוב תוכנות ולתחזק אתרים (ומיד עוררתי את זעמו של איזה פעיל שהתקנת ויקי לצרכי פעילות מסויימת היא הבייבי *שלו*). כשמדובר בפרוייקט תוכנה התנדבותי גדול של פיתוח תוכנת ניהול כנסים כמו קונטרול, אז המתנדבים שמפיחים חיים בפרוייקט הם *מתכנתים*. למארגנים ומשתמשים ו״מנהלי מוצר״ יש תפקיד חשוב, אבל הם הלקוחות, זה לא הבייבי שלהם. רוצים להתקדם מעבר לגילגול כדור בוץ במעלה ההר ב-FTP מכנס לכנס? תנו למתכנתים המתנדבים תחושת בעלות על העבודה שלהם, תנו להם את הפרוייקט *שלהם* – הוא לעולם לא יהיה שלכם, כי אתם בצד של ״אני לוחץ על הכפתור וזה לא עובד״. אתם בצד של להרים כנס, ולא בצד של לאנדקס טבלאות כדי לייעל שליפות בבסיס הנתונים.
בדיוק כמו שאחראי תוכן של אייקון לא יכול להגיד ללארפרים איך להרים את הלארפ שלהם, בדיוק כמו שהלארפרים היו צריכים את האחווה שלהם כדי להביא לעמותה את ארועים שלהם (ואני מקווה שזו דוגמה היסטורית אנתרופולוגית, ושהעמותה מודל 2017 מלאה במתנדבים ששולטים במשחקים חיים כמו גם בשולחניים), כך גם כדי לפתח תוכנה בהתנדבות, צריך לתת למתכנתים המתנדבים את מרחב המחייה שלהם, את הגיטהאב ורשיון הקוד הפתוח והתקווה העמומה שהם כותבים מערכת מספיק כללית, גמישה ונכונה כדי שיום אחד אולי אפשר יהיה להרים עליה כנס שאינו כנס עמותה.
בקיצור, אני מבקש מכם – תרפו קצת, רדו מבריקדת זכויות היוצרים ונכסי העמותה והערכים והצדק ותיזכרו שאתם עובדים עם מתנדבים. מתנדב שעושה משהו כי זה מה שהוא רוצה לעשות מוצלח בהרבה ממתנדב שעושה משהו כי צריך לעשות אותו. אנשים רוצים להרגיש שהם בשליטה על מה שהם עושים, ואין דבר שיותר מפריע לאנשים טכניים (בין אם הם מתכנתים, עורכים לשוניים, גרפיקאים או מעצבי משחקים) מניהול של מישהו שהם רואים כלא-טכני. אדם לא-טכני שמבקש עזרה מעורר רצון לסייע, אדם לא-טכני שמנסה לנהל מעורר רצון להתחפף.

Categories
Software and Programming

Broken Links, a history

In 1996 Keith Shafer, and several others proposed a solution to the problem of broken URLs. The link to this solution is now broken.

The History of the URL: Path, Fragment, Query, and Auth / Zack Bloom

Categories
Software and Programming

GNU screen – persistent terminal sessions

So, you open a terminal, ssh to some server, start a long-running command and suddenly –
there’s a power cut / Moba or whatever program you are using dies / windows restarts

Is it all lost?
Well, yes. But there’s a way to avoid it:

use screen.

screen (aka GNU screen, for easier googling) is basically a session manager for the terminal.
To start it, ssh to your server and type “screen”.

You will notice that the screen clears and you’ve got another shell prompt. This shell is running under the screen session.

You can work in the shell as normal (i.e, starting an interactive command, ssh to another server, etc), or you can send commands to the screen session using the Ctrl-A key combination (^a).

To get a list of screen commands, type Ctrl-A ?
(or better yet, look up a cheatsheet)

To detach from the screen session, type Ctrl-A d
– this will get you out of the session, but leave screen running.

You can re-attach to the running screen from any other terminal session by typing screen -r

If you’ve left the screen session running in another terminal, you can take it over in your current terminal by typing the command screen -rd.

So, to put together what we’ve learned:

Start a screen session:
screen

Start a slow-running command in the shell:

$OUR_ROOT/tools/Foo/some_really_slow_script.pl -in ……

Leave it running, or detach with Ctrl-A d

Go home, reconnect to work (or go for lunch, come back after your machine rebooted by accident or whatever), ssh to the server where you ran screen, and type

screen -rd

to see if your script finished and carry on from where you left.

You leave screen by exiting all the shells you have open under the screen session, or with a keyboard shortcut I can’t be bothered to look up.

Bonus tips (i.e, all the screen commands my fingers know):

Ctrl-A c = open another shell session inside screen

Ctrl-A Ctrl-A = toggle between the two most recent open shell sessions

Ctrl-A ” = see a list of open shell sessions

Ctrl-A A = give a name to the current shell session

Ctrl-A ‘ = switch to a named shell session by typing (the start of ) its name.
Hope you find this useful,

Categories
Asides Software and Programming

ACM Classic: Reflections on Trusting Trust (Ken Thompson)

The press must learn that misguided use of a computer is no more amazing than drunk driving of an automobile.

via ACM Classic: Reflections on Trusting Trust.