<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Anthony Fu</title>
        <link>https://antfu.me/</link>
        <description>Anthony Fu' Blog</description>
        <lastBuildDate>Tue, 12 May 2026 13:00:43 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>Anthony Fu</title>
            <url>https://antfu.me/avatar.png</url>
            <link>https://antfu.me/</link>
        </image>
        <copyright>CC BY-NC-SA 4.0 2021 © Anthony Fu</copyright>
        <atom:link href="https://antfu.me/feed.xml" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[testogupdate]]></title>
            <link>https://antfu.me/posts/test-og-update</link>
            <guid isPermaLink="true">https://antfu.me/posts/test-og-update</guid>
            <pubDate>Sat, 18 Oct 2025 19:30:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>[[toc]]</p>
<h1>Test</h1>
<h1>H2</h1>
<h1>H3</h1>
<p><code important-text-red>hello</code></p>
<p>Nice To meet you!<br>
<a href="https://www.pseudoyu.com/posts/weekly_review_89">Pseudo</a><br>
Good AfterNoon</p>
<div mb-10>
<PhotoSlideTemplate class="gap-1!"/>
</div>
<YouTubeEmbed id="0Bh6HBiebfY" noScale/>]]></content:encoded>
            <author>hi@antfu.me (Anthony Fu)</author>
        </item>
        <item>
            <title><![CDATA[TestSecond]]></title>
            <link>https://antfu.me/posts/testsecond</link>
            <guid isPermaLink="true">https://antfu.me/posts/testsecond</guid>
            <pubDate>Sat, 18 Oct 2025 14:40:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>[[toc]]</p>
<h1>Test</h1>
<h1>H2</h1>
<h1>H3</h1>
<p><code important-text-red>hello</code></p>
<p>Nice To meet you!<br>
<a href="https://www.pseudoyu.com/posts/weekly_review_89">Pseudo</a><br>
Good AfterNoon</p>
<div mb-10>
<PhotoSlideTemplate class="gap-1!"/>
</div>
<!-- <YouTubeEmbed id="0Bh6HBiebfY" noScale/> -->]]></content:encoded>
            <author>hi@antfu.me (Anthony Fu)</author>
        </item>
        <item>
            <title><![CDATA[hei]]></title>
            <link>https://antfu.me/posts/test</link>
            <guid isPermaLink="true">https://antfu.me/posts/test</guid>
            <pubDate>Fri, 17 Oct 2025 14:30:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>[[toc]]</p>
<h1>Test</h1>
<h1>H2</h1>
<h1>H3</h1>
<p><code important-text-red>hello</code></p>
<p>Nice To meet you!<br>
<a href="https://www.pseudoyu.com/posts/weekly_review_89">Pseudo</a><br>
Good AfterNoon</p>
<div mb-10>
<PhotoSlideTemplate class="gap-1!"/>
</div>
<YouTubeEmbed id="0Bh6HBiebfY" noScale/>]]></content:encoded>
            <author>hi@antfu.me (Anthony Fu)</author>
        </item>
        <item>
            <title><![CDATA[Photos Page]]></title>
            <link>https://antfu.me/posts/photos-page</link>
            <guid isPermaLink="true">https://antfu.me/posts/photos-page</guid>
            <pubDate>Wed, 12 Mar 2025 12:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>As you might have noticed, I added a <a href="/photos">photos page</a> on this site recently. It's something I wanted to do for a very long time but always procrastinated on.</p>
