I Tore Down the Portfolio and Built a Blog Instead
Why jpfchang.org is now a personal blog: one clean theme, no more projects or games pages, a favicon that actually works, and a terminal hidden for text-browser explorers.
Writing
Essays and field notes on code, systems, and the outdoors — the things I build, the things I break, and what I notice a day's walk from the trailhead.
Why jpfchang.org is now a personal blog: one clean theme, no more projects or games pages, a favicon that actually works, and a terminal hidden for text-browser explorers.
A progress note on retiring old personal-site product routes, routing commerce to Swipht Group, and keeping games and terminal work discoverable.
A public engineering note on canonical URLs, structured data, sitemaps, robots policy, RSS, and llms.txt for SEO and AI discovery.
A public progress note on jpfchang.org's hiring-first portfolio, project ledger, writing archive, and contact paths for product and data roles.
A November status report covering the new terminal aesthetic, daily KJV verse card, and what I've been hacking and hiking lately.
A UI polish update covering simpler visual design, improved donation UX, and current focus areas around GNU Hurd and Apple devices.
How jpfchang.org added a Cloudflare IPFS gateway for more resilient image and asset delivery across the public site.
A site redesign note covering typography, programming language icons, visual identity, and the portfolio’s hacker-outdoor tone.
A comprehensive guide to using the Zettelkasten method in this blog system with wiki-links, backlinks, and knowledge graphs.
A comprehensive demonstration of all markdown features supported by this blog, including typography, code blocks, tables, and more.
A personal essay on AI in employment, balancing the new challenges it creates with opportunities for everyday workers.
No posts match that search yet.
Showing 11 posts.