HN user

vitaly-pavlenko

194 karma
Posts10
Comments31
View on HN

Working on https://chessnawk.vercel.app/ – a set of auto-grading tasks for middle school students learning programming.

Comes with Robot, Turtle, HTML/CSS (pixel diff tasks) and a gradual introduction into programming concepts. Currently on JS, literally right now GPT-5.2 helps me adding Python.

I've integrated a simplified clone of Replicube. I hope to integrate ideas from Human Resource Machine and Turing Complete later this year.

I bear heritage of Eastern Bloc-typa math/programming olympiads, combined with front-end/product skills. So I kinda owe to ship this thing to community of fellow secondary school CS teachers.

Surprisingly, nothing comes closer in terms of depth and usability in the classroom for ordinary 12yo kids.

I test this thing 5 times a week in my classroom and I constantly polish it at night. 100% vibe-coding.

I'm working as a school teacher of Computer Science for Year 6..9. Currently I develop an online collection of exercises for intro to programming.

I have exercises:

- on turtle, using my DSL with three commands: 4[100 r90] draws a square

- on robot (blockly)

- a 2D replica of Replicube to teach conditions in JS.

I've started vibe-coding it two months ago and I add new stuff whenever I need it for my classroom.

I'll soon add signups.

The platform will be free forever, monetized via banner ads somewhere in the future. The target audience is middle school teachers of CS.

https://chessnawk.vercel.app/

Yeah, I see your point. You want same alterations on different Roman numerals to look the same. (In my current system b9 over I and b9 over V look different.)

I briefly explored this appoach: https://rawl.vercel.app/edit?a=beethoven_op10no1mov1 (Although it was a mess.)

In current Rawl terms I call it "annotate modulation at every chord".

Back in the days I thought it's better.

It turned out that:

- You need to do tedious annotation. So you can only work with classical repertoire datasets like https://github.com/MarkGotham/When-in-Rome

- Worse even, you need to look at two places simultaneously: to the score and to the string of Roman numerals

- And worse still, all chords then look the same. The score itself becomes bland. Most of the time, if you aren't deep inside the jazz repertoire, there isn't that many alterations. So you'd mostly see the same four colors - root, minor third, major third, perfect fifth.

- And, as evident in Mozart-Beethoven repertoire, you need to decide what to do with fully diminished chords. Because they sorta don't have a root, acoustically.

So here I stand with dilettantes :)

Being a jazz college dropout, I stopped building around standard notation when after two years of training - and I started learning piano at 25 - I still didn't get any fluency in instantly seeing harmonic structure in the scores.

I don't care that much about articulation. I can hear articulation anyways. What I care about is the elusive layer of harmony which is so hard to reason about without the right tools.

That's why people do Roman numerals, figured bass, all sorts of annotation: https://github.com/vpavlenko/study-music/blob/main/parts/cla...

And that's what I was chasing. Something that gives me, a guy who didn't spent formative years of K-12 by sight-reading at the piano, a way to build mental models of how Western harmony works.

And here, I believe, I'm with the majority of people.

It's rainbow if we skip coloring 1 and 5 and color them with grayscale instead.

Here's the question. If we can allow one color not to be "colorful" (chromatic), what pitch would that be? It's the tonic (pitch 1).

If we allow two such colors? 5 is a good candidate, it's present in almost all popular scales. (Locrian isn't very popular.)

The rest 10 colors go in rainbow by thirds, as you proposed.

So, using two grayscale colors, I've reduced the demand to make distinct enough color palette from 12 colors to 10 chromatic + 2 grayscale.

Which (10), in my experience fighting with different screens and projectors, is almost the limit of having something stable, distinguishable, nameable and memorable.

Funny enough, those 10 can be further split into 5 brighter and 5 darker pitches. Exactly as they turn from bright to dark if we go from bright to dark modes: https://www.dropbox.com/scl/fi/dku7jezn00yltb607j2un/Screens...

Yes! hooktheory was my main inspiration over the years.

One downside of hooktheory is that it's a reduction which someone should make for you beforehand. That is:

- it's losing information

- if no one analyzed a song yet, there's nothing you can do about it

And, although I don't have an easy way to upload MIDIs yet rather than "you ask me to upload it and I'll do it", I don't do any reduction of the (sonic) score itself.

