هيثم العسوليRead this in Arabicاقرأ هذه الصفحة بالإنجليزية
عودة إلى ورقة اللقطات

سطح المكتب2023 إلى 2026

أذكاري / ذِكر

ذِكر واحد، بين حين وآخر، على أي شاشة تكون أمامها.

تذكير بالذِّكر تبعني إلى كل منصة أستخدمها: إضافة VS Code، وتطبيق macOS، وتطبيق شريط مهام لويندوز، وتطبيق مستقل لساعة Apple، ورفيق لساعات Wear OS. كل منها أصلي وبلا اتصال وصغير عمدًا.

الإنتاج
أذكاري / ذِكر
الدور
منفردًا: خمس منصات
السنة
2023 إلى 2026
الحالة
صدر
الصيغة
سطح المكتب
بُني بـ
JavaScriptSwiftSwiftUIKotlinC#WPFVS Code APIWatchKitUserNotifications
أذكاري / ذِكر — ذِكر واحد، بين حين وآخر، على أي شاشة تكون أمامها.أذكاري / ذِكر — ذِكر واحد، بين حين وآخر، على أي شاشة تكون أمامها.

المعالجة

This started as a VS Code extension: a small notification during a coding session, dismissible with a keystroke, gone by itself after six seconds. It is the most-starred thing I have written, which says something about how many developers wanted exactly that and nothing more.

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

Since then it has gone everywhere I work: a macOS app, a Windows tray app in C# and WPF with zero NuGet dependencies, a standalone watchOS app that needs no iPhone companion, and a Wear OS version. The Windows build even ships a self-test flag that prints PASS/FAIL for its own logic.

ومنذ ذلك الحين ذهب إلى كل مكان أعمل فيه: تطبيق macOS، وتطبيق شريط مهام لويندوز بـ C# وWPF بلا أي اعتمادية NuGet، وتطبيق watchOS مستقل لا يحتاج رفيقًا على iPhone، ونسخة Wear OS. بل تأتي نسخة ويندوز براية اختبار ذاتي تطبع نجاح/فشل لمنطقها.

The design constraint is the same on all five: it must never become an app you have to manage. Interval, list, and nothing else.

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

التحديات

  1. التذكير الذي يقاطع يُهجَر

    المشكلة

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

    ما فعلته

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

  2. البطارية في الساعة هي المنتج كله

    المشكلة

    تطبيق ساعة يطلق تذكيرات طوال اليوم ويستهلك بطارية ملحوظة يُحذف مهما كانت تذكيراته جيدة. وجلسات التشغيل الممتد والمضاعفات كانت الطريق البديهي والخاطئ.

    ما فعلته

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

  3. خمس منصات تعني صيانة خمسة أضعاف

    المشكلة

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

    ما فعلته

    لا تكاد كل نسخة تعتمد على شيء. فنسخة ويندوز بلا أي حزمة NuGet: شريط المهام عبر WinForms المدمج، وJSON عبر System.Text.Json، والإقلاع عبر السجل، والتنبيه عبر SystemSounds. ولا شيء يُرقّى يعني لا شيء ينكسر.

النتائج

  • Published on the VS Code Marketplace and Google Play.منشور على متجر VS Code وعلى Google Play.
  • Five native builds: VS Code, macOS, Windows, watchOS, Wear OS.خمس نسخ أصلية: VS Code وmacOS وويندوز وwatchOS وWear OS.
  • Fully offline everywhere; no accounts, no analytics, no data collected.يعمل دون اتصال في كل مكان؛ بلا حسابات ولا تحليلات ولا جمع بيانات.

لقطات من العمل

  • أذكاري / ذِكر — كادر 1/4أذكاري / ذِكر، لقطة 1 من 4
  • أذكاري / ذِكر — كادر 2/4أذكاري / ذِكر، لقطة 2 من 4
  • أذكاري / ذِكر — كادر 3/4أذكاري / ذِكر، لقطة 3 من 4
  • أذكاري / ذِكر — كادر 4/4أذكاري / ذِكر، لقطة 4 من 4
التصميم التالي — غرفة اللعبشاهد التصاميم الـ14