<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Moo Moo</title>
    <description>The latest articles on DEV Community by Moo Moo (@moo_moo_5f1e2b4306785a535).</description>
    <link>https://dev.to/moo_moo_5f1e2b4306785a535</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3139619%2F53deb726-b2ac-465f-a3e5-e98b0e745034.png</url>
      <title>DEV Community: Moo Moo</title>
      <link>https://dev.to/moo_moo_5f1e2b4306785a535</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/moo_moo_5f1e2b4306785a535"/>
    <language>en</language>
    <item>
      <title>I Built ckpt: Automatic Checkpoints for AI Coding Sessions</title>
      <dc:creator>Moo Moo</dc:creator>
      <pubDate>Fri, 03 Apr 2026 14:27:54 +0000</pubDate>
      <link>https://dev.to/moo_moo_5f1e2b4306785a535/i-built-ckpt-automatic-checkpoints-for-ai-coding-sessions-44gl</link>
      <guid>https://dev.to/moo_moo_5f1e2b4306785a535/i-built-ckpt-automatic-checkpoints-for-ai-coding-sessions-44gl</guid>
      <description>&lt;p&gt;AI agents don't have Ctrl+Z.&lt;/p&gt;

&lt;p&gt;When they break your code, they don't undo. They re-read every file, reason about what went wrong, rewrite from scratch — burning tokens on code they already had right. Sometimes the "fix" breaks something else. And the cycle repeats.&lt;/p&gt;

&lt;p&gt;I got tired of watching this happen, so I built &lt;strong&gt;ckpt&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is ckpt?
&lt;/h2&gt;

&lt;p&gt;ckpt is a CLI tool that runs in the background and auto-snapshots every change your AI coding agent makes. You get a full timeline of every step, and you can restore to any point instantly.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ckpt watch        &lt;span class="c"&gt;# start watching — auto-snapshots every AI change&lt;/span&gt;
&lt;span class="c"&gt;# ... let your agent work ...&lt;/span&gt;
ckpt steps        &lt;span class="c"&gt;# see what happened, step by step&lt;/span&gt;
ckpt restore 3    &lt;span class="c"&gt;# go back to step 3&lt;/span&gt;
ckpt end          &lt;span class="c"&gt;# squash into one clean git commit&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;It's just git under the hood — hidden branch, real commits, squash when done. No new format, no database.&lt;/p&gt;
&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;AI agents edit your code in rapid bursts — 5, 10, 20 files at once. When something breaks, you have two bad options:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Undo everything&lt;/strong&gt; — lose all the good changes too&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Manually figure out which change broke things&lt;/strong&gt; — painful and slow&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Every error-fix cycle where the agent re-reads and rewrites costs 500-2000 tokens just to get back to where you were. With ckpt, &lt;code&gt;ckpt restore 3&lt;/code&gt; takes milliseconds and costs zero tokens.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why Not Just Use IDE Checkpoints?
&lt;/h2&gt;

&lt;p&gt;Cursor has timeline. Kiro has revert. But there are key differences:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The AI agent can operate ckpt — not just you.&lt;/strong&gt; IDE checkpoints are buttons in a UI. The agent can't click them. With ckpt, the agent itself runs &lt;code&gt;ckpt restore 3&lt;/code&gt;. It becomes self-correcting with no human in the loop.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Terminal agents have nothing.&lt;/strong&gt; Claude Code, Codex, Aider — zero checkpoint support. ckpt is the only checkpoint system that works for terminal-based agents.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Branching.&lt;/strong&gt; &lt;code&gt;ckpt try approach-a -r 2&lt;/code&gt; saves current work, goes back to step 2, and lets the agent try a completely different approach. Then &lt;code&gt;ckpt trydiff approach-a&lt;/code&gt; compares the two. No IDE has this.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Persistent history.&lt;/strong&gt; IDE checkpoints disappear when you close the session. &lt;code&gt;ckpt log&lt;/code&gt; keeps every session permanently.&lt;/p&gt;
&lt;h2&gt;
  
  
  Quick Start
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; @mohshomis/ckpt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Add this to your AI agent's system prompt:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Run &lt;code&gt;ckpt watch&lt;/code&gt; before starting work. If something breaks, run &lt;code&gt;ckpt restore &amp;lt;step&amp;gt;&lt;/code&gt; instead of manually rewriting. When done, run &lt;code&gt;ckpt end&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  Works With Everything
&lt;/h2&gt;

&lt;p&gt;Kiro, Cursor, Claude Code, OpenAI Codex, GitHub Copilot, Windsurf, Aider — any agent that can run shell commands. It's just a CLI.&lt;/p&gt;



