Training a coding model to paint watercolours

When an LLM writes JavaScript to generate loose, imperfect watercolours instead of hyper-polished corporate art, people pay attention....

Feed
September 16, 2026
Training a coding model to paint watercolours


Most generative AI art makes me want to close the tab. You've seen it a thousand times: hyper-slick. Over-rendered, statistically flattened images that scream generic prompt engineering. That is exactly why Surya Narreddi's demo went supernova with over a million and a half views last month. Watching a large language model output raw JavaScript via the p5.brush library to render actual, watercolour, imperfect watercolour strokes felt like a breath of fresh air.

The magic wasn't just in the final aesthetic. It was the methodology. Instead of relying on a standard text-to-image diffusion pipeline, Narreddi used a language model writing procedural code to paint. The model has to understand geometry, composition, color blending rules, and physical constraints through code. When someone figures out how to make a coding model paint watercolours using clever reinforcement learning setups like TRL and OpenEnv, builders take notice. It's brilliant engineering.

Of course, the initial viral moment left a frustrating gap: no open artifacts, no reproduction recipe, just a brilliant show and a promise of a future technical report. That kind of black-box teasing is exhausting. Luckily, the open-source community doesn't wait around forever. Someone decided to replicate the entire pipeline end-to-end using Hugging Face infrastructure, publishing every single dataset, RL environment, training script, and model checkpoint.

Training a coding model to paint watercolours

Looking at the resulting codebase is a masterclass in pragmatic implementation. With just a couple of environment variables and a single CLI command running GRPO, you can spin up the whole training loop. They didn't overcomplicate it or reinvent the wheel; they just faithfully rebuilt the recipe; documented every single misstep along the way. That is how real progress happens in this space.

Why did this particular project strike such a massive chord? Because it tapped into a deep fatigue with digital perfection. We are drowning in algorithmic polish, and what we actually crave is software that shows its work, retains a bit of friction, and leaves room for happy accidents. Give me messy, hand-rated watercolour models over sterile prompt machines any day of the week.