<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Thoughts - Category - Zhiverse</title><link>https://yao-chih.netlify.app/en/categories/thoughts/</link><description>Thoughts - Category - Zhiverse</description><generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>yaochihh@gmail.com (Josh)</managingEditor><webMaster>yaochihh@gmail.com (Josh)</webMaster><copyright>Zhiverse</copyright><atom:link href="https://yao-chih.netlify.app/en/categories/thoughts/" rel="self" type="application/rss+xml"/><item><title>[Thought] Historical Earthquake Locations Around Taiwan</title><link>https://yao-chih.netlify.app/en/historical-earthquake-locations-around-taiwan/</link><pubDate>Wed, 15 Jul 2026 11:03:01 +0800</pubDate><author>Author</author><guid>https://yao-chih.netlify.app/en/historical-earthquake-locations-around-taiwan/</guid><description><![CDATA[<div class="featured-image">
                <img src="https://Josh-test-lab.github.io/posts/Historical%20Earthquake%20Locations%20Around%20Taiwan/cover%20image.webp" referrerpolicy="no-referrer">
            </div><div class="details admonition tip open">
        <div class="details-summary admonition-title">
            <i class="icon fas fa-lightbulb fa-fw" aria-hidden="true"></i>Tip<i class="details-icon fas fa-angle-right fa-fw" aria-hidden="true"></i>
        </div>
        <div class="details-content">
            <div class="admonition-content">This project was written in January 2026.</div>
        </div>
    </div>]]></description></item><item><title>[Thought] The 35th South Taiwan Statistics Conference</title><link>https://yao-chih.netlify.app/en/the-35th-south-taiwan-statistics-conference/</link><pubDate>Wed, 15 Apr 2026 10:00:58 +0800</pubDate><author>Author</author><guid>https://yao-chih.netlify.app/en/the-35th-south-taiwan-statistics-conference/</guid><description><![CDATA[<div class="featured-image">
                <img src="https://raw.githubusercontent.com/Josh-test-lab/website-assets-repository/refs/heads/main/posts/The%2035th%20South%20Taiwan%20Statistics%20Conference/cover%20image.webp" referrerpolicy="no-referrer">
            </div><!-- filpclock 的 css -->
<link rel="stylesheet" href="/css/filpclock.css">
<div class="timeline-flipclock">
<div class="flip-wrapper" id="35th-stsc" data-target-time="2026-06-25T09:30:00&#43;08:00" data-format="year,month,day,hour,minute,second">
    <div class="flip-clock-title"
         data-past=""
         data-future="">
    </div>
    <div class="flip-class"></div>
</div>

