Hobby

Electronics Making

My electronics work ranges from discrete transistor logic to relay-driven mechanisms and CM600HA-24H IGBT-module-driven DRSSTC systems. I like discrete-component circuits with many visible parts, clean physical structure, and the visual order that comes from components arranged neatly.

Hardware Music Box

A hardware music box built entirely from transistors, without integrated circuits. The interest is in rebuilding chip-level timing, switching, and sound-generation logic with discrete components.

Assembled transistor music box board
Music box board with speaker wiring
Transistor music box control section
Music box timing and switching board
Close-up of the transistor rows
Music box wiring and component layout
Discrete component music box assembly
Finished music box board with the discrete signal path visible
Music box oscillator and signal wiring
Transistor music box module close-up
Music box board and output wiring
Music box power and control connections
Music box mounted hardware view
Completed music box circuit board from the component side
Music box discrete circuit detail
Completed hardware music box assembly

IC Clock

A separate digital clock build, different from the fully discrete transistor version. It mixes ICs with transistor circuits: the ICs handle most of the counting, decoding, and display control, while transistor circuits handle the oscillator and latch-related parts. The focus is module wiring, timing behavior, and final assembly.

IC clock hardware photo

Telegraph Hardware Build

A telegraph communication build using a CH340 USB-to-UART chip. It can read content from a computer serial port or from an SD card, then send it through my own Morse-code recognition and communication protocol. The AVR uses interrupts to handle input and timing so the devices can communicate with each other.

Telegraph hardware build photo

Relay Mechanical Clock

A relay-based clock that uses transistors for driving and flyback diodes for relay protection, so the relays can switch reliably without damaging the driving circuit.

Hexadecimal Counter board
BCD display decoder board
1 Hz clock source board
A&B / NOTA relay logic board
Clock adjuster board
Power distribution board
Relay clock top view with display and adjuster boards
Stacked relay clock assembly side view
Front view of the relay clock module stack
Relay clock installed inside the acrylic enclosure
Relay clock hardware inside the acrylic enclosure

Relay ALU

A relay-based ALU project where Arduino handles the remaining CPU-side control while the ALU itself is implemented with relays. ULN2803 driver arrays are used to drive the relay coils cleanly from logic-level control signals.

4-bit relay ALU PCB front side
4-bit relay ALU PCB back side

88-Channel Relay Piano Control Array

An 88-channel relay array board for controlling the 88 keys of a piano. Each relay maps to one key-control channel. The focus is keeping the power, driver, and control wiring clear enough for the board to connect reliably to the later piano-control system.

Full relay piano control assembly with Arduino and wiring harness
Front view of the relay rows, driver wiring, and Arduino control board
Side view of the stacked relay board and indicator LEDs
Close-up of the wiring harness and control headers
Arduino control side next to the relay matrix
Relay rows beside the control and wiring section
Connector board and bundled control wiring

CM600HA-24H DRSSTC

A Dual Resonant Solid State Tesla Coil built around CM600HA-24H IGBT modules. This project involves high-voltage resonance, power electronics, gate driving, protection circuits, tuning, and real hardware debugging.

Full DRSSTC assembly with toroidal top load and secondary coil
Full-height DRSSTC view showing the large toroid and base assembly
Heavy power stage with IGBT module, heatsink, breaker, and analog meters
DC bus section with large electrolytic capacitors and heavy wiring
Dawn / Tianming DTR resonant capacitor bank with copper busbars
Primary power wiring with busbars, gate-drive wiring, and current transformer

Modular Discrete Transistor Logic Clock

An IC-free modular digital logic clock constructed entirely using discrete 9012 and 9013 transistors, comprising 3-input AND gate modules, master-slave JK flip-flop counter boards, BCD decoding & display modules, manual clock adjustment boards, and power distribution units.

3-Input AND Gate Module (Red Board)
Master-Slave JK Flip-Flop Divider/Counter Module (Blue Board)
BCD Decoder & 7-Segment Display Module (Black Board)
Clock Adjustment & Control Board (Purple Board, changed to purple due to low yellow contrast)
Right-Angle Header Power Distribution Module (White Board)

TTL Chip Digital Clock

A separate digital clock built with TTL logic chips. It is different from the no-IC transistor clock, and the work is mainly about wiring the logic chips, checking the count and decode stages, and assembling the display section.