<p>During certain periods of my life, photography was my greatest passion, just as much as I do today with Open Source and programming. Instagram was once a delightful, minimalist platform for photo sharing that I frequently used - until Meta's acquisition changed everything. While I could even tolerate the algorithms, ads, and short videos, the recent <a href="https://www.standard.co.uk/news/tech/instagram-update-how-adjust-profile-grid-what-changes-coming-b1205890.html">change of profile photo grids' aspect ratio from square to 4:5</a> was the final straw - an arrogant decision that impacts every user's content without providing proper solutions.</p>
<p>I am not sure if anger or disappointment are the right words to describe my feelings. But I'm certainly lucky to be a frontend developer - so I can leverage my skills to build my own website and host my photos here.</p>
<p>I <a href="https://accountscenter.instagram.com/info_and_permissions/dyi/">requested to download all my data from Instagram</a> (it took roughly a day to process in my case), and imported them to the website. Thankfully, the downloaded data was relatively easy to process, with photos dating back to 2015. I use <a href="https://github.com/lovell/sharp"><code>sharp</code></a> to process the images and compress them with <a href="https://github.com/antfu/antfu.me/blob/main/scripts/photos-manage.ts">this script</a>. This automation helps me manage the photos without worrying about image sizes for hosting.</p>
<p>Looking through these old photos brings back so many memories. While some may not meet my current standards - and I admittedly feel a bit embarrassed sharing them - they hold too many precious memories to leave behind. So I decided to keep most of them - hope you won't look too closely at them :P</p>
<p>Here are some of <a href="/photos">my recent photos</a>:</p>
<div mb-10>
  <PhotoGalleryAll :limit="12" class="gap-1!" />
</div>
<p>It's a shame that the image quality from Instagram isn't great, since they compress photos heavily upon posting. I might replace some of them with higher quality originals in the future, but for now, I think it's a good start.</p>
<p>That said, I hope to get back into regularly sharing photos (as I keep saying 😅), especially now that I have my own platform for it.</p>
<p>Thanks for reading! And I hope you find <a href="/photos">my photos</a> interesting. Cheese 🧀!</p>
]]></content:encoded>
            <author>hi@antfu.me (Anthony Fu)</author>
        </item>
        <item>
            <title><![CDATA[GitHub-style Alerts]]></title>
            <link>https://antfu.me/posts/github-alerts</link>
            <guid isPermaLink="true">https://antfu.me/posts/github-alerts</guid>
            <pubDate>Thu, 30 Nov 2023 10:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<blockquote>
<p>[!TIP]<br>
Just a quick tip, that you can use <code>&gt; [!TIP]</code> to create<br>
a GitHub-style alert in your <a href="http://README.md">README.md</a> like this.</p>
</blockquote>
<pre><code class="language-md">&gt; [!TIP]
&gt; Just a quick tip, that you can use `&gt; [!TIP]` to create
&gt; a GitHub-style alert in your README.md like this.
</code></pre>
<p>The original <a href="https://github.com/orgs/community/discussions/16925">GitHub proposal is here</a>. It's rolled out basically everywhere on GitHub now.</p>
<h2>Use it in your website</h2>
<p>And in case you like it, and wanted to use it in your own website, I wrote a quick <code>markdown-it</code> plugin for it:</p>
<p>
<GitHubLink repo="antfu/markdown-it-github-alerts" />
</p>
<h3>Vite</h3>
<p>If you are using <a href="https://github.com/unplugin/unplugin-vue-markdown"><code>unplugin-vue-markdown</code></a>:</p>
<pre><code class="language-ts">import MarkdownItGitHubAlerts from 'markdown-it-github-alerts'
// vite.config.ts
import Markdown from 'unplugin-vue-markdown/vite'
import { defineConfig } from 'vite'

export default defineConfig({
  plugins: [
    Markdown({
      markdownItSetup(md) {
        md.use(MarkdownItGitHubAlerts)
      }
    })
  ],
})
</code></pre>
<h3>VitePress</h3>
<p>If you are using VitePress, you can add this to your <code>.vitepress/config.js</code>:</p>
<pre><code class="language-ts">import MarkdownItGitHubAlerts from 'markdown-it-github-alerts'
import { defineConfig } from 'vitepress'