They are actually similar by circle of thirds. They go as 1-3-5-7-2-4 over the rainbow.

This makes main triads be smooth gradients instead of random three-color flags.

1 and 5 pitches are neutral because:

- they are neutral (a hollow tonic power chord)

- they don't convey any information about the scale. they only give a reference point to measure everything else against

I've recently tried it on 1:1 calls with ML/backend engineers and on a workshop at our local hacker space for 20 people and I've got so much positive feedback that I've decided to share it here. If you follow this tutorial closely, it'll help trying to generate both a plain HTML app and a React app with pretty solid results for a little amount of time.

My life has changed 2 months ago since I've discovered the Cursor IDE. I love this product and I'm trying to share that as much as I can. I stopped writing React on my own and I only code using English/Russian now, and much faster.

Disclosure: my codebase is 10k LOC in modern React+TS, your 100k Rust mileage may vary.

I have a detailed write-up in this thread: https://x.com/vitalypavlenko/status/1771820942680830417

Basically, you can somewhat see chords in sheet music. Like, you can easily see a C major chord in a treble clef.

1) How many milliseconds does it take you to understand that the entire bar you're looking at is just a C major chord arpeggiated in different octaves?

2) What if it's a bass + treble clef? What if it's an orchestral score?

3) How fast can you verify that a treble clef is active now? That it's not a C-sharp major or a C major chord?

4) Do you actually care that it's a C major chord or rather should you care that it's a I chord (a tonic major chord)?

5) If you care about relative chords (Roman numerals), does it mean you should learn 7 to 12 times visual cues of what's going on now?

These are just the beginning questions, where the end questions that I care about are:

101) What are the backbone structures making a list of midi pitches played suddenly a tango? A ragtime? A malaguena? A Bulgarian horo?

102) What are differences between styles (languages) of specific composers? How do I rapidly see what's different between Nobuo Uematsu and Koji Kondo? Between Chopin and Schumann? Between (tonal) Copland and (tonal) Debussy?

103) How do I imitate any of those or any fusion of those? How do I make sure that I don't miss any structural feature when I analyze and decompose their style and their pieces?

Literature: https://github.com/vpavlenko/study-music

that's a great point. i'm making my alternative https://rawl.rocks/ which does exactly that: a relative color-coding, starting from the tonic

aside from that, I make a library of structures used in Western music (in the header). I've started saving structures a week ago, so there isn't much content right now

the main emergent property of my system is visibility of structures. chords, chord progressions, parallel / relative modulation symmetries suddenly make sense and are viscerally perceivable

and I hope my visualizations are directly useful in a context of speaking about music theory to people without sheet music experience (or, dare I say, without 10 years of such experience)

my thing is open source: https://github.com/vpavlenko/rawl

Great to hear!

I've spent last two years doing college-level piano studies (pre-conservatiorum, i.e. nominally Year 8-9, was more like Year 4-5 because I lacked any childhood piano background).

Sadly, my program wasn't great in many aspects. A huge portion was devoted to perfecting the playing of pieces by heart (I did some Mozart, some Bach and some Beethoven). While I've learnt a good deal on interpretation, expression and fingering when I meditated on what I'm forced to do, I'd much better spend more time on writing out tons of jazz improvisations using some rules given, learn some idiomatic patterns on a keyboard and the like. So I quit.

Now, for the last seven months I don't have any piano teacher, and I feel so much freedom every time I play the instrument. I don't play anything that I've tried to learn from sheet music. I hate the whole process. Rather, I gradually develop my own improvisations. Not in an intricate and highly restrictive bebop jazz idiom. Rather, something quite tonal and functional, yet with scales, interesting harmonies, stretching the boundaries and the like.

My greatest joy is that I've noticed I subconsciously started building large forms from it, on the spot. I previously lacked enough attention. I feel like I'm an LLM with a loss of my previous listener's experience doing random stuff for many epochs.

I'm curious to hear, what's your request to your teacher, and how happy are you with what are you doing at classes?

Thanks for asking! I went to music theory specifically because I didn't want to produce anything before I analyze enough music (like, thousands of compositions). That is, I didn't want to talk music and do marketing on my compositions until I learn it on a level of B2, at least.

