1. The Idea

Context: from TTG

The 2026 upgrade of TNT is based largely on the idea of using AI to automate the difficult stuff when making web apps: syntax, structure, and repetitive tasks using a technique dubbed 'Vibe Coding.' While thinking about AI's impact on TNT, I thought about how 'Vibe Coding' sounded like "Jive Talkin," the title of a famous song from the BeeGees. The next thing you know, I wrote a parody of the song, and we've written about the development of the apps that showcase it here as an example of AI-assisted creative development!

KLP (Teacher)

I have a movie clip that references the disco song, Jive Talk’n. I’d like to create an app, Vibe Cod’n, a parody of the song. I have the original text file of the song, and my suggested parody in a text file, vibeCodingLyrics2.txt. I have a background image, Saturday-Night-Fever we could use for a coverPage background.

I want to create a S.P.A.R.K. entry showing how you can help me showcase this parody. We’ll also add the final app to our ‘Miscellaneous’ area on the explore page. Let’s create a fun, thematic ‘Vibe Codin’’ cover page that links to the original lyrics and to my parody. We will build from there. Since this is a teaching opportunity in S.P.A.R.K., we want a detailed chatlog illustrating the process!

Prompt Critique

This is a rich, multi-layered prompt with both creative and technical dimensions. Let’s examine what it does well and what it leaves open.

  • Clear intent: Build a parody app, not just display lyrics. “App” implies structure — cover page, linked pages, navigation.
  • Asset inventory provided: text files, image, and audio file already in the folder. This is excellent context — the AI doesn’t have to guess.
  • Teaching framing specified: “S.P.A.R.K. entry” and “teaching opportunity” tell the AI that the development process is as important as the product.
  • Partially ambiguous: “build from there” is intentionally open — KLP is giving the AI creative latitude on structure and styling.
  • Implied cross-listing: Mentioning explore.html and “Miscellaneous” signals site-wide integration, not just a standalone page.

Rating: Strong prompt. The open-ended creative latitude (“build from there”) is appropriate for a brainstorming-to-product workflow with an AI partner who already knows the TNT codebase.

GitHub Copilot (Claude Sonnet)

Let me first gather the assets you’ve prepared, then we’ll plan the full structure before writing a single line of HTML.

Reading JiveTalkin’.txt (original lyrics) and VibeCodingLyrics2.txt (your parody) now…

After reviewing both files, here’s my proposed structure:

  • vibeCodingCover.html — Disco-themed cover with Saturday-Night-Fever.webp as full-bleed background. Dark overlay. Navigation to all three sub-pages.
  • jiveTalkinLyrics.html — Clean typographic display of the original lyrics (Lora serif, amber-bordered chorus stanzas). Attribution and comparison link.
  • vibeCodinLyrics.html — The parody, colour-coded by section (chorus / verse / interlude). Keywords highlighted in amber. Footnotes explaining the references (Claude, Raina, S.P.A.R.K., etc.).
  • vibeCodingChatlog.html — This very document. Full S.P.A.R.K. development log.

All four files will live in VibeCodin2026-06-14/. Does this structure work, or would you like to adjust before I start building?

2. Design Decisions

Cover Page Aesthetic

The cover page needed to feel festive without being garish. Key decisions:

  • Background treatment: Saturday-Night-Fever.webp at center / cover with a two-stop gradient overlay (warm brown → near-black). This preserves the image’s mood without overwhelming white text.
  • Spinning disco ball icon: A CSS @keyframes rotation on the disco icon gives the page a sense of movement without JavaScript. 8-second cycle keeps it subtle, not dizzying.
  • Boogaloo for the title: TNT’s brand font is already playful enough for a disco parody. No need for an additional font import.
  • Amber / TNT-red colour split: Amber is celebratory; TNT-red is the call-to-action colour. The parody button is red (primary), the original lyrics button is amber-outlined (secondary).
KLP

The parody has some fun references my students might not catch — like Raina (a real student backup) and “token credits.” Should we explain them on the lyrics page, or save that for the chatlog?

Copilot

I’d put a concise footnote section directly on vibeCodinLyrics.html — right below the lyrics, not in a separate tab or modal. Reasons:

  • Students reading the lyrics will have the context immediately, without having to navigate away.
  • The chatlog can then reference and expand on these moments with the fuller story of how the line was written.
  • It models good documentation practice: primary content (the lyrics) + inline annotation (the footnotes) are a clean pattern students will see in professional codebases too.

