طريقة آلية متميزة لإكتشاف مشاكل قابلية الإستخدام (Usability)

قرأت قبل ثلاث سنوات تقريباً بحث علمي نشره مجموعة من الباحثين من جامعة ستانفورد و شركة قوقل يتعلق بموضوع قابلية الإستخدام، حاز البحث وقتها على جائزة أفضل بحث علمي في واحده من أرقى المؤتمرات العلمية في مجال Human-Computer Interaction بل وفي مجال علوم الحاسب بشكل عام، شدني البحث لدرجة أنني لازلت أستشهد به و لازال عالق برأسي حتى الآن.

قابلية الإستخدام
“قابلية الإستخدام” هو مجال يجمع بين العلم و الفن، يقوم فيه المتخصصون بإختبار و تقييم تصاميم المواقع و واجهات البرامج لإكتشاف المشاكل التي يمكن أن يواجهها المستخدمين، الممارسين الحقيقين و أصحاب الخبرة في مجال قابلية الإستخدام يستخدمون عادة طرق منهجية منظمة لإجراء إختبارات قابلية الإستخدام ثبت بالتجارب العلمية أنها تؤدي إلى نتائج جيدة، لكن توجد أيضاً إختبارات بسيطة يمكن لغير المتخصص إتباعها للحصول على نتائج مرضية، الكاتب المبدع Steve Krug المتخصص في هذا المجال ألف كتابين الأول بعنوان Don’t Make Me Think و الآخر جديد نسبياً بعنوان Rocket Surgery Made Easy يشرحان و يقدمان بطريقة ميسرة خطوات يمكن إتباعها لإجراء إختبارات قابلية الإستخدام، و الأخ مشهور الدبيان يقدم محتوى عربي متميز عن هذا الموضوع في مدونة قابلية الإستخدام.

فكرة البحث
فكرة البحث الفائز بجائزة أفضل بحث علمي في مؤتمر CHI 2009 بسيطة و عميقة في ذات الوقت و تعتمد على تصرف نقوم به بكثرة أثناء إستخدامنا لكثير من البرامج لكن دون تفكير، إننا عادة عندما نواجه مشكلة مع أحد الأدوات في أي برنامج فإننا نقوم بطريقة تلقائية بإستخدام ميزة التراجع Undo بكثرة، لاحظ نفسك عندما تستخدم برنامج رسم لأول مرة أو برنامج تحرير نصوص جديد، ستجد أنك إذا واجهت مشكلة في البرنامج فإنك تقوم بعمل تراجع ثم تغير في الإعدادات أو تجرب نفس الشيء الذي كنت تقوم بعمله لكن بطريقة مختلفه قليلاً، فإن لم تنجح ستقوم بعمل تراجع وتكرر نفس العملية مرة ثانية، , وقد تعيد هذا الامر خمسة أو ستة مرات، هذا التصرف التلقائي هو ما لاحظه و أستغله أصحاب هذا البحث و قاموا بدراسته ليكشتفو أن بالإمكان (إلى حد ما) إكتشاف بعض مشاكل واجهة الإستخدام عن طريق مراقبة تعامل المستخدم مع ميزة التراجع.

أبعاد الفكرة
رغم بساطة الفكرة إلا أن لها أبعاد واسعة يمكن أن تجرنا للتفكير في تصرفات أخرى يقوم بها المستخدمين عندما يواجهون أحد المشاكل، فمثلاً لو أننا تأكدنا (بطريقة آلية) أن المستخدم يعاني من مشكلة مع واجهة الإستخدما فقد نستطيع مساعدته أو تقديم تلميح بسيط له بطريقة لا تعيق مايقوم بتنفيذه (هذا مشابه نوعاً ما مع مايقوم به الباحثون في مجال Adaptive User Interface) هذا النوع من التفكير قد يقودك لفكرة مبتكرة تساعدك على إكتشاف مشاكل موقعك أو برنامجك بطريقة آلية، لكن يجب التنويه و التحذير من أنك يجب أن لاتتدخل و تعيق المستخدم بطريقة آلية إلا إذا كنت متأكد أنك تقوم بالشيء الصحيح، و حتى إذا كنت متأكد فلاتعيق المستخدم ولكن حاول مساعدته بطريقة مؤدبة.

