Outputting PDFs with your own fonts from your Django application

Do you use reportlab for creating PDF files from your Django application, as instructed in Outputting PDFs with Django?
Do you wish to add your own font files?
Do you need to render Hebrew text?

If yes, the following information will help you.

When installed in a virtualenv, as recommended by good working practices, reportlab searches for font files it uses in your virtualenv/lib/python3.x/site-packages/reportlab/fonts and it is not good idea to add your own font files there.

Instead, add your font files to your_project_root_directory/reportlab_extra_fonts where your_project_root_directory is where your project’s manage.py is located. Add the following to any Python script that uses reportlab (usually views.py), after all regular reportlab import and configuration statements.
# The following configures extra reportlab fonts.
import os
from django.conf import settings
reportlab.rl_config.TTFSearchPath.append(os.path.join(settings.BASE_DIR, 'reportlab_extra_fonts'))
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
HEBREW_FONT_NAME = 'your_font_name'
pdfmetrics.registerFont(TTFont(HEBREW_FONT_NAME, 'your_font_file_name.ttf'))
# The above configures extra reportlab fonts.

If you want to properly display Hebrew in your PDF file (the probable reason why you needed to add your own fonts in the first place), you need to convert the text yourself from logical ordering to visual ordering, because reportlab (as of version 3.4.0) does not currently process BiDi text. For this purpose, install the python-bidi package in your virtualenv (using pip install python-bidi) and add the following import statement to your views.py script:
from bidi.algorithm import get_display
Now, get_display() will reorder your BiDi text.

Information on notetaking in events

The following are links to documents about notetaking in events in Israel. The documents are in Hebrew.

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

How to manage money before registration of the Hamakor nonprofit

Hamakor – an Israeli nonprofit for Free Software and Open Code was founded at 2003 and one of its goals is to help deal with money when organizing various activities around Free Software.

Before founding Hamakor, people resorted to other solutions. In one exhibition, we wanted to distribute Linux installation CD-ROMs to the crowd. However, we wanted those CD-ROMs to reach only people who have a serious intent to install Linux. A way to ensure it was to require them to donate money in exchange for their CD-ROM. However, if we collect money, we must issue receipts and do bookkeeping.

Truly Yours had the brilliant idea of inviting other nonprofits to send a representative to collect the donations and issue receipts. It was a win-win-win solution. We get someone to issue receipts and sweat over the bookkeeping. The nonprofits get money for their operations. The people, who paid for their CD-ROMs, treat them seriously.

One of the nonprofits was the Association of the Deaf in Israel.

Thank you letter from the Association of the Deaf in Israel
Thank you from the Association of the Deaf in Israel

The 2010’s John Galt project – Artificial Photosynthesis

The 2010’s John Galt project – the most important technology to be developed this decade:

Artificial photosynthesis.

Technology for using solar energy to bind carbon dioxide with hydrogen from water, and convert them into carbohydrate fuels.

The technology will have the following benefits:

  1. Solve the problem of global heating, thanks to removal of carbon dioxide from the atmosphere.
  2. Make it possible to power everything using solar energy – directly during daytime, and indirectly (through burning the carbohydrate fuels) at night and bad weather.

The biggest drawback: drastic change in the economic power structure worldwide, because countries and companies with coal, oil or gas deposits would no longer have power over their clients.

פרויקט ג’ון גאלט של שנות ה-2010 – הטכנולוגיה החשובה ביותר לפיתוח בעשור הנוכחי:

פוטוסינתיזה מלאכותית.

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

לטכנולוגיה כזו יש שני יתרונות גדולים:

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

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

A proposed new language construct: do/undo

There are several cases, in which a program has to do operations A,B,C. If an error occurs while doing A, the program needs to undo A. If there is an error while doing B, the program needs to undo B then A. Similarly, an error in C requires undoing of C,B,A in this sequence.
Continue reading “A proposed new language construct: do/undo”

First Contact Speculations