TTL chip clock display and control board
TTL chip clock board wiring
TTL chip clock module stack
Completed TTL chip clock on the bench

ST7920 12864 Graphic LCD Driver & Expansion Board

A dedicated interface and expansion PCB designed for ST7920-based 12864 graphic LCD displays, bridging MCU controls, contrast tuning, and dot-matrix display driving.

ST7920 12864 LCD Interface PCB Layout
ST7920 12864 LCD interface board photo

Voltage Comparator Pure Hardware Game of Life

A pure hardware Conway's Game of Life built using voltage comparators (op-amps). Completely free of MCUs or 12864 displays, cellular state evolution is driven directly by hardware comparator logic.

Game of Life PCB Top View Render
Game of Life Top Silkscreen & Trace Layer

8×8×8 3D LED Light Cube

A 3D LED matrix light cube containing 512 LED nodes, featuring multiplexed driver circuit schematics, 3D frame refresh routines, and custom hardware assembly.

8x8x8 LED Light Cube Circuit Schematic
8x8x8 LED Light Cube Hardware Photo
LED cube frame with wiring exposed
LED cube vertical layer assembly
LED cube soldered grid structure
LED cube base wiring detail
LED cube control wiring underside
LED cube frame on the workbench
LED cube soldering and alignment view
Finished LED cube frame and base wiring
LED cube grid viewed from the front
LED cube layer spacing and soldered columns
LED cube frame with the full grid visible
LED cube side view and vertical alignment
LED cube upper grid and vertical supports
LED cube layered structure from an angle
LED cube full-height frame view
LED cube diagonal view of the 3D grid
Completed LED cube hardware view

IRFP260N ZVS High-Frequency Driver

An IRFP260N TO-247 MOSFET ZVS high-frequency driver for high-current resonant drive and induction-heating experiments. This project focuses on power device selection, the resonant network, heat handling, and heavy-current wiring. The physical build has been donated to Beijing University of Technology.

Donated to Beijing University of Technology.

CM600HA-24H VVVF

A VVVF inverter project based on CM600HA-24H IGBT modules, covering three-phase inversion, PWM modulation, DC bus power, gate driving, and motor-control debugging. This project leans toward heavy industrial power electronics.

Donated to Beijing University of Technology.

AI Full-Stack Architect

One of my current long-term hobbies is training myself into an AI Full-Stack Architect: using AI-assisted engineering through Test-Driven Development (TDD), Spec-Driven Development (SDD), and Verification-Driven workflows, rather than Vibe Coding or intuition-only programming, to produce industrial-grade code and to design, build, verify, and maintain complete internet technology infrastructure end to end, from product logic and frontend interfaces to backend services, deployment, observability, automation, and long-term operations.

Since May 2025, I have used AI tools at large scale and built substantial AI-Augmented Engineering Scope collaboration experience. I have directly encountered many recurring failure modes in AI-assisted engineering, so my focus is on clear Specifications, careful Review, Debugging, Integration, and Verification instead of simply accepting generated code.

The work is not about blindly generating pages or code. I use Codex / Claude Code inside a Human-in-the-Loop workflow and push the collaboration through Spec-First, Review-Driven execution, with Test-Driven Development (TDD), Spec-Driven Development (SDD), and Continuous Integration / Continuous Delivery (CI/CD) practices used to improve readability, cross-platform support, maintainability, long-term maintenance efficiency, security, and stability.

AI assistance greatly accelerates the overall pace of restructuring and cleanup, and when dealing with large, interdependent documentation sets, it has a natural advantage in structural organization, terminology alignment, and cross-document revision. That helps reduce the common problem of updating one section while leaving related documentation behind.

My view is that AI-assisted programming depends on architectural ability and continuous trial and error. Only by working with AI at very high volume can a person understand where AI is strong, where it fails, and how to adjust the collaboration model in time. Vibe Coding is closer to giving AI a vague one-line request such as "build me a website like Amazon." TDD and SDD are different: they require decomposing the work first, making tasks as small and explicit as possible so the AI context window does not overload and produce serious hallucinations.

Doing that well requires an architect who understands microservice architecture, system boundaries, and code coupling points, rather than blindly asking AI to improvise. That is the real core of AI-assisted engineering. If a written Spec still causes generated function names, class names, or variable names to change every time and create confusion, then the Spec is the problem: it is not detailed enough. A Spec should let AI handle fine-grained implementation details and repetitive labor, not let AI independently decide the architecture or choose whether a place should follow KISS, DRY, or another design tradeoff.