<script>
document.addEventListener("DOMContentLoaded", function () {
  const clockId = "35th-stsc";
  const wrapper = document.getElementById(clockId);
  const clock = wrapper.querySelector(".flip-class");
  const isLiveClock = wrapper.dataset.targetTime === "now";
  const targetTime = isLiveClock ? new Date() : new Date(wrapper.dataset.targetTime);
  const format = wrapper.dataset.format.split(",");

  const timeLabels = {
    year:   "years",
    month:  "months",
    day:    "days",
    hour:   "hours",
    minute: "minutes",
    second: "seconds"
  };

  const titleDiv = wrapper.querySelector(".flip-clock-title");
  const pastTitle = titleDiv.dataset.past?.trim();
  const futureTitle = titleDiv.dataset.future?.trim();

  const isPast = (isLiveClock || new Date() > targetTime);

  if (isPast) {
    if (pastTitle && pastTitle !== "/") {
        titleDiv.textContent = pastTitle;
    } else {
        titleDiv.textContent = "Passed";
    }
    } else {
    if (futureTitle && futureTitle !== "/") {
        titleDiv.textContent = futureTitle;
    } else {
        titleDiv.textContent = "Remaining";
    }
  }

  const pad = n => String(n).padStart(2, "0");

  function getTimeDiff(target) {
    const now = new Date();
    let diff = Math.abs(target - now) / 1000;
    const past = now > target;

    const timeParts = {
      year: 0, month: 0, day: 0,
      hour: 0, minute: 0, second: 0
    };

    
    if (isLiveClock) {
      timeParts.year = now.getFullYear();
      timeParts.month = now.getMonth() + 1; 
      timeParts.day = now.getDate();
      timeParts.hour = now.getHours();
      timeParts.minute = now.getMinutes();
      timeParts.second = now.getSeconds();
      return { past: true, timeParts };
    }
  
    
    const temp = new Date(past ? target : now);
    const ref = new Date(past ? now : target);

    timeParts.year = ref.getFullYear() - temp.getFullYear();
    timeParts.month = ref.getMonth() - temp.getMonth();
    timeParts.day = ref.getDate() - temp.getDate();
    timeParts.hour = ref.getHours() - temp.getHours();
    timeParts.minute = ref.getMinutes() - temp.getMinutes();
    timeParts.second = ref.getSeconds() - temp.getSeconds();

    
    if (timeParts.second < 0) { timeParts.second += 60; timeParts.minute--; }
    if (timeParts.minute < 0) { timeParts.minute += 60; timeParts.hour--; }
    if (timeParts.hour < 0) { timeParts.hour += 24; timeParts.day--; }
    if (timeParts.day < 0) {
      const daysInPrevMonth = new Date(ref.getFullYear(), ref.getMonth(), 0).getDate();
      timeParts.day += daysInPrevMonth; timeParts.month--;
    }
    if (timeParts.month < 0) { timeParts.month += 12; timeParts.year--; }

    return { past, timeParts };
  }

  function createClockDisplay() {
    wrapper.classList.add(clockId);
    format.forEach(unit => {
      const div = document.createElement("div");
      div.className = "flip-unit";
      div.dataset.unit = unit;

      div.innerHTML = `
        <div class="flip-number" id="${clockId}-flip-${unit}">00</div>
        <div class="flip-label">${timeLabels[unit]}</div>
      `;
      clock.appendChild(div);
    });
  }

  function updateClock() {
    const { past, timeParts } = getTimeDiff(targetTime);

    format.forEach(unit => {
      const val = timeParts[unit];
      const el = document.getElementById(`${clockId}-flip-${unit}`);
      if (el.textContent !== pad(val)) {
        el.style.transform = "rotateX(180deg)";
        setTimeout(() => {
          el.textContent = pad(val);
          el.style.transform = "rotateX(0deg)";
        }, 150);
      }
    });
  }

  createClockDisplay();
  updateClock();
  setInterval(updateClock, 1000);
});
</script>

</div>]]></description></item><item><title>[Thoughts] 2024 Joint Conference of University Administrators for Teacher Education</title><link>https://yao-chih.netlify.app/en/2024-joint-conference-of-university-administrators-for-teacher-education/</link><pubDate>Mon, 12 Jan 2026 17:32:43 +0800</pubDate><author>Author</author><guid>https://yao-chih.netlify.app/en/2024-joint-conference-of-university-administrators-for-teacher-education/</guid><description><![CDATA[<div class="featured-image">
                <img src="https://raw.githubusercontent.com/Josh-test-lab/website-assets-repository/refs/heads/main/posts/2024%20Joint%20Conference%20of%20University%20Administrators%20for%20Teacher%20Education/cover%20image.webp" referrerpolicy="no-referrer">
            </div><p>The cover photo was taken at the 2024 Joint Conference of University Administrators for Teacher Education, held on November 1, 2024.</p>
<div class="details admonition tip open">
        <div class="details-summary admonition-title">
            <i class="icon fas fa-lightbulb fa-fw" aria-hidden="true"></i>Tip<i class="details-icon fas fa-angle-right fa-fw" aria-hidden="true"></i>
        </div>
        <div class="details-content">
            <div class="admonition-content">Written on November 1, 2024</div>
        </div>
    </div>