Given the announcements about finding more and more Earth-like planets around other Suns and potentially life-friendly regions in Jupiter and Saturn’s satellites, I would like to offer the following predictions.

  • Actual First Contact has already happened. People do not discuss the distance between Roswell and Alamogordo, which is near the site of the first A-bomb explosion, and which happens to be only 145Km by air.
  • Since First Contact among two cultures, which significantly differ in their technological sophistication, is usually harmful to the less technologically advanced culture, it was decided not to publicize this fact without preparing the Earth culture for those news.

    Furthermore, it was decided that the Earth people are to be the ones to “discover” the alien culture, rather than vice versa.

  • Several SciFi stories assumed that alien cultures would discover the existence of a technological Earth culture by radiation from its first A-bomb explosions. Arthur C. Clarke’s “2001 Space Odyssey” assumed that this would happen when a certain slab is excavated on the Moon. The Star Trek world assumed that the discovery would by detecting the radiation emitted by Zefram Cochrane‘s first FTL flight using a warp drive system.

    However, I believe that the real “Zefram Cochrane” moment would be when the Earth culture proves its ability to defend life on Earth by deflecting or destroying killer asteroids.

Hence, my prediction is that once a dangerous asteroid has been detected and successfully neutralized, it will be announced that some Earth probe ship has at last found signs of alien life.

A better way to run Android Studio from a Docker container

Did you want to build a Docker container, which will run Android Studio for you, for example because your PC does not run GNU/Linux Ubuntu 14.04 but another Linux distribution?

You can find suitable scripts in the GitHub repository tddpirate/androiddocker

האם רצית לבנות Docker container שיריץ לך את Android Studio, למשל מפני שמחשבך אינו מריץ GNU/Linux Ubuntu 14.04 אלא הפצת לינוקס אחרת?

ניתן למצוא סקריפטים מתאימים בגיטהאב: tddpirate/androiddocker

Are saccades (rapid eye movements) synchronized to speech during lipreading?

Now I am reading the book “Visual Thinking for Design” by Colin Ware (ISBN 978-0-12-370896-0).  The book starts by describing the way the brain processes visual information.  Essentially, the brain processes it chunk by chunk, where the chunks are separated by saccades (rapid eye movements).

Since my V2V project requires finding a way to translate auditory information into visual information for processing by the brain, I’m looking also for the corresponding information about the way a brain processes auditory information.

One question, which arose in my mind, as I am reading the aforementioned book is as follows.

Assume a hearing (or hard of hearing) lipreader, who follows a speech by listening and uses lipreading as an auxiliary aid to filter out environmental noises and other speakers.  Given that the lipreader’s eyes perform saccades as usual, are the saccades synchronized to times at which the speaker produces vowels rather than consonants?

And would the saccades still by synchronized to vowel production periods also for a deaf lipreader?

What to do if the notetaker’s mom passes on few minutes before the meeting is due to start?

Or: How not to shame the company?

Or: My first firsthand experience with remote notetaking.

Last Thursday I was in a meeting of a technological consulting workshop.  In this workshop, technical people advise people with disabilities, who need technological solutions to overcome or workaround their disabilities.  A notetaker was summoned to notetake the meeting in my behalf.

Few minutes before the meeting was due to start, the notetaker notified Efrat, the meeting organizer, that she has to cancel because her mom has passed on a moment ago.  Another notetaker has to be summoned.  However, Dina, the nearest available notetaker is about 40Km away and won’t be able to arrive at the meeting on time.

What to do?

I have two alternatives.  One is to give up participation in the meeting and go back home.  The other is to participate even if I lose almost all information conveyed during the meeting.  This time I chose the second alternative.  It is like lifting a wheelchair-bound person upstairs because the accessible ramp is temporarily blocked.

Since I’ll live with partial information loss, Dina suggested to look into remote notetaking.  At this method, one puts a microphone in the meeting room and the notetaker hears the discussions through it.  She takes notes at home and the notes go to a laptop in the meeting room through the Internet.  However we were not technologically organized to have remote notetaking.  We did not expect to need it.

