Blog

All Blog Posts  |  Next Post  |  Previous Post

Summer Vibes – Coding in the Spirit of Summer with AI

Today

TMS Software Delphi  Components

There’s something about summer that makes us want to slow down, kick back, and let things flow a little more freely. In software development, a similar spirit has been bubbling up lately under the banner of vibe coding: letting ideas unfold naturally, without overthinking, just enjoying the process.

And what better way to capture that feeling than with a lighthearted project—a Pong clone with a summery twist, affectionately named SummerBall.

This project started as a casual experiment with ChatGPT-5. I asked it to generate a Delphi VCL application for a Pong-style game. Within moments, I had a working Delphi VCL Windows desktop app. Out of curiosity, I then wondered: what if I port this to the web with TMS WEB Core?

To my surprise (and slight amusement), the migration was almost effortless. Thanks to the striking similarity between VCL and TMS WEB Core, I had SummerBall running in the browser in less than 15 minutes.

What used to be an afternoon coding exercise has now become a kind of holiday breeze—just let the AI write the heavy lifting, adjust a few details, and you’re already playing your game on the web.


โ˜€๏ธ From VCL to the Web in a Breeze

The beauty of this experiment is how seamlessly the same logic translates from a traditional desktop app to the browser. In the VCL app, we render the game on a TPaintBox with a TTimer driving the action. Switch to TMS WEB Core, and it’s practically déjà vu: you’re using the same concepts, but your paintbox is now in HTML5 canvas, and your timer ticks just as happily in JavaScript land.

And the footprint? The entire generated JavaScript code is just 345KB—in today’s web world, that’s virtually nothing. Your browser hardly has time to yawn before the game is loaded.

Here’s a small snippet from the VCL version that shows the structure of the game loop:

procedure TFormSummerBall.OnTick(Sender: TObject); begin StepGame; FView.Invalidate; // repaint game scene end;

And here’s how the drawing works:

procedure TFormSummerBall.DrawScene(C: TCanvas; const R: TRect); begin // Clear background C.Brush.Color := clBlack; C.FillRect(R); // Paddles and Ball C.Brush.Color := clWhite; C.FillRect(PadRectLeft); C.FillRect(PadRectRight); C.Ellipse(BallRect); end;

Now, imagine dropping this code into TMS WEB Core. You still paint, you still tick—only now it compiles into JavaScript and runs in the browser. That’s the magic of Delphi’s component model and the philosophy behind TMS WEB Core: familiar APIs, modern reach.


๐ŸŽฎ Play SummerBall

Enough talk—why not play it yourself?
๐Ÿ‘‰ Play SummerBall online

TMS Software Delphi  Components

If you prefer to tinker, extend, or just see how AI-aided vibe coding looks in Pascal, the full source code for both the VCL app and the TMS WEB Core app is available here:

๐Ÿ‘‰ Download Source Code (ZIP)


๐ŸŒŠ Summer Coding Reflections

The story of SummerBall isn’t just about Pong. It’s about how AI is reshaping the way we code. What once took hours to architect and debug can now be spun up in minutes with the help of a conversational AI partner. And thanks to frameworks like Delphi VCL and TMS WEB Core, moving between desktop and web has become more of a vacation stroll than a mountain climb. At the same time, the experiment shows AI isn't perfect. The ChatGPT generated VCL code contains a warning:

[Hint] USummerBallWEB.pas(259): Local variable "newSpeed" is assigned but never used

and I explicitly left it there ๐Ÿ˜Š

So grab your shades, let the summer vibes inspire you, and maybe even take SummerBall for a spin. After all, the code is yours to play with—make the paddles glow, add power-ups, or turn it into a multiplayer beach party. Or take up the challenge (with our without AI assistance) to make the game that originally is from the keyboard only area, touch-aware so it is also playable on a mobile device. The vibe is yours to ride!


โœ๏ธ Written by Bruno Fierens, inspired by AI, sunshine, and the joy of simple games.



Bruno Fierens




This blog post has not received any comments yet.



Add a new comment

You will receive a confirmation mail with a link to validate your comment, please use a valid email address.
All fields are required.



All Blog Posts  |  Next Post  |  Previous Post