<p>The Joint Conference of University Administrators for Teacher Education is an important annual event for Taiwan&rsquo;s teacher education system, where administrators from teacher-training universities across the country come together to discuss education policies, share experiences, exchange insights on policy implementation, and engage in face-to-face dialogue with officials from the Ministry of Education. The conference functions as a convergence point, gathering perspectives, expectations, and questions from all sides, gradually shaping the future direction of education. For me, it represents one of the most essential spaces for dialogue in the education sector, not only to review the current situation, but also to explore future strategies and confirm policy directions.</p>]]></description></item><item><title>[Thoughts] 2024 Hualien County Cat Cup Scratch Animation and Interactive Game Competition</title><link>https://yao-chih.netlify.app/en/2024-hualien-county-cat-cup-scratch-animation-and-interactive-game-competition/</link><pubDate>Tue, 30 Dec 2025 10:21:47 +0800</pubDate><author>Author</author><guid>https://yao-chih.netlify.app/en/2024-hualien-county-cat-cup-scratch-animation-and-interactive-game-competition/</guid><description><![CDATA[<div class="featured-image">
                <img src="https://raw.githubusercontent.com/Josh-test-lab/website-assets-repository/refs/heads/main/posts/2024%20Hualien%20County%20Cat%20Cup%20Scratch%20Animation%20and%20Interactive%20Game%20Competition/cover%20image.webp" referrerpolicy="no-referrer">
            </div><p>The cover image was generated by ChatGPT.</p>
<p>Programming has been incorporated into Taiwan&rsquo;s 12-Year Basic Education Curriculum as an essential skill for future talents. Through coding, students can not only develop systems thinking, logical reasoning, and problem-solving abilities, but also cultivate aesthetics, digital literacy, and innovative adaptability during the creative process. The Hualien County Information Education Competition is designed with these goals in mind, aiming to stimulate students&rsquo; computational thinking and problem-solving potential by requiring them to design animations and games using the intuitive Scratch programming language.</p>]]></description></item><item><title>[Thoughts] 2023 Hualien County Dreams Take Flight - 10th Exhibition for Young Inventors</title><link>https://yao-chih.netlify.app/en/2023-hualien-county-dreams-take-flight-10th-exhibition-for-young-inventors/</link><pubDate>Mon, 29 Dec 2025 16:26:13 +0800</pubDate><author>Author</author><guid>https://yao-chih.netlify.app/en/2023-hualien-county-dreams-take-flight-10th-exhibition-for-young-inventors/</guid><description><![CDATA[<div class="featured-image">
                <img src="https://raw.githubusercontent.com/Josh-test-lab/website-assets-repository/refs/heads/main/posts/2023%20Hualien%20County%20Dreams%20Take%20Flight%20-%2010th%20Exhibition%20for%20Young%20Inventors/cover%20image.webp" referrerpolicy="no-referrer">
            </div><p>The cover photo was taken on the way to the national competition with another team from our school on January 26, 2024.</p>
<p>Seeing my wholehearted dedication and enthusiasm for scientific inquiry in the <a href="/en/pacific-cup-national-student-research-and-local-mission-based-action-research-competition-hualien-county-2023" rel="">Student Research Competition</a>, the school invited me to join the guidance team for this year&rsquo;s Youth Invention Exhibition. It was my first time serving as a mentor, and I felt a mix of excitement and nervousness. With a careful and attentive mindset, I led the students through brainstorming sessions, encouraging them to identify problems in daily life and design innovative solutions. From the initial conception to practical implementation, every step required careful thought and effort, but also brought a great sense of accomplishment.</p>]]></description></item><item><title>[Thoughts] 2023 Hualien County Pacific Cup National Student Research &amp; Community Action Research Competition</title><link>https://yao-chih.netlify.app/en/2023-hualien-county-pacific-cup-national-student-research-and-community-action-research-competition/</link><pubDate>Sun, 28 Dec 2025 10:44:15 +0800</pubDate><author>Author</author><guid>https://yao-chih.netlify.app/en/2023-hualien-county-pacific-cup-national-student-research-and-community-action-research-competition/</guid><description><![CDATA[<div class="featured-image">
                <img src="https://raw.githubusercontent.com/Josh-test-lab/website-assets-repository/refs/heads/main/posts/2023%20Hualien%20County%20Pacific%20Cup%20National%20Student%20Research%20and%20Community%20Action%20Research%20Competition/cover%20image.webp" referrerpolicy="no-referrer">
            </div><p>The cover photo shows unprocessed Taiwan jade materials taken during an interview at the <a href="http://www.taiwanjade.com.tw/" target="_blank" rel="noopener noreffer ">Rufeng Jade Workshop</a> on September 7, 2023. The photograph was taken by the author.</p>
