ملاحظات
المدونة
ملاحظات عن هندسة الواجهة الأمامية وSEO والذكاء الاصطناعي والتحليلات وبناء منتجات حقيقية.
37 مقالات
رفعت DeepSeek أسعارها — فوجدت V4 Flash نفسها لدى مزود آخر بأقل من السعر القديم
في 17 أغسطس لاحظت أن إنفاقي على DeepSeek API أصبح يقارب خمسة أضعاف المعتاد. بعدها وجدت واختبرت مزودًا آخر يشغّل نفس checkpoint DeepSeek-V4-Flash-0731 بأسعار أقل بنحو 45% حتى من أسعار DeepSeek القديمة.
كيف أحوّل WebP المتحرك وGIF وAPNG إلى H.264 MP4 من دون إفساد الإطارات أو التوقيت
يعيد مسار الإنتاج لدي بناء الإطارات الكاملة التي يراها المستخدم فعلًا، ويحافظ على توقيت المصدر، ويختار CFR واحدًا لكل ملف MP4 نهائي، ويستخدم أصغر لوحة مشتركة من دون تكبير، ويرمّز مقاطع H.264 متوافقة ويجمعها من دون إعادة ترميز فاقدة ثانية، ثم يتحقق من الملف ومن تسليمه عبر HTTP. وفي تشغيل مقاس فعليًا، تحولت 217 ملف WebP متحرك بحجم إجمالي 1.49 GB إلى ملف H.264 MP4 واحد بحجم 78.49 MB.
كنت أنبّه على كل شيء: كيف حوّلت ضجيج أخطاء المتصفح إلى مراقبة مفيدة في الإنتاج
كان نظام الإبلاغ في الواجهة الأمامية يعامل حجب الإعلانات، وأعطال GTM، وAbortError، وScript error الغامض، وأعطال أجزاء Next.js الحقيقية بالطريقة نفسها. أعدت بناء التنبيهات اعتمادًا على ملكية الخطأ، وتأثيره على المستخدم، وجودة الأدلة، وربط الأحداث، وقدرة التطبيق على الاستعادة.
لماذا تتعطل تبويبات Next.js القديمة بعد النشر: HTML قديم، وملفات مفقودة، واختلاف الإصدارات
بعد عملية نشر، سجلت مراقبة الإنتاج فشل تحميل ملف JavaScript تابع لتطبيق Next.js نفسه. السجل أثبت حدوث الفشل، لكنه لم يثبت سببه. تنطلق المقالة من هذه الحادثة لشرح التبويبات القديمة، وHTML القديم، وأصول /_next/static المفقودة، واختلاف الإصدارات، وسياسة الاحتفاظ، وdeploymentId، وترتيب النشر، والمراقبة، والاستعادة الآمنة.
النبضة الواحدة التي كسرت معدل الإطارات الثابت لدي: لماذا لم تكن 5580 تساوي 5625، ولم تكن 3751 تساوي 3750
رفض المدقّق ملف MP4 بمعدل 16 إطارًا/ثانية مرارًا لأن مدة إحدى الحزم كانت 5580 نبضة بدل 5625، ثم اكتشف لاحقًا 3751 نبضة حيث يتطلب 24 إطارًا/ثانية القيمة 3750 بالضبط. علّمتني الحالتان الفصل بين توقيت المصدر، وتكميم CFR، وقاعدة الزمن، وPTS/DTS، والدمج، والتحقق على مستوى الحزم.
كيف خفّضت فيديو إنتاجيًا من نحو 280 MB إلى نحو 50 MB باستخدام H.264
انخفض فيديو حقيقي من نظام الإنتاج من نحو 280 MB إلى نحو 50 MB بعد أن أعدت بناء إعداد H.264 حول CRF 28 وx264 veryslow وسقف دقة من فئة 720p ومعدلات إطارات مفيدة ومتطلبات معتدلة لفك الترميز. وفي مرحلة أقدم كان المثال نفسه قد انخفض بالفعل من نحو 350 إلى 238 MB، كما أظهر تدقيق المكتبة القديمة أن ملفات H.264 بمعدلات عدة ميغابت في الثانية كانت شائعة.
بنيت Gitae لتشخيص أعطال المواقع بما يتجاوز مجرد «يعمل / لا يعمل»
بنيت Gitae للإجابة عن سؤال عملي: هل الموقع غير متاح فعلاً أم أن المشكلة محلية؟ يجمع بين اختبارات من خوادم VDS خارجية في موسكو وهلسنكي وبين DNS وHTTPS/TLS والمنافذ والتوجيه وIP والاستضافة وإشارات CMS، مع التعامل مع كل نتيجة كدليل مساعد لا كحكم نهائي.
لماذا يعمل TypeScript جيداً مع Codex في تطوير البرمجيات المخصصة للإنتاج
في بيئات الإنتاج يمنح TypeScript أداة Codex ما لا يستطيع أفضل prompt تعويضه: عقوداً قابلة للتحقق آلياً، وتغذية راجعة سريعة من المترجم، ومساراً أكثر أماناً لعمليات إعادة الهيكلة الكبيرة.
بنيت Jurfi.com: استوديو في المتصفح لمسودات قانونية منظّمة
بنيت Jurfi.com لتحويل النماذج والقوالب إلى مسودات عمل قانونية منظّمة داخل المتصفح، مع إمكانية الاحتفاظ بالمسودات محليًا وجعل المراجعة جزءًا واضحًا من العملية، من دون الادعاء أن البرمجيات يمكن أن تحل محل المحامي.
أول إيراد لي من SaaS: ماذا أثبتت دفعة واحدة فعلًا؟
كانت أول دفعة تلقيتها من منتج SaaS بنيته بنفسي صغيرة، لكنها غيّرت نوع الدليل الذي أملكه. هذا ما يمكن لمعاملة واحدة أن تؤكده، وما لا تستطيع إثباته، ولماذا يهم التكرار أكثر من لحظة الإنجاز نفسها.
كيف أستخدم Codex لمراجعة 15 مشروعًا من دون التخلي عن التحكم اليدوي
مراجعة 15 مشروعًا برمجيًا كانت تعني سابقًا الغرق في فحوصات متكررة. يساعدني Codex الآن على فحص الأخطاء والاختبارات وSEO والترجمات والتوطين والاتساق بسرعة أكبر بكثير، لكنني أتعامل مع كل finding من الذكاء الاصطناعي كخيط للتحقيق لا كحكم نهائي، وكل تغيير يجب أن أتحقق منه بنفسي.
لماذا أستخدم آخر 3–5٪ من حد Codex في ChatGPT Plus لأكبر المهام الهندسية — تحديث: توقف هذا الأسلوب عن العمل في صيف 2026
تحديث: بحلول صيف 2026 لم يعد هذا الـworkflow موثوقًا بالنسبة لي. اختفى عداد نافذة الخمس ساعات من حسابي، وبقي الحد الأسبوعي ظاهرًا، وأصبحت المهمة الطويلة قد تتوقف عند استنفاده.
نشرت 10,000 مقال SEO بالذكاء الاصطناعي، وانتهى موقعي إلى صفر صفحة مفهرسة في Google
بدت النشر الجماعي بالذكاء الاصطناعي كأنه اختصار مغرٍ: زحف Google إلى جميع عناوين URL للمقالات الـ10,000 التي أنشأتها، لكن نحو 1,000 صفحة فقط دخلت الفهرس فعلياً، وظهرت في البحث وجلبت زيارات حقيقية. ثم بدأت هذه الصفحات نفسها تختفي حتى وصل الموقع كله إلى صفر صفحة مفهرسة. هذه التجربة غيّرت نظرتي إلى AI وSEO والترجمة ودور الذكاء الاصطناعي كمساعد لا كناشر مستقل.
خمس سنوات مع MacBook M1 بذاكرة 8 جيجابايت وSSD سعة 256 جيجابايت: لماذا لم أستبدله حتى الآن
اشتريت MacBook M1 الأساسي بذاكرة 8 جيجابايت وSSD سعة 256 جيجابايت مقابل نحو 1000 دولار، واستخدمته قرابة 15 ساعة يوميًا للتطوير والعمل على الفيديو والصوت والصور والكتابة والتعلّم والمشاريع الجانبية. بعد خمس سنوات أرى حدوده بوضوح، لكنني أفكر في الترقية لأن حجم عملي ازداد، لا لأن الجهاز فقد فائدته.
ترجمت مدونتي إلى 20 لغة باستخدام ChatGPT وبدأت أحصل على زيارات من البحث من أنحاء العالم
غيّر الذكاء الاصطناعي بالنسبة لي اقتصاد النشر متعدد اللغات. انتقلت من مدونة بلغة واحدة إلى نشر كل مقال بما يصل إلى 20 لغة، لتصبح كل نسخة محلية نقطة دخول جديدة من البحث العضوي.
أطلقت QRViz كمولّد مجاني لرموز QR الثابتة — واعتمدت على SEO للتوزيع
أطلقت qrviz.com كمولّد مجاني لرموز QR من دون ميزانية إعلانية أو خطة استحواذ مدفوعة أو مسار لتحقيق الدخل. أعتمد بالكامل على SEO، ولذلك يبقى اكتشاف الناس للمشروع أكبر نقطة عدم يقين في هذه الإطلاقة.
لماذا بدا اكتساب العملاء أصعب من بناء SaaS
درس من تجربة مباشرة في بناء SaaS: العمل الهندسي أعطاني تغذية راجعة واضحة وقابلة للتحقق، بينما احتاج التوزيع والتموضع وصياغة الرسالة والاحتفاظ إلى حلقة مختلفة وأقل قابلية للتنبؤ.
بنيت منتج SaaS بمفردي. تشغيل المدفوعات غيّر طبيعة العمل
بنيت هذا المنتج وحدي في المساءات وعطلات نهاية الأسبوع والإجازات. عندما فعّلت المدفوعات، لم تعد الأخطاء والـ onboarding والإشراف والاحتفاظ والثقة مشكلات مؤجلة، بل أصبحت جزءاً من تشغيل منتج حقيقي.
I Got 550 Views from One Image, Voiceover, and Subtitles: What Three Shorts Tests Actually Taught Me
A simple YouTube Short built from one static image, a voiceover, and subtitles reached 550 views. After three early tests, the useful lesson was not a proven formula, but a repeatable way to experiment without confusing a promising signal with proof.
رأيت قرابة 6,000 طلب على وظيفة Frontend في موسكو. ماذا يقول ذلك — وماذا لا يقول — عن سوق التقنية الروسي؟
في أواخر 2023 كان مسؤولو التوظيف يخبرونني أن 300–500 طلب على الوظيفة الواحدة رقم كبير بالفعل. وفي 20 يناير 2026 رأيت وظيفة Frontend بمستوى متوسط في موسكو تقترب من 6,000 طلب خلال ساعات. هنا أفصل بين الإشارة الحقيقية التي يحملها هذا الرقم وبين الاستنتاجات التي لا يستطيع إثباتها.
كيف غيّر DeepSeek سير عملي مع Node.js: أكثر من 4000 commit في ستة أشهر
انتقل مخطط GitHub الخاص بي في 2025 من شبه فارغ إلى أكثر من 4000 commit في النصف الثاني من العام. هذه تجربة عن كيف غيّرت أدوات AI coding سير عملي في مشاريع Node.js الجانبية، وأين وفّرت الوقت، وأين أخطأت، ولماذا بقي التحقق أهم من سرعة التوليد.
أول TikTok لي في سن 28: ما علّمتني إياه تجربة عرض عمودي للمنتج عن الترافيك
في سن 28 نشرت أول TikTok لي، ثم نشرت نفس عرض المنتج على Reels وShorts. الدرس الأهم لم يكن عدد المشاهدات، بل كيف يغيّر إطار 9:16 واجهة سطح المكتب، وكيف نقيس ترافيك الفيديو القصير من دون الخلط بين الوصول والاكتساب.
اشتريت دومينًا عمره 25 عامًا: أكثر من 1,000 طلب يوميًا كانت تصل إلى روابط ميتة
بعد إطلاق موقعي على دومين سُجِّل لأول مرة عام 2000، رأيت أكثر من 1,000 طلب يوميًا لروابط قديمة وأكثر من 900 خطأ في Yandex Webmaster خلال ليلة واحدة. هنا أفرّق بين ما استطعت إثباته فعلًا وما بقي مجرد تفسير، وأشرح لماذا استخدمت 410 بشكل موجّه وكيف سأراجع دومينًا قديمًا اليوم.
كان لدى Yandex نحو 12,500 صفحة مفهرسة، لكن الزيارات من روسيا كانت شبه معدومة: مشكلة Cloudflare التي فاتتني
كان Yandex قد فهرس 12,500 صفحة، ومع ذلك كان الترافيك من روسيا شبه صفر. حصرت المشكلة في مسار الشبكة، عطّلت بروكسي Cloudflare، ونقلت التخزين المؤقت والضغط والحماية الأساسية إلى Nginx على خادم VDS الخاص بي، فعادت قابلية الوصول.
موقعي الثابت المبني بـ Next.js يتلقى آلاف فحوصات الثغرات يوميًا، وNginx بالكاد يلاحظها
سجلاتي مليئة بطلبات تبحث عن WordPress وأبواب PHP الخلفية وملفات .env و.git/config. في موقعي الثابت المبني بـ Next.js والمخدوم عبر Nginx، تنتهي معظمها كطلبات فاشلة و404 منخفضة الكلفة، بينما ظل حمل CPU ثابتًا. هذه هي الحدود الحقيقية لما تقوله التجربة عن أمان المواقع الثابتة.
بدأ Yandex يجلب الزيارات إلى موقعي الجديد بينما ظل Google شبه ثابت
في المشروع الجديد نفسه، لم يحقق Google سوى نحو 300 نقرة خلال فترة طويلة، بينما أظهر Yandex Webmaster نموًا واضحًا وصل في إحدى اللحظات إلى +500% في النقرات. المهم هو الفصل بين ما تثبته هذه الأرقام فعلًا وما يبقى مجرد تفسير محتمل.
Yandex فهرس 4,278 صفحة من صفحات Next.js لدي خلال ليلة واحدة — ما الذي أثبته ذلك فعلاً؟
أدخل Yandex فجأة 4,278 صفحة من الصفحات التي أنشأتها بشكل ثابت باستخدام Next.js إلى الفهرس. كان ذلك إنجازاً تقنياً حقيقياً، لكنه لم يكن دليلاً على الترتيب أو الزيارات. هنا أفصل بين ما أثبته هذا الحدث فعلاً بشأن SSG وProgrammatic SEO وما لا يمكن استنتاجه منه.
شهري الأول مع SEO: 632 زائرًا عضويًا واختبار واقعي لحركة البوتات
استخدمت مشروعًا جانبيًا شخصيًا للاستعداد لمبادرة SEO أكبر في العمل. بعد شهر وصل المشروع إلى 632 زائرًا عضويًا، لكن يومًا سجّل 83 زائرًا أوضح لي مدى سهولة أن تشوّه الحركة المشبوهة وقيود أدوات التحليل صورة النتائج.
كدت أتجاهل Yandex Webmaster. بعد أسبوعين كان يرسل زيارات أكثر من Google
أنشأت side project باستخدام Next.js لأكتسب خبرة قبل مشروع عمل سيكون فيه SEO عنصرًا حاسمًا. خلال أول أسبوعين سجلت 58 زائرًا من Google و200 من Yandex، وتعلمت أن الزيارات والفهرسة والتشخيص إشارات مختلفة.
Yandex Metrica مقابل Google Analytics: لماذا فضّلت Metrica بعد أسبوع واحد
شغّلت Google Analytics وYandex Metrica معًا لمدة أسبوع على مشروع جديد. أصبحت أستخدم Metrica أكثر أساسًا بسبب Webvisor وإعادة تشغيل الجلسات، لكن هذا يصف أسلوب عملي ولا يثبت أن منصة واحدة أفضل للجميع.
زحف Yandex إلى مدونتي من دون /en، وأنقذت تحويلات 308 الروابط من أخطاء 404
بعد أن أضفت نحو 3000 صفحة بصيغة /en/blog/... إلى ملف sitemap، رأيت Yandex يحاول الوصول إلى المسارات المقابلة /blog/.... تحويلات 308 التي كانت مجهزة مسبقًا منعت تلك الطلبات من الانتهاء بأخطاء 404. الدرس الحقيقي لم يكن أن Yandex «أفسد» ملف sitemap، بل أن طبقة تحويلات دقيقة تجعل بنية الروابط أكثر تحمّلًا للأخطاء.
موقعان جديدان قفزا في Google ثم هبطت الزيارات بنحو 10 أضعاف خلال أيام
في إطلاقين متتاليين رأيت ارتفاعًا حادًا في مرات الظهور على Google، ثم انخفضت الزيارات إلى نحو العُشر بعد أيام قليلة. النمط حقيقي، لكنني لا أستطيع إثبات أن سببه ما يسمى «فترة شهر العسل» لدى Google.
اختفاء 2,000 صفحة من بحث Yandex خلال ليلة واحدة: ما الذي كان يمكنني استنتاجه فعلاً؟
فتحت Yandex Webmaster ووجدت أن 2,000 صفحة من أصل نحو 8,000 لم تعد تشارك في البحث. كان الانخفاض بنسبة 25% لافتاً، لكن الدرس الأهم كان عدم الخلط بين تغيّر مُلاحظ في حالة الصفحات داخل البحث وسبب تم إثباته.
طرحت أكثر من 10 أسئلة في MoscowJS 66 وفزت بجائزتين
في MoscowJS 66 طرحت أكثر من 10 أسئلة خلال محاضرات عن بوتات Telegram وLangChain.js وهندسة أداة لبناء المواقع واختبار أنواع TypeScript. اختير سؤالان كأفضل الأسئلة، وغادرت بجائزتين.
ما الذي خرجت به من PiterJS #79: الأنظمة الأحادية القديمة وFrontOps وأداء الويب والأسئلة الأفضل
ركز PiterJS #79 في سانت بطرسبرغ على صيانة الأنظمة الموجودة بالفعل: monolith قديم، وFrontOps، ومقاييس أداء الويب. خرجت بملاحظات عملية، وجائزتين من جلسات Q&A، وتذكير جديد بأن قيمة اللقاءات الحضورية تزداد عندما نشارك فيها فعلاً.
أطلقت مدونة Next.js بـ21 لغة: ماذا أخبرتني 439 مرة ظهور في Google فعلًا؟
في الأسبوع الأول حصلت مدونتي المبنية بـNext.js والمترجمة إلى 21 لغة على 439 مرة ظهور و5 نقرات من Google. لاحقًا كانت 436 صفحة من أصل 471 مفهرسة. الدرس الأهم كان الفصل بين الظهور والفهرسة والأداء الحقيقي في البحث.
MoscowJS 65 بعد ست سنوات مع JavaScript: لماذا ما زلت أحضر اللقاءات المحلية
حضرت MoscowJS 65 في T Bank يوم 5 يونيو 2025. تناولت الجلسات الأربع الذكاء الاصطناعي من زوايا مختلفة، لكن خلاصة تجربتي كانت أبسط: اللقاءات المحلية ما زالت تمنحني شيئاً لا تستطيع الوثائق والتسجيلات أن تحل محله بالكامل.