<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Blog on SJ.Wu</title><link>https://sj-wu.com/posts/</link><description>Recent content in Blog on SJ.Wu</description><generator>Hugo -- gohugo.io</generator><language>en-US</language><copyright>© 2026 SJ.Wu</copyright><lastBuildDate>Sun, 07 Jun 2026 03:00:00 +0800</lastBuildDate><atom:link href="https://sj-wu.com/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Avatar, OG Image, and Favicon in Blowfish: Three Things, Three Params</title><link>https://sj-wu.com/posts/blowfish-avatar-og-favicon/</link><pubDate>Sun, 07 Jun 2026 03:00:00 +0800</pubDate><guid>https://sj-wu.com/posts/blowfish-avatar-og-favicon/</guid><description>The profile avatar, the social-share OG image, and the browser favicon look like one &amp;lsquo;site picture&amp;rsquo; — but in Blowfish they are three independent settings in three different places. Here&amp;rsquo;s which param does what, why homepageImage is none of them, and how I generated an SJ favicon from one command.</description></item><item><title>Moving a GitHub Pages Site to a Custom Domain (Cloudflare Registrar)</title><link>https://sj-wu.com/posts/custom-domain-github-pages/</link><pubDate>Sun, 07 Jun 2026 02:00:00 +0800</pubDate><guid>https://sj-wu.com/posts/custom-domain-github-pages/</guid><description>Pointing a freshly registered apex domain at a GitHub Pages site, end to end: the repo changes, the Cloudflare DNS records, the one proxy setting that breaks HTTPS, and how to verify the cutover — plus domain verification to stop anyone hijacking the name.</description></item><item><title>Building This Site with AI in a Day: From Résumé and Notes to an Automated Deploy</title><link>https://sj-wu.com/posts/building-this-site-with-ai/</link><pubDate>Sun, 07 Jun 2026 01:00:00 +0800</pubDate><guid>https://sj-wu.com/posts/building-this-site-with-ai/</guid><description>Using Claude Code with Hugo + Blowfish + GitHub Actions to turn a PDF résumé and a pile of scattered tech notes into this bilingual, auto-deployed personal site — in a day. The workflow, the disclosure discipline, and the gotchas.</description></item><item><title>A Terminal Dev Environment Built for AI Collaboration: NeoVim + Yazi + tmux + LazyGit × Claude Code</title><link>https://sj-wu.com/posts/terminal-dev-environment/</link><pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate><guid>https://sj-wu.com/posts/terminal-dev-environment/</guid><description>Claude Code is a terminal-native AI coding tool. Wrapping it in tmux + NeoVim + Yazi + LazyGit gives an all-keyboard, all-terminal workflow where the human focuses on reviewing and gatekeeping what the AI produces — plus the gotchas I hit setting it up.</description></item><item><title>A Practical Guide to AI-Assisted Development: Agent.md + Skills</title><link>https://sj-wu.com/posts/ai-collaboration-guide/</link><pubDate>Tue, 31 Mar 2026 00:00:00 +0000</pubDate><guid>https://sj-wu.com/posts/ai-collaboration-guide/</guid><description>How to use Agent.md (CLAUDE.md / AGENTS.md) and Skills to make AI-assisted development more effective: core concepts, meta-prompts, skill-creator, and the differences between Claude Code and Codex.</description></item><item><title>Sharing Feign API Contracts via a Common Module in Spring Cloud</title><link>https://sj-wu.com/posts/feign-api-shared-module/</link><pubDate>Wed, 11 Feb 2026 00:00:00 +0000</pubDate><guid>https://sj-wu.com/posts/feign-api-shared-module/</guid><description>Put the Feign interface, VOs, and DTOs in one shared module: the server implements the interface as its controller, the consumer just injects and calls it — removing the legacy duplication where the interface and its client drift apart.</description></item><item><title>From Adoption to Integration: Automating Database Version Control with Liquibase</title><link>https://sj-wu.com/posts/liquibase-database-migration/</link><pubDate>Fri, 27 Sep 2024 00:00:00 +0000</pubDate><guid>https://sj-wu.com/posts/liquibase-database-migration/</guid><description>A write-up of my JCConf 2024 talk: how to automate database migration with Liquibase and integrate it seamlessly into a Spring Boot project, without sacrificing stability or security.</description></item><item><title>Notes from the 91 Speed-Coding Workshop</title><link>https://sj-wu.com/posts/speed-coding-workshop/</link><pubDate>Tue, 14 Nov 2023 00:00:00 +0000</pubDate><guid>https://sj-wu.com/posts/speed-coding-workshop/</guid><description>Toward &amp;lsquo;human-machine as one&amp;rsquo;: using the TDD rhythm, deliberate practice, and IDE/Vim mastery so that coding speed is no longer held back by physical operations.</description></item><item><title>Spring Boot for Beginners: My Study Notes</title><link>https://sj-wu.com/posts/spring-boot-notes/</link><pubDate>Sat, 24 Dec 2022 00:00:00 +0000</pubDate><guid>https://sj-wu.com/posts/spring-boot-notes/</guid><description>My notes from self-studying Spring Boot: IoC/DI, AOP, Spring MVC, RESTful APIs, request validation, Spring JDBC, the three-tier architecture, and unit testing with JUnit 5 and Mockito.</description></item></channel></rss>