export default defineConfig({
  markdown: {
    config(md) {
      md.use(MarkdownItGitHubAlerts)
    }
  }
})
</code></pre>
<h3>Nuxt Content</h3>
<p>Nuxt Content use <a href="https://github.com/remarkjs/remark"><code>remark</code></a> instead of <code>markdown-it</code>, so the plugin won't work yet. I will implement it later if there is demand.</p>
<h2>Reference</h2>
<ul>
<li><a href="https://github.com/antfu/antfu.me/commit/72d8dc2fb70bf21582c42d9424337560a7edea6b">Commit of this blog post and setting it up</a></li>
<li><a href="https://github.com/vuejs/vitepress/issues/3278">Proposal to VitePress for adding this by default</a></li>
</ul>
<blockquote>
<p>[!IMPORTANT]<br>
Thanks for reading! :)</p>
</blockquote>
]]></content:encoded>
            <author>hi@antfu.me (Anthony Fu)</author>
        </item>
        <item>
            <title><![CDATA[GitHub Co-authors]]></title>
            <link>https://antfu.me/posts/github-co-authors</link>
            <guid isPermaLink="true">https://antfu.me/posts/github-co-authors</guid>
            <pubDate>Tue, 24 Aug 2021 16:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>You might found GitHub sometimes shows you a commit with multiple authors. This is commonly happening in squashed pull requests when multiple people are involved with the reviewing and made suggestions or changes. In that situation, GitHub will automatically inject the <a href="https://docs.github.com/en/github/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors"><code>Co-authored-by:</code></a> to the commit message. This is a great way to give contributors credits while keeping the commit history clean.</p>