<p>&ldquo;Positive thinking will let you do everything better than negative thinking will, because attitude is contagious.&rdquo; This quote by American author Zig Ziglar has always reminded me that the way we engage often determines the final outcome. I also hope that my own positive attitude can bring constructive influence to the educational setting.</p>]]></description></item><item><title>Notes on Creating Python Modules</title><link>https://yao-chih.netlify.app/en/notes-on-creating-python-modules/</link><pubDate>Mon, 13 Oct 2025 19:40:04 +0800</pubDate><author>Author</author><guid>https://yao-chih.netlify.app/en/notes-on-creating-python-modules/</guid><description>&lt;div class="featured-image">
                &lt;img src="https://raw.githubusercontent.com/Josh-test-lab/website-assets-repository/refs/heads/main/posts/Notes%20on%20Creating%20Python%20Modules/cover%20image.webp" referrerpolicy="no-referrer">
            &lt;/div>Recently, I've been learning how to package Python code for quick sharing and easy installation. After exploring various distribution methods, I realized that creating a Python module is probably one of the most convenient options, mainly because it saves me from having to reinstall everything repeatedly.</description></item><item><title>[Thought] The 34th South Taiwan Statistics Conference</title><link>https://yao-chih.netlify.app/en/the-34th-south-taiwan-statistics-conference/</link><pubDate>Sun, 08 Jun 2025 18:06:17 +0800</pubDate><author>Author</author><guid>https://yao-chih.netlify.app/en/the-34th-south-taiwan-statistics-conference/</guid><description><![CDATA[<div class="featured-image">
                <img src="https://raw.githubusercontent.com/Josh-test-lab/website-assets-repository/main/posts/The%2034th%20South%20Taiwan%20Statistics%20Conference/cover%20image.jpg" referrerpolicy="no-referrer">
            </div><!-- filpclock 的 css -->
<link rel="stylesheet" href="/css/filpclock.css">
<div class="timeline-flipclock">
<div class="flip-wrapper" id="34th-stsc" data-target-time="2025-06-19T09:30:00&#43;08:00" data-format="year,month,day,hour,minute,second">
    <div class="flip-clock-title"
         data-past=""
         data-future="">
    </div>
    <div class="flip-class"></div>
</div>

<script>
document.addEventListener("DOMContentLoaded", function () {
  const clockId = "34th-stsc";
  const wrapper = document.getElementById(clockId);
  const clock = wrapper.querySelector(".flip-class");
  const isLiveClock = wrapper.dataset.targetTime === "now";
  const targetTime = isLiveClock ? new Date() : new Date(wrapper.dataset.targetTime);
  const format = wrapper.dataset.format.split(",");

  const timeLabels = {
    year:   "years",
    month:  "months",
    day:    "days",
    hour:   "hours",
    minute: "minutes",
    second: "seconds"
  };

  const titleDiv = wrapper.querySelector(".flip-clock-title");
  const pastTitle = titleDiv.dataset.past?.trim();
  const futureTitle = titleDiv.dataset.future?.trim();

  const isPast = (isLiveClock || new Date() > targetTime);

  if (isPast) {
    if (pastTitle && pastTitle !== "/") {
        titleDiv.textContent = pastTitle;
    } else {
        titleDiv.textContent = "Passed";
    }
    } else {
    if (futureTitle && futureTitle !== "/") {
        titleDiv.textContent = futureTitle;
    } else {
        titleDiv.textContent = "Remaining";
    }
  }

  const pad = n => String(n).padStart(2, "0");

  function getTimeDiff(target) {
    const now = new Date();
    let diff = Math.abs(target - now) / 1000;
    const past = now > target;

    const timeParts = {
      year: 0, month: 0, day: 0,
      hour: 0, minute: 0, second: 0
    };

    
    if (isLiveClock) {
      timeParts.year = now.getFullYear();
      timeParts.month = now.getMonth() + 1; 
      timeParts.day = now.getDate();
      timeParts.hour = now.getHours();
      timeParts.minute = now.getMinutes();
      timeParts.second = now.getSeconds();
      return { past: true, timeParts };
    }
  
    
    const temp = new Date(past ? target : now);
    const ref = new Date(past ? now : target);

    timeParts.year = ref.getFullYear() - temp.getFullYear();
    timeParts.month = ref.getMonth() - temp.getMonth();
    timeParts.day = ref.getDate() - temp.getDate();
    timeParts.hour = ref.getHours() - temp.getHours();
    timeParts.minute = ref.getMinutes() - temp.getMinutes();
    timeParts.second = ref.getSeconds() - temp.getSeconds();

    
    if (timeParts.second < 0) { timeParts.second += 60; timeParts.minute--; }
    if (timeParts.minute < 0) { timeParts.minute += 60; timeParts.hour--; }
    if (timeParts.hour < 0) { timeParts.hour += 24; timeParts.day--; }
    if (timeParts.day < 0) {
      const daysInPrevMonth = new Date(ref.getFullYear(), ref.getMonth(), 0).getDate();
      timeParts.day += daysInPrevMonth; timeParts.month--;
    }
    if (timeParts.month < 0) { timeParts.month += 12; timeParts.year--; }

    return { past, timeParts };
  }

  function createClockDisplay() {
    wrapper.classList.add(clockId);
    format.forEach(unit => {
      const div = document.createElement("div");
      div.className = "flip-unit";
      div.dataset.unit = unit;

      div.innerHTML = `
        <div class="flip-number" id="${clockId}-flip-${unit}">00</div>
        <div class="flip-label">${timeLabels[unit]}</div>
      `;
      clock.appendChild(div);
    });
  }

  function updateClock() {
    const { past, timeParts } = getTimeDiff(targetTime);

    format.forEach(unit => {
      const val = timeParts[unit];
      const el = document.getElementById(`${clockId}-flip-${unit}`);
      if (el.textContent !== pad(val)) {
        el.style.transform = "rotateX(180deg)";
        setTimeout(() => {
          el.textContent = pad(val);
          el.style.transform = "rotateX(0deg)";
        }, 150);
      }
    });
  }

  createClockDisplay();
  updateClock();
  setInterval(updateClock, 1000);
});
</script>

