<?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: he zidong</title>
    <description>The latest articles on DEV Community by he zidong (@he_zidong_214dea759d6e088).</description>
    <link>https://dev.to/he_zidong_214dea759d6e088</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%2F3740833%2Fadfd88ac-ecf9-473b-af1d-5c7a20b1bbf0.png</url>
      <title>DEV Community: he zidong</title>
      <link>https://dev.to/he_zidong_214dea759d6e088</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/he_zidong_214dea759d6e088"/>
    <language>en</language>
    <item>
      <title>Designing Better Printable Resources for Kids: 5 Practical Web UX Lessons</title>
      <dc:creator>he zidong</dc:creator>
      <pubDate>Sun, 31 May 2026 06:27:52 +0000</pubDate>
      <link>https://dev.to/he_zidong_214dea759d6e088/designing-better-printable-resources-for-kids-5-practical-web-ux-lessons-23ig</link>
      <guid>https://dev.to/he_zidong_214dea759d6e088/designing-better-printable-resources-for-kids-5-practical-web-ux-lessons-23ig</guid>
      <description>&lt;p&gt;Building a website for printable learning resources looks simple at first: publish a worksheet, add a download button, and move on. In practice, the experience serves several audiences at once. A parent may be searching from a phone while preparing an activity for the next ten minutes. A teacher may need to scan a page quickly and print materials for an entire class. A child may only see the final sheet after it leaves the screen.&lt;/p&gt;

&lt;p&gt;That makes printable-resource websites a useful case study in practical web UX. Here are five lessons that apply well beyond education sites.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Design for the real task, not the page view
&lt;/h2&gt;

&lt;p&gt;A page view is not the goal. The real goal is usually to find a suitable activity, understand its difficulty, and print it with minimal friction. The interface should make the next action obvious.&lt;/p&gt;

&lt;p&gt;Useful details include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a clear activity title&lt;/li&gt;
&lt;li&gt;an age or skill-level hint&lt;/li&gt;
&lt;li&gt;a visible preview&lt;/li&gt;
&lt;li&gt;a prominent print or download action&lt;/li&gt;
&lt;li&gt;a short explanation of what the child will practice&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The best page is often the one that answers the user's practical questions before they need to scroll.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Treat mobile discovery and desktop printing as one journey
&lt;/h2&gt;

&lt;p&gt;Many users discover activities on mobile devices, then print from a laptop or send the file to another device. Responsive design is necessary, but it is only the start.&lt;/p&gt;

&lt;p&gt;The content hierarchy should stay consistent across screen sizes. Avoid hiding the core download action behind a menu on mobile. Use descriptive filenames and predictable URLs so users can recognize the material later when it appears in a download folder or shared message.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Make previews fast and useful
&lt;/h2&gt;

&lt;p&gt;Large preview images can slow down pages, especially for families and classrooms using shared or limited connections. Generate appropriately sized thumbnails, lazy-load images below the fold, and reserve image dimensions to reduce layout shifts.&lt;/p&gt;

&lt;p&gt;A preview should also be informative. It should show enough of the worksheet or coloring page for an adult to decide whether it is suitable without opening several new tabs.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Keep the visual design calm
&lt;/h2&gt;

&lt;p&gt;Children's websites do not need to overload every screen with bright colors, motion, and competing calls to action. The adult selecting a resource benefits from a calm interface with readable typography, generous spacing, and strong contrast.&lt;/p&gt;

&lt;p&gt;The printable itself can be playful. The surrounding UI should help the user complete the task.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Build trust through clarity
&lt;/h2&gt;

&lt;p&gt;Users should know what they are opening and whether the resource is free before clicking. Descriptive labels are more useful than vague buttons. Accessibility matters here too: use semantic headings, meaningful alt text, keyboard-friendly controls, and visible focus states.&lt;/p&gt;

&lt;p&gt;A practical example is &lt;a href="https://www.funboxie.com/" rel="noopener noreferrer"&gt;Funboxie&lt;/a&gt;, a site offering free printable coloring pages, educational worksheets, and activities for kids. It is a useful reminder that a focused resource site can create value by reducing the distance between discovery and a real-world activity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final thought
&lt;/h2&gt;

