Wednesday, September 18, 2019

Vackert Karlskrona


That reflection :)
Sunset towards the sea!
Happy sunny day! :)
Calm and beautiful side of Dragsö
Sun light is reviving the leaves again! Spring is knocking the doors! :)
Marin Museum, interesting museum about Swedish navy, second world war and submarines.
Sun behind the leaves is one of my favorites scenes!

The German church in Stortorget(main square) covered by snow. One of the landmarks of Karlskrona.
Sunset over Långö, Karlskrona
Vid Stumholmen
Sea side on Aspö

Motivational speech - The power of being You!

Friday, August 28, 2015

وطلعنا الجبل - تجربة ودروس مستفادة

اليوم رجعت من رحلة، لمدينة ساحلية على شاطئ البحر الأحمر.

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

هنطلع الجبل مع بعض، نتصور ونتأمل شوية وننزل تانى.


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

فى الواقع لم اكن اتوقع كل هذه الدروس من تجربة عادية، مجرد صعود جبل ارتفاعه ليس بكبير ومع مجموعة بالكاد عرفت اساميها من ساعات.


بالنسبة لى، أُحب صعود الجبال، لاكنّى غير محترف، كالعادة يقع الاختيار على جبل ارتفاعه متوسط سهل الصعود وغير وعر.. منظره جميل ويفضل ان يطل على بحر. وهذا الجبل كان احدهم.


منظر هذا الجبل من على مد البصر، كان مختلفاً عن كل الجبال التى كانت حوله. وهذا ما جعله مميزاً لنا. فقررنا أن نصعده.

ومن سيصعد جبلاً لا شيئ فيه مميز؟


لم يمر وقت حتى ظهر السر وراء شكله لما اقتربنا منه،

فالحكم على الأشياء من قريب، يختلف عنه من بعيد.

ولمعرفة شيئ، فالغالب نحتاج إلى أن نقترب منه، على الأقل طبقاً لقوانين الفراغية.
ولاكن فى بعض الأحيان لمعرفة تفاعل هذا الشيئ مع ما حوله، فالإبتعاد عنه وتحليله مع غيره غالباً يكون أفضل.


الأمر الذى عرفناه بعد وصولنا للجبل، بالإضافة إلى شِدة انحداره، أن طبيعته صخرية مليئة بالأحجار... فـ نادراً ما ترى جسم الجبل نفسه من كثرة الصخور اللى عليه.


بدأنا الصعود، وكانت صخوره احجامها مختلفة.

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

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



وهنا قلق بعضنا. فدفعنا هذا تلقائياً إلى ان نفكر بطبيعتنا البشرية، إلى أن نتّحد. فـشكّلنا صفاً واحداً لنصعد سوياً، وبدأنا المغامرة.



بعد عدة دقائق، علمنا اننا لم نكن على دراية اننا اذا صعدنا واحداً تلو الأخر، فربما او غالباً سنسقط هذه الصخور على بعضنا البعض.

وكان القرار، ان نفترق لنصعد من اماكن مختلفة وطرق غير مشتركة.

وهنا قلق بعضنا أكثر. فكلنا ضمن مجموعة، ولاكن لن نستطيع ان ننجز مهمتنا وفى نفس الوقت نكون بجانب بعضنا البعض.

والأسوء اننا مازلنا فى مرحلة الصعود، ومع انها تطلب جهداً اكثر، لاكنّها هى الأسهل مقارنة بالنزول.

لو كانت المهمة هى النزول اولاً و الصعود فيما بعد، فالغالب ستكون مخيفة فى أولها، متعِبة فى آخرها.



تعمّدت ان اكون فالمنتصف. كى اكون على مقربة من جميع من حولى. لأستطيع ان أفهم سلوكهم وأحلله.


أثناء الصعود، وبين الحين والآخر، لاحظت ان ثلاثة منا كانوا دائماً ينظرون الى قِمّة الجبل. وان نظروا الى الأسفل، عاودوا سريعاً ونظروا للقمة واكملوا الصعود.


أما البعض الآخر، فكانت نظراته فى اغلب الوقت الى الخطوة التالية امام مستوى نظره، والنظر الى الخلف والأسفل. ونادراً ما كان ينظر لأعلى الجبل. وان نظر اليه، نظر اليه سريعاً وعاود الصعود.


وهنا كان للأمر تفسيران يطرحان سؤالاً يحتاج إلى إجابة، كيف يتم قياس النجاح؟

