Category Archives: software development

lessons learned

I was happy. I was extremely happy. 3 months of hard work had finished and the package containing 40 units of the product I was working on was shipped to the customer.

I’ve tracked the packed and verified it arrived at the warehouse where it was to be tested before installed at the first beta site. so I checked my email every day for news about what’s going on. i’ve checked it multiple times a day. and then the phone rang. on the line was the client’s technical manager, and the system was not functioning all that great. from what he described, it sounded like it’s stuck in a loop. this shouldn’t have happened and I felt horrible.

Continue reading lessons learned

Formula Translator

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

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

Continue reading Formula Translator

איך (לא) להרוס לעובדים את חדוות היצירה

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

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

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

Continue reading איך (לא) להרוס לעובדים את חדוות היצירה

ham radio logbook fit for the 21st century

It all started with a simple whatsapp messages on a whatsapp group

hmmmm…. that’s a nice callsign…. have I’ve worked him before?

of course I had all the information available at my fingertips, if I was near my computer. but I had to get of the couch for this. if only I had my logbook as an iphone app, I thought

Since I wrote my own logging program, it shouldn’t be too hard to port it into a mobile app, or so I thought.

Continue reading ham radio logbook fit for the 21st century

Experimenting with physical kanban boards

I’m a big fan of project management tools, especially bug & issue trackers. back in the day when I was leading a big development team with multiple projects and clients, we’ve implemented Jira, and with all the growing pains, in the end it was a big success.

now days, my requirements are very simple. I’ve got one project at the startup I’m working, and one pet project (actually, several pet projects, but only one at a time). and although we practice agile at work with kanban boards on jira, lately I found myself more than once jotting down my tasks on a piece of paper permanent on my desk.

Continue reading Experimenting with physical kanban boards

running rust on raspberry pi zero

in my previous post I’ve described my first rust project. when i finally got everything working I went on to deploy my app on the raspberry pi zero host. and it wasn’t easy at all.

for reasons I didn’t quite understand it’s impossible to compile rust on the zero. the rust toolchain only support the new arm7 architecture and not the older arm6 used on the zero.

I found plenty of articles describing how to perform the cross compilation, and after a couple of days downloading linkers and building virtual machines, I gave cross a try. while it requires docker to be installed, I found it as a small price to pay considering the ease of use.

as per the instructions, I’ve typed the following line and watch the magic happen

Continue reading running rust on raspberry pi zero

rust for the regular human being

some time ago I wrote about the poor run-time performance of python. I recently wanted to use that same piece of code and thought it might be a good exercise to rewrite that program in rust.

rust is a new system programing language focused on safety without sacrificing performance.
So I could have the advanced features I easily implemented on python with the speed of C, and figure out what’s behind the hype over rust.

Continue reading rust for the regular human being

קוד בירושה (לגאסי)

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

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

Continue reading קוד בירושה (לגאסי)

speeding up python on the raspberry pi

As a young engineer I was writing image processing real-time embedded software for a living. we used the DSP chips for all they could offer, and used to rewrote parts of the algorithms in assembly so we can shave off a few cycles per pixel and squese out a bit more of proccessor power.

recently i’ve been writeing a piece of software for my High Altitude Balloon. the original code was written in C and bash, but was hard to manage. so for this release I used python as the programming language. for most used this is a great choise. it’s robust, easy to write and debug, and a pleassure to use it’s flexible data stractures.

while python it not concidered a “fast” language due to the use of an interpreter, it was quite all right for most of my not-so-ergent needs.

but then I got a piece of code that converts a data stream to audio file that is transmitted back to ground. when I needed to send a large image file, this modem took several minutes to do the jobs. this was not ok. so I started to dig into the code to see what’s going on.

Continue reading speeding up python on the raspberry pi

SSDV over APRS

one of the good things that worked during my last balloon launch was the transmission of images from the balloon using SSTV.

Due to the geography of my country, it’s very difficult to catch the balloon after it lands. so up until now I wasn’t able to recover the memory stick from the camera. so, it was great fun to finally see some pictures from up there.

it was especially important as the GPS broke down 5 minutes into the flight. but I was able to identify some landscape features and draw a rough map of its heading.

but the technology did start to show it age.

Continue reading SSDV over APRS