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

قمت ببرمجة هذه الإضافة التي تساعد مستخدمي تويتر على الرد على أكثر من شخص بفعالية، يمكن تحميل الإضافة عن طريق موقعها 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. يمكن تصفح الكتب مجاناً عبر الإنترنت أو شراء نسخة مطبوعة  من خلال موقع الكاتب.