هل يقاس النجاح بما بعدته عن وضعك الحالى بإتجاه هدفك؟

 أم يقاس النجاح بمدى قربك لهدفك بغض النظر عن مكان بداية رحلتك؟



فى الحالة الأولى، اذا لم يصعد احدنا الجبل لأى سبب ما. فسينزل منه مشحونا بطاقة إيجابية. لأنه قطع شوطاً منذ انطلاقته لا بأس به.
وهذا كافى ليشبع ثقته ويحمسه لما بعد.

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

الأول يحمل فكرة:
هذا جميل، لأنه كان من الممكن ان يكون أسوء من هذا.

والثانى:
هذا جميل، ولاكن كان من الممكن ان يكون أكثر جمالاً.

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

فالذى يأكل ليشعر بالشبع يختلف عن من يأكل لأنه لا يريد الشعور بالجوع.. بالرغم من أن كِلاهما سيأكل فالنهاية. فأفعالهم التالية غالباً ستكون ضمن نفس نمطية التفكير.



وصلَت واحدة منّا الى قمة الجبل. وقالت بحماس وسعادة، "أنا أول واحدة وصلت!".

فانتبهتُ، وتسائلت لماذا قالت هذا؟ ولماذا قالته بصوت عالى؟

فنحن لن نستفيد او تزيد لنا معلومة بسماعنا لهذه الجملة.

فالحقيقة ان هذه الجملة لم تكن لنا. لم يكن الصوت العالى من أجل ان نسمعه نحن. بل كان لها، لنفسها. لعقلها. كان تنفيساً لشعورها بالانجاز وتحقيق الذات.

فهى لم تكن الأولى إلى قمة الجبل بمحض الصدفة أو الظروف. فلم تكن الصخور التى عبرت من فوقها أصعب من التى عبرنا عليها.


فالسر انها قررت فى نفسها ان تكون الأولى فى الصعود. من بداية الصعود. او ربما من قبله. وهذا سهّل عليها مهمتها. أنها قد قررت. وكانت ممن ينظرون لقمة الجبل بإستمرار.

لم تُقرر بعد ما بدأت الصعود، ولم تٌقرر عند منتصف الجبل. فقرارها فى هذه المرحلة سيكون أصعب ان تُحققه. فربما يصل احد قبلها. فأسبقيّة القرار وتوقيته لا تقل أهمية عن مكنون وغاية ونتائج هذا القرار.

أما أنا والآخرون من حولى، فقد كان هدفنا صعود الجبل وفقط. ولم نقرر أن نكون الأوائل. فحققنا ما قرّرنا. كان ما كان.



فمن الممكن ان تحقق إنجازاً كبيراً لقرار لا ثمن ولاجدوى له من البداية. فلن يكون لهذا الإنجاز ثمناً بالمثل.


فالعبرة بما قررته، اكثر منه بما حققته. بشرط تكاملهما معاً.

لأنه بمجرد القرار، إن صدق، تتهيأ النفس تلقائياً ويستعد العقل والجسد لتحقيق المرغوب. ويعملان فى تناغم وإنسجام تجاه الهدف.

(تخيل انك امام حوض سباحة وقررت ان تقفز، ستكون تجربتك مهما كانت صعوباتها، أسهل منها لو تم القائك فيه فجأة وعلى غير إرادتك او بدون ان تكون مستعداً.)

والفرق واضح. أنك قررت وتهيّأت.


وللقرار خواص، بالإضافة الى مدى صدقه، منها أن يأخذ الإنسان خطوة بإتجاه تحقيقه (الَّذِينَ آمَنُوا وَعَمِلُوا الصَّالِحَاتِ);
فالإيمان هو صورة من صور القرار. ويكتمل بالخطوة التابعة له هى وإلحاق العمل الذى يدعمه به. وليس أى عمل.

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

هذه الخطوات تعلّى من جودة قرارك أمام عقلك. فأنت قررت أنت تفعل كذا، وها أنت تفعل كذا وكذا لتحقيقه. انت فالغالب ستحققه.

وهذا يعنى ان كل اهدافنا وقرارتنا لن يعوقها اى شيئ غير أفكار بداخلنا. بعقولنا. او أحاسيس بقلوبنا. توهمنا اننا لن نستطيع، او بالرغم من أهمية هذا الشيء. لاكن هناك ما هو أنسب وأهم منه الآن.