إضافة “الرد على الكل في تويتر” لمتصفح كروم

قمت ببرمجة هذه الإضافة التي تساعد مستخدمي تويتر على الرد على أكثر من شخص بفعالية، يمكن تحميل الإضافة عن طريق موقعها http://rod.3600.ws. هذه الأداة تقوم بجمع كل الأشخاص الذين تقوم بإختيارهم في رد واحد، الفيديو التالي يشرح في دقيقة تقريباً كيفية استعمال الإضافة و كيفية تثبيتها:

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

مبرمج الألعاب Notch و القدرات الخارقة (سوبر مبرمج)

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

قام Notch في أكثر من مرة بعمل بث حي لشاشته أثناء برمجته لبعض الألعاب، عندما رأيته يبرمج لأول مره تغيرت لدي كثير من القناعات حول “البرمجة بفعالية”. في أحد المرات، كان Notch مشارك في مسابقة لبرمجة لعبة خلال 48 ساعة، وأتذكر أنه واصل البرمجة لمدة يومين لم يتوقف خلالها إلا لسبعة ساعات تقريبا. إن أفضل وصف أجده لهذا الشخص هو: “المبرمج الخارق”.

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

هذا بعض ما لاحظته وأنا أشاهده يبرمج:

  • فترات تركيز طويلة:
    هذا من أبرز ما لاحظته أثناء متابعتي له خلال البث الحي، كان يقوم بالتركيز على البرمجة لفترات طويلة جدا لا يقطعها بمتابعة تويتر أو فيس بوك أو غيره، البعض علق و قال أن لديه شاشة ثانية يتصفح فيها، لكن الحقيقة حتى إن كانت لديه شاشه ثانية فهو يظل يركز على كتابة الأكواد دون إنقطاع أو تشتت.
  • لغة Java:
    كل المشاريع التي أعرفها لهذا المبرمج الخارق قام بتطويرها بلغة Java، هذا الأمر جعلني أعيد التفكير في بعض قناعاتي عن لغات البرمجة، نحن غالباً نبحث عن لغة البرمجة الأنسب، لكن Notch ببساطة اختار لغة البرمجة التي يجد نفسه أكثر احترافية فيها، أيضاً لم يركز على جعل اللعبة تستخدم Flash أو أي منصة أخرى بل ببساطة قام بنشرها كـ Java Applet، بالرغم من كل الإنتقادات التي يمكن أن تسمعها من أن Java Applet بطيئة و غير عملية و غيره.
  • أدوات تطوير بسيطة:
    بعض المبرمجين “القيكس جدا” يركزون عىل الأدوات البرمجية أكثر من البرمجة نفسها! أما Notch فقد كان يستخدم بيئة Eclipse بطريقة أشبه ما تكون بالبدائية، حتّى أن بعض الناس انتقدو عليه عدم استخدامه لكافه الإختصارات في Eclipse، لكن كان يعرف كيف ينجز وهذا هو المهم.
  • طرق إختبار سهلة:
    كان هذا المبرمج الخارق يبرمج دالة معينة ثم يقوم بتشغيل برنامجه و إيقافه عند نقطة ما (طريقة الـ Debugging المعروفة) ثم يستخدم آلية تسمى Hotswap تسمح له بتغير الكود الخاص بالدالة ثم إعادة تشغيلها مرة ثانية دون الحاجة لإعادة عمل كومبايل أو تشغيل لكامل البرنامج، لك أن تتخيل أهمية مثل هذه الآلية عند برمجة شيء معقد مثل الألعاب.

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

