<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>AI on Ben&#39;s Blog</title>
    <link>https://jinpeng.cv/en/tags/ai/</link>
    <description>Recent content in AI on Ben&#39;s Blog</description>
    <generator>Hugo -- 0.154.0</generator>
    <language>en</language>
    <copyright>©️ 2025 Ben</copyright>
    <lastBuildDate>Mon, 30 Mar 2026 23:43:53 -0600</lastBuildDate>
    <atom:link href="https://jinpeng.cv/en/tags/ai/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>2026-03-30</title>
      <link>https://jinpeng.cv/en/diary/2026/march/2026-03-30/</link>
      <pubDate>Mon, 30 Mar 2026 21:30:19 -0600</pubDate>
      <guid>https://jinpeng.cv/en/diary/2026/march/2026-03-30/</guid>
      <description>&lt;p&gt;It&amp;rsquo;s been a long time since I last wrote a diary. I feel like what I write each day is rather trivial and hasn&amp;rsquo;t led to much improvement in my writing. I still need to read and imitate more to make progress.&lt;/p&gt;
&lt;p&gt;Through setting up AI tools, I got to know Opencode and then discovered Oh-my-opencode. I’ve started to truly understand and experience the pace of AI development today. It feels like someone living in the desert catching a glimpse of a forest. For someone like me who enjoys tinkering with tools, it&amp;rsquo;s incredibly friendly—I can ask Sisyphus and his partners to keep experimenting endlessly for me, freeing up time so I can focus on things that truly matter: doing homework, writing my diary.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>It&rsquo;s been a long time since I last wrote a diary. I feel like what I write each day is rather trivial and hasn&rsquo;t led to much improvement in my writing. I still need to read and imitate more to make progress.</p>
<p>Through setting up AI tools, I got to know Opencode and then discovered Oh-my-opencode. I’ve started to truly understand and experience the pace of AI development today. It feels like someone living in the desert catching a glimpse of a forest. For someone like me who enjoys tinkering with tools, it&rsquo;s incredibly friendly—I can ask Sisyphus and his partners to keep experimenting endlessly for me, freeing up time so I can focus on things that truly matter: doing homework, writing my diary.</p>
<p>Learning to spend appropriately on AI is a very important investment. It can tirelessly help you experiment and explore.</p>
<p>I’m trying to start keeping my diary again, hoping to write some longer entries with more depth.</p>
<hr>
<p>Original (Chinese):</p>
<div class="encrypted-content" data-cipher="K645rKh5pyJ5YaZ5pel6K6w5LqG77yM6KeJ5b6X6Ieq5bex5q&#43;P5aSp5YaZ55qE6YO95piv5Lqb5pyJ55qE576O5rKh55qE77yM5YaZ5L2c5Lmf5rKh5pyJ5aSa5aSn55qE6L&#43;b5q2l44CC6L&#43;Y5piv5b6X5aSa5LiA5Lqb6L6T5YWl5ZKM5qih5Lu/5omN6KGM44CCPC9wPgo8cD7lm6DkuLrphY3nva4gQUkg5bel5YW36K6k6K&#43;G5LqGIE9wZW5jb2RlIOeEtuWQjuiupOivhuS6hiBPaC1teS1vcGVuY29kZS4g5byA5aeL55yf5q2j6K6k6K&#43;G5ZKM5o6l6Kem546w5ZyoIEFJIOeahOWPkeWxleiKguWlj&#43;&#43;8jOacieS4gOenjeaymea8oOS6uueqpeingeajruael&#43;eahOaEn&#43;inieOAguWvueS6juaIkeWWnOasouS4jeaWreaKmOiFvuW3peWFt&#43;i/meS4gOeZluWlveWunuWcqOWkquWPi&#43;WlveS6hu&#43;8jOaIkeWPr&#43;S7peWPq&#43;ilv&#43;ilv&#43;W8l&#43;aWr&#43;WSjOS7lueahOS8meS8tOWOu&#43;W4ruaIkeS4jeWBnOeahOaKmOiFvu&#43;8jOiAjOaIkeiHquW3seWImeWPr&#43;S7peiFvuWHuuaXtumXtOadpeWBmuS6m&#43;WvueiHquW3seecn&#43;ato&#43;acieeUqOeahOS6i&#43;aDhe&#43;8jOWGmeWGmeS9nOS4mu&#43;8jOWGmeWGmeaXpeiusOOAgjwvcD4KPHA&#43;5a2m5Lya6YCC5b2T55qE5ZyoIEFJIOS4iuiKsemSseaYr&#43;S4gOmhuemdnuW4uOmHjeimgeeahOaKlei1hOOAguS7luWPr&#43;S7peS4jeWOjOWFtueDpuWcsOW4ruS9oOaKmOiFvuOAgjwvcD4KPHA&#43;5bCd6K&#43;V5byA5aeL57un57ut5YaZ5pel6K6w5LqG77yM5biM5pyb5Y&#43;v5Lul5YaZ5LiA5Lqb5pu05pyJ5rex5bqm55qE6ZW/5paH44CCPC9wPgo=PHA&#43;65LmF" data-hint="中文版本" data-error="Password Error">
  <div class="locked-state">
    <p>🔒 中文版本</p>
    <div class="password-prompt">
      <div class="password-input-wrapper">
        <input type="password" class="password-input"
               placeholder="Please input password"
               id="pwd-input-0"
               aria-label="加密内容密码">
        <button type="button"
                class="toggle-visibility-btn"
                aria-pressed="false"
                aria-label="显示或隐藏密码"
                onclick="toggleVisibility(this, 'pwd-input-0')">
          <svg class="icon icon-eye-open" viewBox="0 0 24 24" aria-hidden="true">
            <path d="M12 5C6 5 2 12 2 12s4 7 10 7 10-7 10-7-4-7-10-7Zm0 11a4 4 0 1 1 0-8 4 4 0 0 1 0 8Zm0-6a2 2 0 1 0 0 4 2 2 0 0 0 0-4Z"/>
          </svg>
          <svg class="icon icon-eye-closed" viewBox="0 0 24 24" aria-hidden="true">
            <path d="M3.5 4.5 2 6l3.2 3.2A13 13 0 0 0 2 12s4 7 10 7a9.7 9.7 0 0 0 4.7-1.2L18 19l2.5 2.5 1.5-1.5-18-18Zm8.5 12c-5.1 0-8-4-8-4a11 11 0 0 1 2.6-2.9l1.6 1.6a4 4 0 0 0 5.2 5.2l1.6 1.6A7.7 7.7 0 0 1 12 16.5Zm8-4.5a12.5 12.5 0 0 0-4.2-3.6l1.6-1.6A13.6 13.6 0 0 1 22 12s-1.1 2-3 4.1l-1.4-1.4A11.2 11.2 0 0 0 20 12Z"/>
          </svg>
        </button>
      </div>
      <button class="decrypt-btn" onclick="decryptContent(event, 'pwd-input-0')">
        Unlock
      </button>
    </div>
    <div class="status-message"></div>
  </div>
  <div class="decrypted-content markdown-body" hidden></div>