والمثير ان هذه الأفكار ليس من الشرط ان تكون مصحوبة بقرار لتنفيذها. الأفكار التى تدور بذهننا هى فى ذاتها كافية لإنجاز مهمة.
وفى بعض الأحيان لا تحتاج الى قرار. لأنّه تَواجَد من تجارب سابقة.

فالعقول المليئة بأفكار مثل:

- أستطيع ان افهم ما حولى واجد حلاً ولو مؤقتاً.
- هذا ليس بالشيئ الصعب كما يبدو.
- هذا معقد، لاكنه ممتع فالوقت نفسه.
- فعلت شيئ يشابه هذا من قبل، هذا لن يكون مختلفاً كلياً.


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

أما العقول الحاملة لأفكار مثل:

- أنا غير متأكد ان هذا سيجدى نفعاً.
- انا لا افهم ما الضرورى لإنجاز هذا.
- هل انا الشخص المناسب لهذه المهمة؟
- سأحاول ان انجز هذا، لاكنى غالباً سأفشل.
- ما الذى جاء بى فى هذا المأزق؟

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


فالقرار فى ذاته لا يولد أفكار. فهو ناتج لها. وما يفعله القرار هو أنه يترجم الأفكار إلى افعال. وهذه الأفعال بدورها تولّد أفكاراً أخرى. وهكذا دائماً.







وهذا يعنى انه لا يوجد فكرة لم يكن يسبقها فعل. ولا يوجد فعل لم يسبقه قرار.

 فأن تُفكّر، هو فِعلٌ، كان فى حد ذاته قراراً! وهو أنك قررت ان تفكّر!


فالقرارات تأتى أولاً. ولاكنها تبطل اذا لم تكن مصحوبة بفعل يدعمها.

-----------------------------------------------------------------------------

ومن المنطقى انه كلما تغيّرت افكارنا بخصوص شيئ معين، اى استمرّ عدم ثبوتها، يصعب علينا القرار بشأنها.

أما اذا ثبتت هذه الأفكار وهدأت حركتها، يثبت القرار المصنوع منها. وعندما يثبت القرار فإنه يشكّل مع الوقت ما يسمى بالقناعة، والتى عندما تتراكم تشكل ما يسمى باليقين.

فعندما تصبح قناعة او يقيناً، ينتهى دور الأفكار فى تشكيل القرار المرتبط والمسبب لها. وبالتالى يصعب تغيير القرار ذاته.


فبعد صعود درجة التفكير، يتدرج الإنسان الى مراتب اعلى منها، الى ان يصل إلى اليقين ومنه إلى الإيمان.





Wednesday, March 12, 2014

خواطرى عن الإيجابية وبعضاً مما تعلمته من الحياة


-لن يجبرك أحدهم على فعل شيئ ما... انت تفعل ما تؤمن به وتعتقده أنت، أنت تتبع ما تريد.. أنت إختيارك انت. وليس إختيار أحدهم. لا تلومهم.


No one would force you to do it. You do what you believe in. therefore, You follow what you want. You are not their choice. You are your own. No blaming.





-ليس المهم أن تلهمهم، إنما المهم أن تلهمهم كيف يلهمون أنفسَهم ليلهموا غيرهم بعد ذلك!


-Hey you! It's not about inspiring others, many do. It is about inspiring people "how to" inspire themselves individually so they do it for others






-إبتسامة واحدة صادقة صافية، كافية لإختصار خلاف أو نقاش يدوم لأيّام.


-One pure calm smile equals an argument that may rest for days.







-بعضهم يبتسم لأنه يجد شعوراً أفضل عندما يبتسم، بعضهم يبتسم ليجعلهم، هم، يشعرون افضل عندما يرونه يبتسم...
بعضهم لا يبتسم لأنه يعتقد انه لا يوجد وقت للإبتسامة، بعضهم يشاركهم وجه العبوس لأنه فى ضيق وضغط.. ولا يبالى ان أثّر ذلك فيمن حوله ام لا. بعضهم يؤمن أن الإبتسامة وحلاوة الروح هى ما تدعمه ليكمل عمله أو مواقفه الصعبة. أيّهم أنت؟





-أنت لا ترى الواقع، أنت ترى ما تريد أن تراه. تأكد من أنه إيجابياً وفى صالحك.

-You do not observe reality. You observe what you need to see. Make sure it's positive and for your favor.







-عندما تلهِم أحدَهم، أنت تُلهِم نفسَك. وعندما تشجّع أحدهم، تتشجع أنت أيضاً. وعندما تثنى على أحدهم وتقدّره، يقدّرك هو بالمثل. وعندما تذكره بالطاعة، تذكّر نفسك أيضاً، أنت لا تخسر مهما فعلت من خير. فهو يعود عليك قبل أن ينتقل لغيرك.