تحديث 1: هذا فيديو مسجل لبث حي قام به Notch أثناء برمجته لأحد الألعاب لمدة تجاوز الـ 12 ساعة:
http://www.twitch.tv/notch/b/293132744
المقطع يحتوي على موسيقى!

Paul Graham يتجلى في مقالة جديدة

Frighteningly Ambitious Startup Ideas

تحتار عندما تصف Paul Graham، فهو متخصص في علوم الكمبيوتر و مبرمج له بصمته، وهو مستثمر يقف خلف واحدة من أهم و أكبر شركات الإستثمار في مجال الإنترنت، Y Combinator الشركة التي كانت خلف الكثير من مشاريع الإنترنت المشهورة على رأسها Dropbox و Reddit، وفوق هذا و ذاك تجده صاحب قلم مميز، كتابته يظهر عليها بوضوح أثر خبرته العميقة و التي تتمحور عادة حول مواضيع ريادة الأعمال و التقنية و النصائح الحياتية الشخصية.

في هذه المقالة الجديدة يستعرض الكاتب سبعة أفكار لمشاريع طموحة، هذه الأفكار قد تبدو مرعبة لأي ريادي أعمال نظرا لضخامتها، فمن هذا الشخص المستعد لمنافسة محرك البحث قوقل في مشروعه النائشه؟ لكن رسالة Paul في هذه المقالة أنه على قدر صعوبة و ضخامة هذه المشاريع إلا أن الوصول إلى تحقيقها عبر المشاريع الناشئة Startups هو الحل الأفضل، و أن الوصول لها ممكن عبر خطوات بسيطة.

إذا كنت ريادي أعمال في مجال التقنية خصوصا فأنصحك أن تتابع كتابات Paul Graham، مقالاته ليست طويلة و غالبا تناقش مواضيع مهمة، كذلك الشخص يعتبر من أصحاب الرؤية المستقبلية الطموحة للتقنية و ستبهرك طريقته المميزة في تشجيع ريادي الأعمال على هز عروش الشركات الكبيرة مثل قوقل و آبل و هوليوود!

نقد موضوعي لطريقة التدريس في Khan Academy

Khan Academy: It’s Different This Time

في هذه المقالة الطويلة يناقش الكاتب بشكل موضوعي و ببعض التفصيل مشكلة طريقة التدريس المستخدمة في مواقع مثل Khan Academy و هو موقع تعليمي مشهور يحتوي على عدد ضخم جداً من الدروس في مجال الرياضيات و العلوم. ابتدأ الكاتب بالإشارة إلى أنه لايكاد يخلو حديث عن تطوير التعليم إلا و تذكر تجربة موقع Khan Academy، بينما في الحقيقة هي تجربة فاشلة و قد تكون من أكثر طرق التعليم خطورة هذه الأيام! تحدث الكاتب عن عدة مشاكل جانبية مثل أن معظم العاملين في Khan Academy هم من المبرمجين و المتخصصين في الكمبيوتر و ولايكاد يوجد فيهم متخصصين في التعليم، مشكلة أخرى وهي فكرة جمع النقاط للحصول على شارات كما في الألعاب (Gamification) وهو أمر لم يستسيغه الكاتب. لكن المشكلة الأساسية التي تركز عليها هذه المقالة هي أن موقع Khan Academy يتبع منهجيه في التعليم أثبت فشلها بحسب دراسات أجريت قديما.

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

مأساة مكتبة Library.nu الإلكترونية

The shutdown of library.nu

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

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

وثيقة مشاركة الأفكار

الرابط الدائم لوثيقة مشاركة الأفكار

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

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

الأدوات المستخدمة لتحليل بيانات مستخدمي تويتر

كنت اعمل على خوارزمية تقوم بتصنيف حسابات تويتر بحسب النطاق الجغرافي بشكل آلي (سأقوم بشرح طريقة عملها بطريقة مبسطة لاحقاً إن شاء الله) و بعد تجربتها اجتمع لدي عدد كبير من حسابات تويتر الخاصة بالسعودين ففكرت أن أقوم بحساب أكثر الكلمات تكراراً في وصف هذه الحسابات.

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