I personally felt very dumb from all guides on how to start making music in an hour. I felt like I've given a nice caligraphy pen (and a helium balloon) to say something, yet I haven't read even anything in the language that I'm gonna be talking in. Should I, at the bare minimum, understand any structural context of what was done before me? How prog rock was done, on a level of notes (or timbres)? Bulgarian folk songs? Turkish improvisation? That kind of stuff.

I like it when people normalize that "simply" doing music theory as opposed to composition/production is "just fine". A "Note Doctors" podcast is great in this: https://podcasts.apple.com/us/podcast/note-doctors/id1530735...

(I admit it's a nerdy and very corner-case road. I come from a background of learning many languages as a hobby, so I understand why I'm broken the way I am. I appreciate it when people can "just" compose, unlike me.)

Tldr no synesthesia (everyone is different), no "physical" idea, rather an attempt to do meaningful metaphors for I, IV, V chords and minor/major opposition.

My a bit outdated writeup: https://github.com/vpavlenko/rawl?tab=readme-ov-file#12-colo...

Also I wrote why I specifically don't want to use any psychological research on color-audio relations like https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5835347/:

"in this article they try to find connections between the basic parameters of sound and colors at the level of existing unconscious sensations. in particular, the “pitch” parameter (height, note) - the only parameter that interests me - is very roughly scaled by them as higher pitch and darker pitch, with a spread of four octaves. my task is to find 12 colors in order to use all 12 within one octave, and to create from them a script in which the complex and variable structures of Western music are visible. i.e. they become visible if you look closely and compare

my task is not about the basic sensations of people from high or low notes. I simply show the height of the notes along the vertical axis: high notes at the top of the screen, low notes at the bottom. I need the color to: - show semantically the same note in different octaves in the same way (C of the first octave = C of the second octave) - make horizontal bundles of three or four colors (chords) catchy. There are only about 20 main chords (but there is also a long tail of rare ones)

Let me give you an analogy with natural language. Let’s say the Russian language doesn't have a script yet, and here we come linguist missionaries, and we are trying to create an optimal alphabet for the Russian people. Of course, research can be carried out about which letter is more similar to the vowel [a] or the vowel [u] in the Bouba/kiki sense. but the best alphabet is one that respects the statistical properties of vowel usage in that language. in particular, it correctly reflects that in this language there are only two vowel sounds (Abkhazian) or as many as twenty (Danish). if there are twenty of them, then we better have twenty contrasting letters (or not?)

and as a result, Georgian “u”, Hindi “u” and Arabic “u” are not similar to each other at all, and for some reason all three writing systems work perfectly

I have two main requirements for my system: - so that the most frequency structures from the Western musical tradition are striking (I did this as much as possible) - so that 12 colors are the most contrasting, incl. for people with different forms of vision color deficiency"

I'd recommend to start with HookTheory (either books or free resources). I'm hesitant about their latest ChordCrush, I played with it a tiny bit and I think it's weaker than it might be (too tiktok'ee).

Then depending on your tastes (i.e. whether you like classical or not), I'd either watch some of https://www.youtube.com/playlist?list=PL613D1A6B3C4BBDF2 or even try to listen examples mentioned in "Christopher Doll. Hearing Harmony" or watch some harmonic dictations (either YouTube or Artusi or https://www.teoria.com/en/exercises/)

Thank you for mentioning this resource.

Btw I really think that the world's obsession with learning to hear intervals before hearing harmony qualities (minor triad, major triad, dominant seventh, diminished), and before hearing harmonies within a key (I or i, V, pre-dominants, VI or vi, V/V) is a wrong order to master things. I still can't solidly tell apart a minor sixth from a major sixth, but so what? The more important skill to me is to focus on a chord that currently sounds, so that I can interact with the real tonal language (homophony) of the last 2.5 centuries. This way I can eg. play by ear the melodies with chords that stuck in my head (including from way in the past).

We switched from polyphony and intervals on top of each other to chord progressions around Bach's time, and since then intervals aren't the main thing, I'd say.

I feel you. I started learning piano at 25, and even though I messed with guitar during the middle school, I feel like everything takes ages to learn and master.

I thought music as a set of languages is way easier than it happened to be. A CS degree and passion for linguistics doesn't convert into fluency as fast as I wished, and now I see why I'd need 4 years of music college + 4 years of an actual degree.