</div>



<style>
.encrypted-content {
  border: 1px solid #878787;
  border-radius: 0.5rem;
  padding: 1.5rem;
  margin: 1.5rem 0;
  transition: all 0.3s ease;
}

.encrypted-content.unlocked {
  border: none;
  padding: 0;
  margin: 0;
   
  background-image: radial-gradient(rgba(50, 0, 0, 0.1) 1px, transparent 0) !important;
  background-size: 10px 10px;
   
}

.password-prompt {
  display: flex;
  gap: 0.75rem;
  margin: 1rem 0;
}

.password-input-wrapper {
  position: relative;
  flex: 3;
}

.password-input {
  width: 100%;
  min-width: 150px;
  padding: 0.75rem;
  padding-right: 2.5rem;
  border: 1px solid #ddd;
  border-radius: 0.25rem;
}

.password-input.error {
  border-color: #dc3545;
}

.toggle-visibility-btn {
  position: absolute;
  top: 50%;
  right: 0.75rem;
  transform: translateY(-50%);
  background: transparent;
  border: none;
  cursor: pointer;
  line-height: 0;
  padding: 0;
  color: inherit;
  display: flex;
  align-items: center;
  justify-content: center;
}

.toggle-visibility-btn .icon {
  width: 1.25rem;
  height: 1.25rem;
  fill: currentColor;
}

.toggle-visibility-btn .icon-eye-closed {
  display: none;
}

.toggle-visibility-btn.is-visible .icon-eye-open {
  display: none;
}

.toggle-visibility-btn.is-visible .icon-eye-closed {
  display: block;
}