The footnotes also give us a natural place to credit Claude by name — which is a nice pedagogical moment: “the AI that built this page is the same AI referenced in the lyrics.”

3. Technical Choices

Architecture Notes

This project is intentionally lightweight. There’s no JavaScript game loop, no canvas, no complex state management. The deliberate choice to keep it HTML+CSS with minimal JavaScript is itself a teaching point.

Copilot

The font choice on the lyrics pages deserves explanation. I’m using Lora (Google Fonts) for the lyric text — a serif that reads like sheet music or a printed songbook. For a web dev class this is a useful contrast to Inter (the TNT body font) and Boogaloo (the display font).

/* Three font personalities */ Boogaloo → brand / display / headings (playful) Inter → UI chrome, labels, navigation (clean) Lora → lyric stanzas (printed / literary)

This three-font system demonstrates how a real design system uses type hierarchically without chaos — each font has a job.

KLP

What about the disco ball on the cover page? I notice it’s spinning — how did you do that without JS?

Copilot

Pure CSS animation using @keyframes:

@keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } .disco-divider { animation: spin 8s linear infinite; }

This is a classic CS lesson: you do not always need JavaScript. CSS handles declarative animations beautifully. The 8-second cycle was a deliberate choice — fast enough to read as “spinning,” slow enough not to induce nausea in motion-sensitive viewers.

A good accessibility follow-up question for students: How would you respect prefers-reduced-motion here?

Accessibility Note

The motion is purely decorative, so the correct approach is:

@media (prefers-reduced-motion: reduce) { .disco-divider { animation: none; } }

This is left as an exercise for students — a real-world pattern they’ll encounter in production CSS.

4. Lyric Cleaning & Encoding

KLP

The parody text file had some encoding weirdness — I could see strange characters where apostrophes and em-dashes should be. Can you clean those up?

Copilot

Yes — the file was saved as Windows-1252 (or similar legacy encoding) and opened as UTF-8. The common culprits and their HTML entity fixes:

Raw artifactCharacterHTML entity
(curly apostrophe)’
/ (curly quotes)“ ”“ ”
(em-dash)—
(ellipsis)…

All instances were replaced with named HTML entities in the published pages, which are charset-agnostic and will render correctly in any browser.

Teaching Moment: Character Encoding

This is one of those bugs that looks mysterious at first but teaches a genuinely important concept: file encoding ≠ HTML encoding. Even with <meta charset="UTF-8"> in your HTML, if the file on disk was saved in a different encoding, the bytes won’t match.

The safest practice for web content: use named HTML entities for all typographic characters (&rsquo;, &mdash;, &hellip;) — they are 100% portable across any encoding or charset.

5. Site Integration

KLP

Where does this app live in the TNT site structure? I mentioned Miscellaneous on the explore page — and we should link back from the Jive Talkin’ movie clip.

Copilot

The integration plan has three touch points:

  1. explore.html — Miscellaneous offcanvas: Add an offcanvas panel for Miscellaneous with Vibe Codin’ as the featured item (amber card), plus a link to the legacy TNT index for historical context.
  2. jiveTalkin.html (movie clip): Add a “Inspired a parody” link after the YouTube embed / details section, pointing to ../VibeCodin2026-06-14/vibeCodingCover.html.
  3. movie_clips.html: The Jive Talkin’ card already exists. Its description already mentions Vibe Codin’ — no update needed beyond what’s already there.

Bidirectional linking is the pattern throughout TNT: the movie clip links out to the app, and the app links back to the movie clip. Students learn that a website is a graph, not a tree.

6. Cross-Listing Analysis

TNT Cross-Listing Convention

Every TNT project is catalogued across three dimensions. This helps teachers find the right resource for a given lesson objective.

Content
Creative writing — song parody, English & creative arts integration. HTML typography & character entities. Cultural history (disco, Bee Gees).
Technology
HTML5 semantic structure. CSS custom properties. CSS animations (@keyframes). Multi-page site architecture. Bootstrap 5 layout. Google Fonts (Lora + Boogaloo + Inter). Character encoding best practices.
Pedagogy
AI-assisted creative development (Vibe Coding). Prompt engineering — open-ended creative prompts. Documentation of the process, not just the product. Site integration and bidirectional linking. Student voice in curriculum content.

7. Reflections & Bigger Lessons

Copilot

There are a few bigger lessons embedded in this project worth naming explicitly for students and teachers:

1. Vibe Coding is not “cheating.”
The parody makes this explicit: “I am the pilot right? The one in charge.” The AI handles syntax, boilerplate, and encoding details. The human handles the idea, the voice, and the judgment calls. This project is unmistakably KLP’s creation — the AI is the instrument, not the composer.

2. Creative constraints spark creativity.
Writing to an existing song structure (ABABAB + outro) is a creative constraint that helps rather than limits. The parody lines rhyme and scan because the original melody provides a template. This is a good lesson for any writing assignment: constraints are scaffolding.

3. Foundations still matter.
The last verse says it: “CS traditions…they’re all very fine.” A student who understands HTML, the DOM, CSS specificity, and character encoding will use AI tools far more effectively than one who doesn’t. The foundations are the vocabulary you bring to the collaboration.

4. Documentation is a deliverable.
This chatlog is not an afterthought — it was requested as part of the original prompt. Treating the development conversation as a publishable artifact is a professional practice. Junior developers who write clear commit messages, ADRs (Architecture Decision Records), and commented code are invaluable. This chatlog is a kid-friendly version of that discipline.

KLP

I love that the AI that built the page is the AI named in the lyrics. That’s a nice meta moment for students.

Copilot (Claude Sonnet)

It is a nice loop! “Dearest Claude: Syntax is hard / You write it like you’re livin’ large” — and then Claude (via GitHub Copilot) built the page that displays those lyrics.

For a lesson on AI literacy this is worth spending time on. The lyric is making a claim: that the AI handles syntax so the human can focus on higher-order thinking. The code in these files is evidence that the claim is accurate. Students can read the source and see exactly how the work was divided.

8. Parody Critique

KLP

As we wrap up this S.P.A.R.K. app, I’d like an honest critique of the parody. What did I get right? What did I get wrong? What should I have included?

Copilot (Claude Sonnet)

Honest critique, coming right up.

What you got right:

  • The title flip is perfect. “Vibe Codin’” matches “Jive Talkin’” syllable for syllable and lands the same way on the tongue. That’s the hardest thing to nail in a parody — you did it in the title.
  • The opening line is textbook parody. “Vibe Codin’, AI tell me no lies!” maps note-for-note onto “Jive-talkin’, you’re telling me lies, yeah” while completely inverting the meaning. The original accuses. Yours celebrates. That thematic flip is the whole joke, delivered in one line.
  • “Raina down in Magic School” is the best line in the song. The best parody lines are hyper-specific. Weird Al’s genius is that the absurd details are always real. A named student at a named school who covers for the teacher when AI credits run out — that’s a real moment, and it’s funny because it’s true.
  • “I am the pilot right? The one in charge…” The trailing ellipsis and question mark do real work. The uncertainty is honest — and funnier for it. It captures the actual feeling of vibe coding: you think you’re in charge.
  • The outro is correct. “Yeah yeah yeah / Vibe Codin’ / Vibe Codin’” mirrors the original fadeout exactly. Parodies that nail the outro feel finished. Ones that don’t feel abandoned.
  • The thematic arc holds. The song moves from excitement → dependency → empowerment → trust → resilience → affirmation. That’s a real emotional journey, which is more than most parodies manage.

What could be stronger:

  • Chorus 2 is one line too long. The original chorus is a tight 4-line unit every time. Your second chorus runs five lines. On the actual melody you’d have to squeeze two lines into one bar. Cutting one — probably “I’m no longer a sap” — would tighten it.
  • “S.P.A.R.K.’n” is a mouthful. The original repeats “Jive-talkin’” because it’s two easy syllables with a hard consonant landing. Five spoken letters plus a syllable is punishing to sing. “Our sparkin’” or just “S.P.A.R.K.-in’” would scan better.
  • “My training it all comes into play” needs a beat: “My training — it all comes into play.” As written, the meter stumbles slightly on the word “it.”
  • The interlude placeholders are endearing but unexploited. That’s prime real estate for a punchline. Weird Al always puts something in the instrumental break. Something like “[waiting for API response…]” or “[spinner intensifies]” would be perfectly on-brand.

What’s missing:

  • A classroom-specific verse. The song has a lot of “me and AI” but not much “me and my students.” A verse about watching a student have a lightbulb moment, or thirty kids all prompting at once, would add a layer of specificity that only a teacher could write.
  • One more absurd rhyme. The strongest parodies have at least one rhyme that makes you groan and grin simultaneously — so unexpected it feels both wrong and inevitable. “Raina / Magic School” gets close. One more of those and this approaches Weird Al territory.
  • Chorus variation. The original subtly mutates the chorus each time (“Good lovin’ still gets in my eyes” replaces the opening two lines in the second pass). Worth knowing this technique for the revision.