&lt;p&gt;Good UX is not always about adding more features. For printable resources, the strongest improvements often come from removing uncertainty: make the content easy to evaluate, make the main action easy to find, and make the page fast enough that users can move from screen to paper without friction.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>design</category>
      <category>frontend</category>
      <category>a11y</category>
    </item>
    <item>
      <title>Building a Printable Library with Next.js and Cloudflare: Practical Notes</title>
      <dc:creator>he zidong</dc:creator>
      <pubDate>Tue, 26 May 2026 08:45:55 +0000</pubDate>
      <link>https://dev.to/he_zidong_214dea759d6e088/building-a-printable-library-with-nextjs-and-cloudflare-practical-notes-2nd3</link>
      <guid>https://dev.to/he_zidong_214dea759d6e088/building-a-printable-library-with-nextjs-and-cloudflare-practical-notes-2nd3</guid>
      <description>&lt;p&gt;I have been working on &lt;a href="https://www.funboxie.com/" rel="noopener noreferrer"&gt;Funboxie&lt;/a&gt;, a small library of printable coloring pages, worksheets, templates, and kids' activities.&lt;/p&gt;

&lt;p&gt;It sounds like a simple content site, but the implementation quickly starts to look like a lightweight product platform: many indexed routes, lots of static assets, category hubs, detail pages, sitemaps, redirects or removals, and a publishing process that needs to avoid breaking search traffic.&lt;/p&gt;

&lt;p&gt;These are the practical notes I would keep if I were starting the project again.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Model pages around user intent, not just content type
&lt;/h2&gt;

&lt;p&gt;A printable site usually has at least three kinds of pages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;category hubs, such as coloring pages or printables&lt;/li&gt;
&lt;li&gt;specific collection pages, such as nature coloring pages or printable templates&lt;/li&gt;
&lt;li&gt;individual downloadable assets or previews&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those pages should not all behave the same way. A hub page needs fast browsing and internal links. A collection page needs a clear promise, useful previews, and related pages. A removed page needs an intentional status code rather than a vague redirect.&lt;/p&gt;

&lt;p&gt;For Funboxie, the pages that matter most are not always the newest pages. They are often pages that already receive impressions in Search Console but do not yet earn many clicks.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Keep the stack boring where possible
&lt;/h2&gt;

&lt;p&gt;The site is built with Next.js and deployed on Cloudflare. That gives a good balance for this type of project:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;file-based routes for predictable page structure&lt;/li&gt;
&lt;li&gt;generated metadata for category and collection pages&lt;/li&gt;
&lt;li&gt;fast cached responses for mostly static content&lt;/li&gt;
&lt;li&gt;a deployment target that handles global delivery well&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The important part is not the stack name. The important part is that the system makes it easy to produce stable URLs and fast pages.&lt;/p&gt;

&lt;p&gt;For a printable library, I would rather have a simple content pipeline and a clean build than a heavy CMS that introduces operational overhead before the site has proven its traffic channels.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Treat the sitemap as an operational artifact
&lt;/h2&gt;

&lt;p&gt;Search engines will eventually discover messy behavior. A stale sitemap, old HTTP URLs, removed pages, or inconsistent canonical URLs can create noise that wastes time later.&lt;/p&gt;

&lt;p&gt;The basic checks are worth automating or at least repeating:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;sitemap URLs match the live canonical host&lt;/li&gt;
&lt;li&gt;removed pages return a clear status&lt;/li&gt;
&lt;li&gt;important pages return 200 after deployment&lt;/li&gt;
&lt;li&gt;generated pages are present in search/navigation data&lt;/li&gt;
&lt;li&gt;build output does not silently drop a route&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is not glamorous work, but it keeps the project understandable.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Optimize from real search data
&lt;/h2&gt;

&lt;p&gt;Keyword research can produce an endless backlog. For a small site, that can be dangerous because it creates a feeling of progress without proof.&lt;/p&gt;

&lt;p&gt;A better loop has been:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Look at Search Console pages that already have impressions.&lt;/li&gt;
&lt;li&gt;Pair pages with the queries they are actually showing for.&lt;/li&gt;
&lt;li&gt;Improve the title, intro, internal links, or page structure.&lt;/li&gt;
&lt;li&gt;Wait long enough for data to change.&lt;/li&gt;
&lt;li&gt;Repeat only where there is evidence.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This keeps the roadmap tied to real demand. It also prevents overbuilding pages that look good in a spreadsheet but have no traction.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Printable assets are product UI
&lt;/h2&gt;

&lt;p&gt;On a normal blog, an image can be decorative. On a printable site, the image or PDF is the product.&lt;/p&gt;

