<?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: Feng Chen</title>
    <description>The latest articles on DEV Community by Feng Chen (@chenfeng).</description>
    <link>https://dev.to/chenfeng</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%2F4206220%2F40e8ae78-7c10-4f57-96c1-8beaead35ae4.png</url>
      <title>DEV Community: Feng Chen</title>
      <link>https://dev.to/chenfeng</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/chenfeng"/>
    <language>en</language>
    <item>
      <title>Command Reopen: Make Cmd+Tab Bring Back Closed and Minimized Windows on Mac</title>
      <dc:creator>Feng Chen</dc:creator>
      <pubDate>Sun, 18 Oct 2026 00:00:00 +0000</pubDate>
      <link>https://dev.to/chenfeng/command-reopen-make-cmdtab-bring-back-closed-and-minimized-windows-on-mac-5bp</link>
      <guid>https://dev.to/chenfeng/command-reopen-make-cmdtab-bring-back-closed-and-minimized-windows-on-mac-5bp</guid>
      <description>&lt;h2&gt;
  
  
  Background
&lt;/h2&gt;

&lt;p&gt;A Mac is expensive to switch to, but once you’re used to it, you can’t leave. After graduating in 2020 I used a Mac for the first time. I had to study a Mac “white paper” guide, watch YouTube courses, and have people ahead of me walk me through three-finger drag and four-finger swipe between desktops before I got the hang of it.&lt;/p&gt;

&lt;p&gt;macOS has its own design logic; sometimes you can’t tell if it’s careful or just stubborn. If you’re coming over with muscle memory from other operating systems, a few things are bound to trip you up.&lt;/p&gt;

&lt;p&gt;Take what happens when you close an app’s window with Cmd+W or minimize it with Cmd+M:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The app doesn’t quit; it still shows up in the Cmd+Tab app switcher.&lt;/li&gt;
&lt;li&gt;But because the window was closed or minimized, switching back to that app with Cmd+Tab won’t bring it up.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I went looking for ways to deal with this, and found roughly three answers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hide apps with Cmd+H instead of closing or minimizing them. Hidden apps do reopen windows via Cmd+Tab (which completely goes against my habits).&lt;/li&gt;
&lt;li&gt;Select the app in Cmd+Tab, hold Option, then release Cmd, and the window appears (I’ve literally never managed to pull this key combo off).&lt;/li&gt;
&lt;li&gt;Activate it from the Dock (…)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Eventually I’d had enough and vibe-coded an app to fix it.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Command Reopen Works
&lt;/h2&gt;

&lt;p&gt;During the days this was driving me crazy, I took a closer look at how Cmd+Tab actually behaves: when you switch to an app with no open windows, macOS actually brings it to the foreground—it just doesn’t open a window.&lt;/p&gt;

&lt;p&gt;So the approach behind Command Reopen is pretty straightforward: listen for system foreground app switches, and as soon as an app arrives in the foreground without any visible window, send a “reopen” command to wake it up.&lt;/p&gt;

&lt;p&gt;Existing solutions (notably &lt;a href="https://alt-tab-macos.netlify.app/" rel="noopener noreferrer"&gt;AltTab&lt;/a&gt;) often do complex window management — previews, rearranging, even redrawing and covering the native Cmd+Tab UI — and usually need Accessibility permission or even Screen Recording permission.&lt;/p&gt;

&lt;p&gt;Command Reopen only fixes this one thing. It doesn’t change system UI or run complex logic — it just adds a window-activation step. For daily use, that’s enough.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limitations of Going Zero-Permission
&lt;/h2&gt;

&lt;p&gt;Because it refuses sensitive system permissions, the current approach has two hard limits:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Lack of Window-Level Control
&lt;/h3&gt;

&lt;p&gt;Window-level control needs Accessibility (AX) permission, so Command Reopen can only wake apps, not individual windows. If an app has multiple minimized windows, it will only bring up the topmost one—you can’t pick a specific window to activate.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Reliant on Apps Following Native macOS Window Standards
&lt;/h3&gt;

&lt;p&gt;The mechanism needs the target app to implement macOS window APIs properly so it can answer system activation. If an app’s window management is a non-standard, hand-rolled setup, it may not work.&lt;/p&gt;