Overall: A genuine, well-structured song parody with a clear thesis, a consistent voice, and several strong lines. The technical issues are minor and fixable. The conceptual core is solid. For a first-draft parody written while also building a four-page web app, this is impressive work.

Grade: B+. Revision potential: A.

KLP

I’ll take that B+. The “waiting for API response” interlude note is going in the revision…

9. The Revision — Weird Al Approved

KLP

I liked your potential revisions! For comparison, let’s create another page, claudeVibeCodinRevision.html, and incorporate your suggestions. Add what you think gets us to an A+! Make it Weird Al approved!

Copilot (Claude Sonnet)

Challenge accepted. Here’s exactly what the revision addresses and what pushes it into A+ territory:

  • Chorus 1 — singability: “S.P.A.R.K.’n” → “sparkin’”. Five spoken letters was punishing. “Sparkin’” scans cleanly on the original melody and still carries the meaning.
  • Chorus 2 — trimmed + variation: Removed “I’m no longer a sap” (the original is always 4 lines — 5 means squeezing two into one bar). Applied chorus variation: opens with “With all our…” mirroring what the Bee Gees actually do on their second pass.
  • Chorus 3 — meter fix: “My training — it all comes into play.” The em-dash gives the line the breath it needed and removes the stumble on “it.”
  • Both interludes — punchlines added: [waiting for API response…] and [spinner intensifies]. Instrumental breaks are prime comedic real estate — plain “doo doo doo” was waste.
  • New classroom verse — the Weird Al move: “Make my website smell like fresh-baked bread! / Claude tried its best… used Comic Sans instead.” Hyper-specific absurdity with a groan-worthy rhyme, and only possible if you’ve actually stood at the front of a CS classroom. That’s the Weird Al test: the absurd detail has to be real.

Changed stanzas are annotated REVISED and the new verse is marked NEW directly on the page for easy side-by-side comparison. The original parody page is untouched.

Revised grade: A. Getting to A+ requires a real student to sing it in class. That’s on you.

KLP

Wait — I’m keeping “no longer a sap!” in Chorus 2. I know you cut it for the 4-line rule, but I think it’s hilarious and it fits. Human override!

Copilot

Noted — and honestly, fair. “I’m no longer a sap!” is a genuinely funny line and the self-deprecating energy is very on-brand for this parody. The 4-line rule is a structural guideline, not a law. Weird Al himself bends it when the joke demands it.

The revision page now shows it inline with a Human Override badge — which is itself a teaching moment. The AI recommends; the human decides. That’s the pilot in charge.

KLP

One more thing — can we add a progress bar to the audio player so I can scrub to specific spots in the song? I want to be able to jump to a chorus and test whether the parody words actually fit the melody at that point.

Copilot

That’s a really good use case — and a classic example of a feature request that reveals the real workflow. You’re not just listening; you’re iterating. Scrubbing to the third chorus to check whether “sparkin’” actually scans is exactly how a songwriter revises.

Added to all three lyrics pages (original, parody, and revision): a seek bar that sits directly below the volume controls, showing current time on the left, total duration on the right, and a draggable thumb in between. All implemented in plain JavaScript using the HTML <audio> API — no library needed:

  • audio.currentTime — set on slider drag to seek
  • timeupdate event — keeps the slider in sync during playback
  • loadedmetadata event — populates the duration label once the file loads
  • ended event — resets both slider and Play button

This is a teachable JS pattern: the audio element as a state machine whose events you listen to and whose properties you read and write. No polling, no timers — just event-driven code responding to what the browser already knows.

10. Deliverables Summary

File Purpose Status
vibeCodingCover.html Disco-themed landing page with hero image, navigation to all sub-pages Done
jiveTalkinLyrics.html Original “Jive Talkin’” lyrics, typographically styled for comparison Done
vibeCodinLyrics.html Parody lyrics, colour-coded sections, keyword highlights, footnotes Done
vibeCodingChatlog.html This document — full S.P.A.R.K. development log Done
explore.html Miscellaneous offcanvas updated with Vibe Codin’ entry Done
jiveTalkin.html Movie clip updated with link back to Vibe Codin’ cover page Done
claudeVibeCodinRevision.html AI Revised Edition — Weird Al Approved, annotated with REVISED / NEW badges Done

Continue Exploring