إستخدمت لغة البرمجة Python مع مكتبة Tweepy للتواصل مع خدمة تويتر. بعد جلب بيانات المستخدمين و تحميلها على Redis قمت بالمرور على كل حساب و استخرجت الكلمات الموجودة فيه. كل كلمة تمر على عدة فلاتر لتقليل الإختلافات الإملائية قدر الإمكان (مثلاً حرف التاء المربوطة يتم استبداله بهاء ليتم التعامل مع الكلمتان “طالبة” و “طالبه” على انهما نفس الكلمة), أخيراً كل كلمة تعطى معرف (ID) خاص بها، استخدمت خوازمية SHA-1 لهذا الغرض، هذا المعرف يسهل عملية جمع المكرر بحيث أي كلمتين لهما نفس المعرف تعتبران كلمة واحدة. أخيراً، حسبت النتائج ثم حفظتها في ملف خارجي وعرضتها لكم كما رأيتم في التدوينة السابقة.

نظام Redis مرن جداً و سهل الإستخدام، كانت من حسناته أنه سرّع عملية تحليل البيانات بشكل ملحوظ. أرشحه لكل شخص يحتاج للتعامل مع بيانات كبيرة ليس لها هيكل محدد (ليست جداول و أعمدة مثل أنظمة قواعد البيانات التقليدية) و يحتاج لوصول سريع لهذه البيانات.

إستيقظ قبل دوامك بساعتين

Waking Up at 5am to Code

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

الكلمات الأكثر تكراراً في وصف (Bio) عينة من مستخدمي تويتر

قمت بإجراء تحليل سريع لعينة من حسابات أكثر من 110 آلاف مشترك في تويتر، معظم العينة كانت من السعوديين، هدف التحليل هو استخراج الكلمات الأكثر تكراراً في وصف هذه الحسابات (Bio – وهو نص بطول لايزيد عن 160 حرف يتحدث فيه الشخص عن نفسه)، الصورة التالية تظهر الثلاثين كلمة الأكثر تكراراً :

الكلمات الأكثر تكرارا في حسابات تويتر

الكثير من الكلمات الأخرى المهمة و التي قد تساعد على فهم طبيعة شريحة مستخدمي تويتر السعوديين لم تذكر في الرسم البياني أعلاه لضيق المساحة، الكلمات التي ترددت على الأقل عشرة مرات (تقريباً 7 آلاف كلمة) يمكن مشاهدتها في هذا الملف، و يمكن كذلك تنزيل ملف مضغوط يحتوي كل الكلمات (تقريباً 76 الف كلمة) مع عدد مرات تكرارها، الملف محفوظ بترميز UTF-8 و الحقول متباعدة باستخدام Tab.

هذا التحليل بسيط جداً، يمكن تحسينه بجمع الكلمات المتشابهه (مثل “هلال” و “هلالي”) و غيرها للحصول على أرقام أكثر دقة. أخيراً، يمكنك استخدام البيانات كيفما تشاء تحت ترخيص Creative Commons Attribution 3.0 Unported License.

العلم و العمل للرافعي

أبيات للرافعي لها وقع كوقع السيوف يلخص فيها مشكلة العالم الذي لا يعمل بعلمه:

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

“خوازيق” فرق العمل

“الخوازيق” بمفهومها الضيق تضم كل فعل أو قول يصدر من أحد الأفراد تجاه زميل له في العمل من وراء ظهره لأغراض غير نبيلة وهي ميزة بارز في فرق العمل غير المنتجة، من نتائجها فقد المصداقية Credibility بين أفراد الفريق، فيصبح كل فرد من أفراد الفريق متحفظ و يحسب لأفعاله و أقواله الف حساب، فتكون المحصلة النهائية إنعدام الثقة بين فريق العمل، الأمر الذي ذكره كاتب The Five Dysfunctions of a Team على أنه أول علامة من علامات فرق العمل غير المنتجة. لا أدعي خبرة طويلة في فرق العمل لكن أظن أني عاينت مافيه الكفاية، رأيت “خوازيق” في فرق عمل تطوعية دعوية! و رأيت “خوازيق” في بيئات عمل بحثية أكاديمية! و “خوازيق” في مشاريع تجارية!، أنجح فرق العمل التي شاركت فيها كانت الثقة و التماسك هي الميزة الأبرز بين أعضائها.