<p>Note that the format is like <code>Co-authored-by: name &lt;name@example.com&gt;</code>, normally GitHub will fill that for you so you don't need to worry about that, but if you want to add it manually, you have to get the email addresses of the contributors. But how do you know their emails?</p>
<p>Well, technically you can indeed find their email by multiple ways, but actually, you don't need to. The easiest way is to copy their user id and append with <a href="https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-github-user-account/managing-email-preferences/setting-your-commit-email-address#about-commit-email-addresses"><code>@users.noreply.github.com</code></a> that provided by GitHub automatically, for example:</p>
<pre><code>Co-authored-by: antfu &lt;antfu@users.noreply.github.com&gt;
</code></pre>
]]></content:encoded>
            <author>hi@antfu.me (Anthony Fu)</author>
        </item>
        <item>
            <title><![CDATA[Windi CSS and Tailwind JIT]]></title>
            <link>https://antfu.me/posts/windicss-and-tailwind-jit</link>
            <guid isPermaLink="true">https://antfu.me/posts/windicss-and-tailwind-jit</guid>
            <pubDate>Thu, 18 Mar 2021 16:00:00 GMT</pubDate>
            <description><![CDATA[Wish this is the end.]]></description>
            <content:encoded><![CDATA[<blockquote>
<p>Disclaimer: All the words are only representing my opinions. None of them applies to the Windi CSS's author nor the team.</p>
</blockquote>
<Tweet>
<p lang="en" dir="ltr">Congrats Tailwind, and thanks for NOT mentioning Windi CSS at all for your new ideas.<br><br>I appreciated how did Tailwind power my apps and make my life easier. But this really changed my mind about how I see the people behind it.<br><br>Check out <a href="https://t.co/kcEzm5Ickp">https://t.co/kcEzm5Ickp</a> by <a href="https://twitter.com/satireven?ref_src=twsrc%5Etfw">@satireven</a>. <a href="https://t.co/tkJCy8Pgb3">https://t.co/tkJCy8Pgb3</a></p>&mdash; Anthony Fu (@antfu7) <a href="https://twitter.com/antfu7/status/1371533878800748545?ref_src=twsrc%5Etfw">March 15, 2021</a>
</Tweet>
<p>I spoke out for <a href="https://github.com/windicss/windicss">Windi CSS</a> just because keeping silence on this also means we are encouraging such things to happen again in the open-source community.</p>
<p>Tailwind was once my favorite CSS framework and I was really happy to see we made it works on Vite <a href="https://twitter.com/antfu7/status/1361398324587163648">much faster</a> with <a href="https://github.com/voorjaar">@voorjaar</a>'s astonishing Windi CSS compiler. But I was totally unexpected to see that end up being like this. Don't get me wrong, it's great to see Tailwind's long pain get solved officially with Tailwind JIT and benefit the community. What I am saying is that Tailwind used/inspired by Windi's idea <strong>without even mentioning Windi CSS once and claiming it's their own ideas</strong> (until 20min after my tweets about that, <a href="https://twitter.com/adamwathan/status/1371542711086559237?s=20">they appended two tweets in the comments</a>, mentioned about Windi but still implies it's their idea. That's all we got). No official reply of this whole thing, not updates to their repo's README, at all.</p>
<p>I don't want to speculate what's the reasons or motivations behind it, all I know is that <strong>I will not use any products from Tailwind Labs anymore</strong>. If you think I was reacting too much or it was not a big deal, then I truly wish such things would never happend on you once again.</p>
<Tweet>
<p lang="en" dir="ltr">I remember the day when Windi got blown up on Twitter, <a href="https://twitter.com/adamwathan?ref_src=twsrc%5Etfw">@adamwathan</a> called me and asked me about how Windi CSS works and he is happy to make it official. And yeah, I was excited to see things are improving for the whole community, so I shared all I know with him.<br><br>1/n <a href="https://t.co/Ho1DddqA33">https://t.co/Ho1DddqA33</a></p>&mdash; Anthony Fu (@antfu7) <a href="https://twitter.com/antfu7/status/1371538602488786945?ref_src=twsrc%5Etfw">March 15, 2021</a>
</Tweet>
<Tweet>
<p lang="en" dir="ltr">It&#39;s almost impossible for a small org like us to fight with the giant Tailwind. But we will not give up just because of this.<br><br>Let&#39;s see and good luck.</p>&mdash; Anthony Fu (@antfu7) <a href="https://twitter.com/antfu7/status/1371538609388494852?ref_src=twsrc%5Etfw">March 15, 2021</a>
</Tweet>
<p>On the bright side, Windi pushed Tailwind to make the JIT and improved the DX and Tailwind forced Windi to be independent and evolving to not being a &quot;Tailwind accessory&quot; any longer.</p>
<p>There is another community based CSS-in-JS alternative called <a href="https://github.com/tw-in-js/twind">Twind</a>, which you definitely want to check out (they are working closely with Windi to bring an uniformed community standard/spec of our DSL, cheers <a href="https://github.com/sastan">@sastan</a>!).</p>
<p>As for myself, I will spend more time on working with Windi CSS to make it even better. Here is some of exciting things we are working on:</p>
<Tweet>
<p lang="en" dir="ltr">Spoiler of the new piece of our playground - interactive selector.<br><br>I always find myself trouble picking the directions of rounded corners and looking up for a huge table of all the possible combinations could be inefficient. So yeah :)<br><br>rounded-1/2 is new in Windi CSS btw 😉 <a href="https://t.co/f841k9BgPF">https://t.co/f841k9BgPF</a> <a href="https://t.co/pVIlB2X1nY">pic.twitter.com/pVIlB2X1nY</a></p>&mdash; Anthony Fu (@antfu7) <a href="https://twitter.com/antfu7/status/1371779599084888064?ref_src=twsrc%5Etfw">March 16, 2021</a>
</Tweet>
<Tweet>
<p lang="en" dir="ltr">Limitation? Let&#39;s break it!💥<br><br>Upcoming feature in <a href="https://twitter.com/windi_css?ref_src=twsrc%5Etfw">@windi_css</a> 🍃<br>&quot;Design in DevTools&quot;!<br><br>Whenever you made changes to the classes in DevTools, the CSS updates automatically for you, on-demand as always :)<br><br>Idea credit goes to <a href="https://twitter.com/MaximoMussini?ref_src=twsrc%5Etfw">@maximomussini</a> 🙌 <a href="https://t.co/DHf2h5wroM">pic.twitter.com/DHf2h5wroM</a></p>&mdash; Anthony Fu (@antfu7) <a href="https://twitter.com/antfu7/status/1372244287975387145?ref_src=twsrc%5Etfw">March 17, 2021</a>
</Tweet>
<p>Thanks for reading though. Don't feel any pressure about using any tools that you needed. I choose not to use them just because my personal preference. I don't want to force anyone to switch their stack because reading this post, we will keep improve it and show you which is the better one you should use :)</p>
]]></content:encoded>
            <author>hi@antfu.me (Anthony Fu)</author>
        </item>
    </channel>
</rss>