&lt;p&gt;In testing, a user found that Feishu Meetings (launched from Feishu / Lark) takes its own Dock icon and completely ignores Command Reopen’s activation. There may be other non-standard apps we haven’t found yet.&lt;/p&gt;

&lt;p&gt;Still, after half a year of daily use, most mainstream apps are mostly fine.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pricing &amp;amp; What’s Next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://apps.apple.com/app/command-reopen/id6757333924?pt=128417926&amp;amp;ct=kkuk-blog&amp;amp;mt=8" rel="noopener noreferrer"&gt;App Store&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://commandreopen.com/zh/" rel="noopener noreferrer"&gt;Website&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Yearly $5.99, Lifetime $9.99&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Feng6611/mac-command-reopen" rel="noopener noreferrer"&gt;GitHub (open source)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The &lt;a href="https://github.com/Feng6611/mac-command-reopen/releases" rel="noopener noreferrer"&gt;GitHub Releases&lt;/a&gt; page offers slightly older direct-distribution builds you can download for free. Alternatively, you can clone the repo and build it yourself. There’s also an &lt;a href="https://github.com/Feng6611/mac-command-reopen/tree/codex/direct-ax-advanced-mode" rel="noopener noreferrer"&gt;experimental build with Accessibility permission&lt;/a&gt; that addresses the limitations mentioned above.&lt;/p&gt;

&lt;p&gt;After shipping Command Reopen, I wondered whether to make a tiny app for every similar papercut — macOS has so many small things you could polish. I knocked out two more and stopped. You won’t install a hundred apps; bundled tools that fix many papercuts fit this better — like &lt;a href="https://www.raycast.com/" rel="noopener noreferrer"&gt;Raycast&lt;/a&gt; and &lt;a href="https://sindresorhus.com/supercharge" rel="noopener noreferrer"&gt;Supercharge&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>software</category>
      <category>tools</category>
    </item>
    <item>
      <title>Solve Your Own Problems First (and Only Your Own)</title>
      <dc:creator>Feng Chen</dc:creator>
      <pubDate>Mon, 22 Dec 2025 00:00:00 +0000</pubDate>
      <link>https://dev.to/chenfeng/solve-your-own-problems-first-and-only-your-own-1pje</link>
      <guid>https://dev.to/chenfeng/solve-your-own-problems-first-and-only-your-own-1pje</guid>
      <description>&lt;p&gt;More than a year into vibe coding, I still haven’t quite figured out how to relate to this new kind of productivity. Whenever the hype flared up, I’d jump in with great excitement and hack away for a bit. But pretty quickly, the lack of practical utility and any real sense of accomplishment would deflate me. It’s been an endless cycle of fizzling out and starting over.&lt;/p&gt;

&lt;p&gt;Recently, while building a few small tools to fix UX annoyances in my daily workflow, I realized this may well be the use case that makes the most sense for regular folks vibe coding: solve your own problems, and only your own. A few key traits make this approach work:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Low complexity: AI can knock it out in no time.&lt;/li&gt;
&lt;li&gt;Small scope: but because you keep using and tweaking that one specific thing, it gradually gets smoother and better to use over time.&lt;/li&gt;
&lt;li&gt;Productized: packaging it into an actual tool makes day-to-day use that much more convenient.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the end, you only ship the ones you’re genuinely satisfied with. That sidesteps the hollow, aimless feeling of vibe coding and building products without a clear goal in sight.&lt;/p&gt;

&lt;p&gt;As a longtime Raycast user, I’ve often wondered: where on earth do they find so many tiny needs to solve? I suspect they did the exact same thing: solve their own problems first, not the users’.&lt;/p&gt;

&lt;p&gt;Once you adopt this mindset, you don’t decide whether to build something based on whether it’s already been done before, or whether anyone else will use it. If existing solutions aren’t elegant enough, then I guess I’ll have to build it myself; and because it’s solving my own problem, I couldn’t care less whether anyone else ever uses it.&lt;/p&gt;

&lt;p&gt;Perhaps this is the vibe coding playbook that actually works best for regular people.&lt;/p&gt;