&lt;p&gt;The repo is open source (MIT). Would love feedback — what's missing? What would make this more useful for your workflow?&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/mohshomis" rel="noopener noreferrer"&gt;
        mohshomis
      &lt;/a&gt; / &lt;a href="https://github.com/mohshomis/ckpt" rel="noopener noreferrer"&gt;
        ckpt
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Automatic checkpoints for AI coding sessions. Per-step undo, branching, and restore — on top of git. Works with Kiro, Cursor, Claude Code, Codex, and any AI agent.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;ckpt&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;Automatic checkpoints for AI coding sessions. Per-step undo, branching, and restore — on top of git.&lt;/p&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;ckpt watch     &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; start watching — auto-snapshots every AI change&lt;/span&gt;
&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; ... let Kiro / Cursor / Claude Code / Codex do its thing ...&lt;/span&gt;
ckpt steps     &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; see what happened, step by step&lt;/span&gt;
ckpt restore 3 &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; go back to step 3&lt;/span&gt;
ckpt end       &lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; squash into one clean git commit&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;The problem&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;AI agents edit your code in rapid bursts — 5, 10, 20 files at once. When something breaks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Undo everything&lt;/strong&gt; (Kiro/Cursor revert) — lose all the good changes too&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Manually figure out&lt;/strong&gt; which change broke things — painful and slow&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No per-step undo. No timeline. No way to try a different approach without losing the first one.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;How AI agents handle errors today (and why it's wasteful)&lt;/h3&gt;

&lt;/div&gt;

&lt;p&gt;When an AI agent breaks something, here's what actually happens:&lt;/p&gt;


&lt;ol&gt;

&lt;li&gt;The agent…&lt;/li&gt;

&lt;/ol&gt;
&lt;/div&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/mohshomis/ckpt" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


</description>
      <category>ai</category>
      <category>opensource</category>
      <category>productivity</category>
      <category>git</category>
    </item>
    <item>
      <title>ArabicCalculator.com: نظرة على بناء أدوات ويب موجهة للعالم العربي – تحديات وحلول عملية</title>
      <dc:creator>Moo Moo</dc:creator>
      <pubDate>Fri, 09 May 2025 00:59:24 +0000</pubDate>
      <link>https://dev.to/moo_moo_5f1e2b4306785a535/arabiccalculatorcom-nzr-l-bn-dwt-wyb-mwjh-lllm-lrby-thdyt-whlwl-mly-5d8e</link>
      <guid>https://dev.to/moo_moo_5f1e2b4306785a535/arabiccalculatorcom-nzr-l-bn-dwt-wyb-mwjh-lllm-lrby-thdyt-whlwl-mly-5d8e</guid>
      <description>&lt;p&gt;أهلاً بمجتمع المطورين!&lt;/p&gt;

&lt;p&gt;في عالم تطوير الويب، غالبًا ما نصادف مشاريع تسعى لتقديم حلول لمشاكل محددة. اليوم، نلقي نظرة على &lt;a href="https://arabiccalculator.com/" rel="noopener noreferrer"&gt;موقع الحاسبة العربية&lt;/a&gt;، وهو منصة تقدم مجموعة متنوعة من الحاسبات والأدوات المصممة خصيصًا لتلبية احتياجات المستخدمين في العالم العربي.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ما الذي يميز ArabicCalculator.com؟&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;الفكرة الأساسية وراء الموقع هي توفير أدوات حسابية دقيقة وسهلة الاستخدام باللغة العربية، مع مراعاة الجوانب الثقافية الهامة. فبدلاً من الاعتماد على أدوات عامة قد لا تكون مناسبة تمامًا، يهدف الموقع إلى أن يكون المرجع الأول للحاسبات التي تتفهم خصوصية المستخدم العربي.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;تحديات تطويرية مثيرة للاهتمام (وحلولها):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;عند بناء منصة موجهة للغة وثقافة معينة، تظهر بعض التحديات التقنية التي قد لا تكون واضحة في المشاريع الموجهة للغة الإنجليزية بشكل افتراضي. إليك بعض ما واجهه (أو قد يواجهه أي مطور) عند بناء شيء مشابه لـ [&lt;a href="https://arabiccalculator.com/" rel="noopener noreferrer"&gt;ArabicCalculator.com&lt;/a&gt;]:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;دعم متكامل لـ RTL (من اليمين إلى اليسار):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;التحدي:&lt;/strong&gt; الأمر يتجاوز مجرد إضافة &lt;code&gt;direction: rtl;&lt;/code&gt;. يتطلب الأمر تصميمًا يراعي اتجاه القراءة، وتأثير ذلك على كل عنصر في الواجهة، من القوائم إلى الأزرار والنماذج.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;الحل النموذجي:&lt;/strong&gt; استخدام تقنيات CSS حديثة مثل Flexbox و Grid التي تسهل التعامل مع اتجاهات مختلفة، بالإضافة إلى اختبار دقيق ومستمر.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;التعامل مع التقويمات المتعددة (الهجري والميلادي):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;التحدي:&lt;/strong&gt; التقويم الهجري، بكونه قمريًا، يختلف جوهريًا عن الميلادي. التحويل الدقيق بينهما يتطلب فهمًا للخوارزميات المعتمدة.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;الحل النموذجي:&lt;/strong&gt; الاعتماد على خوارزميات رياضية موثوقة (مثل خوارزمية الكويت أو غيرها) لضمان دقة التحويل، وهو ما يمكن رؤيته في أدوات مثل &lt;a href="https://arabiccalculator.com/calculators/hijri-date-converter.html" rel="noopener noreferrer"&gt;محول التاريخ الهجري&lt;/a&gt; على الموقع.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;توطين الأرقام والتواريخ:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;التحدي:&lt;/strong&gt; عرض الأرقام بالأشكال الهندية (٠، ١، ٢...) وتنسيق التواريخ بالصيغة العربية المألوفة.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;الحل النموذجي:&lt;/strong&gt; الاستفادة من إمكانيات JavaScript مثل &lt;code&gt;toLocaleString()&lt;/code&gt; مع تحديد الإعدادات المحلية المناسبة (مثل &lt;code&gt;ar-EG&lt;/code&gt; أو &lt;code&gt;ar-SA&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;تجربة مستخدم موحدة عبر أدوات متنوعة:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;التحدي:&lt;/strong&gt; عندما يحتوي موقع على أدوات مختلفة (مالية، صحية، تعليمية)، يصبح الحفاظ على تجربة مستخدم متناسقة وسلسة أمرًا ضروريًا.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;الحل النموذجي:&lt;/strong&gt; التركيز على تصميم واجهات بسيطة وواضحة، مع استخدام مصطلحات عربية دقيقة وإرشادات سهلة الفهم.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;ماذا يقدم الموقع كأمثلة عملية؟&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;يقدم &lt;a href="https://arabiccalculator.com/" rel="noopener noreferrer"&gt;موقع الحاسبة العربية&lt;/a&gt; مجموعة من الأدوات التي تعالج هذه التحديات، مثل:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://arabiccalculator.com/calculators/age-calculator.html" rel="noopener noreferrer"&gt;حاسبة العمر&lt;/a&gt; التي تتعامل مع كلا التقويمين.&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://arabiccalculator.com/calculators/zakat-calculator.html" rel="noopener noreferrer"&gt;حاسبة الزكاة&lt;/a&gt; التي تتطلب فهمًا دقيقًا للمفاهيم المالية الإسلامية.&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://arabiccalculator.com/calculators/bmi-calculator.html" rel="noopener noreferrer"&gt;حاسبة مؤشر كتلة الجسم (BMI)&lt;/a&gt; التي تقدم نتائج وتصنيفات واضحة.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;بالإضافة إلى ذلك، يحتوي الموقع على &lt;a href="https://arabiccalculator.com/blog/" rel="noopener noreferrer"&gt;مدونة&lt;/a&gt; تقدم شروحات ومقالات حول هذه الأدوات والمفاهيم المرتبطة بها، مما يثري تجربة المستخدم.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;لماذا هذا مهم للمطورين؟&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;مشاريع مثل &lt;a href="https://arabiccalculator.com/" rel="noopener noreferrer"&gt;ArabicCalculator.com&lt;/a&gt; تذكرنا بأهمية:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;التفكير في التوطين (Localization) منذ البداية:&lt;/strong&gt; لا تتركه كخطوة أخيرة.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;فهم المستخدم النهائي:&lt;/strong&gt; تصميم أدوات تلبي احتياجاتهم الفعلية.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;قوة الأدوات البسيطة والمفيدة:&lt;/strong&gt; أحيانًا تكون الأفكار الأكثر تأثيرًا هي تلك التي تحل مشاكل يومية صغيرة.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;نأمل أن يكون هذا العرض لموقع &lt;a href="https://arabiccalculator.com/" rel="noopener noreferrer"&gt;ArabicCalculator.com&lt;/a&gt; قد قدم لكم بعض الأفكار أو الإلهام لمشاريعكم الخاصة، خاصة تلك التي تستهدف جمهورًا محددًا لغويًا أو ثقافيًا.&lt;/p&gt;

&lt;p&gt;ما هي التحديات التي واجهتكم في توطين تطبيقاتكم؟ شاركونا في التعليقات!&lt;/p&gt;

&lt;h1&gt;
  
  
  arabic #calculator #a #uge_calculation #javascript #rtl
&lt;/h1&gt;

</description>
    </item>
  </channel>
</rss>