-The moment you inspire, you get inspired. The moment you motivate you get motivated. The moment you appreciate, you get appreciated by the other side. The same goes by reminding others doing charity. The moment you do something, you get it back. You never lose.



نصائح عامة
General Advices



-تحدث إيجابياً لعقلك ولنفسك، كل شيئ سيكون على ما يرام.

-Talk positively & mentally to your-self. Everything gonna be fine.







 
-هل تتذكر أصعب المواقف وأكثرها شدة عليك؟ ماذا حدث بعدها؟  لم تتوقف الحياة.



-Remember the most stressful time you had.. and what happened! Life goes..





-إفعل شيئ يدوم، ربّى طفلاً، إكتب، إرسم، صوّر، سجّل، شجّع، إنقل عِلمك لغيرك، ألهم، تواصل، أنشر، شارك غيرك ما تتوصل إليه.

-Do something that lasts. Upraise a child, Write, Draw, Capture, Record, Motivate, Educate, Inspire, Communicate, Publish and Share results.





-كن أنيقا ودوداً على سجيتك فى كل الأحوال.

-Act natural & elegant wherever you are.




- نشيط لغيرك كسول لمهماتك، هذه ليست بعلامة جيدة!


-It's not a good sign being lazy for yourself active for others.





-إرض بالمنطقية. أنت لم تفعل ما يجب فعله، كيف لك أن تسأل أين النتائج!


-Accept logical situations. You have not done it. How come you are expecting getting high results!





-إذا لم تبذل مجهود فيما تفعله ليشبع طموحك وتفكيرك، إنطلق إبحث عن شيئ آخر يشبعه.

-If your daily tasks are trivial, That's not your position. Go get something harder to work on.





-تأكّد من أنك تقضى يومياً على الأقل ربع ساعة من الهدوء الكامل لا تسمع فيه همساً أو صوتاً(كلٌ له طريقته لإستغلال هذه الدقائق)

-Have at least 15 minutes of COMPLETE silence daily. (People do it in different ways.)







- إنتقل بين العالم المادى والعقلى والعاطفى دائماً، هذا يجعلنا متوازنين أكثر بداخلنا ومع من نتعامل (مثال: ساعات طويلة قضيتها تصمم برنامج، إذهب فالحال إلعب لعبة فيها حركة ، قضيت يومين راحة، أحصل على بعض العمل الممتع!)

-Paradigm shift between physical and mental, emotional worlds. (e.g. Long hours coding? Go play a game immediately!  Two days off, Go get some tasty work!)




Saturday, October 1, 2011

Microsoft Paint Fatal Memory Management

Hey, I'm going to tell you something I had noticed while working on Paint.

-Open it, Run Windows Task Manager, watch the allocated memory for this process, named "mspaint.exe".

-Just resize the drawing area to a larger one, Then watch the process's memory.

-Repeat the last step more and more. Zoom out, and make it larger.

-Now, What's there?! Unnecessary memory allocation for just manipulating drawing area!


How ridiculous was that?

Monday, September 27, 2010

Wireless Sensor Networks, TinyOS, How to configure a mote and talk to it from a Windows machine.



Hello there, I'm here to tell you how to interact with Telos Motes specially, On Windows or Linux from scratch.

I assume you have a very good experience with C programming language(Surely, You can use different languages), also with network packets structures, in addition to how to write and read buffers from USB Port in a specified rate. Both on Microsoft Windows and Linux.

There's no need to read all the tutorials written by the TinyOS team from beginning, Just install the TestSerial Application on the mote.

If you do not know how to install it on the mote, read only their installation tutorials well, you will have to change some files of the Linux Kernel, then recompile it, install it on your machine. Transfer code. I did not try it myself, takes time, But easy. Then you will be able to upload your compiled nesC code to the motes.


Now after installing the TestSerial application, Connect your Mote to your machine.

-For Windows, Check which COM Port is specified for this mote, and start listening from it using the Application Listen.java.

-For Linux, You have to google how to write and read through USB ports.

-You have to include the tinyos.jar file before compilation.

But this file contains .class files, it is not for debugging, so get the source code of these classes from the link below, So you can run your own code.

-You can get the full installation here of both TinyOSs
and also the native .java files. 


-There's no need for SerialForwader application installation.

Now, It is the time to talk with the mote.

