WORK · DAILY PUZZLE · MORE FUN STUFF · LANGUAGES · ACTIVITY
I’m Ethan. My public projects span machine learning, music analysis,
and tools for the web. This page follows the work as it changes.
THE FROG PICKED A PROJECT FOR YOU
Node.js/Puppeteer scraper developed for Carat Coin to automate recurring Kitco precious-metals price collection and CSV-based reporting.
A rotating daily spotlight · 2026-10-29 UTC
ENTER THE POND ↗ · PLAY / TERMINAL / DEMOS
NEED A HINT?
The queen delivers mate on rank 4. Look for a square that checks the king and removes its escape squares.
REVEAL THE MOVE
Qa4# — move the queen from f4 to a4. The black king is in check with no legal escape.
One of 16 verified practice positions, rotating daily. # means checkmate.
MORE FUN STUFF
OPEN THE 7-DAY ACTIVITY DIARY · 1 CONTRIBUTIONS
| Date (UTC) | Contributions |
|---|---|
| 2026-10-29 | 0 |
| 2026-10-28 | 0 |
| 2026-10-27 | 1 |
| 2026-10-26 | 0 |
| 2026-10-25 | 0 |
| 2026-10-24 | 0 |
| 2026-10-23 | 0 |
GitHub contribution-calendar counts, updated with the profile. The current UTC day may be incomplete.
THE FIELD GUIDE · OPEN SOMETHING THAT INTERESTS YOU
CHOOSE YOUR PATH
Pick an interest to find a starting point in my work.
I LIKE GAMES & SEARCH
FunChessEngine
Follow a position from legal moves to search to evaluation. The recorded self-play demo below shows the engine choosing for both sides.
JavaScript · Python · HTML · CSS · Makefile · Shell · latest push 2026-09-11
I LIKE MUSIC & SIGNALS
PianoMirRustPublic
Follow audio through pitch evidence and alignment with a known score. Open the lab results below to see what the captured example actually measured.
Rust · Python · latest push 2026-09-12
I LIKE DATA & AUTOMATION
kitcoscraper
Explore the path from a web source to extracted data. The project notes show its latest public change.
JavaScript · latest push 2026-09-11
I LIKE AI EXPERIMENTS
the-great-prompt-off
Explore a project organized around comparing prompts. The project browser below contains its current languages and latest public activity.
TypeScript · PLpgSQL · JavaScript · CSS · latest push 2026-08-30
OPEN THE MUSIC ANALYSIS LAB
One captured experiment: a 12-second synthesized Minuet excerpt compared with its source score.
| Measurement | Result | Meaning |
|---|---|---|
| Score-aligned verification | 94.78 / 100 | Overall evidence that this audio matches its known score. |
| Note score | 99.86 | Note matching component of this captured run. |
| Timing score | 96.01 | Timing alignment component. |
| Chroma score | 66.95 | Pitch-class evidence component. |
| Missing notes | 0 | Missing notes reported by this run. |
WHAT DOES 94.78 ACTUALLY MEAN?
The system was given the score. It checks whether the audio agrees with that score. These component scores are separate measurements, not percentages to add together.
This result does not measure a pianist’s skill or prove that the system can transcribe unfamiliar music. The input is synthesized, with no human performance.
THIS WEEK IN NUMBERS
1 contributions across 1 active days.
-23 contributions compared with the preceding seven days (24).
Busiest day: 2026-10-27 (1 contributions).
2026-10-23 through 2026-10-29 UTC. The current day may be incomplete. Activity counts describe frequency, not code quality.
THE CHESS CORNER · 16 CHALLENGES
Fixed practice positions from the verified puzzle collection, grouped in sets of four. White to move, mate in one. Open a board, solve it, then check your answer. Each position has exactly one mating move.
PUZZLES 01–04
CHALLENGE 01
SHOW A HINT
Look for a queen move to the b-file.
CHECK YOUR ANSWER
Qb2# — queen from g2 to b2. The king is checked and has no legal reply.
CHALLENGE 02
SHOW A HINT
Look for a queen move to the a-file.
CHECK YOUR ANSWER
Qa5# — queen from h5 to a5. The king is checked and has no legal reply.
CHALLENGE 03
SHOW A HINT
Look for a queen move to the b-file.
CHECK YOUR ANSWER
Qb2# — queen from b4 to b2. The king is checked and has no legal reply.
CHALLENGE 04
SHOW A HINT
Look for a queen move to the b-file.
CHECK YOUR ANSWER
Qb1# — queen from b5 to b1. The king is checked and has no legal reply.
PUZZLES 05–08
CHALLENGE 05
SHOW A HINT
Look for a queen move to the e-file.
CHECK YOUR ANSWER
Qe2# — queen from b2 to e2. The king is checked and has no legal reply.
CHALLENGE 06
SHOW A HINT
Look for a queen move to the h-file.
CHECK YOUR ANSWER
Qh3# — queen from b3 to h3. The king is checked and has no legal reply.
CHALLENGE 07
SHOW A HINT
Look for a queen move to the g-file.
CHECK YOUR ANSWER
Qg8# — queen from b3 to g8. The king is checked and has no legal reply.
CHALLENGE 08
SHOW A HINT
Look for a queen move to the d-file.
CHECK YOUR ANSWER
Qd8# — queen from h4 to d8. The king is checked and has no legal reply.
PUZZLES 09–12
CHALLENGE 09
SHOW A HINT
Look for a queen move to the a-file.
CHECK YOUR ANSWER
Qa1# — queen from e5 to a1. The king is checked and has no legal reply.
CHALLENGE 10
SHOW A HINT
Look for a queen move to the a-file.
CHECK YOUR ANSWER
Qa4# — queen from d1 to a4. The king is checked and has no legal reply.
CHALLENGE 11
SHOW A HINT
Look for a queen move to the b-file.
CHECK YOUR ANSWER
Qb5# — queen from b1 to b5. The king is checked and has no legal reply.
CHALLENGE 12
SHOW A HINT
Look for a queen move to the a-file.
CHECK YOUR ANSWER
Qa3# — queen from f3 to a3. The king is checked and has no legal reply.
PUZZLES 13–16
CHALLENGE 13
SHOW A HINT
Look for a queen move to the g-file.
CHECK YOUR ANSWER
Qg1# — queen from a7 to g1. The king is checked and has no legal reply.
CHALLENGE 14
SHOW A HINT
Look for a queen move to the g-file.
CHECK YOUR ANSWER
Qg8# — queen from g1 to g8. The king is checked and has no legal reply.
CHALLENGE 15
SHOW A HINT
Look for a queen move to the a-file.
CHECK YOUR ANSWER
Qa4# — queen from f4 to a4. The king is checked and has no legal reply.
CHALLENGE 16
SHOW A HINT
Look for a queen move to the d-file.
CHECK YOUR ANSWER
Qd1# — queen from g4 to d1. The king is checked and has no legal reply.
THE BUILD LOG · LATEST CHANGE IN EACH PROJECT
An automatically refreshed snapshot of each project’s latest default-branch commit, newest dates first.
| UTC date | Project | Latest change |
|---|---|---|
| 2026-10-21 | clarity | release: publish macOS archives without Developer ID signing |
| 2026-09-24 | ethanbchen.com | Add interactive score details and scroll-traced timeline |
| 2026-09-19 | Fall2026-CodingChallenge | Complete reviewer documentation and final audit |
| 2026-09-17 | WinCodex | Initial WinCodex V1.1 release |
| 2026-09-12 | outlook-electron | Publish modernized Outlook Electron client with macOS build setup |
| 2026-09-12 | nitro-notes | Publish Nitro Notes desktop notes and tasks app |
| 2026-09-12 | grok-electron | Document downloadable macOS releases |
| 2026-09-12 | chatgpt-web | Initial release of ChatGPT Web for macOS |
| 2026-09-12 | avoid.love-v3 | correct project identity to avoid.love v3 |
| 2026-09-12 | avoid.love-v2 | docs: introduce avoid.love v2 and document local development |
| 2026-09-12 | avoid.love-v1 | docs: clarify v1 archive context |
| 2026-09-12 | avoid.love | Give the first Us photograph more scroll time |
| 2026-09-12 | TowerLogic | Use Pillow-compatible ttkbootstrap version for release builds |
| 2026-09-11 | FunChessEngine | Publish cross-platform tagged releases |
| 2026-08-30 | wifi-concierge-site | Remove image section from README |
| 2026-08-30 | the-great-prompt-off | Comprehensive passthrough of README and MIT license |
| 2026-08-30 | kitcoscraper | Revise README for clarity and detail |
| 2026-08-30 | PianoMirRustPublic | Correct typo in README.md |
THREE THINGS THE DEMOS DO NOT TELL YOU
Make a prediction before opening each answer.
01 · DOES A HIGH MUSIC MATCH SCORE MEAN GREAT PLAYING?
No. This example measures agreement with a known score on synthesized audio. It does not grade a human performance.
02 · DOES MORE CODE IN A LANGUAGE MEAN MORE EXPERTISE?
No. The language charts measure bytes in public repositories. They describe the codebase, not proficiency.
03 · DOES SEARCHING MORE CHESS POSITIONS GUARANTEE A BETTER MOVE?
No. Search depth, evaluation quality, move ordering, and the position itself all matter. A node count alone does not measure move quality.
A TINY FROG ADVENTURE
You arrive at the pond at dusk. A path forks between glowing reeds and a checkered stone. Open a choice, then choose again.
FOLLOW THE FIREFLIES
The lights blink in pairs. Beneath the reeds, a tiny frog is trying to debug the moon’s reflection.
OFFER A RUBBER DUCK
“It only breaks when I look at it,” says the frog. The duck says nothing. The frog solves it anyway.
Ending: honorary pond debugger. 🦆
WAIT QUIETLY
The water settles. The moon becomes round again. Some bugs are ripples.
Ending: a moment of peace. 🌙
INVESTIGATE THE CHECKERED STONE
A beetle guards a tiny chessboard. “One move,” it says. “Then you may pass.”
CHALLENGE THE BEETLE
The beetle pushes a pawn sideways. You politely explain the rules. It insists this is a variant.
Ending: undefeated by technicality. ♟
ASK FOR DIRECTIONS
The beetle points toward the Chess Corner above. “Those positions have actually been checked.”
Ending: a sensible detour. 🐸
A little fictional detour. Close the choices to start again; nothing is saved.
FIND PROJECTS BY LANGUAGE
Choose a language to see every matching public project. Percentages describe that language’s share of each repository’s detected language bytes.
BATCHFILE · 1 PROJECT
| Project | Share of language bytes | Latest push · UTC |
|---|---|---|
| WinCodex | 1.3% | 2026-09-17 |
C# · 1 PROJECT
| Project | Share of language bytes | Latest push · UTC |
|---|---|---|
| WinCodex | 47.9% | 2026-09-17 |
CSS · 7 PROJECTS
| Project | Share of language bytes | Latest push · UTC |
|---|---|---|
| avoid.love | 4.5% | 2026-09-12 |
| avoid.love-v2 | 73.1% | 2026-09-12 |
| avoid.love-v3 | 56.5% | 2026-09-12 |
| clarity | 7.8% | 2026-10-21 |
| Fall2026-CodingChallenge | 18.5% | 2026-09-20 |
| FunChessEngine | 7.1% | 2026-09-11 |
| the-great-prompt-off | 0.1% | 2026-08-30 |
DOCKERFILE · 2 PROJECTS
| Project | Share of language bytes | Latest push · UTC |
|---|---|---|
| Fall2026-CodingChallenge | 0.1% | 2026-09-20 |
| WinCodex | 0.3% | 2026-09-17 |
HTML · 7 PROJECTS
| Project | Share of language bytes | Latest push · UTC |
|---|---|---|
| avoid.love | 7.3% | 2026-09-12 |
| clarity | 5.4% | 2026-10-21 |
| ethanbchen.com | 17.0% | 2026-09-24 |
| Fall2026-CodingChallenge | 0.1% | 2026-09-20 |
| FunChessEngine | 7.5% | 2026-09-11 |
| nitro-notes | 20.5% | 2026-09-12 |
| wifi-concierge-site | 100.0% | 2026-08-30 |
JAVASCRIPT · 14 PROJECTS
| Project | Share of language bytes | Latest push · UTC |
|---|---|---|
| avoid.love | 83.0% | 2026-09-12 |
| avoid.love-v1 | 1.4% | 2026-09-12 |
| avoid.love-v2 | 0.2% | 2026-09-12 |
| avoid.love-v3 | 0.2% | 2026-09-12 |
| chatgpt-web | 79.5% | 2026-09-12 |
| clarity | 86.8% | 2026-10-21 |
| ethanbchen.com | 0.2% | 2026-09-24 |
| Fall2026-CodingChallenge | 0.1% | 2026-09-20 |
| FunChessEngine | 43.3% | 2026-09-11 |
| grok-electron | 83.2% | 2026-09-12 |
| kitcoscraper | 100.0% | 2026-09-11 |
| nitro-notes | 76.9% | 2026-09-12 |
| outlook-electron | 100.0% | 2026-09-12 |
| the-great-prompt-off | 0.1% | 2026-08-30 |
MAKEFILE · 1 PROJECT
| Project | Share of language bytes | Latest push · UTC |
|---|---|---|
| FunChessEngine | 0.2% | 2026-09-11 |
PLPGSQL · 1 PROJECT
| Project | Share of language bytes | Latest push · UTC |
|---|---|---|
| the-great-prompt-off | 4.6% | 2026-08-30 |
PYTHON · 8 PROJECTS
| Project | Share of language bytes | Latest push · UTC |
|---|---|---|
| avoid.love | 5.2% | 2026-09-12 |
| avoid.love-v3 | 4.2% | 2026-09-12 |
| ethanbchen.com | 3.5% | 2026-09-24 |
| FunChessEngine | 41.8% | 2026-09-11 |
| nitro-notes | 2.6% | 2026-09-12 |
| PianoMirRustPublic | 2.6% | 2026-09-12 |
| TowerLogic | 100.0% | 2026-09-12 |
| WinCodex | 35.5% | 2026-09-17 |
RUST · 1 PROJECT
| Project | Share of language bytes | Latest push · UTC |
|---|---|---|
| PianoMirRustPublic | 97.4% | 2026-09-12 |
SHELL · 3 PROJECTS
| Project | Share of language bytes | Latest push · UTC |
|---|---|---|
| FunChessEngine | 0.1% | 2026-09-11 |
| TowerLogic | 0.0% | 2026-09-12 |
| WinCodex | 15.0% | 2026-09-17 |
SWIFT · 2 PROJECTS
| Project | Share of language bytes | Latest push · UTC |
|---|---|---|
| chatgpt-web | 20.5% | 2026-09-12 |
| grok-electron | 16.8% | 2026-09-12 |
TYPESCRIPT · 6 PROJECTS
| Project | Share of language bytes | Latest push · UTC |
|---|---|---|
| avoid.love-v1 | 98.6% | 2026-09-12 |
| avoid.love-v2 | 26.7% | 2026-09-12 |
| avoid.love-v3 | 39.1% | 2026-09-12 |
| ethanbchen.com | 79.2% | 2026-09-24 |
| Fall2026-CodingChallenge | 81.1% | 2026-09-20 |
| the-great-prompt-off | 95.3% | 2026-08-30 |
THE YEAR, MONTH BY MONTH
Open a month to see its activity and three busiest dates. Boundary months cover only the dates included in the rolling 365-day snapshot; today may be incomplete.
OCTOBER 2026 · 60 CONTRIBUTIONS
10 active days across 29 days in the snapshot.
| Most active dates | Contributions |
|---|---|
| 2026-10-13 | 17 |
| 2026-10-16 | 15 |
| 2026-10-21 | 9 |
Coverage: 2026-10-01 through 2026-10-29 UTC.
SEPTEMBER 2026 · 686 CONTRIBUTIONS
23 active days across 30 days in the snapshot.
| Most active dates | Contributions |
|---|---|
| 2026-09-18 | 211 |
| 2026-09-17 | 125 |
| 2026-09-11 | 63 |
Coverage: 2026-09-01 through 2026-09-30 UTC.
AUGUST 2026 · 75 CONTRIBUTIONS
8 active days across 31 days in the snapshot.
| Most active dates | Contributions |
|---|---|
| 2026-08-20 | 21 |
| 2026-08-30 | 18 |
| 2026-08-31 | 17 |
Coverage: 2026-08-01 through 2026-08-31 UTC.
JULY 2026 · 21 CONTRIBUTIONS
5 active days across 31 days in the snapshot.
| Most active dates | Contributions |
|---|---|
| 2026-07-19 | 9 |
| 2026-07-05 | 6 |
| 2026-07-06 | 4 |
Coverage: 2026-07-01 through 2026-07-31 UTC.
JUNE 2026 · 79 CONTRIBUTIONS
5 active days across 30 days in the snapshot.
| Most active dates | Contributions |
|---|---|
| 2026-06-17 | 33 |
| 2026-06-16 | 30 |
| 2026-06-18 | 11 |
Coverage: 2026-06-01 through 2026-06-30 UTC.
MAY 2026 · 0 CONTRIBUTIONS
0 active days across 31 days in the snapshot.
No contributions recorded in this part of the calendar.
Coverage: 2026-05-01 through 2026-05-31 UTC.
APRIL 2026 · 0 CONTRIBUTIONS
0 active days across 30 days in the snapshot.
No contributions recorded in this part of the calendar.
Coverage: 2026-04-01 through 2026-04-30 UTC.
MARCH 2026 · 0 CONTRIBUTIONS
0 active days across 31 days in the snapshot.
No contributions recorded in this part of the calendar.
Coverage: 2026-03-01 through 2026-03-31 UTC.
FEBRUARY 2026 · 0 CONTRIBUTIONS
0 active days across 28 days in the snapshot.
No contributions recorded in this part of the calendar.
Coverage: 2026-02-01 through 2026-02-28 UTC.
JANUARY 2026 · 0 CONTRIBUTIONS
0 active days across 31 days in the snapshot.
No contributions recorded in this part of the calendar.
Coverage: 2026-01-01 through 2026-01-31 UTC.
DECEMBER 2025 · 0 CONTRIBUTIONS
0 active days across 31 days in the snapshot.
No contributions recorded in this part of the calendar.
Coverage: 2025-12-01 through 2025-12-31 UTC.
NOVEMBER 2025 · 0 CONTRIBUTIONS
0 active days across 30 days in the snapshot.
No contributions recorded in this part of the calendar.
Coverage: 2025-11-01 through 2025-11-30 UTC.
OCTOBER 2025 · 0 CONTRIBUTIONS
0 active days across 2 days in the snapshot.
No contributions recorded in this part of the calendar.
Coverage: 2025-10-30 through 2025-10-31 UTC.
THE REPLAY BOOK · A CHESS GAME IN SIX CHAPTERS
Read the captured FunChessEngine self-play at your own pace. Open chapters in order, or compare boards by leaving multiple chapters expanded. This is a 24-half-move excerpt, not a completed game.
HOW TO READ THE REPLAY
Each chapter covers two full turns. The diagram shows the position at the end of that chapter; the highlighted square is the last move’s destination.
N = knight, B = bishop, R = rook, Q = queen, K = king. A move without a piece letter is a pawn move; x means capture, + means check, and # means checkmate.
A half-move is one player’s turn. Nodes count positions searched; depth is the reported search depth. Zero nodes means no search was recorded for that move.
CHAPTER 1 · MOVES 1–2
| Turn | Played | Recorded search |
|---|---|---|
| 1. White | c4 | No search recorded |
| 1… Black | e5 | No search recorded |
| 2. White | Nc3 | No search recorded |
| 2… Black | Nf6 | No search recorded |
CHAPTER 2 · MOVES 3–4
| Turn | Played | Recorded search |
|---|---|---|
| 3. White | g3 | No search recorded |
| 3… Black | d5 | No search recorded |
| 4. White | cxd5 | No search recorded |
| 4… Black | Nxd5 | No search recorded |
CHAPTER 3 · MOVES 5–6
| Turn | Played | Recorded search |
|---|---|---|
| 5. White | Bg2 | No search recorded |
| 5… Black | Nb6 | No search recorded |
| 6. White | Qb3 | 4,087 nodes · depth 3 |
| 6… Black | Nc6 | 138 nodes · depth 2 |
CHAPTER 4 · MOVES 7–8
| Turn | Played | Recorded search |
|---|---|---|
| 7. White | Bxc6+ | 3,787 nodes · depth 3 |
| 7… Black | bxc6 | 2,403 nodes · depth 4 |
| 8. White | Qc2 | 1,358 nodes · depth 3 |
| 8… Black | Bc5 | 577 nodes · depth 3 |
CHAPTER 5 · MOVES 9–10
| Turn | Played | Recorded search |
|---|---|---|
| 9. White | Qe4 | 142 nodes · depth 3 |
| 9… Black | Qd6 | 734 nodes · depth 2 |
| 10. White | Nf3 | 130 nodes · depth 2 |
| 10… Black | Nd7 | 188 nodes · depth 2 |
CHAPTER 6 · MOVES 11–12
| Turn | Played | Recorded search |
|---|---|---|
| 11. White | d4 | 738 nodes · depth 2 |
| 11… Black | Bb6 | 152 nodes · depth 2 |
| 12. White | dxe5 | 156 nodes · depth 2 |
| 12… Black | Qg6 | 333 nodes · depth 2 |
Recorded source revision: daa903d73659.
THE LOGIC LILY PAD · THREE SMALL BRAINTEASERS
Think through a puzzle, then open its explanation.
01 · HOW MANY WAYS ACROSS THE POND?
A frog starts on pad 0 and wants to reach pad 4. It can hop forward by one or two pads. How many distinct sequences of hops reach pad 4 exactly?
REVEAL THE REASONING
Five: 1+1+1+1, 1+1+2, 1+2+1, 2+1+1, and 2+2.
Every route ends with a one-pad or two-pad hop, so ways(n) = ways(n−1) + ways(n−2). Start with ways(0) = 1 and ways(1) = 1.
02 · THE FIREFLY MESSAGE
Three fireflies can each be on or off. How many distinct patterns can they display, including all off?
REVEAL THE REASONING
Eight. Each light doubles the possibilities: 2 × 2 × 2. In binary: 000, 001, 010, 011, 100, 101, 110, 111.
Add one more firefly and there are 16 patterns.
03 · FIND THE HEAVIER PEBBLE
Eight pebbles look identical. Exactly one is heavier. With a balance scale, can you always find it in two weighings?
REVEAL THE REASONING
Yes. Weigh three against three. If they balance, weigh the two remaining pebbles against each other. Otherwise, take the heavier group of three and weigh one against another: the heavier one wins, or a balance identifies the third.
The three possible outcomes of a balance comparison let you narrow the candidates faster than a yes/no question.
THE SOUND MICROSCOPE · SCORE VS AUDIO
Zoom into four moments of the captured Minuet analysis. Compare patterns, make a prediction, then reveal the answer or inspect all twelve values.
WHAT AM I LOOKING AT?
Chroma groups pitches into the twelve pitch classes, ignoring octave. The left column comes from the known score; the right comes from analysis of the synthesized audio.
Longer bars mean stronger normalized evidence within that representation. They are not probabilities, loudness readings, or performance grades. The score and audio columns use their respective recorded normalizations.
These four frames are sampled near 0, 3, 6, and 9 seconds. They are individual snapshots, not averages across each three-second interval.
SNAPSHOT 1 · 0.00 SECONDS
Which pitch class has the longest bar on the audio side? How closely does its pattern resemble the known score?
REVEAL THE STRONGEST PITCH CLASS
D has the strongest recorded evidence.
This is a pitch class, not a single note or octave. Several notes can share a pitch class, and harmonics can also contribute evidence.
INSPECT THE NUMBERS
| Pitch class | Score evidence | Audio evidence |
|---|---|---|
| C | 0.000 | 0.000 |
| C# | 0.000 | 0.000 |
| D | 1.000 | 1.000 |
| D# | 0.000 | 0.000 |
| E | 0.000 | 0.000 |
| F | 0.000 | 0.000 |
| F# | 0.000 | 0.000 |
| G | 1.000 | 0.388 |
| G# | 0.000 | 0.000 |
| A | 0.000 | 0.000 |
| A# | 0.000 | 0.000 |
| B | 1.000 | 0.014 |
SNAPSHOT 2 · 3.00 SECONDS
Which pitch class has the longest bar on the audio side? How closely does its pattern resemble the known score?
REVEAL THE STRONGEST PITCH CLASS
D has the strongest recorded evidence.
This is a pitch class, not a single note or octave. Several notes can share a pitch class, and harmonics can also contribute evidence.
INSPECT THE NUMBERS
| Pitch class | Score evidence | Audio evidence |
|---|---|---|
| C | 1.000 | 0.646 |
| C# | 0.000 | 0.000 |
| D | 1.000 | 1.000 |
| D# | 0.000 | 0.000 |
| E | 0.000 | 0.000 |
| F | 0.000 | 0.000 |
| F# | 0.000 | 0.000 |
| G | 0.000 | 0.000 |
| G# | 0.000 | 0.000 |
| A | 0.000 | 0.000 |
| A# | 0.000 | 0.000 |
| B | 0.000 | 0.000 |
SNAPSHOT 3 · 5.99 SECONDS
Which pitch class has the longest bar on the audio side? How closely does its pattern resemble the known score?
REVEAL THE STRONGEST PITCH CLASS
G has the strongest recorded evidence.
This is a pitch class, not a single note or octave. Several notes can share a pitch class, and harmonics can also contribute evidence.
INSPECT THE NUMBERS
| Pitch class | Score evidence | Audio evidence |
|---|---|---|
| C | 0.000 | 0.000 |
| C# | 0.000 | 0.000 |
| D | 0.000 | 0.000 |
| D# | 0.000 | 0.000 |
| E | 0.000 | 0.000 |
| F | 0.000 | 0.000 |
| F# | 0.000 | 0.000 |
| G | 1.000 | 1.000 |
| G# | 0.000 | 0.000 |
| A | 0.000 | 0.033 |
| A# | 0.000 | 0.000 |
| B | 1.000 | 0.018 |
SNAPSHOT 4 · 9.01 SECONDS
Which pitch class has the longest bar on the audio side? How closely does its pattern resemble the known score?
REVEAL THE STRONGEST PITCH CLASS
C has the strongest recorded evidence.
This is a pitch class, not a single note or octave. Several notes can share a pitch class, and harmonics can also contribute evidence.
INSPECT THE NUMBERS
| Pitch class | Score evidence | Audio evidence |
|---|---|---|
| C | 1.000 | 1.000 |
| C# | 0.000 | 0.000 |
| D | 0.000 | 0.021 |
| D# | 0.000 | 0.000 |
| E | 0.000 | 0.000 |
| F | 0.000 | 0.000 |
| F# | 0.000 | 0.000 |
| G | 0.000 | 0.000 |
| G# | 0.000 | 0.000 |
| A | 1.000 | 0.342 |
| A# | 0.000 | 0.000 |
| B | 0.000 | 0.000 |
EXPLORE FunChessEngine
Original Python chess engine and fully local ChessBase-style desktop workstation for play, analysis, PGN libraries, studies, training, tournaments, and engine development.
Languages: JavaScript · Python · HTML · CSS · Makefile · Shell
Latest default-branch commit:
Publish cross-platform tagged releases
2026-09-11 UTC
Latest release: v1.1.0 · 2026-09-11
EXPLORE TowerLogic
Computer vision and machine learning system for Clash Royale using PyTorch, YOLOv8, OpenCV, emulator control, and policy-based automated decision logic.
Languages: Python · Shell
Latest default-branch commit:
Use Pillow-compatible ttkbootstrap version for release builds
2026-09-12 UTC
Latest release: v0.1.0 · 2026-09-12
EXPLORE the-great-prompt-off
Full-stack AI prompt-evaluation platform built with Next.js, TypeScript, Supabase/Postgres, and OpenRouter for live structured-extraction challenges.
Languages: TypeScript · PLpgSQL · JavaScript · CSS
Latest default-branch commit:
Comprehensive passthrough of README and MIT license
2026-08-30 UTC
EXPLORE PianoMirRustPublic
Rust/Python music information retrieval system for aligning recorded performances with PDMX scores and evaluating note accuracy, chroma, timing, and tempo.
Languages: Rust · Python
Latest default-branch commit:
Correct typo in README.md
2026-08-30 UTC
Latest release: v0.1.0 · 2026-09-12
BROWSE ALL 18 PROJECTS
Public, non-fork projects, grouped by primary language.
- WinCodex — C#
- avoid.love-v2 — CSS
- avoid.love-v3 — CSS
- wifi-concierge-site — HTML
- avoid.love — JavaScript
- chatgpt-web — JavaScript
- clarity — JavaScript
- FunChessEngine — JavaScript
- grok-electron — JavaScript
- kitcoscraper — JavaScript
- nitro-notes — JavaScript
- outlook-electron — JavaScript
- TowerLogic — Python
- PianoMirRustPublic — Rust
- avoid.love-v1 — TypeScript
- ethanbchen.com — TypeScript
- Fall2026-CodingChallenge — TypeScript
- the-great-prompt-off — TypeScript
COMPARE THE PROJECTS
| Project | Languages by code size | Last push · UTC | Status |
|---|---|---|---|
| avoid.love | JavaScript · HTML · Python · CSS | 2026-09-12 | Open |
| avoid.love-v1 | TypeScript · JavaScript | 2026-09-12 | Open |
| avoid.love-v2 | CSS · TypeScript · JavaScript | 2026-09-12 | Open |
| avoid.love-v3 | CSS · TypeScript · Python · JavaScript | 2026-09-12 | Open |
| chatgpt-web | JavaScript · Swift | 2026-09-12 | Open |
| clarity | JavaScript · CSS · HTML | 2026-10-21 | Open |
| ethanbchen.com | TypeScript · HTML · Python · JavaScript | 2026-09-24 | Open |
| Fall2026-CodingChallenge | TypeScript · CSS · JavaScript · HTML · Dockerfile | 2026-09-20 | Open |
| FunChessEngine | JavaScript · Python · HTML · CSS · Makefile · Shell | 2026-09-11 | Open |
| grok-electron | JavaScript · Swift | 2026-09-12 | Open |
| kitcoscraper | JavaScript | 2026-09-11 | Open |
| nitro-notes | JavaScript · HTML · Python | 2026-09-12 | Open |
| outlook-electron | JavaScript | 2026-09-12 | Open |
| PianoMirRustPublic | Rust · Python | 2026-09-12 | Open |
| the-great-prompt-off | TypeScript · PLpgSQL · JavaScript · CSS | 2026-08-30 | Open |
| TowerLogic | Python · Shell | 2026-09-12 | Open |
| wifi-concierge-site | HTML | 2026-08-30 | Open |
| WinCodex | C# · Python · Shell · Batchfile · Dockerfile | 2026-09-17 | Open |
EXPLORE THE NUMBERS
921 contributions across 51 active days. Best Sunday–Saturday week: 399 contributions. 2025-10-30 through 2026-10-29, UTC.
Current: 0 days (No active run). Longest within the last 365 days: 14 days (2026-09-11 / 2026-09-24).
Last 7 UTC days: 1 contributions; previous 7 days: 24; last 30 days: 65 contributions over 11 active days. Includes today, which is unfinished.
contributions: 921, next checkpoint 1000; active days: 51, next checkpoint 75; languages: 13, next checkpoint 15. Activity uses the rolling 365-day window; language count uses current public code. These are automatic numeric checkpoints, not GitHub awards.
Languages
- HTML: 3,922,164 bytes (38.4%), 7 repositories
- TypeScript: 1,637,430 bytes (16.0%), 6 repositories
- Python: 1,462,564 bytes (14.3%), 8 repositories
- JavaScript: 1,430,564 bytes (14.0%), 14 repositories
- Rust: 1,124,399 bytes (11.0%), 1 repositories
- CSS: 526,078 bytes (5.1%), 7 repositories
- C#: 54,357 bytes (0.5%), 1 repositories
- PLpgSQL: 33,322 bytes (0.3%), 1 repositories
- Shell: 18,338 bytes (0.2%), 3 repositories
- Swift: 3,742 bytes (0.0%), 2 repositories
- Makefile: 2,330 bytes (0.0%), 1 repositories
- Batchfile: 1,468 bytes (0.0%), 1 repositories
- Dockerfile: 1,256 bytes (0.0%), 2 repositories
Featured work
FunChessEngine (JavaScript), pushed 2026-09-11. Original Python chess engine and fully local ChessBase-style desktop workstation for play, analysis, PGN libraries, studies, training, tournaments, and engine development.
TowerLogic (Python), pushed 2026-09-12. Computer vision and machine learning system for Clash Royale using PyTorch, YOLOv8, OpenCV, emulator control, and policy-based automated decision logic.
the-great-prompt-off (TypeScript), pushed 2026-08-30. Full-stack AI prompt-evaluation platform built with Next.js, TypeScript, Supabase/Postgres, and OpenRouter for live structured-extraction challenges.
PianoMirRustPublic (Rust), pushed 2026-09-12. Rust/Python music information retrieval system for aligning recorded performances with PDMX scores and evaluating note accuracy, chroma, timing, and tempo.