Architecture must still be designed by the human. AI is a Worker and Accelerator, not the owner of system judgment. It can speed up repetitive implementation, restructuring, documentation cleanup, and other forms of engineering labor, but the thinking must remain human. The human must always know what is being built, why it is being built, and how the system is supposed to hold together; if that clarity is lost, the project is already drifting toward failure and should often be deleted and rebuilt rather than patched blindly.

The architect must understand the whole system from the beginning; otherwise the final system will inevitably drift in the wrong direction. AI-assisted programming is already a major trend, and repetitive work will inevitably be replaced. At the same time, SDD and TDD burn an extreme amount of tokens, because everything follows the Spec: when the Spec changes, the code often has to be deleted and rewritten at scale, at least across major versions, and old code needs to be distilled back into reusable Skills and Specs.

Spec-First engineering used to be something many engineers deeply hated, because Specs were often obsolete documents full of version drift, written only because a release process forced them to exist. In AI-assisted engineering, that mindset has to be inverted. Otherwise, a person will be left behind by the era. The engineer has to move from being only the person who executes the work into a role closer to a PM, Architect, and Specification Owner. This is an extremely difficult transition.

It is not outsourcing the brain to AI; it requires real engineering understanding, real project experience, and the ability to think purely and deeply about why systems collapse, then distill those lessons into better Specifications and Workflows. The most important thing becomes understanding every technology stack and every implementation detail before using it, because AI is much less likely to make the right decision if the human does not understand the toolchain first.

At the same time, project decisions, acceptance, consolidation, and final editorial control remain Human-in-the-Loop, forming a strict barrier against AI hallucinations and preventing unverified information from entering the final content.

AI collaboration can become an endless battle against cognitive load, pushing the limits of how much architectural pressure the mind can hold. A Spec must be something the human can read first, understand deeply first, and use to anticipate the real problems first. That requires architectural ability: knowing which wheels should not be reinvented, and knowing which mature wheels already exist. Maybe one day AI will fully replace humans and even produce complete architecture by itself, but that would require extreme context capacity and extreme needle-in-a-haystack retrieval ability. Current AI still seems far from that level, and even if it becomes possible in the future, it will likely be very expensive.

Monthly token usage on my personal account since May 2025, reflecting sustained AI-augmented engineering practice.

These public-facing snapshots show how the surrounding documentation sites, repository presentation, and project entry points are being shaped into a more readable engineering surface.

Cat

These are cats from my daily life, including Charlie, who was abandoned at Petco and later adopted by me.

Charlie scratching
Charlie zoning out
Charlie resting
Mimi photo
Mimi close-up
Mimi resting

Piano

I like Romantic piano music, especially Chopin and Liszt. I tend to enjoy music with a clear singing line, dramatic contrast, and enough technical brilliance to feel alive without losing lyricism.

Mozart

  • Piano Sonata No. 11 in A major, K. 331
  • Piano Sonata No. 16 in C major, K. 545
  • Lacrimosa from Requiem, K. 626

Beethoven

  • Beethoven - Piano Sonata No. 8 in C minor, Op. 13 (Pathetique)
  • Beethoven - Piano Sonata No. 14 in C-sharp minor, Op. 27 No. 2 (Moonlight)
  • Beethoven - Piano Sonata No. 17 in D minor, Op. 31 No. 2 (Tempest)

Chopin

  • Nocturne Op. 9 No. 2
  • Nocturne Op. 9 No. 1
  • Nocturne Op. 55
  • Chopin - Nocturne Op. 48 No. 1
  • Waltz Op. 34
  • Chopin - Waltz Op. 64 No. 1
  • Chopin - Waltz Op. 64 No. 2
  • Chopin - Waltz in A minor, B. 150, Op. posth.
  • Grande Valse Brillante Op. 18
  • Fantaisie-Impromptu Op. 66
  • Ballade No. 1 Op. 23
  • Chopin - Etude Op. 10 No. 5 (Black Key)
  • Chopin - Etude Op. 25 No. 5 (Wrong Note)
  • Chopin - Etude Op. 10 No. 12 (Revolutionary)
  • Chopin - Etude Op. 10 No. 4 (Torrent)
  • Chopin - Etude Op. 10 No. 1 (Waterfall)