&lt;p&gt;That means asset handling is part of the UX:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;previews should load quickly&lt;/li&gt;
&lt;li&gt;download or print paths should be obvious&lt;/li&gt;
&lt;li&gt;file URLs should be stable&lt;/li&gt;
&lt;li&gt;mobile users should still understand what they will get&lt;/li&gt;
&lt;li&gt;related assets should be easy to browse&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the page has good text but the printable itself is hard to inspect, the page still fails.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Small checks beat big rewrites
&lt;/h2&gt;

&lt;p&gt;The most useful production habit has been boring verification:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;run type checks&lt;/li&gt;
&lt;li&gt;run the production build&lt;/li&gt;
&lt;li&gt;spot-check the highest-value URLs&lt;/li&gt;
&lt;li&gt;inspect current 404 and 5xx examples before assuming they are live issues&lt;/li&gt;
&lt;li&gt;keep a short log of external submissions and published links&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For small projects, these checks are often enough to prevent the expensive mistakes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Closing thought
&lt;/h2&gt;

&lt;p&gt;A printable library looks simple from the outside. Underneath, it benefits from the same engineering discipline as any search-driven web product: stable routing, clear metadata, fast delivery, intentional status codes, and a feedback loop based on real data.&lt;/p&gt;

&lt;p&gt;That is the main lesson from building Funboxie so far: the content matters, but the operational surface around the content matters just as much.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>nextjs</category>
      <category>cloud</category>
      <category>seo</category>
    </item>
    <item>
      <title>What building a low-friction browser game portal taught me about web UX</title>
      <dc:creator>he zidong</dc:creator>
      <pubDate>Tue, 31 Mar 2026 16:54:31 +0000</pubDate>
      <link>https://dev.to/he_zidong_214dea759d6e088/what-building-a-low-friction-browser-game-portal-taught-me-about-web-ux-52ki</link>
      <guid>https://dev.to/he_zidong_214dea759d6e088/what-building-a-low-friction-browser-game-portal-taught-me-about-web-ux-52ki</guid>
      <description>&lt;p&gt;If you build for short sessions, every bit of friction shows up immediately.&lt;/p&gt;

&lt;p&gt;That became obvious while working on &lt;a href="https://www.cookie-clicker2.org" rel="noopener noreferrer"&gt;Cookie Clicker 2&lt;/a&gt;, a browser-first portal focused on idle and incremental games. People do not open this kind of site the same way they open a long-form app. They arrive with almost no setup tolerance. They want the page to load fast, the game to be obvious, and the next action to feel effortless.&lt;/p&gt;

&lt;p&gt;That constraint ended up being useful. It forced a few product and engineering decisions that I think apply far beyond game sites.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Speed matters more when the session is optional
&lt;/h2&gt;

&lt;p&gt;A lot of products can survive a slow first impression because the user has already committed to a task. Browser games do not get that luxury.&lt;/p&gt;

&lt;p&gt;When someone opens a quick-play site during a short break, they are not deeply invested yet. If the page is slow, cluttered, or unclear, they leave before the product has a chance to explain itself.&lt;/p&gt;

&lt;p&gt;That pushed me toward a simpler rule: optimize for time-to-value, not just page speed metrics.&lt;/p&gt;

&lt;p&gt;For this type of product, time-to-value means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the game area is easy to find&lt;/li&gt;
&lt;li&gt;the page explains the loop quickly&lt;/li&gt;
&lt;li&gt;unnecessary UI does not compete with the main action&lt;/li&gt;
&lt;li&gt;navigation supports discovery without overwhelming the first visit&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2. Curation beats volume
&lt;/h2&gt;

&lt;p&gt;It is tempting to keep adding more titles because more content looks like growth. But when the audience is looking for a specific type of experience, too much choice can make the site feel worse.&lt;/p&gt;

&lt;p&gt;Idle and incremental players usually want one of a few things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;satisfying progression&lt;/li&gt;
&lt;li&gt;a game that works well in short bursts&lt;/li&gt;
&lt;li&gt;clear upgrades and optimization decisions&lt;/li&gt;
&lt;li&gt;a low-friction way to try something new&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That means the product should help users discover the &lt;em&gt;right&lt;/em&gt; next game, not just &lt;em&gt;more&lt;/em&gt; games.&lt;/p&gt;

