Want to forward messages with images in Evolution E-mail client

Problem

I use the E-mail client Evolution running under Linux (Debian Buster distribution), version 3.30.5-1.1. I also configure it to default to Plain Text format when creating new messages.

I found that when I get a HTML message with embedded images and want to forward it to someone else, the text is forwarded but not the images, even when I set the forwarded message’s format to HTML (instead of Plain Text).

This happens in all four possible ways of forwarding the message (Forward As Attached, Forward As Inline, Forward As Quoted, Redirect).

Solution

The workaround I found is to reconfigure Evolution to default to HTML format before forwarding the message, and return to Plain Text afterwards. So when I click on the Forward button and Evolution initially constructs the message to be forwarded, it includes all contents of the original message, including the embedded images.

To reconfigure the default message format:

  1. Open the “Evolution Preferences” pop up dialog: Edit / Preferences.
  2. Select the pop up dialog pane: Composer Preferences / General.
  3. Toggle checkmark in Default Behavior / Format messages in HTML.
  4. Click on the Close button at bottom right of the dialog.

After defaulting to HTML format, forwarding an HTML-formatted message with images preserves the images, in all four possible ways of forwarding the message.

(Submitted to gitlab.gnome.org as Evolution issue #1406 and to bugs.debian.org as bug #984599.)

Which videoconferencing software supports closed captions?

If you need to explore alternative videoconferencing services, the following may help you. This information is up to date as of March 01, 2021.

Zoom supports both free tier, integration support, closed captions and API for 3rd party captioning.

RingCentral supports free tier, integration support and closed captions. No API for 3rd party captioning.

Webex supports free tier and integration support. No closed captions support was found!

Caption, for the deaf and HoH, a webinar streamed from Zoom to YouTube

Are you organizing a Zoom webinar and you need to both stream it to YouTube and provide real time closed captions for making it accessible to the deaf and Hard of Hearing?
Have you found, to your horror, that you do not know where to start?

Well, the following links will help you.

Additional links about making Zoom meetings and webinars accessible.

You feel guilty due to very high pay at work – what to do?

Say, you are being paid piece rate on work you do as a contractor. However your employer set up things in such a way that you are very productive. You feel that you are being overpaid and feel guilty about this.

What to do?

Do not suggest a reduction of your piece rate.

Instead of taking less from your employer, give your employer more.

Invest time at higher quality work even if it slows you down a bit. Do more work on your pieces. Look for ways to optimize even more the workflow in which you are a part. Train other workers to be more productive.

Theodor Herzl and the Basic Income plans

One hundred and twenty years ago, Theodor Herzl published a cautionary tale about what we know today as Universal basic income plans. He probably based his concerns upon the experience of the Romans under the Lex Frumentaria (buy grain from North Africa and Sicily and distribute it to citizens at a low price) plan. See also Gaius Gracchus.

Theodor Herzl wrote the story in German, and it was translated into Hebrew. I remember having read the Hebrew translation of the story at my childhood.

When I wanted to present to English speakers a contrarian point of view about the Universal basic income plans, I found to my surprise that no English translation of the story existed.

Well, now the English translation of Herzl’s story is now available for your enjoyment and education.

Alleviate social suffering from the COVID-19 by shortening its incubation period

A crazy idea:

Develop a preventive treatment for COVID-19, whose operation would be to shorten (yes, shorten!) the incubation period from contagion until development of the disease’s symptoms. So that the incubation period will be one or two days long like flu, instead of a week or even longer.

Then, ask everyone to undergo the treatment (maybe take pills).

This approach has few advantages:

  1. People, who were infected, will infect less other people, because they’ll know that they were infected and will isolate themselves promptly.
  2. There will be less need for PCR tests to confirm COVID-19 infection (why are we not doing tests to confirm flu infection?).
  3. People, who need to self-isolate, can release themselves from isolation faster, as the confirmation of their health would arrive earlier.
  4. It is possible that thanks to change in the flow of the disease, less people will suffer from the serious form of the disease. Of course, the opposite situation can happen and then it’ll be necessary to find another treatment, which does not have this side-effect.

הקלה על הסבל החברתי מהקורונה על ידי קיצור תקופת הדגירה שלה

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

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

לדרך פעולה זו יש כמה יתרונות:

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

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:

  • Anyone, who knows that you have done this, will be unable to help you look for a job, because they will have to lie if they vouch for your software development skills.
  • During software development work, there are periods of extreme pressure. Schools plan their course syllabuses so that an average student can handle the resulting pressure (with some sighs and groans). At work, pressure can be unlimited. So if you are unable to cope with pressure in school, it is very unlikely that you can cope with it at work. So you should consider a vocation, in which there is no such pressure.
  • You give up the fight to be really good professionals, who know when to accept failure like men (even at work there are some projects which fail, due to all kind of reasons, such as over-optimistic effort estimates, and it’s better to admit failure and move on to another project), and instead of accepting failure and its consequences, you are heading toward pretense.
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.

Orphan Technologies

Hi-Tech is failing people with disabilities

The other day, Nathan Zeldes wrote to me:

Between us, I’ve always been pissed off by the lack of progress in hi-tech solutions for severe handicaps; the fact that even the legendary Stephen Hawking was using a robot voice sounding like a Commodore 64 shows how little incentive companies (and society) have in driving leading edge solutions that could liberate people from severe disabilities.

To which I replied:

The problem is a lack of incentive to develop technologies which would help only few people. It just is not profitable. People cannot have a decent standard of living or support wife & children by working only on such problems. Subsidizing the development of such a technology could lead to the basic problem of socialism (possibility of turning a profit NOT by serving another person, the basis of “true” capitalism).

A similar problem exists with “orphan medicines” – medications and
procedures for treating very rare illnesses.

What could be done?

In discussions with Nathan Zeldes and with Dr. Yoav Medan (who is involved with the orphan technology of 3D printing of prosthetic hands), the following ideas were mentioned.

1. Students doing Final Projects

  • STEM students, who do their final projects, can profit from working
    on an orphan technology as their final project. The students provide
    a service and in exchange for it, they gain experience which will help
    them later make more money in their careers.
    However, most students cannot bring a product to market. The
    best they can do is to solve problems in a local and limited community.
  • People, who are not students, could gain both experience and reputation by working on such problems.
  • Companies could sponsor such projects, in order to get favorable
    advertising, improve their reputation, etc.
  • It would be a good idea to develop ways to quickly monetize experience/reputation to allow people to live well by doing those projects for a living.

2. Dual-use Technologies

For the deaf and HOH (Hard of Hearing), most of the relevant technologies happen to have dual use, starting from Alexander Graham Bell’s telephone. Robert Weitbrecht’s acoustic coupler was useful not only for allowing deaf people use teletypes over phone lines (and not only over telex lines) but also for other data communication users.

My personal experience was with adding Hebrew support to the Nokia 9110 and Nokia 9210 smartphones at the beginning of 21st century. Those cellular phones were very useful for the deaf in the pre-SMS era thanks to their ability to send and receive FAX messages. Since Hebrew support was useful also for Hebrew-speaking hearing people, it was a profitable endeavor for Erez Zino and me. See also: כנגד קול הסיכויים (in Hebrew).

A variant of this approach is for biotech and pharma companies, when developing a new technology, to first develop it to treat orphan/rare diseases. This gives them regulatory and reimbursement advantages. Once the technology is developed, it is applied also to common diseases, for which established therapies already exist.

An example is Minovia, which is developing a cell therapy technology to treat mitochondrial diseases. They began by targetting the Pearson Syndrome, which affects only 100 children worldwide.

3. “Micro-business” methodology and support services

Orphan technologies become orphan because the Hi-Tech world is based upon economics of scale. To develop a technology, you need a sufficiently big market to make it worthwhile. A business needs to have a minimum size to have any chance for success.

A methdology, infrastructure and support services to facilitate “micro-businesses” would overcome the above barrier. A micro-business would be a business, which does not require more than few hours a month, after some reasonable initial investment in building it, and would be very profitable (in terms of net income per hour) serving its very limited market.

One such possibility is to have spread out creativity centers (both physical and in the WWW) which help people develop their ideas. Examples: TAMI hackerspace and HAIFAUP.

4. Affluent end-users subsidizing the development

One could get affluent people needing an orphan technology to fund its development. Even if they are few, just one millionaire, with a child afflicted with the problem, could be enough to fund the orphan technology’s development.

Variations of this approach:

  • Government funding of technologies needed to rehabilitate army veterans with disabilities.
  • Collaboration with a non-profit devoted to the disease in question. Some of them have money or access to donors.
  • Philanthropic funding (from people not needing the orphan technology or themselves).
  • A variant of philanthropic funding is to use crowdfunding websites (Headstart, FundIt, PipelBiz, Indiegogo, KickStarter, etc.) to donate to a project.
  • Some companies declare upfront that they will allocate a certain percentage of their profits to social causes (including orphan technologies development), without expectation to make any financial returns.

5. Impact Investments

Some people invest not only for profit but also for social impact. They invest in underserved areas where they can see an eventual upside. An example is Social Finance Israel.

What could make me oppose Bibi Netanyahu – מה היה גורם לי להתנגד לביבי נתניהו

במערכות הבחירות של 2015 ו-2017, שמתי לב לתופעה מעניינת.

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

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

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

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

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

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

  1. תגבור הכפיה הדתית והתרבות תופעות של הדתה בחיי היום יום.
  2. היחס ליהודים קונסרבטיביים ורפורמיים.
  3. תופעות של ישראבלוף – אם מתברר שהגזימו כלפי מעלה בחישוב הייצוא או יתרות מט”ח של ישראל, או הגזימו כלפי מטה בהערכת אחוז האבטלה בישראל.
  4. תופעות של ישראבלוף ביחסי החוץ של ישראל, למשל אם לאחר שנתניהו נואם על היחסים המצוינים עם ארץ מסוימת, מתברר שהם מצביעים נגד ישראל באו”ם ועושים בעיות לתיירים ואנשי עסקים ישראליים שמגיעים לארץ זו.
  5. מדיניות כלכלית פופוליסטית ו/או תיעדוף סקטורים כלכליים מסוימים בגלל לחצים פוליטיים.
  6. פגיעה בהתפתחות סקטור ההיי-טק בישראל על ידי מיסוי, רגולציות או מדיניות כושלת אחרת.
  7. הגדלת קיצבאות לחרדים ולאנשים אחרים שיכולים לעבוד ואין להם באמת צרכים מיוחדים – לרמה שמעודדת אותם להתבטל ולא לנסות לפרנס את עצמם.
  8. עצירת השקעות בתשתית – תחבורה, אינטרנט מהיר, ניצול אנרגיות מתחדשות.
  9. שחיתות שמתבטאת בפרויקטי תשתית שתוכננו לא נכון ואינם משרתים את הצרכים האמיתיים של עם ישראל. כנ”ל – בהצטיידות בכלי נשק ע”י צה”ל.
  10. ניוון מערכות ההשכלה הגבוהה.
  11. בעית דיור אמיתית-אמיתית, שמתבטאת בצפיפות דיור גבוהה ו/או דיירי רחוב שנזרקו לרחוב שלא בגלל בעיות נפשיות/שכרות/סמים.
  12. הימנעות מהשקעה בבדואים בדרום כדי שלא ייהפכו לעדה של אנשים שמראש מניחים שהם עבריינים, כמו השחורים בארה”ב.
  13. היחס לדרוזים ברמת הגולן לעומת היחס לערבים ביהודה ושומרון. יחס לא הוגן לדרוזים הללו יהיה סימן אזהרה שישראל הולכת להיות מדינה גזענית שמפלה לרעה שכבות אוכלוסיה מסוימות.
  14. איסור על ספרים, סרטים והצגות תיאטרון שמשחירות את פני ישראל, ושהופקו ב-100% מימון פרטי ללא תמיכה ממשרד החינוך והתרבות, ושמוצגות באולמות בבעלות 100% פרטית ללא שותפות ממשלתית או עירונית.

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

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

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.