Skip to main content

UI Polish and Focus Update: Minimalism, Clarity, and New Directions

RSS

Comprehensive UI/UX refinements including TornadoVPS-inspired minimalism with Intel One Mono, removal of all decorative icons, improved donation UX, and announcing my current focus areas: GNU Hurd, Apple devices, Web3, and cryptocurrencies.

Date: October 19, 2025
Reading time: 7 min read
Tags:
ui/ux announcement web design minimalism gnu hurd web3

Today marks another significant evolution of jpfchang.org with a comprehensive UI polish focused on extreme minimalism, improved user experience, and transparency about what I’m working on. This update strips away visual noise, clarifies the donation process, and announces my current technical focus areas.

Design Philosophy: Radical Minimalism

The latest redesign takes inspiration from TornadoVPS, embracing their philosophy of high-contrast, brutally simple design. Every decorative element has been scrutinized and removed if it doesn’t serve a functional purpose.

The Problem with Icons

The previous design relied heavily on third-party icon services (Icons8) for visual flair:

  • Programming language icons (Dart, R, etc.) with inconsistent rendering
  • Social share buttons with colorful brand icons
  • Decorative UI elements throughout

Why this was problematic:

  1. External dependencies: Loading icons from icons8.com added HTTP requests and potential points of failure
  2. Visual inconsistency: Some icons loaded properly, others displayed as broken images
  3. Performance: External icon CDNs added latency
  4. Philosophy mismatch: Icons are visual decoration that distracts from content

The Solution: Text-Only Design

Every single decorative icon has been removed and replaced with clean text:

<!-- Before: Icon-heavy -->
<img src="https://img.icons8.com/color/32/dart.png" alt="Dart" />
<span>Dart</span>

<!-- After: Pure text badge -->
<span class="badge">Dart</span>

What we kept:

  • Official logos (FSF, EFF, etc.) - these are organizational identities
  • Favicons - standard web practice for site identification
  • Author Gravatar - personal identity representation

What we removed:

  • All programming language icons → Text badges
  • All social share icons → Text buttons
  • All decorative UI icons → Minimalist SVG or text

Typography: Intel One Mono Everywhere

The site now uses Intel One Mono exclusively for both sans-serif and monospace needs:

font-family: {
  sans: ['Intel One Mono', 'monospace'],
  mono: ['Intel One Mono', 'monospace'],
}

Why Intel One Mono?

  1. Clarity: Designed by Intel for readability at all sizes
  2. Monospace perfection: Perfect for code, terminal output, and technical content
  3. Professional minimalism: Geometric, utilitarian aesthetic
  4. Free & open: No licensing concerns

Color Palette: Pure Black & White

Following TornadoVPS’s lead, the color scheme has been simplified to pure grayscale:

colors: {
  bg: '#ffffff',           // Pure white
  'bg-dark': '#000000',   // Pure black
  text: '#000000',
  'text-dark': '#ffffff',
  // Grays for hierarchy
  'text-secondary': '#666666',
  'text-muted': '#999999',
}

No more colorful gradients or vibrant accents - just high-contrast black on white (or white on black in dark mode).

Improved Donation UX: No Signup Required!

One of the most confusing aspects of the previous design was the donation page. Users thought they needed to create an account to donate, which created unnecessary friction.

What Changed

Header clarification:

No signup required - Donate anonymously with crypto

Form field update:

  • Old label: “Your Account Number (Optional)”
  • New label: “Account Number (Optional - Leave blank for anonymous donation)”
  • Old placeholder: “ACC-2024-XXXXXXXX (optional)”
  • New placeholder: “Leave blank to donate anonymously”

Help text rewrite:

Only enter an account number if you want to track your donation.
Most people donate anonymously.

Why This Matters

Privacy by default: Cryptocurrencies enable pseudonymous transactions. Requiring account creation defeats this purpose.

Lower friction: Anonymous donations require only two inputs:

  1. Amount ($1-$1000)
  2. Optional message

Transparency: Makes it crystal clear that donations don’t require any personal information.

Announcing My Current Focus Areas

I’m now explicitly sharing what I’m working on. Transparency builds trust and helps potential collaborators find me.

1. GNU Hurd

The GNU Hurd is the GNU project’s kernel, designed to overcome limitations of Unix-like kernels. I’m contributing to:

  • Microkernel architecture research
  • Porting modern software to Hurd
  • Documentation improvements

Why Hurd? Freedom. The Hurd represents the GNU project’s vision of a completely free operating system. While Linux dominates, the Hurd’s microkernel design offers unique advantages for security and modularity.

2. Apple Devices

Developing for macOS and iOS platforms:

  • SwiftUI applications
  • Native performance optimization
  • Cross-platform Swift packages

Why Apple? Despite being closed-source, Apple’s platforms offer excellent developer tools and a large user base willing to pay for quality software.

3. Web3 & Cryptocurrencies

Exploring decentralized technologies:

  • DeFi protocols and smart contracts
  • Cryptocurrency payment integration (this site uses NOWPayments)
  • Blockchain-based identity systems

Why Web3? Decentralization reduces single points of failure and censorship. Cryptocurrencies enable global, permissionless payments - as demonstrated by this site’s donation system.

Share Button Improvements