&lt;p&gt;In practice, this changed how I think about page structure. A smaller, better-organized catalog often performs better than a massive dump of loosely related content.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Editorial context increases retention
&lt;/h2&gt;

&lt;p&gt;One thing I underestimated at first was how much lightweight editorial content helps.&lt;/p&gt;

&lt;p&gt;A portal is not only a container for links or embeds. If you add concise strategy guides, mechanic explainers, and related-game recommendations, users have more reasons to stay, return, and trust the site.&lt;/p&gt;

&lt;p&gt;This is especially true for genres like clicker and idle games, where players care about systems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;progression pacing&lt;/li&gt;
&lt;li&gt;upgrade priority&lt;/li&gt;
&lt;li&gt;reset timing&lt;/li&gt;
&lt;li&gt;compounding strategy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That kind of content turns a simple play page into a more useful destination.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Browser-first products need ruthless clarity
&lt;/h2&gt;

&lt;p&gt;A browser product competes with the tab bar itself.&lt;/p&gt;

&lt;p&gt;Users can close the page in one second. They can open five alternatives just as fast. That means the product cannot rely on onboarding flow, habit, or sunk cost. It has to make sense immediately.&lt;/p&gt;

&lt;p&gt;The biggest UX improvements were not flashy ones. They were things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;clearer hierarchy above the fold&lt;/li&gt;
&lt;li&gt;fewer visual interruptions near the main interaction area&lt;/li&gt;
&lt;li&gt;better labeling around game categories and guides&lt;/li&gt;
&lt;li&gt;stronger consistency between landing pages and play pages&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of that is novel, but the margin for error is much smaller when the product is designed for impulse visits.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. A niche audience often gives clearer product signals
&lt;/h2&gt;

&lt;p&gt;Working on a focused portal also reinforced a product lesson I keep seeing elsewhere: niche users are easier to learn from.&lt;/p&gt;

&lt;p&gt;A broad audience gives you more traffic, but a focused audience gives you sharper feedback. Idle game players know what they value. If the page is noisy, they feel it. If discovery is poor, they notice. If the game loop is hidden behind clutter, they leave.&lt;/p&gt;

&lt;p&gt;That makes this kind of project a good forcing function for product discipline.&lt;/p&gt;

&lt;h2&gt;
  
  
  Closing thought
&lt;/h2&gt;

&lt;p&gt;Building for "quick downtime" sounds lightweight, but it is actually demanding. You have less time to earn trust, less time to explain value, and less room for UI mistakes.&lt;/p&gt;

&lt;p&gt;That is why I have started to think of low-friction browser products as a strong UX test. If the experience works for a user who arrives with almost no patience, it will probably get better for everyone else too.&lt;/p&gt;

&lt;p&gt;If you have worked on browser-first products, I would be curious what changed your thinking the most: performance work, information architecture, or content strategy?&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>nextjs</category>
      <category>gamedev</category>
      <category>ux</category>
    </item>
    <item>
      <title>scritchy scratchy</title>
      <dc:creator>he zidong</dc:creator>
      <pubDate>Thu, 26 Mar 2026 06:30:39 +0000</pubDate>
      <link>https://dev.to/he_zidong_214dea759d6e088/scritchy-scratchy-f3g</link>
      <guid>https://dev.to/he_zidong_214dea759d6e088/scritchy-scratchy-f3g</guid>
      <description>&lt;p&gt;hey, thanks for sharing this! i've been wanting to get more involved on dev community, and this breakdown of the posting interface is super helpful. i didn't realize they had so many cool features like the agent session embeds and the image generation tool with that specific ratio requirement. the markdown support is definitely a nice touch too.&lt;/p&gt;

&lt;p&gt;one thing i always appreciate is when platforms make the editor experience smooth and intuitive. seems like they've put some thought into balancing functionality with usability here. going to try putting together my first proper post soon - maybe something about my recent side project.&lt;/p&gt;

&lt;p&gt;by the way, if you're looking for a distraction-free writing tool to draft your posts, i'd definitely recommend checking out &lt;a href="https://scritchyscratchy.cc/" rel="noopener noreferrer"&gt;scritchy scratchy&lt;/a&gt; - it's been a game changer for my drafting process. keeps me focused without all the bells and whistles getting in the way.&lt;/p&gt;

&lt;p&gt;looking forward to seeing more content from you here!&lt;/p&gt;

</description>
      <category>gamechallenge</category>
      <category>gamedev</category>
    </item>
  </channel>
</rss>