&lt;p&gt;Another truth that hits home the more I code: someone without real engineering practice will find it very hard to vibe-code a solution that combines taste, solid engineering, and widespread appeal.&lt;/p&gt;

&lt;p&gt;The barrier to entry has dropped, but the effort required is still substantial. It’s no place for a half-hearted coder.&lt;/p&gt;

</description>
      <category>coding</category>
      <category>productivity</category>
      <category>sideprojects</category>
    </item>
    <item>
      <title>Why I Struggle to Build My Own Products: From the Profit Trap Back to the Joy of Creation</title>
      <dc:creator>Feng Chen</dc:creator>
      <pubDate>Sun, 27 Jul 2025 00:00:00 +0000</pubDate>
      <link>https://dev.to/chenfeng/why-i-struggle-to-build-my-own-products-from-the-profit-trap-back-to-the-joy-of-creation-3oe</link>
      <guid>https://dev.to/chenfeng/why-i-struggle-to-build-my-own-products-from-the-profit-trap-back-to-the-joy-of-creation-3oe</guid>
      <description>&lt;h2&gt;
  
  
  The Problem I Ran Into
&lt;/h2&gt;

&lt;p&gt;I’m a product manager, and ever since I got into the industry, I’ve wanted to build products as an indie dev. Late last year, Cursor gave me just enough coding ability to actually build things. All those ideas that had been sitting in my backlog for ages started turning into reality, one by one. I was having a blast.&lt;/p&gt;

&lt;p&gt;Then ambition crept in: making money. Looking through my “product manager” lens, most of my ideas weren’t monetizable. So I turned my gaze toward App Store charts, SEO keywords, and Xiaohongshu (a Chinese lifestyle and recommendation platform). That threw me straight into a vicious loop:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Most ideas felt boring or worthless.&lt;/li&gt;
&lt;li&gt;Hunting for ideas by scraping charts and chasing keywords felt inelegant.&lt;/li&gt;
&lt;li&gt;I’d scoff at other people’s terrible ideas, while secretly envying their good ones.&lt;/li&gt;
&lt;li&gt;Lacking taste and judgment, I became paralyzed by implementation costs and the fear of failure, never daring to commit.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It was a terrible headspace. The harder I hunted for “user needs,” the more anxious I became—endlessly scrolling social feeds, dissecting user behavior, doing competitor analysis and tech stack research, but never getting past that stage.&lt;/p&gt;

&lt;p&gt;From a product standpoint, this is a textbook case of struggling to find direction. But I had no fertile soil for genuine ideas to sprout in the first place, and at the same time, I looked down on the playbook of keyword research and leaderboard scraping. I was completely trapped in my own awkward contradiction.&lt;/p&gt;

&lt;h2&gt;
  
  
  Do I Really Have to Build Products?
&lt;/h2&gt;

&lt;p&gt;When I finally asked myself this, I was surprised to realize I’d never once questioned it. The belief had become almost like a mental seal. On one hand, it carried my longing to escape the 9-to-5 grind and work for myself; on the other hand, building products is genuinely alluring—it scratches the creative itch while creating value for others. But once the demand for income took over, the original intent began to warp.&lt;/p&gt;

&lt;p&gt;To put it another way: Is building products really my calling?&lt;/p&gt;

&lt;p&gt;Among the ideas of “freedom” I subscribe to, discovering one’s calling is the path that makes the most sense to me. A calling, by definition, should be work that brings lasting joy, provides a decent income, and is worth dedicating a significant chunk of your time to. When the answer isn’t clear yet, the best thing I can do is make exploring possibilities the main focus:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Let curiosity lead the way.&lt;/li&gt;
&lt;li&gt;Keep income off the table, and explore everything as an amateur.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Building products, then, definitely isn’t a necessity, nor is making money through them. It’s just one candidate for what a calling might look like.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Find New Ideas
&lt;/h2&gt;

&lt;p&gt;The boundaries of product insight mostly depend on the boundaries of the creator. A 30-something adult can hardly empathize with how a 12-year-old thinks; and how can a longtime Apple user design better experiences for Android and Windows users, who make up the majority of the market?&lt;/p&gt;

