<?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: Hona Cao</title>
    <description>The latest articles on DEV Community by Hona Cao (@hona_cao).</description>
    <link>https://dev.to/hona_cao</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4138549%2F670f2ac8-01d2-4bcb-9e2b-158a06a0235f.jpg</url>
      <title>DEV Community: Hona Cao</title>
      <link>https://dev.to/hona_cao</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hona_cao"/>
    <language>en</language>
    <item>
      <title>Building a slide-aware presentation timer for PowerPoint and WPS</title>
      <dc:creator>Hona Cao</dc:creator>
      <pubDate>Wed, 23 Sep 2026 06:08:37 +0000</pubDate>
      <link>https://dev.to/hona_cao/building-a-slide-aware-presentation-timer-for-powerpoint-and-wps-m9m</link>
      <guid>https://dev.to/hona_cao/building-a-slide-aware-presentation-timer-for-powerpoint-and-wps-m9m</guid>
      <description>&lt;p&gt;FlyPPTTimer v1.17.0 is a Windows presentation timer and control companion for Microsoft PowerPoint and WPS Presentation.&lt;/p&gt;

&lt;p&gt;I built it around a simple idea: a presentation timer becomes more useful when it understands some of the presentation context instead of running as an unrelated stopwatch.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it looks like during an actual presentation
&lt;/h2&gt;

&lt;p&gt;This is FlyPPTTimer running on top of a real PowerPoint slideshow:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa5jtzsuqqmd4rvypikcw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa5jtzsuqqmd4rvypikcw.png" alt="FlyPPTTimer v1.17.0 timer over a real PowerPoint slideshow" width="800" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The compact timer can remain visible while the slideshow is running, so the speaker does not have to switch away from the presentation or check another device.&lt;/p&gt;

&lt;p&gt;Besides total presentation time, it can also expose presentation context such as the current slide position and how long the current slide has been on screen.&lt;/p&gt;

&lt;p&gt;That was an important distinction for me.&lt;/p&gt;

&lt;p&gt;A normal timer answers:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;How much time do I have left?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A presentation-aware timer can also help answer:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Which slide am I on?&lt;/p&gt;

&lt;p&gt;How long have I been talking about this slide?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  More than a countdown
&lt;/h2&gt;

&lt;p&gt;FlyPPTTimer supports countdown, count-up and unlimited elapsed timing.&lt;/p&gt;

&lt;p&gt;It also supports advance reminders and overtime states, so timing information can become useful before the clock reaches zero rather than only after it is too late.&lt;/p&gt;

&lt;h2&gt;
  
  
  Different presentations can have different rules
&lt;/h2&gt;

&lt;p&gt;A five-minute pitch, a thesis defense and a classroom session should not require rebuilding the timer configuration every time.&lt;/p&gt;

&lt;p&gt;FlyPPTTimer can associate timing behavior with presentations and save complete working setups as reusable scenarios.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fq90u7bpre70odliypxtj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fq90u7bpre70odliypxtj.png" alt="FlyPPTTimer scenario settings" width="800" height="578"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A scenario can preserve things such as timing mode, duration, reminders and display behavior.&lt;/p&gt;

&lt;p&gt;This makes it easier to prepare repeatable setups for different presentation environments.&lt;/p&gt;

&lt;h2&gt;
  
  
  A phone can become the remote
&lt;/h2&gt;

&lt;p&gt;FlyPPTTimer also provides a browser-based remote over the local network.&lt;/p&gt;

&lt;p&gt;No dedicated phone app is required.&lt;/p&gt;

&lt;p&gt;A phone browser can access supported timer and presentation controls while the presentation computer continues running the slideshow.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0jslabte743qedydfrfd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0jslabte743qedydfrfd.png" alt="FlyPPTTimer phone presentation remote" width="780" height="3486"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The browser interface can also expose timing information for individual slides during the current presentation session.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8b212tayy8mdwk250cql.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8b212tayy8mdwk250cql.png" alt="FlyPPTTimer slide timing in the phone remote" width="758" height="4096"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The remote is intended for trusted local networks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Multiple displays
&lt;/h2&gt;

&lt;p&gt;Presentation environments often involve more than one display.&lt;/p&gt;

&lt;p&gt;FlyPPTTimer can keep a compact always-on-top timer near the speaker while simultaneously putting a dedicated large timer on another display.&lt;/p&gt;

&lt;p&gt;That makes it possible to have one layout for the speaker and another for a confidence monitor, event staff or a larger stage display.&lt;/p&gt;

&lt;h2&gt;
  
  
  Built with Rust and Slint
&lt;/h2&gt;

&lt;p&gt;The current desktop application is built with Rust and Slint, together with native Windows integration for the presentation workflow.&lt;/p&gt;

&lt;p&gt;The phone remote is delivered as a local browser interface.&lt;/p&gt;

&lt;p&gt;The current official release is FlyPPTTimer v1.17.0 for Windows 10/11 x64.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I develop it
&lt;/h2&gt;

&lt;p&gt;The product direction, feature ideas and final decisions come from me.&lt;/p&gt;

&lt;p&gt;I use ChatGPT to help structure requirements, challenge assumptions and refine interaction and product logic. Codex then handles a significant part of the implementation under my direction.&lt;/p&gt;

&lt;p&gt;I review the resulting behavior, test the workflows and decide what becomes part of the product.&lt;/p&gt;

&lt;p&gt;That workflow has been particularly useful for a project like this because many of the difficult problems are not isolated coding problems. They are questions such as what should happen when a slideshow changes, what information belongs on a speaker-facing timer, how controls should behave across multiple displays, and how much functionality should be exposed through the phone interface.&lt;/p&gt;

&lt;h2&gt;
  
  
  Looking for real-world testers
&lt;/h2&gt;

&lt;p&gt;At this point I’m especially interested in people who actually use strict presentation timing in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;thesis defenses and academic presentations;&lt;/li&gt;
&lt;li&gt;lectures and training sessions;&lt;/li&gt;
&lt;li&gt;pitches and demos;&lt;/li&gt;
&lt;li&gt;speech contests;&lt;/li&gt;
&lt;li&gt;multi-speaker meetings;&lt;/li&gt;
&lt;li&gt;live events.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I have a small number of complimentary activation codes available for people willing to use FlyPPTTimer in a real presentation and send candid feedback afterward.&lt;/p&gt;

&lt;p&gt;There is no requirement to publish a review or star the repository.&lt;/p&gt;

&lt;p&gt;What I care about most is finding out what works under real presentation conditions, what becomes distracting, and what is still missing.&lt;/p&gt;

&lt;p&gt;Project:&lt;br&gt;
&lt;a href="https://github.com/Hona-Cao/FlyPPTTimer" rel="noopener noreferrer"&gt;https://github.com/Hona-Cao/FlyPPTTimer&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Latest release:&lt;br&gt;
&lt;a href="https://github.com/Hona-Cao/FlyPPTTimer/releases/latest" rel="noopener noreferrer"&gt;https://github.com/Hona-Cao/FlyPPTTimer/releases/latest&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;English user guide:&lt;br&gt;
&lt;a href="https://github.com/Hona-Cao/FlyPPTTimer/blob/main/docs/USER_GUIDE.en.md" rel="noopener noreferrer"&gt;https://github.com/Hona-Cao/FlyPPTTimer/blob/main/docs/USER_GUIDE.en.md&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;AI assistance disclosure: I define the product direction, requirements and final decisions. ChatGPT is used to help structure and refine product logic, while Codex assists with implementation. I review and test the resulting product before deciding what ships.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>rust</category>
      <category>windows</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