-The TestSerial Application uses the packet number "0x44".

and I am sure you are asking about the Header, We now don't care about the payload, as later you are going to change it based on what your application needs.


The Frame Header for Packet number 0x44 is like the below:

Native C code(Not fully tested, I do not gurantee that it's reliable):
//========================================
(Start of code)


#include  stdio.h
#include  conio.h
#include stdlib.h
#include windows.h

typedef unsigned char       oneByte;
typedef unsigned short      twoBytes;


#define LOBYTE(w) ((oneByte)(((long)(w)) & 0xff)) #define HIBYTE(w) ((oneByte)((((long)(w)) >> 8) & 0xff)) #define PACKET_BYTE_ESCAPE 0x7d #define PACKET_BYTE_SYNC 0x7e // Escape. #define PacketNeedsEscape(bData) (bData==PACKET_BYTE_SYNC || bData==PACKET_BYTE_ESCAPE) oneByte tempBuffer[50]; oneByte finalBuffer[50]; twoBytes myCRC=0;

//Header Set.

int index=0;
tempBuffer[index++]=126; //Sync. Byte.
tempBuffer[index++]=68; //Packet Type.
tempBuffer[index++]=SeqNumber++; //sequence number. Initially is Zero, Incremented for each packet, range from 0 to 255.
tempBuffer[index++]=0; //Packet format Dispatch. Currently is Zero.
tempBuffer[index++]=LOBYTE(DestAddress); //Dest. Address.
tempBuffer[index++]=HIBYTE(DestAddress); //Dest. Address.
tempBuffer[index++]=LOBYTE(SrcAddress); //Source Address.
tempBuffer[index++]=HIBYTE(SrcAddress); //Source Address.
tempBuffer[index++]=PayloadLength; //Data Length.
tempBuffer[index++]=GroupID; //Group ID.
tempBuffer[index++]=amType; //AM Type.
//========================================


// Just add two Bytes holding a integer number to tempBuffer, which will be represented in Binary on the leds.
// Check for special Bytes Algorithm, and assigning the values to finalBuffer array.
counter=1;

for(int i=1;i<50;i++)
{ if(PacketNeedsEscape(tempBuffer[i]))
{ finalBuffer[counter]=PACKET_BYTE_ESCAPE;
counter++; finalBuffer[counter]=(tempBuffer[i] ^ 0x20); //X-ORing with 0x20
counter++;
}
else
{
finalBuffer[counter]=tempBuffer[i]; 
counter++;
}
}

//Calculate the CRC, add it to the Byte array, It takes two Bytes.
//Here's my algorithm for calculation a valid CRC:

//CRC calculation Algorithm.

for(int i=1;i<11+PayloadLength;i++)
{
if(finalBuffer[i]==0x7d)
{
myCRC=calculateCRC(myCRC,0x7e);
i++;
}
else
myCRC=calculateCRC(myCRC,finalBuffer[i]); }
//Do not forget to add the Last Sync. Byte.

(End of code)
-------------------------------------------------------------------------------------------
Then you are ready to write on the USB port.

Using any programming language, Just write this array(tempBuffer) to the buffer.

-Your port should be look like this on Windows (COMX)

Such that X has a range from 1 to a higher.

For Linux, Please refer to how to write and read from USB Port.
-You should now watch your Leds representing the Number you have already sent.

Congratulations!

------------------------------------------------------------------------------------------------------

Troubleshooting Problems:

-Writing on the port but nothing happens?

Possible Solutions:

-Set the valid Baudrate which is 115200 for Telos motes, for other types you can get the values from the table included in their tutorials.

-The amType value should matches the one which is included in the Makefile of the .nc Files of the TestSerial Application.

-Did you calculate the CRC well?

-Also do not forget to declare the Byte array you are writing to the port as a signed one.

-Do not send lots of packets after each others, Your eyes may not watch the leds toggling in a normal sequence as they do it rapidly, so add a time consuming line between every packet you are sending, but do not forget to comment it after debugging.

-Example:

-So now, Write your own code, send your payload as you need, Then write another nesC code which matches the code on the PC.
-Your .nc Code should have a statement that toggles any led, so you can debug easily.
-Copy the compiled .nc code to the mote using Linux.
-Write on the Buffer as we did, watch the leds.

Did it act as expected?
then well done :)

It is a good feeling when blind hardware acts as you told it exactly, Really I enjoyed it.



Never hesitate to contact me for help here: abdulrahman.yasser@ieee.org

Thanks for reading!