مقدمة مبسطة لأساس خوارزمية MapReduce

Can Your Programming Language Do This?

خوارزمية تسمى MapReduce تعتبر أحد الأساسات التي يرتكز عليها محرك البحث Google والتي سمحت له أن يقوم بفهرسة و معالجة عدد مهول من صفحات الإنترنت يقدر بأكثر من 50 بليون صفحة، هذه الخوارزمية (هي أسلوب برمجي Programming Paradigm أكثر من كونها خوارزمية) تسمح للمبرمج أن يصمم برنامجه بحيث يمكن أن يتم تقسيم العمل على عدد كبير من أجهزة الكمبيوتر تعمل كلها معاً لإنهاء العمل بشكل متوازي Parallel Computing. هذه الخوارزمية تعتبر من أهم الخوارزميات الموجودة حالياً و تستخدم في كثير من التطبيقات الكبيرة. في هذه المقالة يشرح الكاتب  بأسلوب مبسط و بعدة أمثلة متتالية الفكرة الأساسية خلف MapReduce، قد تحتاج لمراجع أخرى حتى تستوعب فكرة الخوارزمية بشكل كامل.

إستدراك: أشار الأخ “نواف البديع” في تويتر إلى أن مسمى “خوارزمية” لاينطبق على MapReduce، وهذا القول هو الصواب وقد أشرت لذلك في منتصف المقال، لكني استخدمت كلمة خوارزمية تجاوزاً و لعدم امتلاكي لترجمة جيدة لكلمة Paradigm، كل الشكر للأخ نواف على تعليقه.

كيف تنافس أبل

How to beat Apple

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

كيف تبني نظام توصية (Recommender System)

Data Mining: Finding Similar Items and Users

عندما تتصفح أحد الكتب في موقع أمازون ستجد الموقع يقدم لك توصيات لكتب أخرى قام بشرائها مستخدمين آخرين للموقع، هذه التوصيات غالباً ماتكون قريبةَ جداً من نوعية الكتب (أو السلع) التي تفضلها أنت لأنها عُرِضت عليك بناءً على تحليل البيانات المتعلقة بالسلع التي تفضلها و تفضيلات المستخدمين الآخرين، هذا النوع من تحليل البيانات يتم عبر أنظمة تسمى أنظمة التوصية Recommender Systems (كذلك يسمى Collaborative Filtering في بعض الأحيان). يقدم كاتب هذه المقالة شرحاً مختصراً عن هذه الأنظمة و يعرض مثالاً حياً (مع كود برمجي بلغة Ruby) لعدد من المقاييس (الرياضية) المستخدمة في بناء أنظمة من هذا النوع.

الإحتمالات 101 من جامعة هارفرد

Statistics 110: Introduction to Probability

الإحصاء و الإحتمالات Statistics and Probability ليس فقط من أهم أقسام الرياضيات ذات التطبيقات في شتى أنواع العلوم (حاسب، هندسة، فيزياء، كيمياء .. الخ) بل و يعتبر هذا العلم مما نستخدمه بكثرة في حياتنا اليومية دون وعي كامل منّا خصوصاً عندما نقوم باتخاذ قرارات مثل “أي سيارة يجب أن أشتري؟” أو “ما إحتمالية أن يكون الطريق الدائري مزحماً؟”. جامعة هارفارد تقدم كورس كامل يحتوي على محاضرات مسجله بالفيديو و مذكرات PDF مجاناً، يمكن تنزيلهم عن طريق iTunes.

