Author: aabdelfattah

  • Is Software Solved?

    Is Software Solved?

    In 2011, Marc Andreessen declared that software is eating the world. Fifteen years later, the question has flipped: something is eating software itself, and that something is AI.

    Writing code has become too cheap; this is a fact. Code is a formal language, and LLMs — since the 2017 “Attention Is All You Need” paper — have learned the whole internet by heart. They can dream text, which sounds convincing and is not wrong in most cases, and they can speak multiple languages.

    I, a PM who hadn’t written real code for years, worked through the last few months on 4 projects at different complexity levels. 2 of them were within my company, and one is running just fine in the production pipeline.

    The demand for code is clearly going up, and economics tells us why. When a good becomes cheaper, demand for it increases. As an analogy: cameras got radically cheaper and better; everyone has one; photos are infinite and near-free. People are still buying more cameras and taking more photos — and good photographers are more valuable than ever.

    Software ≠ Code. Software is a solution that runs on a computer; this solution needs to have a purpose. Identifying the purpose is hard; often, neither the customer nor the dev teams know what to build. Along the way, frameworks and best practices were developed to define clearly and, most importantly, align on what to build.

    The solution then needs to be coded in a way that the computer understands; it can be done in spaghetti style or using clean code. In both cases, the solution will serve its purpose, but in the former case, it will fail the test of time quickly, depending on how bad the code is. Smart engineers spent decades inventing ways to make solutions maintainable: testing, design patterns, static code analysis — you name it.

    All those activities and artifacts are complementary to the code; code cannot live in a vacuum. To have meaningful software, they are needed as well. They didn’t get cheaper, though. Copilot won’t help you build the right thing faster. On the contrary, it helps you build many wrong things faster. Call it a diversion, or call it fast prototyping.

    Those complements will become more expensive in my opinion, or at least economic theory tells us so. If there is a huge demand for cars in one city, tires become more expensive, not cheaper. Morgan Stanley analysts recently made a similar point: as code generation gets cheap, the scarce inputs shift elsewhere — to data, to judgment, to the specification of what is actually worth building.

    We are in the middle of the euphoria and shock, still wrapping our heads around how the computer can one-shot code that used to take weeks to write. But that’s not software development. The craft still matters, and will matter even more.

  • Stop the Massacre !

    Stop the Massacre !

    Translation:
    My father Nasri Alnaouq, My brothers Mohamed and Mahmoud, My sisters Walaa , Aalaa and Aya, My nephews and nieces Bakr, Basma, Amr, Raghda, Islam, Sara, Abdallah, Islam, Dima, Tala, Nour, Nesma, Tamim, Malak and others, and before them my brother Ayman and my mother Basma … may you all rest in peace !

  • Beware of the agile nonsense !

    Warning: This article is highly opinionated !

    Spending the first few years in my career as an engineer, and wanting to break into project management and leadership. I started to prepare by taking online degrees in product management and ownership, agile, and scrum. When I got a team assigned to me, i started immediately to apply scrum, and harnessing some of its benefits, by putting my team into a timebox and ensuring that they continuously deliver every 2 weeks which was a very good measure to introduce order and maximise the team’s value, however, we fell into one of its traps by having a scrum master who wasted solid 30-45 mins every morning from the whole team in our supposed to be 15 mins daily standup.

    One year later, new team and a new company, I grew much familiar with scrum and had a different situation by teaming up with a great scrum master. This time we I will finally do scrum right -that’s what I told myself- , our best highlight was that we always could deliver and demo to our stakeholders. We were very keen on continuously making something and shipping it out and that attitude put us in a very good position within our organisation. However, we still spent hours and hours of retros and backlog refinement, our team tried really hard to do scrum right, to timebox meetings, to prepare as much as we can. We tried many measures, but it always ended the same : A meeting with 7 – 10 people where you have mostly half of them engaged and the rest are just chilling, listening or maybe even sleeping in the background with their cameras off. It was pandemic time and online was the default.

    In my next role, i started to reflect about the essence of agile, i was (and am still) lucky having a colleague who applied subconsciously all the agile principles as i understand them without sticking to any book or following any process.

    We immediately matched together ! Let’s not follow any process ! Here is our playbook

    • Short direct conversations using phone calls or chat messages : as short daily standup as possible, cancel all other regular ceremonies
    • Working software over extensive documentation : we used a very loose process of defining teams tasks using formatted texts into our team channel, only created docs when the customer or the situation required it
    • Respond very quickly and dynamically to change (principles 1 and 2 above will help in being lean enough to do that)
    • Collaborate always very early with the customer and involve them in our steps ( and even some of the team channels)

    Turns out to be that we are agile , and this is agile.

    Now , don’t get me wrong, agile is good , agile is necessary unlike what my click-bait title may suggest, but please be careful about all the nonsense certificates , ceremonies and courses surrounding it. Call it scrum , SaFe, LeSS or whatever, based on my personal experience: it was mostly a waste of time multiplied by the number of the good engineers which I had in the team.

    Your experience can be different but I advise you to think really hard next time about the cost vs benefit before bringing your best engineers into the weekly backlog refinement to label your tickets with story points.

    Extra reading: https://www.svpg.com/process-police/

  • How to run yocto qemux86-64 image with HVF acceleration and SSH access on MacOS

    qemu-system-x86_64 \
    -kernel bzImage–5.15.96+git0+509f4b9d68_001e2930e6-r0-qemux86-64-20230327112333.bin \
    -enable-kvm \
    -machine q35,accel=hvf \
    -device virtio-net-pci,netdev=net0 \
    -netdev user,id=net0,hostfwd=tcp::5555-:22,net=192.168.7.0/24,host=192.168.7.1,dhcpstart=192.168.7.2 \
    -drive file=core-image-minimal-qemux86-64-20230327162556.rootfs.ext4,if=virtio,format=raw \
    -append "root=/dev/vda console=ttyS0 ip=dhcp" \
    -serial stdio \
    -m 2048M
    view raw qemu-macos hosted with ❤ by GitHub

    -kernel , -drive should be populated with build artifacts

    -accel=hvf enables hardware acceleration for faster execution of QEMU

    -hostfwd=tcp::5555-:22 forward guest port 22 to host 5555

    Then it shall be possible to SSH to qemu using

    ssh -p 5555 root@localhost

    To copy a file

    scp  -P 5555 root@localhost:/path/to/src/file /path/to/destination/file
  • Yet Another Thread about ChatGPT: Possible Application into ISO26262 Certification Process?

    Problem Statement

    There is a growing demand of automotive OEMs for a POSIX software OS that is capable of powering up a complex centralized multimedia ECU that drives multiple usecases including safety ones such as Instrument Cluster, ADAS, and others, in addition to non-safety applications for entertainment as Navigation , phone ..etc.

    This demand is met with a shortage of solutions in the market, leading to the necessity of combining multiple OSes from different vendors which yields a complex software architecture , and a cumbersome  integration process by design.  Moreover, in most cases the market is monopolized by a single or a few players, putting most OEMs in a vendor lock-in situation , on top of finding it very expensive to get the right talent from the market for closed source technologies.

    These factors put legacy OEMs in a vulnerable position against rising threats from the US and China. The latter can deliver new software solutions at a much higher speed by relying on open source, adopting simpler architectures, disregarding some of the existing standards, and taking bolder decisions.

    The legacy OEMs need a software solution that enables them to develop software with higher speed while still abiding to the legal frameworks and the existing automotive standards. They need to break free from the vendor lock-in situation and explore new technologies that offer more flexibility, cost-effectiveness, and efficiency.

    Overview of some solutions in the market

    QNXNEW! Redhat Vehicle OSAdding a separate AUTOSAR controlloer
    Battle tested in AutomotiveOne known automotive customer Battle tested in Automotive
    * Closed-source
    * Less talent in the market
    * Expensive
    * Monopoly
    * Open source
    * Big pool of talent
    * Will it be expensive too ?
    * Open standard, open-source-when-you-pay
    * Big pool of talent
    * Expensive
    * Complex architecture
    * Nearly a Monopoly
    * Outdated tools and workflows

    Using ChatGPT to develop a safe Linux distribution

    Can we employ the power of ChatGPT to establish a fast and simplified certification/recertification process to deliver a safe Linux distribution according to the ISO26262? ChatGPT usecases to investigate:

    • Can ChatGPT write software requirements from a given code implementation?
    • Can ChatGPT write software requirements from a high level description of a software package?
    • Can ChatGPT create architectural diagrams? 
    • Can ChatGPT write unit tests from a given code implementation?
    • Can ChatGPT increase test coverage?
    Usecase for investigation CPPRESTSDK (medium size software package)
    • There is no way (so far) to give a whole git repo to be analyzed by ChatGPT
      • However, OpenAI has promised to release several plugins that will allow ChatGPT to read files and/or access the internet
    • It doesn’t seem that ChatGPT can build the context of the whole project and it gets lost when the code snippet provided to it is too long
      • For example, it selectively explained a subset of functions when I provided a file of 500 lines
      • It couldn’t process a larger file ~ 1k lines
      • When I asked it to give a really detailed analysis , it started spitting out description of imaginary functions that I didn’t ask about at all!
    • ChatGPT was able to provide an explanation to a piece of code in the form of requirements specifications
    • ChatGPT was able to perform on a much higher level when presented with a single simple c function , it could come up with 2 high quality test cases

    Conclusions

    • For any kind of realistic results, a code needs to be broken down into smaller pieces before feeding it into ChatGPT, then the output still also needs human supervision and review.
    • Humans will need to create context and analyse the workpackages. Detailed plan of work to be created as if a team will do it with no AI assistance.
    • AI can then kick in and speed up the execution of single tasks and improve the overall timeline of the project.
    • The final output shall be orchestrated and delivered by humans
    • ChatGPT is a resourceful and a smart assistant, but in a complex narrative I would regard it as a supporting character or a “CoPilot”
    • ChatGPT can spit out completely wrong information with a very confident tone
    • Software Engineers can rest assured that their jobs are not being replaced anytime soon, however the expectations of the efficiency of someone will drastically change, and the gap between a SWE+Copilot vs an old school SWE will be tremendous
  • تجربة ستارت اب بيكويتي pequity و ازاي فشلنا فيها ، و ايه اللي اتعلمته ؟

    تجربة ستارت اب بيكويتي pequity و ازاي فشلنا فيها ، و ايه اللي اتعلمته ؟

    مقدمة

    مع الظرف الاقتصادي الصعب اللي بتمر بيه مصر و العالم و حيرة الناس في انهم يقدروا يحافظوا على قيمة ما تبقى من مدخراتهم انا حابب النهاردة أتكلم عن تجربة اشتغلت عليها مع صديقي ياسر فتحي لمدة ٦ شهور متواصلة تقريبا من اواخر ٢٠٢٠ لحد منتصف ٢٠٢١ بنحاول نحل مشكلة بالرغم من ان التجربة ممكن بشكل موضوعي نحكم عليها بالفشل أو أنها لم ترتقي لمستوى توقعاتنا و لكن في تفاصيل كتيرة حصلت في الفترة دي ممكن نتكلم عليهم

    طيب ليه انا باكتب ؟ السبب الرئيسي أنا مازلت مقتنع انها مشكلة كبيرة و محتاجة شغل كتير و ممكن حد يستفيد من تجربتنا او يحاول يكررها بشكل مختلف و السبب التاني إني باحب شخصيا الكتابة و التوثيق و باحاول دايما اكتب اذا اتيحت الفرصة ، السبب الاخير أننا نشرنا كل السورس كود اللي اشتغلنا عليه الفترة دي برخصة مفتوحة المصدر و بالتالي من المهم اننا ننشر تفاصيل اكتر لاي حد حابب يعيد استخدامها و الروابط موجودة في اخر المقال

    ايه هي المشكلة و ازاي حاولنا نقدم حل ؟

    احنا شفنا ملايين من الناس مش قادرين يلاقوا فرص مجدية و آمنة انهم يستثمروا أي فوائض ادخارية و بالتالي بيتجهوا للمستريحين او على أفضل الأحوال العقارات او شهادات بنكية مش بتحميهم من التضخم بشكل كبير و في نفس الوقت في ملايين من المشروعات الصغيرة والمتوسطة اللي بتدخل أرباح معقولة و قدامها فرصة كويسة للتوسع لو توفر سيولة كويسة

    طيب هل المشكلة دي حاجة في خيالنا بس؟ الحقيقة في ارقام كتيرة جدا بتتكلم عن حجم السوق الضخم زي مثلا ان المشاريع الصغيرة والمتوسطة بتمثل حوالي ٩٨٪ من الاقتصاد المصري و ٩٧٪ من الاقتصاد الجزائرى ، دي مشاريع راس مالها بيكون صغير جدا و بتشغل عدد افراد محدود زي كشك سجاير او مخبز او ورشة نجارة بسيطة …الخ

    رقم تاني مهم جدا هو ٦٪ نسبة المستثمرين الأفراد في البورصة المصرية و الفارق مهول ٥٥٪ للبورصة الامريكيه و لو بصينا مع الرقم ده على كم الشقق المغلقة يقوي جدا فرضيتنا

    الحل

    احنا اتفقنا مبدئيًا على حاجة الناس لسوق يربط بين مستثمر و صاحب بيزنس صغير او متوسط لكن اتناقشنا كتير عن دورنا في السوق كوسيط لان ده كان من أهم القرارات اللي هتاثر على اسلوب الشغل و قررنا اننا نقدم الحد الادني بدون اي تداخل بين الطرفين عشان نبعد في البداية عن المعوقات القانونية و اي مسؤولية مباشرة في عملية البيع و الشراء لكننا في نفس الوقت طورنا ادوات بتمكن صاحب اي مشروع انه يقيم مشروعه ماليا بناءً على مدخلات كتير و ده يعتبر أسلوب مختلف عن السائد ان الناس بتقيم المشروع بقيمة الارض فقط مع المعدات و الاجهزة او بشكل عرفي ، كانت فكرتنا انه عن طريق الادوات اللي وفرناها للتقييم ممن نوفر نقطة بداية ايجابية بين البايع و الشاري

    اخترنا اننا نركز شغلنا على مصر و شمال افريقيا و دول العالم التالت اللي فيها كثافة سكانية عالية و هيكل اقتصادي مشابه لينا عشان ننفذ بروتوتايب واحد نقدر نجرب بيه فكرتنا في أماكن مختلفة في وقت واحد

    بدانا نشتغل بالتوازي على تطبيق اندرويد و شغل التسويق عن طريق إعلانات الفيسبوك و قدرنا نوصل ل بروتوتايب كويس في وقت قليل جاهز للنشر على متجر بلاي و زودنا دعم للغات مختلفة تغطي مجموعة الدول اللي كنا بنستهدفها زي اللغات العربية و الانجليزية و الفرنسية و التركية و الاوردو و غيرها ..

    مجرد ما رفعنا التطبيق قدرنا بميزانية تسويق محدودة جدا على Google و Facebook (اقل من الف دولار) نوصل لاكتر من الف داونلود و ٤٠٠ تسجيل مستخدم جديد و شفنا اهتمام من دول في الشرق الأوسط اكتر من مصر و خاصة شمال افريقيا و كان في البداية مؤشرات ايجابية كويسة زي انه كان بيوصل لنا كم كبير من الرسايل على صفحتنا مهتمين بالموضوع

    دقات الساعة

    دخلنا في الجد و المرحلة اللي بتنطلق فيها الفكرة من فكرة لبيزنس على أرض الواقع و اهم مؤشر كنا بنبص عليه هو عدد الشركات اللي سجلت في الموقع عشان تدور على توسع و مشتري و لكن للأسف ما قدرناش نحقق نمو في قاعدة بياناتنا

    بدأنا نحاول في كذا اتجاه زي اننا نعمل استطلاعات رأي على الفيسبوك أو اننا نعين موظف يكون مختص انه يتواصل مباشرة مع أصحاب البيزنس اللي ممكن يكونوا مهتمين

    بدأنا كمان نتواصل مع الرسايل الكتيرة اللي وصلت لينا سواء تليفونيا أو عن طريق الفيسبوك و لكن ظل حجم ردود الفعل بعد ما تواصلنا مع أصحاب الرسائل ضعيف و غير كافي انه يساعدنا نقدم في أي مسرع من مسرعات الشركات الناشئة و كانت نقطة ضعف قوية اننا مش قادرين نبين عدد كبير من المستخدمين في ملف التقديم لما قدمنا في كذا برنامج عشان تاخد الفكرة لقدام

    و طبعا بما اننا احنا الاتنين عندنا وظيفة رئيسية و مغامرة بيكويتي كانت بعد وقت العمل بدأ مخزون الطاقة و الحماس يقل تدريجيا مع قلة رد الفعل من السوق و مع الوقت بدأنا نتخلى عن محاولات التقديم المختلفة اللي عملناها ده غير طبعا أماكن تانية قدمنا فيها و اترفضنا للسبب اللي قلته قبل كدة

    الختام .. ايه اللي اتعلمته ؟

    من أهم الدروس اللي أنا شايفها مهمة انك دائما تعمل ال bootstrapping طالما تقدر على كل التاسكات المطلوبة للستارت اب بتاعتك ، ٩٩٪؜ من المشاريع و الأفكار الجديدة بتفشل و بالتالي للأسف مهما كانت شطارتك ف احتمالية الخسارة أقل من المكسب و في الحالة دي الخبطة هتكون أقل بكتير لو استثمرت مجهودك و وقتك ( و ده عن تجربة شخصية أخرى ممكن أكتب عنها مرة تانية) مقارنة بانك تغامر بفلوسك أو فلوس حد تاني و كمان إنك اكتر واحد عندك شغف لفكرتك و هتحاول توصل أعلى جودة تقدر عليها و اعتقد اننا كنا راضيين جدا عن البروتوتايب اللي اتنفذ في وقت قليل و بجودة كويسة

    من النقط اللي أنا شايف انها فرقت معانا اننا ما كانش عندنا علاقات في مجال ريادة الأعمال و ال fintech ، و في ظني لو عندنا شبكة كويسة كانت هتفرق معانا بشكل كبير و عشان كدة حاولنا نقدم في برامج ريادة أعمال مختلفة و ياسر التحق بمنحة لريادة الأعمال في المجال و لكن في النهاية يظل حكم السوق هو الحقيقة الأكيدة و السوق ما تفاعلش مع فكرتنا بالشكل اللي قدمناه

    من المشاكل التانية اللي انا شايف أنها كانت هتواجهنا لو حصل رد فعل قوي اننا ما كناش محددين استراتيجية واضحة لتحقيق الأرباح و كنا مركزين بشكل أساسي ننمو و نجمع أكبر عدد مستخدمين و لكن ما فكرناش بعد كدة في نموذج محدد للربح و كان عندنا تصور مبدأي اننا هنطبق فكرة ال freemium

    ختاما أقدر أقول انها كانت تجربة ممتعة جدا لمسنا فيها جوانب كتير جدا من المشروع على العكس من الشغل في شركة بيكون اكتر تخصصا و اتمنى لو الواحد يقدر يكررها تاني في مجال آخر مع فكرة تانية و يمكن التجارب الجاية تلاقي النجاح الكافي ، يمكن اللي كان ينقصنا أننا نشوف رد فعل كويس و نتواصل أكتر مع ناس مهتمة

    Sources

    اداة التقييم كانت مكونة من ٣ مكونات و الباك اند كانت ٢ منهم الجزء الأول كان ماتلاب مودل بيحسب قيمة البيزنس عن طريق مجموعة مدخلات و المكون التاني كان REST API للموديل معمولة عن طريق python flask و الفرونت بتاعنا كان تطبيق اندرويد بالنسبة لمكونات الباك اند ف رفعناها على GitHub برخصة Apache مفتوحة المصدر اللي بتتيح لأي حد مهتم يعيد استخدامهم

    https://github.com/Pequity-me/PequityIntrinsicValuation

    https://github.com/Pequity-me/pequity-rest

  • Setting up Rust Environment for Linux Kernel Development

    Setting up Rust Environment for Linux Kernel Development

    Hey 👋

    It’s me again, still writing about Rust before actually going beyond the hello world part of the documentation, but I will let you know why.

    I am currently going through Chris Simmonds’ terrific book “Mastering Embedded Linux Programming, and while reading through the chapter covering the kernel configuration and compilation , I stumbled upon a nice youtube video from the linux foundation covering the same topic but using the Rust fork as the codebase.

    So, since I have an interest in Rust too, I said why not combining both ? Which was actually a good choice because both the video and the book covered each other gaps.

    While watching the video, I took a note of most of the commands in a github gist which I think should be pretty useful for my future self and and other people too. I thought also of taking the notes here because why not ..

    #
    # Instructions for the video https://www.youtube.com/watch?v=tPs1uRqOnlk excluding setting up the env ( e.g. installing Rust and llvm)
    #
    
    
    #
    # Kernel
    #
    
    $ git clone --depth=1 https://github.com/Rust-for-Linux/linux.git
    $ cd linux/
    $ make allnoconfig qemu-busybox-min.config
    $ make allnoconfig qemu-busybox-min.config rust.config
    $ make LLVM=1 rustavailable # should say Rust is available if you have all dependencies
    $ make LLVM=1 -j4
    
    #
    # Busybox
    #
    $ cd busybox
    $ git clone --depth=1 https://github.com/mirror/busybox.git
    $ make defconfig
    $ make menuconfig # then from settings select use static libraries 
    # make -j4
    $ cd ./_install/
    $ find . | cpio -H newc -o | gzip > ../ramdisk.img
    
    
    #
    # running qemu
    #
    $ cd linux/
    $ qemu-system-x86_64 -nographic -kernel vmlinux # should panic
    $ qemu-system-x86_64 -nographic -kernel vmlinux -initrd ../busybox/ramdisk.img # should start
    
    
    #
    # adding proc filesystem to enable ps
    #
    $ cd busybox/_install/
    $ vim etc/init.d/rcS 
    # then add this content inside 
    # mkdir -p /proc 
    # mount -t proc none /proc
    $ find . | cpio -H newc -o | gzip > ../ramdisk.img
    $ qemu-system-x86_64 -nographic -kernel vmlinux -initrd ../busybox/ramdisk.img # ps should work
    
    
    #
    # enabling a rust sample kernel module
    #
    $ make LLVM=1 menuconfig
    # then select the samples from kernel hacking --> samples --> rust samples
    
    
    #
    # enable networking
    #
    $ cd busybox/_install/
    $ vim etc/init.d/rcS 
    # then add this content inside to enable loopback interface 
    # ifconfig lo up
    # udhcpc -i eth0
    $ mkdir -p usr/share/udhcpc
    $ cp ../examples/udhcp/simple.script usr/share/udhcpc/default.script
    $ qemu-system-x86_64 -nographic -kernel vmlinux -initrd ../busybox/ramdisk.img -nic user,model=rtl8139
    $ qemu-system-x86_64 -nographic -kernel vmlinux -initrd ../busybox/ramdisk.img -nic user,model=rtl8139,hostfwd=tcp::5556-:8080

  • How to downgrade Rust compiler to a specific version ?

    How to downgrade Rust compiler to a specific version ?

    Hi !

    There are a couple of pages/stackoverflow questions which mention how to install a specific Rust version which is pretty straightforward using rustup install command

    abdelah@abdelah-VirtualBox:~/workspace/linux$ rustup install 1.62.0
    info: syncing channel updates for '1.62.0-x86_64-unknown-linux-gnu'
    info: latest update on 2022-06-30, rust version 1.62.0 (a8314ef7d 2022-06-27)
    ....

    However, there is one tiny step also needed to set the default compiler to the newly installed version, for instance if you run the command above and invoke rustc --version you would still get the previously installed default version.

    abdelah@abdelah-VirtualBox:~/workspace/linux$ rustc --version
    rustc 1.66.1 (90743e729 2023-01-10)

    I am pretty new to Rust ( haven’t read the hello world example fully yet to be honest ), but I already like how the commands come intuitively to mind opposed to other popular tools such as git (always scratched my head trying variants of git checkout and git reset to clean a working directory )

    So, back to topic. Now we need to set the default compiler version to 1.62.0, for that we just need to execute rustup deault my-preferred-version but first we can get the list of installed versions like this

    abdelah@abdelah-VirtualBox:~/workspace/linux$ rustup toolchain list
    stable-x86_64-unknown-linux-gnu (default)
    1.62.0-x86_64-unknown-linux-gnu

    Then set the default version

    abdelah@abdelah-VirtualBox:~/workspace/linux$ rustup default 1.62.0-x86_64-unknown-linux-gnu
    info: using existing install for '1.62.0-x86_64-unknown-linux-gnu'
    info: default toolchain set to '1.62.0-x86_64-unknown-linux-gnu'
    
      1.62.0-x86_64-unknown-linux-gnu unchanged - rustc 1.62.0 (a8314ef7d 2022-06-27)

    Now, let’s do a smoke test on the compiler version

    abdelah@abdelah-VirtualBox:~/workspace/linux$ rustc --version
    rustc 1.62.0 (a8314ef7d 2022-06-27)

    Okay, this works now !

    You might be wondering what would be a usecase for using a specific older compiler version, well my answer to this would be this snippet from Rust documentation in the Linux kernel

    rustc
    *****
    
    A particular version of the Rust compiler is required. Newer versions may or may not work because, for the moment, the kernel depends on some unstable
    Rust features.
    

    Starting Linux kernel release v6.1, Rust support was introduced and this grabbed my attention as Rust is claimed to be safer and more secure than C/C++. Safety and Security are two words that one would hear everyday if you work at any company producing or contributing to the production of passenger cars.

    I wanted to have a look and play around a bit and then to test if my environment is ready to build Rust in the kernel

    abdelah@abdelah-VirtualBox:~/workspace/linux$ make LLVM=1 rustavailable
    ***
    *** Rust compiler 'rustc' is too new. This may or may not work.
    ***   Your version:     1.66.1
    ***   Expected version: 1.62.0
    ***
    Rust is available!

    And because I wouldn’t take may or may not work as an answer, I downgraded my compiler version.

  • Wöchentliche Trends aus Nahost #2 : Abo Trika, Ukraine

    Die Entscheidung des Verbots der russischen Vereine und Nationalmannschaft von allem Wettbewerbe muss mit dem gleichen Verbot gegen die zionistisch  Vereine und Nationalmannschaft, weil Zionismus Angreifer ist ، und hat Frauen und Kinder seit vielen Jahren umbracht, aber ihr mit zweierlei Maß messen.

  • On Russia, Ukraine, the Middle east and the odds of success

    On Russia, Ukraine, the Middle east and the odds of success

    Consider the random variable X which represents the likelihood of someone achieving success in his life, and the population S of all the people that you can see daily on your way to work, those who are waking up early, doing their best for at least 8 hours per day. They are ordinary people, dedicating their lives to their families and jobs. Assuming that these humans work equally hard, do they all have a level playing field?

    What is success? Let me for the sake of simplicity in this article define it only using measurable dimensions ( such as your bank account, fame, impact on people, or your title in the job). In my view, success is more complicated than that and there are additional dimensions to it. I wouldn’t even use the word success as a life goal rather the feeling of content, which is different. We can see rich people who are not content with their life, while others who live by the most modest means are totally happy and satisfied, but this could be a discussion for another post.

    The base case

    In the following diagram, the blue curve depicts a romantic view of success, everyone has an equal chance of achieving in life as long as they exert adequate efforts and try as hard as they can. While the red distribution draws a more realistic view of life (at least in my opinion) where most people will achieve a moderate level of success, few of them will catastrophically fail and another small group of outliers will build the likes of Google, Tesla, and Microsoft or start a movement that impacts the lives of millions like Gandhi or Martin Luther King.

    Chances of Success = C * Working Hard

    Realistic vs Romantic Views

    Chances of Success = (C * Working Hard) + (B * Upbringing and cultural context) + (A * Random factors)
    where B >>> C >>> A

    In his book “the outliers”, Malcolm Gladwell, inspired by research, presents multiple theses, a prominent one that can be depicted by the red curve is that: Hard work is only a factor in achieving extraordinary success in life, other factors play a great role too, such as upbringing, timing, cultural heritage …etc. It’s not enough to work hard and play fair in life to receive equal chances. The odds are not in favor of most people, only a few outliers have high chances of success.

    And for the average person, the second variable “Upbringing and cultural context” in the equation above plays a greater role, hence, B would be greater than C and A. An example would be the difference in the life of a Korean born on the south or the north of a border between both countries.

    A few videos went viral in the last weeks for news reporters who were covering the invasion of Russian forces of the peaceful Ukrainian cities. One of the reporters was truly shocked to the extent that although he tried to choose his words very carefully, he couldn’t hide how his mind compared the destruction of a relatively civilized European city (an unlikely event to him) to Iraq or Afghanistan where this is the (accepted) norm to see bombings, destruction, and dead bodies of women and children

    “But this isn’t a place, with all due respect, like Iraq or Afghanistan, that has seen conflict raging for decades,” CBS News Reporter commented. “You know, this is a relatively civilized, relatively European – I have to choose those words carefully, too – a city where you wouldn’t expect that or hope that it’s going to happen.

    And here I am not trying to play the racism card, but I rather consider this as a piece of evidence to support the main thesis. Unfortunately, it’s indeed more likely to see destruction in Baghdad than in Kyiv for example (at least in the last 2 decades), this is simply and sadly how it is. Therefore, the probability of achieving success is much higher if you are born in one of these (civilized) cities (If I would use the reporter terms).

    Changing your odds

    The green bell curve depicts changing of odds as observed in shifting of the population mean.

    Now, the question would be how someone can adjust the odds of achievement in life. Considering the equation above, if we omit possibilities like winning a lottery or inheriting a wealthy distant relative, then the only possible factor under control is hard work. Imagine there is another smaller population group Y who still follow the general logic of the success equation, but they push their odds further by investing more time and effort. Is it enough? No, not really. The other parts of the equation will still play a key role, however, this is the best shot that we got.

    I will conclude this blog post by leaving here two contradicting research articles: Ericsson’s research about the role of deliberate practice in achieving expert performance who concluded a strong correspondence between practice and expertise (which is more known to the public as the 10,000 hours rule), and Macnamara’s revisiting the same study to conclude otherwise.

    In my opinion: practice makes perfect, or strictly speaking, practice increases the chances of perfection.