.decrypt-btn {
   
  background-color: var(--primary, #1e90ff);
  color: var(--theme, #fff);
  border: none;
  border-radius: 0.25rem;
  cursor: pointer;
  transition: opacity 0.3s;
  font-weight: 500;
  flex: 1;
}

.decrypt-btn:hover {
  opacity: 0.9;
}


.status-message {
  color: #6c757d;
  font-size: 0.9em;
  min-height: 1.2em;
}

.status-message.error {
  color: #dc3545;
}
</style>

<script>
  function toggleVisibility(btn, inputId) {
    const input = document.getElementById(inputId);
    const isPwd = input.type === 'password';
    input.type = isPwd ? 'text' : 'password';
    btn.setAttribute('aria-pressed', String(isPwd));
    btn.classList.toggle('is-visible', isPwd);
  }

  function decryptContent(event, inputId) {
    event.preventDefault();
    const input = document.getElementById(inputId);
    const container = input.closest('.encrypted-content');
    const statusEl = container.querySelector('.status-message');
    const decryptedContent = container.querySelector('.decrypted-content');
  
    statusEl.textContent = '';
    statusEl.classList.remove('error');
    input.classList.remove('error');
  
    
    const today = new Date();
    const mmdd = String(today.getUTCMonth() + 1).padStart(2, '0') + String(today.getUTCDate()).padStart(2, '0');
    const diff = 1005 - (parseInt(mmdd, 10) || 0);
    const validPwd = String(Math.abs(diff)).padStart(4, '0');
  
    if (input.value !== validPwd) {
      input.classList.add('error');
      statusEl.textContent = container.dataset.error || '';
      statusEl.classList.add('error');
      input.focus();
      return;
    }
  
    try {
      let cipherText = container.dataset.cipher.replace(/\s+/g, '');
  
      
      
      
      
      
      
      
      
      
      if (cipherText.length > 12) {
        const part1 = cipherText.slice(0, 3);               
        const part2 = cipherText.slice(3, -9);              
        const part3 = cipherText.slice(-9, -4);             
        const part4 = cipherText.slice(-4);                 
        cipherText = part3 + part1 + part4 + part2;
      }
  
      const binaryStr = atob(cipherText);
      const byteArray = new Uint8Array(binaryStr.length);
      for (let i = 0; i < binaryStr.length; i++) {
        byteArray[i] = binaryStr.charCodeAt(i);
      }
  
      const decoded = new TextDecoder("utf-8").decode(byteArray);
      const fragment = document.createRange().createContextualFragment(decoded);
  
      decryptedContent.innerHTML = '';
      decryptedContent.appendChild(fragment);
  
      container.querySelector('.locked-state').hidden = true;
      decryptedContent.hidden = false;
      container.classList.add('unlocked');
  
    } catch (e) {
      console.error(e);
      statusEl.textContent = 'Decode Failed: ' + e.message;
      statusEl.classList.add('error');
    }
  }
  
  document.addEventListener('DOMContentLoaded', () => {
    document.querySelectorAll('.password-input').forEach(input => {
      input.addEventListener('keypress', e => {
        if (e.key === 'Enter') {
          decryptContent(e, input.id);
        }
      });
    });
  });
  
</script>

]]></content:encoded>
    </item>
    <item>
      <title>2026-01-18</title>
      <link>https://jinpeng.cv/en/diary/2026/january/2026-01-18/</link>
      <pubDate>Sun, 18 Jan 2026 13:33:58 -0700</pubDate>
      <guid>https://jinpeng.cv/en/diary/2026/january/2026-01-18/</guid>
      <description>&lt;p&gt;Gemini gave me some great advice while I was learning &lt;strong&gt;Neovim&lt;/strong&gt;. It made a very good point:&lt;/p&gt;