سلسلة تعلم البرمجة بالطريقة الصعبة

LearnCodeTheHardWay.org

يقدم كاتب هذه السلسة مجموعة “تمارين” لتعليم البرمجة تبدأ بمستوى بسيط جداً ثم تزداد صعوبتها تدريجياً. السلسلة حتى الآن تحتوي على كتاب لتعليم Python، و آخر لتعليم Ruby، وتوجد ثلاثة كتب أخرى لاتزال غير مكتملة: كتاب عن لغة C، و آخر عن SQL و ثالث Regular Expressions. يمكن تصفح الكتب مجاناً عبر الإنترنت أو شراء نسخة مطبوعة  من خلال موقع الكاتب.

كرسي المبرمجين – أروع هديه إشتريتها لنفسي

كمبرمج، أستطيع أن أقول و بكل ثقة أن أكثر أداة أستخدمها في حياتي بعيداً عن الكمبيوتر هي “الكرسي” الذي أجلس عليه أكثر من ثلاثة أرباع الوقت الذي أكون فيه مستيقظاً.

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

بدأت بحثي في الإنترنت بعدما أحسست ببوادر الم في ظهري، فوجدت أن موضوع “الكرسي الأنسب للمبرمجين” قد أثير كثيراً عند الغربيين، هناك مثلاً موضوعاً في Coding Horror بعنوان A Developer’s Second Most Important Asset يقول فيه الكاتب أن ثاني أثمن شيء بالنسبة لنا كمبرمجين بعد عقولنا هي ظهورنا! وأنه يجب أن نستثمر بعضاً من المال في “كرسي” ذي جودة عالية، وفي مقال آخر بعنوان Investing in a Quality Programming Chair نُشر في نفس المدونة السابقة، ذكر الكاتب ثلاثة أسباب تجعله يؤمن أن “الكراسي” مهمة في مهنتنا نحن المبرمجين، أترجمها و الخصها هنا بتصرف :

  • “الكرسي” جزء أساسي من الخبرة و التجربة البرمجية: أكثر من ثمانية ساعات تقضيها يومياً جالساً على الكرسي لتنجز عملك، و سواء صدقت ذلك أو لم تصدق فالكرسي له تأثير على فعاليتك و إنتاجيتك كمبرمج!
  • “الكراسي” الرخيصة سيئة: الكرسي الجيد سيجعلك مرتاحاً أكثر بينما الكرسي السيء سيجعلك تفكر في عدد الساعات التي لازلت تحتاجها حتى تتم المهمة التي بين يديك.
  • “الكراسي” تدوم طويلاً: وهذه حقيقة، ففي منزلي في مكة المكرمة على سبيل المثال يوجد لدي كرسي لا أبالغ إذا قلت أن له الآن ما يقارب العشرة سنوات!، لم يدم هذا الكرسي كل هذه الفترة لأنه جيد فقط، بل لأننا في العادة لا نغير “كراسينا” إلا عندما تتلف تماماً.

ومن الأشياء التي جعلتني أفكر في هذا الأمر بشكل أكثر جديه هو لقائي بـ Joel Sploskey الكاتب المعروف لمدونة Joel on Software و مؤسس شركة Fog Creek Software (على الهامش: التقطت بعض الصور مع هذا الرجل، لكني اكتشفت لاحقاً عن طريق أحد الإخوة في تويتر أنه شاذ جنسياً و العياذ بالله!)، كان الرجل يؤكد على أن المكتب و “الكرسي” هم من أهم الأشياء التي يجب أن يهتم بها أي شخص يرغب في توظيف مبرمجين.

خلاصة الأمر و حتى لا أطيل عليكم، وجدت أن الكثيرين يجمعون على أن أفضل كرسي للمبرمجين هو الكرسي المسمى Aeron Chair من شركة Herman Miller، سعره يقارب الـ 900$ دولار أمريكي، استطعت أن أحصل عليه بحوالي 650$ عن طريق أحد الموزعين المحليين (عناوين الموزعين المحليين موجودة في صفحة Global Dealer Locator )

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