Liszt

  • Liebestraum No. 3
  • Un Sospiro
  • Consolation No. 3
  • Liszt - Grandes Etudes de Paganini No. 3 (La Campanella)
  • Hungarian Rhapsody No. 2
  • Liszt - Transcendental Etude No. 4 (Mazeppa)

Ragtime

  • Scott Joplin - Maple Leaf Rag
  • Scott Joplin - The Entertainer
  • Scott Joplin - Peacherine Rag
  • Scott Joplin - Magnetic Rag
  • Temptation Rag
  • Jelly Roll Morton - The Crave
  • Randy Newman - You've Got a Friend in Me
  • Alan Menken - Friend Like Me

Cheese

Kroger Cheese Notes

One thing I enjoy is going to Kroger and looking through different cheeses. I have tried a lot, and honestly many of them taste closer to each other than people make them sound, but I still like noticing the small differences. Most of the time I use cheese for sandwiches, and I usually prefer clean, original flavors or slightly sweet ones. My current favorites are aged cheddar and Swiss.

  • Aged Cheddar / Extra Sharp Cheddar: sharp, dense, nutty, and sometimes a little crystalline when aged. This is one of my current favorites.
  • Swiss / Emmental: mild, nutty, and easy to use in sandwiches. The classic holes make it recognizable, but I mostly like its clean taste.
  • Gruyere: a stronger Alpine-style cheese with nutty, savory flavor and excellent melting texture.
  • Brie: soft, creamy, and mild, with an edible bloomy rind. Good when paired with crackers, honey, or jam.
  • Gouda / Aged Gouda: young Gouda is smooth and slightly sweet; aged Gouda can become firmer, nuttier, and more caramel-like.
  • Parmesan / Parmigiano-Reggiano: hard, salty, and umami-heavy. I see it more as a finishing cheese for pasta, salad, or soup than a sandwich cheese.
  • Raclette: built for melting, rich and savory, good with potatoes or grilled sandwiches.
  • Fontina: mild, creamy, and very melt-friendly, useful as a base when I want a softer sandwich texture.
  • Goat Cheese / Chevre: tangy, soft, and fresh-tasting. Better with honey, fruit, or salad than in my usual sandwich routine.
  • Fresh Mozzarella / Burrata: milky and fresh; burrata is creamier inside and works best with tomato, olive oil, and basil.
  • Feta: salty, crumbly, and tangy, more Mediterranean-style than sandwich-style for me.
  • Oaxaca: stringy and melty, useful for quesadillas or hot sandwiches.
  • Havarti: soft, mild, and creamy, an easy everyday sandwich cheese.
  • Dubliner / Irish-style Cheddar: sharper and nuttier than basic cheddar, with a slight sweetness.

Cheese Festival Trial

  • Blue Cheese: I tried this at a cheese festival, not as a Kroger regular. The blue-green mold veins make it salty, funky, and much more intense. I can appreciate it, but it is too expensive and not my everyday sandwich choice.

Juice-Forward Drinks

I also like making light, sparkling, juice-forward drinks at home. I usually buy sparkling wine or mixers from Costco, then make something refreshing myself. The point is not heavy alcohol; I prefer drinks that taste like fruit juice first, with only a small amount of alcohol when I use it.

Salt and Citrus

  • Paloma: tequila, lime, grapefruit soda, and a salt rim. I like the grapefruit bitterness, citrus, salt, and bubbles together.
  • Salty Dog: vodka or gin with grapefruit juice and a heavy salt rim. The salt makes the grapefruit taste cleaner and hides the alcohol edge.
  • Margarita: tequila, lime, orange liqueur, and a salt rim. I like it more as a bright citrus drink than as a strong cocktail.

Sugar Rim and Sweet-Sour Balance

  • Lemon Drop Martini: vodka, lemon juice, syrup, and a sugar rim. It tastes close to a polished lemon candy when made lightly.
  • Sidecar: cognac, orange liqueur, lemon juice, and a sugar rim. I like the orange-jam direction, though I would still make it lighter.

Fruit and Low-Alcohol

  • Yuzushu: yuzu-based Japanese fruit liqueur. It is close to umeshu in spirit, but brighter and more citrus-forward.
  • Sangria: wine, fruit, and sometimes soda. This fits my preference well because it is fruit-first, easy to dilute, and good for sharing.
  • Sparkling wine spritz: Costco sparkling wine plus fruit juice or citrus soda. This is the most practical version for me at home.