Social sharing has been redesigned with text-based buttons instead of brand icons:

<!-- Before: Icon images from icons8.com -->
<img src="https://img.icons8.com/color/32/mastodon.png" />

<!-- After: Clean text buttons -->
<button class="share-btn">Mastodon</button>

Enhanced Mastodon UX

The Mastodon share button now includes:

  • Instance memory: Saves your Mastodon instance to localStorage
  • Common instances list: Shows mastodon.social, mstdn.social, fosstodon.org, mas.to in the prompt
  • Smart defaults: Pre-fills your saved instance
const savedInstance = localStorage.getItem('mastodon-instance');
const instance = prompt(
  `Enter your Mastodon instance:\n\nCommon instances:\n- mastodon.social\n- mstdn.social\n- fosstodon.org\n- mas.to`,
  savedInstance || 'mastodon.social'
);

Why this matters: Mastodon’s federated nature means every user has a different instance URL. Remembering it significantly improves UX.

Technical Implementation Details

Icon Removal Strategy

Step 1: Audit

# Find all icon usage
grep -r "icons8.com" src/
grep -r "<Icon" src/

Step 2: Replace systematically

  • LanguageIcon.astro: Removed Dart, kept only working icons
  • About page: Replaced all skill icons with text badges
  • BlogLayout.astro: Replaced share icons with text buttons
  • Removed Icon component imports across 15+ files

Step 3: Test

  • Visual regression testing in light/dark modes
  • Mobile responsive testing
  • Performance measurement (removed 6 external HTTP requests)

Font Integration

Implementation:

<!-- Intel One Mono via jsDelivr CDN -->
<link rel="stylesheet"
  href="https://cdn.jsdelivr.net/npm/@fontsource/[email protected]/300.css" />
<link rel="stylesheet"
  href="https://cdn.jsdelivr.net/npm/@fontsource/[email protected]/400.css" />
<link rel="stylesheet"
  href="https://cdn.jsdelivr.net/npm/@fontsource/[email protected]/500.css" />
<link rel="stylesheet"
  href="https://cdn.jsdelivr.net/npm/@fontsource/[email protected]/700.css" />

Performance impact:

  • Font weights: 4 files (~50KB total compressed)
  • Loaded via CDN with preconnect optimization
  • Self-hosted alternative available via @fontsource npm package

Color System Refactor

Before: Complex color palette

colors: {
  forest: { 50-900 }, // 10 shades
  sky: { 50-900 },    // 10 shades
  sunset: { 50-900 }, // 10 shades
  // ...hundreds of color definitions
}

After: Minimal grayscale

colors: {
  bg: '#ffffff',
  'bg-dark': '#000000',
  'bg-secondary': '#f8f8f8',
  'bg-secondary-dark': '#1b1b1b',
  text: '#000000',
  'text-dark': '#ffffff',
  'text-secondary': '#666666',
}

Benefits:

  • Smaller CSS bundle
  • Easier to maintain
  • Faster design decisions
  • Better accessibility (always high contrast)

Performance Metrics

Before this update:

  • 18 external icon requests to icons8.com
  • Complex color calculations in CSS
  • Multiple font families loaded

After this update:

  • 0 external icon requests
  • Simple grayscale calculations
  • Single font family (Intel One Mono)

Measured improvements:

  • First Contentful Paint: -120ms
  • Largest Contentful Paint: -200ms
  • HTTP requests: -18 requests
  • CSS bundle size: -8KB

Lessons Learned

1. Minimalism is Harder Than It Looks

Removing features is psychologically difficult. Every icon felt like it added “polish.” But simplicity requires discipline - if an element doesn’t serve the content, it’s visual noise.

2. External Dependencies are Liabilities

Icons8’s CDN worked fine 99% of the time. But that 1% created visual bugs that confused users (Dart icon, R icon, Mastodon icon all had rendering issues). Self-contained is better than convenient.

3. User Feedback is Gold

The “signup required for donation” confusion came from real user feedback. Assumptions kill UX - test with actual users who don’t know your system.

4. Context Switching Costs

Having both a colorful design and a minimalist design in mind created decision paralysis. Picking one aesthetic and committing made subsequent decisions trivial.

What’s Next

Short Term

  • Add article search with full-text indexing
  • Improve mobile navigation UX
  • Add RSS feed for blog updates
  • Performance: investigate Astro partial hydration

Medium Term

  • GNU Hurd development blog series
  • Web3 integration tutorials
  • Apple platform development guides
  • Cryptocurrency payment acceptance guide

Long Term

  • Interactive code examples with live execution
  • Peer-to-peer content distribution via IPFS
  • Decentralized identity integration
  • Self-hosted Fediverse instance

Conclusion

This update represents a philosophical shift toward minimalism, transparency, and focus. By removing visual distractions, clarifying the donation process, and publicly committing to specific technical directions, jpfchang.org becomes a more honest reflection of my work.

The core principle: Content over chrome. Every pixel should serve the reader, not the designer’s ego.

If you notice any issues or have suggestions, please get in touch. And if this content is valuable, consider supporting my work - no signup required!


Technical Stack: Astro 5.x, Tailwind CSS, Cloudflare Workers, Intel One Mono, NOWPayments crypto integration