There was a suggestion that the notetaker take notes and send them by E-mail to me after the meeting.  I disliked the suggestion.

Another solution was to use an Instant Messaging (IM) application.  The IM application that I use at home is Pidgin, which runs under Linux.  In this application, one can change preferences so that it’ll save chats in log files.  Can chats be saved also in Dina’s or Efrat’s computers?  I did not check it but it is not that important for me.  What’s sure is that on my smartphone I have only WhatsApp.  Dina has no Skype.  Turned out that she has Google Talk, and so does Efrat.  Thus, Efrat contributed her laptop to the cause of remote notetaking.  The microphone problem was solved by using an Android cellphone, which is connected cellularly to Dina’s cellphone.

I did not expect my first firsthand experience with remote notetaking to happen under such circumstances.

In summary, we escaped the shame of technology consultants, who fail to solve a technological problem needed to make a meeting accessible.  The setup worked better than I expected.  Of course, there was a problem that the notetaker did not hear people who sat far away from the Android, but Efrat summarized what they said.  Overall I felt I am on top of things almost all the meeting.

מה עושים כשאמא של המתמללת הולכת לעולמה כמה דקות לפני תחילת המפגש?

או: איך לא לבייש את הפירמה

או: התנסות הבכורה שלי בתמלול מרחוק

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

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

מה עושים?

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

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

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

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

לא פיללתי, שהתנסות הבכורה שלי בתמלול מרחוק תהיה בנסיבות כאלה.

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

How to exploit a revolutionary physical discovery?

Suppose you have the good fortune to make a stunning physical discovery.  However, you are a practical person and would like to put your discovery to a practical use.  Where would you look for problems, which your new discovery can solve?

  1. Measure quantities more accurately than was possible before, or measure previously unmeasurable quantities (example: a sample/hold circuit based upon Josephson junctions).
  2. Non-destructive tests.
  3. Transport energy to long distances (such as superconductive materials).
  4. Transportation, including space transportation (such as various levitation forces).
  5. Improved electronic computers.
  6. Manufacturing much stronger materials.
  7. New energy sources (such as neutrino flows, if a good neutrino trap is ever developed).
  8. Synthesis of novel chemical materials.
  9. Separation of materials (to make very clean materials or simply to desalinize water).
  10. “Molecular engineering” – construction of 3D integrated circuits (or simply, manufacturing materials having layered structure).
  11. More efficient cooling (closer to Absolute Zero and/or easier to achieve a target temperature).

מה אפשר לעשות עם תגלית פיסיקלית מהפכנית?

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

  1. פשוט למדוד דברים בצורה יותר מדוייקת ממה שהיה אפשר בעבר, או למדוד דברים שבכלל אי אפשר היה קודם למדדם (דוגמא: מעגל sample/hold המבוסס על צמתות Josephson).
  2. בדיקות לא הרסניות.
  3. העברת אנרגיה למרחקים גדולים (כמו חומרים על-מוליכים).
  4. תחבורה, כולל תחבורה בחלל (כמו כוחות levitation למיניהם).
  5. מחשבים אלקטרוניים משופרים.
  6. ייצור חומרים חזקים ביותר.
  7. מקורות אנרגיה חדשים (כגון שטף נאוטרינוס, אם יפתחו מלכודת-נאוטרינוס טובה).
  8. סינתיזה של חומרים כימיים חדשים.
  9. הפרדת חומרים (לייצור חומרים נקיים ביותר ו/או פשוט להתפלת מים).
  10. “הנדסה מולקולרית” – בניית מעגלים משולבים תלת-מימדיים (או פשוט ייצור חומרים הבנויים שכבות-שכבות).
  11. קירור יותר יעיל (יותר קרוב לאפס המוחלט ו/או יותר קל להגיע לטמפרטורת יעד מסוימת).