خان المُبرمجين (علي فاضل)
Video
كنت أتصفَّح X يوم الخميس، فوجدت شخصًا يبحث عن منصة تدمج بين:
1. التحرير التعاوني لملفات Markdown في الوقت الفعلي، كما هو متاح في منصات مثل Notion أو Google Docs (على اختلاف صِيَغ الملفات)
2. إمكانية التعامل مع المشاريع في هذه المنصة على أنها مستودع Git، كما هو متاح في منصات مثل GitHub و GitLab
أعجبتني الفكرة؛ فهي مفيدة خلال الاجتماعات أو التعاون في كتابة الملفات، وفي الوقت ذاته تتوافق بشكل ممتاز في حال أردت استخدام أدوات مثل Claude Code أو Codex لمراجعة هذه الملفات وتعديلها محليًّا ثم رفع التعديلات.
رددت عليه مازحا فكتبت:
Let's vide-code one 🚀
(نعم، أخطأت في كتابة كلمة vibe 🥲)
ثم فكرت: لمَ لا 🤔؟ فقررت تجربة إنشاء هذه المنصة باستخدام Claude Code 🤓 وكانت النتيجة MDArena:
https://github.com/AliOsm/MDArena
منصة مكتوبة باستخدام Rails + InertiaJS + VueJS، تعتمد على قاعدة بيانات PostgreSQL ومكتبات مثل Y.js و CodeMirror لتوفير تجربة تحرير تعاونية لملفات Markdown في الوقت الفعلي، وتُعامل المشاريع الموجودة عليها على أنها مستودعات Git 😁
كان المشروع للتسلية، ولم أكتب فيه أي سطر برمجي. كنت أختبر نموذج Opus 4.6 فقط لا غير، ثم راجعته بالكامل باستخدام Codex و GPT 5.3 Codex XHigh.
هل تظنون أن توفير هذه المنصة مفيد فعلًا؟ وهل تسجيل فيديو أشرح فيه عملية بنائها سيكون جيدًا؟
الفيديو المُرفق يستعرض المنصة بشكل سريع، واسم صديقي العزيز إبراهيم تفاحة يضيء فيه 😂
https://www.youtube.com/watch?v=RwEw10p80OI
والسلام عليكم 👋🏻
1. التحرير التعاوني لملفات Markdown في الوقت الفعلي، كما هو متاح في منصات مثل Notion أو Google Docs (على اختلاف صِيَغ الملفات)
2. إمكانية التعامل مع المشاريع في هذه المنصة على أنها مستودع Git، كما هو متاح في منصات مثل GitHub و GitLab
أعجبتني الفكرة؛ فهي مفيدة خلال الاجتماعات أو التعاون في كتابة الملفات، وفي الوقت ذاته تتوافق بشكل ممتاز في حال أردت استخدام أدوات مثل Claude Code أو Codex لمراجعة هذه الملفات وتعديلها محليًّا ثم رفع التعديلات.
رددت عليه مازحا فكتبت:
Let's vide-code one 🚀
(نعم، أخطأت في كتابة كلمة vibe 🥲)
ثم فكرت: لمَ لا 🤔؟ فقررت تجربة إنشاء هذه المنصة باستخدام Claude Code 🤓 وكانت النتيجة MDArena:
https://github.com/AliOsm/MDArena
منصة مكتوبة باستخدام Rails + InertiaJS + VueJS، تعتمد على قاعدة بيانات PostgreSQL ومكتبات مثل Y.js و CodeMirror لتوفير تجربة تحرير تعاونية لملفات Markdown في الوقت الفعلي، وتُعامل المشاريع الموجودة عليها على أنها مستودعات Git 😁
كان المشروع للتسلية، ولم أكتب فيه أي سطر برمجي. كنت أختبر نموذج Opus 4.6 فقط لا غير، ثم راجعته بالكامل باستخدام Codex و GPT 5.3 Codex XHigh.
هل تظنون أن توفير هذه المنصة مفيد فعلًا؟ وهل تسجيل فيديو أشرح فيه عملية بنائها سيكون جيدًا؟
الفيديو المُرفق يستعرض المنصة بشكل سريع، واسم صديقي العزيز إبراهيم تفاحة يضيء فيه 😂
https://www.youtube.com/watch?v=RwEw10p80OI
والسلام عليكم 👋🏻
🔥8❤2
إلى الأصدقاء في دبي (والإمارات عامةً)، تُقيم MilkStraw AI فعالية لمن يعيشون على كتابة الشيفرات البرمجية وتملأ حياتهم الشاشات السوداء ويُصيبهم ضعف النظر مبكرًا وغيرها من الأمور التي لا يتسع المجال لذكرها 😂
ستقام الفعالية يوم الجمعة القادم، ويمكنكم التسجيل فيها من هذا الرابط:
https://luma.com/6eg1dhml
للأسف، لن أكون موجودًا، ولكن زملائي جواد شريم وأنس عبدالله سيكونان حاضرين بإذن الله ✌️
نتمنى ممّن يستطيع الحضور أن يفعل، ففعاليات MilkStraw دائمًا مختلفة 😉
ستقام الفعالية يوم الجمعة القادم، ويمكنكم التسجيل فيها من هذا الرابط:
https://luma.com/6eg1dhml
للأسف، لن أكون موجودًا، ولكن زملائي جواد شريم وأنس عبدالله سيكونان حاضرين بإذن الله ✌️
نتمنى ممّن يستطيع الحضور أن يفعل، ففعاليات MilkStraw دائمًا مختلفة 😉
❤5🔥1
Media is too big
VIEW IN TELEGRAM
هل تعانون من عدم استقرار قاعدة بيانات بيئة التطوير عند التنقل بين فروع المشروع (Branches)؟ 🤔
واجهنا هذه المشكلة في MilkStraw AI وصنعنا حلًّا يُناسبنا ونشرناه لعله يُفيد الآخرين 🚀
في هذا الفيديو أستعرض المشكلة والطريقة التي اتبعناها لحلها 🤓
https://www.youtube.com/watch?v=Z4zsGm4k6ik
رابط المشروع على GitHub:
https://github.com/milkstrawai/branch_db
واجهنا هذه المشكلة في MilkStraw AI وصنعنا حلًّا يُناسبنا ونشرناه لعله يُفيد الآخرين 🚀
في هذا الفيديو أستعرض المشكلة والطريقة التي اتبعناها لحلها 🤓
https://www.youtube.com/watch?v=Z4zsGm4k6ik
رابط المشروع على GitHub:
https://github.com/milkstrawai/branch_db
🔥4❤3
This media is not supported in your browser
VIEW IN TELEGRAM
هل تبحث عن واجهة لـ Claude Code تعمل على المتصفح ؟.؟
وجدت هذا المستودع خلال تصفحي منصة X:
https://github.com/The-Vibe-Company/companion
فجرَّبته ويبدو أنه لطيف ويعمل بشكل جيد! واجهة جميلة على المتصفح لاشتراكك على Claude Code بدلا من استخدامه من الـ Terminal 🤓
وجدت هذا المستودع خلال تصفحي منصة X:
https://github.com/The-Vibe-Company/companion
فجرَّبته ويبدو أنه لطيف ويعمل بشكل جيد! واجهة جميلة على المتصفح لاشتراكك على Claude Code بدلا من استخدامه من الـ Terminal 🤓
❤1🔥1
خان المُبرمجين (علي فاضل)
Photo
قال صلى الله عليه وسلم: "اعقِلْها وتوكَّلْ"
وجدت الحديث قبل قليل وأنا أحاول ترجمة:
"Good intentions don't work, mechanisms do"
نستخدم في MilkStraw AI منصة Linear لإدارة المشاريع والمهام، ولكن بناء عادة "تجهيز المهمة على Linear، ثم إنجازها، ثم ربطها بـ Pull Request على GitHub" كان تحديًا حقيقيًّا.. والاعتماد على "حسن النوايا" لم يكن كافياً 😅
شخصيًّا، كنت أنسى توثيق المهام الصغيرة، وأحياناً تمر مشاريع كاملة دون توثيق كافٍ، وكنا في كل اجتماع نُذكّر بعضنا بالأمر دون جدوى ملموسة.
لذا قررنا الانتقال من "النية" إلى "الآلية":
1. منذ أسبوعين، وفَّقنا الله لإنشاء أمر جديد ضمن أوامر Mise التي نستخدمها لإدارة بيئة التطوير، ومهمته الأساسية هي إنشاء الـ PRs.
2. اعتمدنا سياسة صارمة: نرفض أي PR لا يتم إنشاؤه عبر هذا الأمر: mise pr:create.
3. وبالأمس، أضفنا ميزة تمنع المستخدم من إنشاء الـ PR إلا بعد إدخال معرّف المهمة (Issue ID) المرتبطة بها من Linear كالتالي: mise pr:create -t DEV1234.
النتيجة: أصبح الجميع مُجبرًا (بفعل النظام لا بحسن النوايا) على إنشاء مهمات على Linear وربطها بالـ PRs التي ينشئونها على GitHub وتوقفنا عن لوم الذاكرة 🤓
كتبت هذا المنشور لأن هذا التعديل "أجبرني" قبل قليل على إنشاء مهمة على Linear كنت سأنساها 🫠
والسلام عليكم 👋🏻
وجدت الحديث قبل قليل وأنا أحاول ترجمة:
"Good intentions don't work, mechanisms do"
نستخدم في MilkStraw AI منصة Linear لإدارة المشاريع والمهام، ولكن بناء عادة "تجهيز المهمة على Linear، ثم إنجازها، ثم ربطها بـ Pull Request على GitHub" كان تحديًا حقيقيًّا.. والاعتماد على "حسن النوايا" لم يكن كافياً 😅
شخصيًّا، كنت أنسى توثيق المهام الصغيرة، وأحياناً تمر مشاريع كاملة دون توثيق كافٍ، وكنا في كل اجتماع نُذكّر بعضنا بالأمر دون جدوى ملموسة.
لذا قررنا الانتقال من "النية" إلى "الآلية":
1. منذ أسبوعين، وفَّقنا الله لإنشاء أمر جديد ضمن أوامر Mise التي نستخدمها لإدارة بيئة التطوير، ومهمته الأساسية هي إنشاء الـ PRs.
2. اعتمدنا سياسة صارمة: نرفض أي PR لا يتم إنشاؤه عبر هذا الأمر: mise pr:create.
3. وبالأمس، أضفنا ميزة تمنع المستخدم من إنشاء الـ PR إلا بعد إدخال معرّف المهمة (Issue ID) المرتبطة بها من Linear كالتالي: mise pr:create -t DEV1234.
النتيجة: أصبح الجميع مُجبرًا (بفعل النظام لا بحسن النوايا) على إنشاء مهمات على Linear وربطها بالـ PRs التي ينشئونها على GitHub وتوقفنا عن لوم الذاكرة 🤓
كتبت هذا المنشور لأن هذا التعديل "أجبرني" قبل قليل على إنشاء مهمة على Linear كنت سأنساها 🫠
والسلام عليكم 👋🏻
❤4🔥2😁2
أول مساهمة على روبي عربي من الأخ Ghassen Faidi جزاه الله خيرا 🎉
رابط المساهمة:
https://github.com/AliOsm/ruby3araby/pull/2
رابط المستودع:
https://github.com/AliOsm/ruby3araby
رابط المساهمة:
https://github.com/AliOsm/ruby3araby/pull/2
رابط المستودع:
https://github.com/AliOsm/ruby3araby
❤6
خان المُبرمجين (علي فاضل)
Photo
فكرة وجود شيء يُنفِّذ ما تطلبه منه بجودة معقولة طوال الوقت مُرهقة
تريد أن تجعله يعمل دون توقُّف لتُنجز أكبر قدر ممكن من العمل، ثم تحتاج لمراجعة جزء من هذا الإنجاز لأنك لن تستطيع مراجعته بالكامل غالبًا، ثم تحتاج لتجهيز الدفعة التالية من الأعمال، وهكذا تدور في دوَّامة لا نهاية لها.
من مشاكل هذه الدوَّامة أنك تستطيع التعامل معها بسهولة من حاسبك فقط، فكل الوسائل الأخرى جودة تجربة المستخدم فيها ضعيفة إلى حد كبير.
طبَّقت البارحة هذا الشرح:
https://sealos.io/blog/claude-code-on-phone
لربط هاتفي بحاسبي من خلال SSH للتحدِّث مع Claude Code وأنا بعيد عن الحاسب. أتابع تقدُّم المهام، وأعطيه الأوامر التالية لتنفيذها.
أُعجبت جدًّا بهذه الطريقة وهي سلسة نوعًا ما:
- تستخدم Tailscale لإنشاء شبكة خاصة بين أجهزتك
- تستخدم tmux لإنشاء Sessions على الحاسب وحفظ حالتها
- تستخدم تطبيقًا مثل Termius على هاتفك لتتحكم بالحاسب
ولكن هذه الطريقة تجعلك تغرق في الدوَّامة أكثر من السابق للأسف. للحظة ستشعر أنك أنت "عنق الزجاجة" لعجلة الإنتاجية الجميلة هذه.
فرصة تشتتك وعدم تركيزك في هذه الأزمان كبيرة جدًّا سواء على مستوى حياتك الشخصية أو اهتماماتك العملية والعلمية، لأنك تستطيع فعل كل شيء "نظريًّا" وأنت تكتب على هاتفك ودون تكلفة كبيرة إلى حد ما.
أسأل الله التوفيق وسداد الرأي لي ولكم.
تريد أن تجعله يعمل دون توقُّف لتُنجز أكبر قدر ممكن من العمل، ثم تحتاج لمراجعة جزء من هذا الإنجاز لأنك لن تستطيع مراجعته بالكامل غالبًا، ثم تحتاج لتجهيز الدفعة التالية من الأعمال، وهكذا تدور في دوَّامة لا نهاية لها.
من مشاكل هذه الدوَّامة أنك تستطيع التعامل معها بسهولة من حاسبك فقط، فكل الوسائل الأخرى جودة تجربة المستخدم فيها ضعيفة إلى حد كبير.
طبَّقت البارحة هذا الشرح:
https://sealos.io/blog/claude-code-on-phone
لربط هاتفي بحاسبي من خلال SSH للتحدِّث مع Claude Code وأنا بعيد عن الحاسب. أتابع تقدُّم المهام، وأعطيه الأوامر التالية لتنفيذها.
أُعجبت جدًّا بهذه الطريقة وهي سلسة نوعًا ما:
- تستخدم Tailscale لإنشاء شبكة خاصة بين أجهزتك
- تستخدم tmux لإنشاء Sessions على الحاسب وحفظ حالتها
- تستخدم تطبيقًا مثل Termius على هاتفك لتتحكم بالحاسب
ولكن هذه الطريقة تجعلك تغرق في الدوَّامة أكثر من السابق للأسف. للحظة ستشعر أنك أنت "عنق الزجاجة" لعجلة الإنتاجية الجميلة هذه.
فرصة تشتتك وعدم تركيزك في هذه الأزمان كبيرة جدًّا سواء على مستوى حياتك الشخصية أو اهتماماتك العملية والعلمية، لأنك تستطيع فعل كل شيء "نظريًّا" وأنت تكتب على هاتفك ودون تكلفة كبيرة إلى حد ما.
أسأل الله التوفيق وسداد الرأي لي ولكم.
❤5😱1😐1😨1
Screenshot 2026-02-18 at 11.11.01 AM.png
5.4 KB
أحدهم كان يفحص ثغرات MilkStraw AI 🤓
فتحت قائمة الوصول السريع (Command+K) في منصة MilkStraw البارحة وضغطت "/" صدفة لأجد هذا المستخدم يُحاول استخدام ezxss . com لفحص ثغرة XSS على المنصة.
الحمدلله أغلب هذه الثغرات البسيطة تُعالجها Ruby on Rails تلقائيًّا لنهتم نحن بمعالجة الثغرات في الشيفرة البرمجية التي نكتبها نحن.
وأنت صديقي، ابحث عن "/" في أسماء المستخدمين لديك 😂
فتحت قائمة الوصول السريع (Command+K) في منصة MilkStraw البارحة وضغطت "/" صدفة لأجد هذا المستخدم يُحاول استخدام ezxss . com لفحص ثغرة XSS على المنصة.
الحمدلله أغلب هذه الثغرات البسيطة تُعالجها Ruby on Rails تلقائيًّا لنهتم نحن بمعالجة الثغرات في الشيفرة البرمجية التي نكتبها نحن.
وأنت صديقي، ابحث عن "/" في أسماء المستخدمين لديك 😂
❤5😁1
أطلقنا مؤخراً في MilkStraw AI نظامًا للخصومات، وأثناء تنفيذه واجهنا تحديات تتعلق بتناسق البيانات (Data Consistency) نتيجة العمليات المتزامنة.
في هذه المقالة، استعرضت خمس مشكلات شائعة واجهتنا، وكيفية معالجتها برمجيًّا مع أمثلة توضيحية لتبسيط الفكرة.
https://www.milkstraw.ai/blog/database-race-conditions-coupon-system-rails
في هذه المقالة، استعرضت خمس مشكلات شائعة واجهتنا، وكيفية معالجتها برمجيًّا مع أمثلة توضيحية لتبسيط الفكرة.
https://www.milkstraw.ai/blog/database-race-conditions-coupon-system-rails
❤5
قلِّل استهلاك رموزك إذا كنت تستخدم Claude Code (أو غيره) 🤓
وجدت أداة rtk قبل قليل، وجربتها مع Claude Code ويبدو أنها مفيدة جدًّا
فكما هو موضح في الصورة، الأداة تستقبل مخرجات الأوامر المتعارف عليها (وهي كثيرة) والمستخدمة من قبل أدوات البرمجة بالذكاء الاصطناعي وتعيد صياغتها لتكون أكثر ملائمة للنماذج اللغوية من ناحية استهلاك الرموز.
طريقة تثبيت الأداة سهلة جدا (على الأقل على MacOS):
brew install rtk
rtk init --global
وهذا رابط المستودع:
https://github.com/rtk-ai/rtk
وجدت أداة rtk قبل قليل، وجربتها مع Claude Code ويبدو أنها مفيدة جدًّا
فكما هو موضح في الصورة، الأداة تستقبل مخرجات الأوامر المتعارف عليها (وهي كثيرة) والمستخدمة من قبل أدوات البرمجة بالذكاء الاصطناعي وتعيد صياغتها لتكون أكثر ملائمة للنماذج اللغوية من ناحية استهلاك الرموز.
طريقة تثبيت الأداة سهلة جدا (على الأقل على MacOS):
brew install rtk
rtk init --global
وهذا رابط المستودع:
https://github.com/rtk-ai/rtk
❤3
خان المُبرمجين (علي فاضل)
قلِّل استهلاك رموزك إذا كنت تستخدم Claude Code (أو غيره) 🤓 وجدت أداة rtk قبل قليل، وجربتها مع Claude Code ويبدو أنها مفيدة جدًّا فكما هو موضح في الصورة، الأداة تستقبل مخرجات الأوامر المتعارف عليها (وهي كثيرة) والمستخدمة من قبل أدوات البرمجة بالذكاء الاصطناعي…
أجريت الاختبار التالي 5 مرات على Claude Code مع وبدون استخدام rtk:
Read the changes in the last commit file by file then reply with the changed file names in a list.
كان متوسط استهلاك الرموز بدون rtk حوالي 3.2 ألف رمز، أما عند استخدام rtk فبلغ متوسط الاستهلاك 2.88 ألف رمز.
تحسين جيِّد بمتوسط 320 رمزًا تقريبًا، ولكن أحتاج لاختبار الأداة بشكل أفضل.
Read the changes in the last commit file by file then reply with the changed file names in a list.
كان متوسط استهلاك الرموز بدون rtk حوالي 3.2 ألف رمز، أما عند استخدام rtk فبلغ متوسط الاستهلاك 2.88 ألف رمز.
تحسين جيِّد بمتوسط 320 رمزًا تقريبًا، ولكن أحتاج لاختبار الأداة بشكل أفضل.
❤5
كيف أضفنا الـ Passkeys في MilkStraw AI خلال أسبوع واحد وبدون خدمات خارجية ؟.؟
في MilkStraw AI، نعتمد على Ruby on Rails مع InertiaJS و VueJS لبناء الواجهات، ومكتبة Devise لإدارة المستخدمين.
عندما قررنا تمكين الـ Passkeys، واجهتنا مشكلة: لم نجد دليلًا عمليًّا أو مقالات تشرح كيفية دمجها بسهولة باستخدام هذه الأدوات؛ لذا قررنا تنفيذها بأنفسنا ومشاركة التجربة معكم.
نشرنا سلسلة من 4 مقالات تقنية نفصِّل فيها الشيفرة البرمجية وكل ما يتعلق بالـ Passkeys. يمكنك الاستفادة منها مباشرة، أو تزويد أدوات الذكاء الاصطناعي بها لتنفيذ المهمة لك، بغض النظر عن التقنيات التي تستخدمها.
روابط المقالات في أول تعليق:
1. التجهيز وتسجيل الـ Passkeys
2. استخدام الـ Passkeys كعامل مصادقة ثنائي (2FA) ثم تسجيل الدخول بدون كلمة مرور
3. إنشاء رموز النسخ الاحتياطي (Backup codes)
4. القرارات التقنية والمفاضلات التي اتبعناها
في MilkStraw AI، نعتمد على Ruby on Rails مع InertiaJS و VueJS لبناء الواجهات، ومكتبة Devise لإدارة المستخدمين.
عندما قررنا تمكين الـ Passkeys، واجهتنا مشكلة: لم نجد دليلًا عمليًّا أو مقالات تشرح كيفية دمجها بسهولة باستخدام هذه الأدوات؛ لذا قررنا تنفيذها بأنفسنا ومشاركة التجربة معكم.
نشرنا سلسلة من 4 مقالات تقنية نفصِّل فيها الشيفرة البرمجية وكل ما يتعلق بالـ Passkeys. يمكنك الاستفادة منها مباشرة، أو تزويد أدوات الذكاء الاصطناعي بها لتنفيذ المهمة لك، بغض النظر عن التقنيات التي تستخدمها.
روابط المقالات في أول تعليق:
1. التجهيز وتسجيل الـ Passkeys
2. استخدام الـ Passkeys كعامل مصادقة ثنائي (2FA) ثم تسجيل الدخول بدون كلمة مرور
3. إنشاء رموز النسخ الاحتياطي (Backup codes)
4. القرارات التقنية والمفاضلات التي اتبعناها
🔥3
ألغيت اشتراك Cursor من أسابيع، ولم أشعر بالفرق
استخدمت Cursor لعامين تقريبًا، ولكن مع ظهور وانتشار أدوات البرمجة بالذكاء الاصطناعي كـ Claude Code وغيرها، وجدت نفسي أكتب شيفرة أقل من السابق بكثير.
فألغيت الاشتراك وانتقلت مرة أخرى إلى VSCode، وملاحظتي الأولى أن VSCode أفضل من Cursor، بمراحل 😂
حاليًّا، أحتاج المحرر فقط لمراجعة التعديلات بدقة وتعديل بعض الأسطر وكتابة ملفات MD 🤓 حتى أنني أعدت ترتيب الأزرار في VSCode ليكون زر مراجعة التعديلات في Git هو الأول.
استخدمت Cursor لعامين تقريبًا، ولكن مع ظهور وانتشار أدوات البرمجة بالذكاء الاصطناعي كـ Claude Code وغيرها، وجدت نفسي أكتب شيفرة أقل من السابق بكثير.
فألغيت الاشتراك وانتقلت مرة أخرى إلى VSCode، وملاحظتي الأولى أن VSCode أفضل من Cursor، بمراحل 😂
حاليًّا، أحتاج المحرر فقط لمراجعة التعديلات بدقة وتعديل بعض الأسطر وكتابة ملفات MD 🤓 حتى أنني أعدت ترتيب الأزرار في VSCode ليكون زر مراجعة التعديلات في Git هو الأول.
❤2