&lt;p&gt;Sure, there are proven methodologies for bridging those gaps. But once I broke free from the obsession with making money and started seeing creation as a journey toward finding my calling, exploring the possibilities within my own world became far more important.&lt;/p&gt;

&lt;h3&gt;
  
  
  Build Only for Myself
&lt;/h3&gt;

&lt;p&gt;In terms of shipped projects, I’ve launched two:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Obsidian File Ignore: a browser extension built to hide unused files in an Obsidian vault and keep it from slowing down.&lt;/li&gt;
&lt;li&gt;Raycast Penflow: an English writing assistant that polishes English phrasing and translates-plus-polishes mixed Chinese-English input.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The ironic part was that even though I was the original user with the problem, I soon stopped using both. The need for the Obsidian plugin disappeared once I changed how I organize files. As for Penflow, the actual use cases turned out to be far rarer than I’d anticipated. When you don’t use your own tool, there are no new itches to scratch, and you simply stop maintaining it.&lt;/p&gt;

&lt;p&gt;That made me realize: if this is what happens when building for my own needs, trying to build for strangers is even worse. Choosing to build only things I personally use has significant advantages:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;No need to worry about financial returns.&lt;/li&gt;
&lt;li&gt;The pain point is relatively clear, and so is the shape of the solution.&lt;/li&gt;
&lt;li&gt;It cuts out the mental friction and endless back-and-forth of second-guessing other people’s needs (like the 12-year-old empathy gap mentioned earlier).&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Live My Own Life, and Let Ideas Surface Naturally
&lt;/h3&gt;

&lt;p&gt;Instead of daydreaming a problem into existence, it’s better to live life well right now and explore new boundaries.&lt;/p&gt;

&lt;p&gt;First, step back from immediate survival pressure and take care of myself. By tuning my sleep and exercise habits, carve out two to three hours a day for quiet thinking. And as long as I don’t hate my day job, I should view it through a positive lens—after all, it’s the domain I’m most deeply engaged in, and it takes up the largest part of my day.&lt;/p&gt;

&lt;p&gt;Second, protect and nurture curiosity. I once told Gemini, feeling genuinely down: “I can’t find my curiosity anymore.” But soon enough, once I dropped the obsessions and mental noise, journaled more, and gave myself room to unwind, things improved dramatically. It had only been clouded over; it never actually vanished.&lt;/p&gt;

&lt;p&gt;Finally, with curiosity as the foundation, just go play and make creative things. Not only do these projects bring joy and relieve stress, but they also continually test the reach and strength of how curiosity connects you with the world.&lt;/p&gt;

&lt;p&gt;So, learn to live, and explore where interests, hobbies, and happiness come from. As Paul Graham wrote on his blog:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;When in doubt, optimize for interestingness.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The goal of building products isn’t making money; money is just a byproduct. And good ideas don’t come from racking your brain—they’re the unexpected surprises you bump into while living an interesting life.&lt;/p&gt;

</description>
      <category>buildinpublic</category>
      <category>saas</category>
      <category>startup</category>
    </item>
    <item>
      <title>I Finally Understand What Static Sites Are</title>
      <dc:creator>Feng Chen</dc:creator>
      <pubDate>Wed, 21 May 2025 00:00:00 +0000</pubDate>
      <link>https://dev.to/chenfeng/i-finally-understand-what-static-sites-are-1k3h</link>
      <guid>https://dev.to/chenfeng/i-finally-understand-what-static-sites-are-1k3h</guid>
      <description>&lt;h2&gt;
  
  
  Building openflomo with Client-Side Rendering
&lt;/h2&gt;

&lt;p&gt;Back when I first started tinkering with AI coding, I wanted to build a public version of my notes from flomo (a note-taking app). With Claude driving the code, here’s how the workflow played out:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Downloading the raw notes: flomo exports in HTML
&lt;/h3&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%2F4dbpmay70ujn4mhnkvgy.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%2F4dbpmay70ujn4mhnkvgy.png" alt="flomo 导出的 HTML 笔记页面" width="800" height="599"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If all I cared about was making my notes public, simply hosting this export as a static page would have been more than enough. But I couldn’t leave well enough alone—I just had to go and rebuild it to match flomo’s actual web app.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Fussing over the details
&lt;/h3&gt;

