Category: software development

  • Building Apps with AI: The Good, the Bad, and the Hand-Holding

    Over the past year, it’s been impossible to ignore the hype around AI coding tools. Headlines promised that AI tools would “redefine programming” and “let developers focus only on ideas, not code.” Friends and colleagues were raving about how AI was writing entire components for them in seconds. Naturally, I wanted to see for myself if these tools could really change the way I build apps.

    My first test was building a mobile app using Flutter and Firebase. This should have been simple: with the built-in tools, you can spin up a working project with just two lines in the terminal. But when I asked AI to do it, things went downhill. Instead of giving me the straightforward setup, it spent hours trying to “engineer” a project structure. The result? Broken code, mismatched dependencies, and a project that wouldn’t even compile. I eventually gave up and went back to the manual two-line setup – which worked instantly.

    That said, once the project was up and running, I found that for the mobile app things generally worked. AI could generate UI components, basic Firebase hooks, and navigation code with reasonable success. adding more and more screens and functionality was a breeze. It wasn’t perfect, but it saved some time, especially this is something I don’y usually do and I would have spent hours figuring out how thing should be done.

    there were moments when it actually surprised me. While setting up authentication, it proposed a few field structures I hadn’t considered. They weren’t perfect, but they made me think differently about my data model. It felt less like “cheating” and more like brainstorming with a slightly eccentric colleague.

    (more…)
  • 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.

    (more…)
  • Formula Translator

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

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

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

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

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

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

    (more…)
  • 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.

    (more…)
  • 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.

    (more…)
  • 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

    (more…)
  • 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.

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

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

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

    (more…)
  • 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.

    (more…)