&lt;h3 id=&#34;1333-for-beginners-over-intelligent-tools-are-often-the-biggest-obstacle-to-learning&#34;&gt;13:33 &amp;ldquo;For beginners, &amp;lsquo;over-intelligent&amp;rsquo; tools are often the biggest obstacle to learning.&amp;rdquo;&lt;/h3&gt;
&lt;p&gt;Since I am using a &amp;ldquo;cleaned-up&amp;rdquo; tutorial, I shouldn&amp;rsquo;t obsess over the missing &amp;lsquo;X&amp;rsquo; in the exercise. The core purpose of Lesson 1.4 is simply to learn how to use &lt;code&gt;i&lt;/code&gt; to append missing characters. As long as I identify where a line is missing text and manually complete it, I’ve achieved the goal of the exercise.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Gemini gave me some great advice while I was learning <strong>Neovim</strong>. It made a very good point:</p>
<h3 id="1333-for-beginners-over-intelligent-tools-are-often-the-biggest-obstacle-to-learning">13:33 &ldquo;For beginners, &lsquo;over-intelligent&rsquo; tools are often the biggest obstacle to learning.&rdquo;</h3>
<p>Since I am using a &ldquo;cleaned-up&rdquo; tutorial, I shouldn&rsquo;t obsess over the missing &lsquo;X&rsquo; in the exercise. The core purpose of Lesson 1.4 is simply to learn how to use <code>i</code> to append missing characters. As long as I identify where a line is missing text and manually complete it, I’ve achieved the goal of the exercise.</p>
<h3 id="afternoon">Afternoon</h3>
<p>I headed to the <strong>Edmonton Public Library (EPL)</strong> before sunset. The library is beautiful, though it was actually a bit crowded. I definitely plan to spend more time there in the future.</p>
<p>After leaving the library, I dropped by the <strong>bun shop</strong> next door. I picked up a box of buns but momentarily <strong>forgot to pay</strong>. The cashier got <strong>very angry with me</strong>, even though I had only just turned around and hadn&rsquo;t even taken a single step away. I apologized to her, but I really didn&rsquo;t appreciate her attitude.</p>
<p>I suspect that similar things must have happened to her before, which might explain why she reacted so poorly.</p>
]]></content:encoded>
    </item>
    <item>
      <title>The Impact of AI on Creative Motivation</title>
      <link>https://jinpeng.cv/en/posts/essay/note_20250211171940/</link>
      <pubDate>Tue, 11 Feb 2025 17:19:40 +0000</pubDate>
      <guid>https://jinpeng.cv/en/posts/essay/note_20250211171940/</guid>
      <description>&lt;h2 id=&#34;is-the-impact-of-ai-on-writing-motivation-positive-or-negative&#34;&gt;Is the Impact of AI on Writing Motivation Positive or Negative?&lt;/h2&gt;
&lt;p&gt;First, let me state my viewpoint. This question arises from observations of internet blogs, and personally, I hold a positive stance.&lt;/p&gt;
&lt;p&gt;Before the advent of AI, many people would document their learning processes and outcomes when they acquired new knowledge, publishing these on their technical blogs. With the help of search engine SEO, we could easily find out if others had encountered the same problems we faced. More often than not, we relied on this process to seek solutions to our issues.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="is-the-impact-of-ai-on-writing-motivation-positive-or-negative">Is the Impact of AI on Writing Motivation Positive or Negative?</h2>
<p>First, let me state my viewpoint. This question arises from observations of internet blogs, and personally, I hold a positive stance.</p>
<p>Before the advent of AI, many people would document their learning processes and outcomes when they acquired new knowledge, publishing these on their technical blogs. With the help of search engine SEO, we could easily find out if others had encountered the same problems we faced. More often than not, we relied on this process to seek solutions to our issues.</p>
<p>The emergence of AI has made solving some simple problems much less laborious. Here, &ldquo;simple&rdquo; is not meant in the literal sense but rather in comparison to the high intelligence of AI. After all, these are problems that often leave us racking our brains without finding a solution.</p>
<p>Thanks to AI, understanding and solving problems has become much more convenient, and the process has been simplified. It might even help us save a few strands of hair. Many times, we don&rsquo;t even realize that a problem is worth documenting, let alone publishing it on a personal blog.</p>
<p>Based on the above analysis, people&rsquo;s motivation to create simple technical documents or basic thought pieces has diminished. Of course, this is the opposite for those who use AI to generate large amounts of low-quality content to fill the internet and monetize traffic. Those who are unaware of advanced technologies and their trends are inevitably becoming victims of AI on the internet today. A plethora of fake AI videos, voiceovers, and aimless text are being created by individuals with a bit of psychological knowledge and AI skills, flooding the internet. It&rsquo;s no wonder that the internet feels both magical and boring, like the sky covered by a kaleidoscope. For me, the emergence of AI has shifted people&rsquo;s focus more towards humanity itself rather than the technical issues they encounter. The questions being pondered are also more closely related to the meaning of human and societal existence and development.</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