&lt;p&gt;The raw export was missing two key things: first, tags inside note cards couldn’t be highlighted or filtered; second, it lacked the tag list in the left sidebar.&lt;/p&gt;

&lt;p&gt;After plenty of tinkering, here’s what it looked like. I was thrilled, and immediately threw it up on GitHub Pages.&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%2Figw938m3a3vqs5z0vulq.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%2Figw938m3a3vqs5z0vulq.png" alt="公开 flomo 笔记的页面" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. The problem: painfully slow loading
&lt;/h3&gt;

&lt;p&gt;I have over 2,000 notes. The raw HTML file was around 700 KB, and both the JS and CSS files clocked in at over 600 lines each. Whenever you opened the page, this is what actually happened:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The browser loaded &lt;code&gt;index.html&lt;/code&gt;, which pulled in the raw data file and the JavaScript, while importing CSS as needed.&lt;/li&gt;
&lt;li&gt;The JavaScript looped through the entire raw file on the fly—handling tag parsing, text formatting, the list view, URL formatting, and so on.&lt;/li&gt;
&lt;li&gt;The CSS was applied, and rendering finally finished.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Since I don’t know how to code, I just obsessively took screenshots of the LCP (Largest Contentful Paint) performance scores, tossed them over to Claude, and told it to fix them. We tried plenty of tricks and saw some improvements, but my gut kept telling me something about this whole setup felt off.&lt;/p&gt;

&lt;h2&gt;
  
  
  Discovering Hacker News and Buzz
&lt;/h2&gt;

&lt;p&gt;I had just started browsing Hacker News at the time, and I couldn’t understand why its interface looked so dated. After digging around a bit, I realized what its users actually care about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Only the bare-minimum HTML and CSS, and virtually no JavaScript, so it still works even on terrible connections.&lt;/li&gt;
&lt;li&gt;High information density.&lt;/li&gt;
&lt;li&gt;Zero visual clutter from bloated CSS, making it easy to stay immersed in the content.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then I came across Owen’s article on rebuilding Buzz (&lt;a href="https://www.owenyoung.com/blog/new-buzzing" rel="noopener noreferrer"&gt;https://www.owenyoung.com/blog/new-buzzing&lt;/a&gt;). That was when it clicked: for what I was trying to do with openflomo, I should be server-side rendering and building a static site, then hosting those static files on GitHub Pages.&lt;/p&gt;

&lt;h3&gt;
  
  
  Client-Side vs. Server-Side Rendering
&lt;/h3&gt;

&lt;p&gt;At its simplest, a web page can just be a single HTML file: CSS provides styling, and JavaScript adds logic. Without any JavaScript, it’s already a complete page on its own.&lt;/p&gt;

&lt;p&gt;More often, though, there’s an intermediate step between your raw data and the final page structure. Take a blog: I write posts in Markdown, and a set of scripts has to convert that Markdown into HTML before it can actually become a web page.&lt;/p&gt;

&lt;p&gt;That process is the “Build” step.&lt;/p&gt;

&lt;p&gt;When hosting a site, there are three common moments when this build can happen:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Building locally, then deploying the compiled files.&lt;/li&gt;
&lt;li&gt;Building on the server when deploying the source files—compiling once on the server, so visitors receive pre-compiled files directly.&lt;/li&gt;
&lt;li&gt;The client fetches all the raw assets and compiles everything on the fly—which inevitably leads to slow load and render times.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Rebuilding with Astro
&lt;/h2&gt;

&lt;p&gt;With Cursor doing the coding, I rebuilt the project using Astro. The new workflow looks like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Drop in the updated flomo notes.&lt;/li&gt;
&lt;li&gt;Commit and push the code. The build script runs on the server—handling tags, lists, and styling to produce the final static assets.&lt;/li&gt;
&lt;li&gt;When a visitor lands on the page, they pull down the pre-built static site directly.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Looking at these network requests in DevTools, for the first time I felt that same excitement my former engineer colleagues must feel when they write clean, elegant code.&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%2Fgvdeezqskdh4a6wnivod.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%2Fgvdeezqskdh4a6wnivod.png" alt="openflomo 静态页面的开发者工具加载记录" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>frontend</category>
      <category>html</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