</div>]]></description></item><item><title>[Thoughts] Junior high school students' career exploration - Chemical Engineering Group</title><link>https://yao-chih.netlify.app/en/junior-high-school-students-career-exploration-chemical-engineering-group/</link><pubDate>Sat, 29 Mar 2025 22:07:10 +0800</pubDate><author>Author</author><guid>https://yao-chih.netlify.app/en/junior-high-school-students-career-exploration-chemical-engineering-group/</guid><description><![CDATA[<div class="featured-image">
                <img src="https://raw.githubusercontent.com/Josh-test-lab/website-assets-repository/refs/heads/main/posts/Junior%20high%20school%20students%27%20career%20exploration%20-%20Chemical%20Engineering%20Group/IMG_6535.jpg" referrerpolicy="no-referrer">
            </div><p>Career exploration is an opportunity for junior high school students who are still feeling uncertain about their future to discover their interests.</p>
<p>By participating in activities from various career fields, students can develop their interests while also gaining an understanding of different industries, their job responsibilities, operations, and underlying principles. They also learn through hands-on experiences.</p>
<p>This time, the chemical engineering career exploration event was organized by National Hualien Industrial Vocational Senior High School, which held a weekend workshop on making photoengraved stamps. Through this activity, students not only learned how textbook knowledge applies to real life but also used their imagination to create their own unique stamps, experiencing the joy of hands-on work and creative expression.</p>]]></description></item><item><title>[Thoughts] 2025 Applied Probability Seminar</title><link>https://yao-chih.netlify.app/en/2025-applied-probability-seminar/</link><pubDate>Sat, 22 Feb 2025 23:41:32 +0800</pubDate><author>Author</author><guid>https://yao-chih.netlify.app/en/2025-applied-probability-seminar/</guid><description>&lt;div class="featured-image">
                &lt;img src="/image/featured-image.jpg" referrerpolicy="no-referrer">
            &lt;/div>Post-Seminar Thoughts.</description></item><item><title>Website Building Notes</title><link>https://yao-chih.netlify.app/en/build-site/</link><pubDate>Fri, 21 Feb 2025 18:05:31 +0800</pubDate><author>Author</author><guid>https://yao-chih.netlify.app/en/build-site/</guid><description>The journey of building this website.</description></item></channel></rss>