هل توافق في ان الكرسي له أهمية بالنسبة للمبرمج ؟

ماهو نوع الكرسي الذي تستخدمه حالياً ؟ وهل تفكر في شراء كرسي جديد ؟

شاركني رأيك برد في مدونتي أو بموضوع في مدونتك ..

ما وراء كُنَاشة – ستمائة مشترك بسطر واحد !

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

كُنّاشة” تعني ” الأوراق تُجعل كالدفتر يقّيد فيها الفوائد و الشوارد للضبط ” , وهي مُقتبسة عن إسم كتاب قيم بعنوان “كناشة النوادر”، كان يقيد فيه كاتبه العالم “عبد السلام هارون” ما يمر عليه من نوادر ،

الأمر المثير أكثر من كُنّاشة هو نتائج الطريقة التي استخدمتها في الإعلان عن هذه الخدمة، حيث أني كتبت سطراً واحداً مكوناً من 54 حرفاً فقط و كانت النتيجة مايقارب الـ 600 مشترك خلال أقل من شهر.

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

أخيراً عزمت أمري، و كتبت في حسابي في Twitter (إقرأ موضوع “ماهو تويتر؟! وكيف تستفيد منه ؟” في مدونة الأخ محمد بشير إذا لم تكن تعرف ماهو Twitter) السطر التالي :

دعوة عامة أقدمها للجميع لتجربة خدمة كناشة على العنوان http://kn.tc

عند كتابتي للسطر السابق كان عدد من يتتبعوني في تويتر يقارب الـ 260 شخص، وفي غضون دقائق من ضغطي على زر الإرسال بدأت الزيارات و الإشتراكات تتزايد في الموقع حتى قاربت المائة مشترك خلال الساعات الاولى من كتابة السطر السحري !، والكثير من الإخوة في Twitter (لهم مني كل الشكر) ساعدوني بعمل ما يسمى retweet حيث قاموا بإعادة نشر السطر السابق في حساباتهم.

في اليوم ذاته ( أو لعله اليوم التالي لا أذكر جيداً )، قام الأخ سعود الهواوي بنشر موضوع بعنوان “إنطلاق خدمة الدفتر الإلكتروني كناشة” في موقع عالم التقنية، ثم تبعه في نشر مواضيع عن كناشة -خلال فترات متلاحقة- كل من الأخت المدونة سلوى، و الأخت المدونة أفياء، و مدونة “تنفس ليس أكثر“، و مدونة الأخت Pastel، و مؤخراً قام المبرمج الأخ صالح المطرفي بنشر موضوع عن كناشة في مدونته، وكذلك قام الدكتور يوسف الحوشان مشكوراً بكتابة موضوع في ملتقى أهل الحديث، (للجميع مني كل الشكر و التقدير، و أعتذر إن غاب عني أحد).

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

قد وضعت هدفاً للموقع وهو أن أتجاوز الـ 500 مشترك خلال الشهر الأول، بدون إستخدام أي وسيلة إعلانية أخرى، وبالفعل تجاوزنا هذا العدد قبل نهاية الشهر.

بالتأكيد عدد المشتركين الحالي (مايقارب الستمائة مشترك) لا يعد رقماً كبيراً في عالم الإنترنت، لكن ما أردت أن أثبته هو قوة المجتمع المتواجد في Twitter، وكيف أنه على صغره إلا أنه كان مؤثر و مترابط إلى حد كبير، و ساهم في نشر الموقع بطريقة فعالة.

سأتوقف عن الكتابة الآن و سأنشر رابط هذه التدوينة في حسابي في Twitter على أمل أن تثبت صحة نظريتي و أجد أن عدد قراءة هذه المدونة قد عاد إلى طبيعته :) ..

دمتم بخير ،