AI World Clocks

3 months ago (clocks.brianmoore.com)

"Every minute, a new clock is rendered by nine different AI models."

hi, I made this. thank you for posting.

I love clocks and I love finding the edges of what any given technology is capable of.

I've watched this for many hours and Kimi frequently gets the most accurate clock but also the least variation and is most boring. Qwen is often times the most insane and makes me laugh. Which one is "better?"

  • Clock drawing is widely used as a test for assessing dementia. Sometimes the LLMs fail in ways that are fairly predictable if you're familiar with CSS and typical shortcomings of LLMs, but sometimes they fail in ways that are less obvious from a technical perspective but are exactly the same failure modes as cognitively-impaired humans.

    I think you might have stumbled upon something surprisingly profound.

    https://www.psychdb.com/cognitive-testing/clock-drawing-test

    • > Clock drawing is widely used as a test for assessing dementia

      Interestingly, clocks are also an easy tell for when you're dreaming, if you're a lucid dreamer; they never work normally in dreams.

      21 replies →

    • Maybe explainable via the fact that these tests are part of the LLM training set?

    • Conceptual deficit is a great failure mode description. The inability to retrieve "meaning" about the clock -- having some understanding about its shape and function but not its intent to convey time to us -- is familiar with a lot of bad LLM output.

    • I would think the way humans draw clocks has more in common with image generation models (which probably do a bit better with this task overall) than a language model producing SVG markup, though.

    • LLMs don't do this because they have "people with dementia draw clocks that way" in their data. They do it because they're similar enough to human minds in function that they often fail in similar ways.

      An amusing pattern that dates back to "1kg of steel is heavier of course" in GPT-3.5.

      2 replies →

  • Please make it show last 5 (or some other number) of clocks for each model. It will be nice to see the deviation and variety for each model at a glance.

  • This is honestly the best thing I've seen on HN this month. It's stupid, enlightening... funny and profound and the same time. I have a strong temptation to pick some of these designs and build them in real life.

    I applaud you for spending money to get it done.

  • Could you please change and adjust the positions of the titles (like GPT 5)? On Firefox Focus on iOS, the spacing is inconsistent (seems like it moves due to the space taken by the clock). After one or two of them, I had to scroll all the way down to the bottom and come back up to understand which title is linked to which clock.

  • I really like this. The broken ones are sometimes just failures, but sometimes provide intriguing new design ideas.

    • This same principle is why my favorite image generation model is the earlier models from 2019-2020 where they could only reliably generate soup. It's like Rorschach tests, it's not about what's there, it's about what you see in them. I don't want a bot to make art for me, sometimes I just want some shroom-induced inspirational smears.

      1 reply →

  • LOVE IT!

    It would be really cool if I could zoom out and have everything scale properly!

  • .. would you mind sharing the prompt .. in a gist perhaps .

    • They have it available on the site under the (?) button:

      "Create HTML/CSS of an analog clock showing ${time}. Include numbers (or numerals) if you wish, and have a CSS animated second hand. Make it responsive and use a white background. Return ONLY the HTML/CSS code with no markdown formatting."

Watching this over the past few minutes, it looks like Kimi K2 generates the best clock face most consistently. I'd never heard of that model before today!

Qwen 2.5's clocks, on the other hand, look like they never make it out of the womb.

  • I’ve been using Kimi K2 a lot this month. Gives me Japanese->English translations at near human levels of quality, while respecting rules and context I give it in a very long, multi-page system prompt to improve fidelity of translation for a given translation target (sometimes markup tags need to be preserved, sometimes deleted, etc.). It doesn’t require a thinking step to generate this level of translation quality, making it suitable for real-time translation. It doesn’t start getting confused when I feed it a couple dozen lines of previous translation context, like certain other LLMs do… instead the translation actually improves with more context instead of degrading. It’s never refused a translation for “safety” purposes either (GPT and Gemini love to interrupt my novels and tell me certain behavior is illegal or immoral, and censor various anatomical words).

    • > GPT and Gemini love to interrupt my novels and tell me certain behavior is illegal or immoral, and censor various anatomical words

      Lol, are you using ai to create fan translations of エロ漫画 ?

      1 reply →

  • I knew of Kimi K2 because it’s the model used by Kagi to generate the AI answers when query ends with an interrogation point.

  • It could be that the prompt is accidentally (or purposefully) more optimised for Kimi K2, or that Kimi K2 is better trained on this particular data. LLM's need "prompt engineers" for a reason to get the most out of a particular model.

    • How much engineering do prompt engineers do? Is it engineering when you add "photorealistic. correct number of fingers and teeth. High quality." to the end of a prompt?

      we should call them "prompt witch doctors" or maybe "prompt alchemists".

      30 replies →

    • I think the selection of models is a bit off. Haiku instead of Sonnet for example. Kimi K2's capabilities are closer to Sonnet than to Haiku. GPT-5 might be in the non-reasoning mode, which routes to a smaller model.

      1 reply →

    • Goes to show the "frontier" is not really one frontier. It's a social/mathematical construct that's useful for a broad comparison, but if you have a niche task, there's no substitute for trying the different models.

    • Just use something like DSPy/Ax and optimize your module for any given LLM (based on sample data and metrics) and you’re mostly good. No need to manually wordsmith prompts.

    • It's not fair to use prompts tailored to a particular model when doing comparisons like this - one shot results that generalize across a domain demonstrate solid knowledge of the domain. You can use prompting and context hacking to get any particular model to behave pseudo-competently in almost any domain, even the tiny <1B models, for some set of questions. You could include an entire framework and model for rendering clocks and times that allowed all 9 models to perform fairly well.

      This experiment, however, clearly states the goal with this prompt: `Create HTML/CSS of an analog clock showing ${time}. Include numbers (or numerals) if you wish, and have a CSS animated second hand. Make it responsive and use a white background. Return ONLY the HTML/CSS code with no markdown formatting.`

      An LLM should be able to interpret that, and should be able to perform a wide range of tasks in that same style - countdown timers, clocks, calendars, floating quote bubble cycling through list of 100 pithy quotations, etc. Individual, clearly defined elements should have complex representations in latent space that correspond to the human understanding of those elements. Tasks and operations and goals should likewise align with our understanding. Qwen 2.5 and some others clearly aren't modeling clocks very well, or maybe the html/css rendering latents are broken. If you pick a semantic axis(like analog clocks), you can run a suite of tests to demonstrate their understanding by using limited one-shot interactions.

      Reasoning models can adapt on the fly, and are capable of cheating - one shots might have crappy representations for some contexts, but after a lot of repetition and refinement, as long as there's a stable, well represented proxy for quality somewhere in the semantics it understands, it can deconstruct a task to fundamentals and eventually reach high quality output.

      These type of tests also allow us to identify mode collapses - you can use complex sophisticated prompting to get most image models to produce accurate analog clocks displaying any time, but in the simple one shot tests, the models tend to only be able to produce the time 10:10, and you'll get wild artifacts and distortions if you try to force any other configuration of hands.

      Image models are so bad at hands that they couldn't even get clock hands right, until recently anyway. Nano banana and some other models are much better at avoiding mode collapses, and can traverse complex and sophisticated compositions smoothly. You want that same sort of semantic generalization in text generating models, so hopefully some of the techniques cross over to other modalities.

      I keep hoping they'll be able to use SAE or some form of analysis on static weight distributions in order to uncover some sort of structural feature of mode collapse, with a taxonomy of different failure modes and causes, like limited data, or corrupt/poisoned data, and so on. Seems like if you had that, you could deliberately iterate on, correct issues, or generate supporting training material to offset big distortions in a model.

      2 replies →

  • When I clicked, everything was garbage except Grok and DeepSeek. kimi was the worst clock

  • I'm a huge K2 fan, it has a personality that feels very distinct from other models (not syccophantic at all), and is quite smart. Also pretty good at creative writing (tho not 100% slop free).

    K2 hosted on groq is pretty crazy for intellgence/second. (Low rate limits still, tho.)

  • my GPT-40 was 100% perfect on the first click. Since then, garbage. Gemini 2.5 perfect on the 3rd click.

  • Right as you said that, I checked kimi k2’s “clock” and it was just the ascii art: ¯\_(ツ)_/¯

    I wonder if that is some type of fallback for errors querying the model, or k2 actually created the html/css to display that.

  • Interestingly, either I'm _hallucinating_ this, or DeepSeek started to consistently show a clock without failures and with good time, where it previously didn't. ...aaand as I was typing this, it barfed a train wreck. Never mind, move along... No, wait, it's good again, no, wait...

Since the first (good) image generation models became available, I've been trying to get them to generate an image of a clock with 13 instead of the usual 12 hour divisions. I have not been successful. Usually they will just replace the "12" with a "13" and/or mess up the clock face in some other way.

I'd be interested if anyone else is successful. Share how you did it!

  • I've noticed that image models are particularly bad at modifying popular concepts in novel ways (way worse "generalization" than what I observe in language models).

    • Also, they're fundamentally bad at math. They can draw a clock because they've seen clocks, but going further requires some calculations they can't do.

      For example, try asking Nano Banana to do something simpler, like "draw a picture of 13 circles." It likely will not work.

  •   Generate an image of a clock face, but instead of the usual 12 hour numbering, number it with 13 hours. 
    
    

    Gemini, 2.5 Flash or "Nano Banana" or whatever we're calling it these days. https://imgur.com/a/1sSeFX7

    A normal (ish) 12h clock. It numbered it twice, in two concentric rings. The outer ring is normal, but the inner ring numbers the 4th hour as "IIII" (fine, and a thing that clocks do) and the 8th hour as "VIIII" (wtf).

    • It should be pretty clear already that anything which is based (limited?) to communicating words/text can never grasp conceptual thinking.

      We have yet to design a language to cover that, and it might be just a donquijotism we're all diving into.

      6 replies →

  • I gave this "riddle" to various models:

    > The farmer and the goat are going to the river. They look into the sky and see three clouds shaped like: a wolf, a cabbage and a boat that can carry the farmer and one item. How can they safely cross the river?

    Most of them are just giving the result to the well known river crossing riddle. Some "feel" that something is off, but still have a hard time to figure out that wolf, boat and cabbage are just clouds.

  • That's just a patch to the training data.

    Once companies see this starting to show up in the evals and criticisms, they'll go out of their way to fix it.

  • This is really cool. I tried to prompt gemini but every time I got the same picture. I do not know how to share a session (like it is possible with Chatgpt) but the prompts were

    If a clock had 13 hours, what would be the angle between two of these 13 hours?

    Generate an image of such a clock

    No, I want the clock to have 13 distinct hours, with the angle between them as you calculated above

    This is the same image. There need to be 13 hour marks around the dial, evenly spaced

    ... And its last answer was

    You are absolutely right, my apologies. It seems I made an error and generated the same image again. I will correct that immediately.

    Here is an image of a clock face with 13 distinct hour marks, evenly spaced around the dial, reflecting the angle we calculated.

    And the very same clock, with 12 hours, and a 13th above the 12...

    • This is probably my biggest problem with AI tools, having played around with them more lately.

      "You're absolutely right! I made a mistake. I have now comprehensively solved this problem. Here is the corrected output: [totally incorrect output]."

      None of them ever seem to have the ability to say "I cannot seem to do this" or "I am uncertain if this is correct, confidence level 25%" The only time they will give up or refuse to do something is when they are deliberately programmed to censor for often dubious "AI safety" reasons. All other times, they come back again and again with extreme confidence as they totally produce garbage output.

      4 replies →

  • I was able to have AI generate an image that made this, but not by diffusion/autoregressive but by having it write Python code to create the image.

    ChatGPT made a nice looking clock with matplotlib that had some bugs that it had to fix (hours were counter-clockwise). Gemini made correct code one-shot, it used Pillow instead of matplotlib, but it didn't look as nice.

  • Weird, I never tried that, I tried all the usual tricks that usually work including swearing at the model (this scarily works surprisingly well with LLMs) and nothing. I even tried to go the opposite direction, I want a 6 hour clock.

  • I do playing card generation and almost all struggle beyond the "6 of X"

    My working theory is that they were trained really hard to generate 5 fingers on hands but their counting drops off quickly.

  • That's because they literally cannot do that. Doing what you're asking requires an understanding of why the numbers on the clock face are where they are and what it would mean if there was an extra hour on the clock (ie that you would have to divide 360 by 13 to begin to understand where the numbers would go). AI models have no concept of anything that's not included in their training data. Yet people continue to anthropomorphize this technology and are surprised when it becomes obvious that it's not actually thinking.

    • The hope was for this understanding to emerge as the most efficient solution to the next-token prediction problem.

      Put another way, it was hoped that once the dataset got rich enough, developing this understanding is actually more efficient for the neural network than memorizing the training data.

      The useful question to ask, if you believe the hope is not bearing fruit, is why. Point specifically to the absent data or the flawed assumption being made.

      Or more realistically, put in the creative and difficult research work required to discover the answer to that question.

    • It's interesting because if you asked them to write code to generate an SVG of a clock, they'd probably use a loop from 1 to 12, using sin and cos of the angle (given by the loop index over 12 times 2pi) to place the numerals. They know how to do this, and so they basically understand the process that generates a clock face. And extrapolating from that to 13 hours is trivial (for a human). So the fact that they can't do this extrapolation on their own is very odd.

    • gpt-image-1 and Google Imagen understand prompts, they just don't have training data to cover these use cases.

      gpt-image-1 and Imagen are wickedly smart.

      The new Nano Banana 2 that has been briefly teased around the internet can solve incredibly complicated differential equations on chalk boards with full proof of work.

      3 replies →

    • I wonder if you would have more success if you painstakingly described the shape and features of a clock in great detail but never used the words clock or time or anything that might give the AI the hint that they were supposed to output something like a clock.

      1 reply →

    • The problem is more likely the tokenization of images than anything. These models do their absolute worst when pictures are involved, but are seemingly miraculous at generalizing with just text.

      3 replies →

    • Yes, the problem is that these so called "world models" do not actually contain a model of the world, or any world

  • Ah! This is so sad. The manager types won't be able to add an hour (actually, two) to the day even with AI.

  • I've been trying for the longest time and across models to generate pictures or cartoons of people with six fingers and now they won't do it. They always say they accomplished it, but the result always has 5 fingers. I hate being gaslit.

  • LLMs are terrible for out-of-distribution (OOD) tasks. You should use chain of thought suppression and give constaints explictly.

    My prompt to Grok:

    ---

    Follow these rules exactly:

    - There are 13 hours, labeled 1–13.

    - There are 13 ticks.

    - The center of each number is at angle: index * (360/13)

    - Do not infer anything else.

    - Do not apply knowledge of normal clocks.

    Use the following variables:

    HOUR_COUNT = 13

    ANGLE_PER_HOUR = 360 / 13 // 27.692307°

    Use index i ∈ [0..12] for hour marks:

    angle_i = i * ANGLE_PER_HOUR

    I want html/css (single file) of a 13-hour analog clock.

    ---

    Output from grok.

    https://jsfiddle.net/y9zukcnx/1/

I've been struggling all week trying to get Claude Code to write code to produce visual (not the usual, verifiable, text on a terminal) output in the form of a SDL_GPU rendered scene consisting of the usual things like shaders, pipelines, buffers, textures and samplers, vertex and index data and so on, and boy it just doesn't seem to know what it's doing. Despite providing paragraphs-long, detailed prompts. Despite describing each uniform and each matrix that needs to be sent. Despite giving it extremely detailed guidance about what order things need to be done in. It would have been faster for me to just write the code myself.

When it fails a couple of times it will try to put logging in place and then confidently tell me things like "The vertex data has been sent to the renderer, therefore the output is correct!" When I suggest it take a screenshot of the output each time to verify correctness, it does, and then declares victory over an entirely incorrect screenshot. When I suggest it write unit tests, it does so, but the tests are worthless and only tests that the incorrect code it wrote is always incorrect in the same ways.

When it fails even more times, it will get into this what I like to call "intern engineer" mode where it just tries random things that I know are not going to work. And if I let it keep going, it will end up modifying the entire source tree with random "try this" crap. And each iteration, it confidently tells me: "Perfect! I have found the root cause! It is [garbage bullshit]. I have corrected it and the code is now completely working!"

These tools are cute, but they really need to go a long way before they are actually useful for anything more than trivial toy projects.

  • I’m not sure if it's just me, but I've also noticed Claude becoming even more lazy. For example, I've asked it several times to fix my tests. It'll fix four or five of them, then start struggling with the next couple, and suddenly declare something like: "All done, fixed 5 out of 10 tests. I can’t fix the remaining ones", followed by a long, convoluted explanation about why that’s actually a good thing.

    • I don't know if it has gotten worse, but I definitely find Claude is way too eager to celebrate success when it has done nothing.

      It's annoying but I prefer it to how Gemini gets depressed if it takes a few tries to make progress. Like, thanks for not gaslighing me, but now I'm feeling sorry for a big pile of numbers, which was not a stated goal in my prompt.

  • Have you tried OpenAI Codex with GPT5.1? I'm using it for similar GPU rendering stuff and it appears to do an excellent job.

  • Have you given using MCPs to provide documentation and examples a shot? I always have to bring in docs since I don't work in Python and TS+React (which it seems more capable at) and force it to review those in addition to any specification. e.g. Context7

  • I know this has been said many times before, but I wonder why this is such a common outcome. Maybe from negative outcomes being underrepresented in the training data? Maybe that plus being something slightly niche and complex?

    The screenshot method not working is unsurprising to me, VLLMs visual reasoning is very bad with details because they (as far as I understand) do not really have access to those details, just the image embedding and maybe an OCR'd transcript.

Amazing, some people are so enamored with LLMs who use them for soft outcomes, and disagree with me when I say be careful they're not perfect -- this is such a great non technical way to explain the reality I'm seeing when using on hard outcome coding/logic tasks. "Hey this test is failing", LLM deletes test, "FIXED!"

  • Something that struck me when I was looking at the clocks is that we know what a clock is supposed to look and act like.

    What about when we don't know what it's supposed to look like?

    Lately I've been wrestling with the fact that unlike, say, a generalized linear model fit to data with some inferential theory, we don't have a theory or model for the uncertainty about LLM products. We recognize when it's off about things we know are off, but don't have a way to estimate when it's off other than to check it against reality, which is probably the exception to how it's used rather than the rule.

    • I need to be delicate with wording here, but this is why it's a worry that all the least intelligent people you know could be using AI.

      It's why non-coders think it's doing an amazing job at software.

      But it's worryingly why using it for research, where you necessarily don't know what you don't know, is going to trip up even smarter people.

      1 reply →

    • I built an ML classifier for product categories way back, as I added more classes/product types, individual class PR metrics improved--I kept adding more and more until I ended up with ~2,000 classes.

      My intuition is at the start when I was like "choose one of these 10 or unknown", that unknown left a big gray area, so as I added more classes the model could say "I know it's not X, because it's more similar to Y"

      I feel like in this case though, the broken clocks are broken because they don't serve the purpose of visually transmitting information, they do look like clocks tho. I'm sure if you fed the output back into the LLM and ask what time it is it would say IDK, or more likely make something up and be wrong. (at least the egregious ones where the hands are flying everywhere)

  • Yeah it seems crazy to use LLM on any task where the output can't be easily verified.

    • > Yeah it seems crazy to use LLM on any task where the output can't be easily verified.

      I disagree, those tasks are perfect for LLMs, since a bug you can't verify isn't a problem when vibecoding.

  •   > "Hey this test is failing", LLM deletes test, "FIXED!"
    

    A nice continuation of the tradition of folk stories about supernatural entities like teapots or lamps that grant wishes and take them literally. "And that's why, kids, you should always review your AI-assisted commits."

Non-determinism at it's finest. The clock is perfect, the refresh happens, the clock looks like a Dali painting.

  • Last year I wrote a simple system using Semantic Kernel, backed by functions inside Microsoft Orleans, which for the most part was a business logic DSL processor by LLM. Your business logic was just text, and you gave it the operation as text.

    Nothing could be relied upon to be deterministic, it was so funny to see it try to do operations.

    Recently I re-ran it with newer models and was drastically better, especially with temperature tweaks.

I'm having a hard time believing this site is honest, especially with how ridiculous the scaling and rotation of numbers is for most of them. I dumped his prompt into chatgpt to try it myself and it did create a very neat clock face with the numbers at the correct position+animated second hand, it just got the exact time wrong, being a few hours off.

Edit: the time may actually have been perfect now that I account for my isp's geo-located time zone

  • On the contrary, in my experience this is very typical of the average failure mode / output of early 2025 LLMs for HTML of SVG.

LLMs can't "look" at the rendered HTML output to see if what they generated makes sense or not. But there ought to be a way to do that right? To let the model iterate until what it generates looks right.

Currently, at work, I'm using Cursor for something that has an OpenGL visualization program. It's incredibly frustrating trying to describe bugs to the AI because it is completely blind. Like I just wanna tell it "there's no line connecting these two points but there ought to be one!" or "your polygon is obviously malformed as it is missing a bunch of points and intersects itself" but it's impossible. I end up having to make the AI add debug prints to, say, print out the position of each vertex, in order to convince it that it has a bug. Very high friction and annoying!!!

  • Cursor has this with their "browser" function for web dev, quite useful

    You can also give it a mcp setup that it can send a screenshot to the conversation, though unsure if anyone made an easy enough "take screenshot of a specific window id" kind of mcp, so may need to be built first

    I guess you could also ask it to build that mcp for you...

  • You can absolutely do this. In fact, with Claude Anthropic encourages you to send it screenshots. It works very well if you aren't expecting pixel-perfection.

    YMMV with other models but Sonnet 4.5 is good with things like this - writing the code, "seeing" the output and then iterating on it.

  • I had some success providing screenshots to Cursor directly. It worked well for web UIs as well as generated graphs in Python. It makes them a bit less blind, though I feel more iterations are required.

  • Claude totally can, same with ChatGPT. Upload a picture to either one of them via the app and tell it there's no line where there should be. There’s some plumbing involved to get it to work in Claude code or codex, but yes, computers can "see". If you have lm-server, there's tons of non-text models you can point your code at.

  • Kinda - Hand waiving over the question of if an LLM can really "look" but you can connect Cursor to a Puppeteer MCP server which will allow it to iterate with "eyes" by using Puppeteer to screenshot it's own output. Still has issues, but it does solve really silly mistakes often simply by having this MCP available.

Why are Deepseek and Kimi are beating other models by so much margin? Is this to do with their specialization for this task?

Something I'm not able to wrap my head around is that Kimi K2 is the only model that produces a ticking second hand on every attempt while the rest of them are always moving continuously. What fundamental differences in model training or implementation can result in this disparity? Or was this use case programmed in K2 after the fact?

Most look like they were done by a beginner programmer on crack, but every once in a while a correct one appears.

  • It's interesting how drawing a clock is one of the primary signals for dementia. https://www.verywellhealth.com/the-clock-drawing-test-98619

    • This is very interesting, thank you.

      I could not get to the store because of the cookie banner that does not work (at left on mobile chrome and ff). The Internet Archive page: https://archive.ph/qz4ep

      I wonder how this test could be modified for people that have neurological problems - my father's hands shake a lot but I would like to try the test on him (I do not have suspicions, just curious).

      I passed it :)

    • "One variation of the test is to provide the person with a blank piece of paper and ask them to draw a clock showing 10 minutes after 11. The word "hands" is not used to avoid giving clues."

      Hmm, ambiguity. I would be the smart ass that drew a digital clock for them, or a shaku-dokei.

  • I'd say more like a blind programmer in the early stages of dementia. Able to write code, unable to form a mental image of what it would render as and can't see the final result.

  • If they can identify which one is correct, then it's the same as always being correct, just with an expensive compute budget.

Cool, and marginally informative on the current state of things. but kind of a waste of energy given everything is re-done every minute to compare. We'd probably only need a handful of each to see the meaningful differences.

  • It's actually quite fascinating if you watch it for 5 minutes. Some models are overall bad, but others nail it in one minute and butcher it in the next.

    It's perhaps the best example I have seen of model drift driven by just small, seemingly unimportant changes to the prompt.

    • > model drift driven by just small, seemingly unimportant changes to the prompt

      What changes to the prompt are you referring to?

      According the comment on the site, the prompt is the following:

      Create HTML/CSS of an analog clock showing ${time}. Include numbers (or numerals) if you wish, and have a CSS animated second hand. Make it responsive and use a white background. Return ONLY the HTML/CSS code with no markdown formatting.

      The prompt doesn't seem to change.

      2 replies →

    • It is really interesting to watch them for a while. QWEN keeps outputting some really abstract interpretations of a clock, KIMI is consistently very good, GPT5's results line up exactly with my experience with its code output (overly complex and never working correctly)

    • We can't know how much is about the prompt though and how much is just stochastic randomness in the behavior of that model on that prompt, right? I mean, even given identical prompts, even at temp 0, models don't always behave identically.... at least, as far as I know? Some of the reasons why are I think still a research question, but I think its a fact nonetheless.

    • Kimi seems the only reliable one which is a bit surprising, and GPT 4o is consistently better than GPT 5 which on the other hand is unfortunately not surprising at all.

  • I sort of assumed they cached like 30 inferences and just repeat them, but maybe I'm being too cynical.

  • The energy usage is minuscule.

    • It's wasteful. If someone built a clock out of 47 microservices that called out to 193 APIs to check the current time, location, time zone, and preferred display format we'd rightfully criticize it for similar reasons.

      In a world where Javascript and Electron are still getting (again, rightfully) skewered for inefficiency despite often exceeding the performance of many compiled languages, we should not dismiss the discussion around efficiency so easily.

      4 replies →

Because a new clock is generated every minute, looks like simply changing the time by a digit causes the result to be significantly different from the previous iteration.

To be fair, This is a deceptively hard task.

Reminds me of the Alzheimer's "draw a clock" test.

Makes me think that LLMs are like people with dementia! Perhaps it's the best way to relate to an LLM?

I like Deepseek v3.1's idea of radially-aligning each hour number's y-axis ("1" is rotated 30° from vertical, "2" at 60°, etc.). It would be even better if the numbers were rotated anticlockwise.

I'm not sure what Qwen 2.5 is doing, but I've seen similar in contemporary art galleries.

Think this is just prompt eng tbh. One shot Haiku 3.5 (https://claude.ai/share/66c17968-485e-4d15-974b-4f6958e1e2fd) decent looking too.

Got it to work on gpt 3.5T w modified prompt (albeit not as good - https://pastebin.com/gjEVSEcJ)

`single html file, working analog clock showing current time, numbers positioned (aligned) correctly via trig calc (dynamic), all three hands, second hand ticks, 400px, clean AF aesthetic R/Greenberg Associates circa 2017. empathy, hci, define > design > implement.`

The more I look at it, the more I realise the reason for cognitive overload I feel when using LLMs for coding. Same prompt to same model for a pretty straight forward task produces such wildly different outputs. Now, imagine how wildly different the code outputs when trying to generate two different logical functions. The casings are different, commenting is different, no semantic continuity. Now maybe if I give detailed prompts and ask it to follow, it might follow, but from my experience prompt adherence is not so great as well. I am at the stage where I just use LLMs as auto correct, rather than using it for any generation.

Wonderful. I don’t particularly care if it is or is not a valid test. I like the “wrong” renderings better. Some are hilarious, some … inspired.

Qwen doesn't care about clocks, it goes the Dali way, without melting.

It even made a Nietzsche clock (I saw one <body> </body> which was surprisingly empty).

It definitely wins the creative award.

In any case those clocks are all extremely inaccurate, even if AI could build a decent UI (which is not the case).

Some months ago I published this site for fun: https://timeutc.com There's a lot of code involved to make it precise to the ms, including adjusting based on network delay, frame refresh rate instead of using setTimeout and much more. If you are curious take a look at the source code.

This is cool, interesting to see how consistent some models are (both in success and failure)

I tried gpt-oss-20b (my go-to local) and it looks ok though not very accurate. It decided to omit numbers. It also took 4500 tokens while thinking.

I'd be interested in seeing it with some more token leeway as well as comparing two or more similar prompts. like using "current time" instead of "${time}" and being more prescriptive about including numbers

I’m very curious about the monthly bill for such a creative project, surely some of these are pre rendered?

  • Napkin math:

    9 AIs × 43,200 minutes = 388,800 requests/month

    388,800 requests × 200 tokens = 77,760,000 tokens/month ≈ 78M tokens

    Cost varies from 10 cents to $1 per 1M tokens.

    Using the mid-price, the cost is around $50/month.

    ---

    Hopefully, the OP has this endpoint protected - https://clocks.brianmoore.com/api/clocks?time=11:19AM

    • It was limited to 2,000 tokens each. I assume it usually hit that. So could be closer to 777M. assuming they didn't just cache it and just start rotating after a day or two..

Security-wise, this is a website that takes the straight output of AI and serves it for execution on their website.

I know, developers do the same, but at least they check it in Git to notice their mistakes. Here is an opportunity for AI to call a Google Authentication on you, or anything else.

It's really beautiful! Super clean UI.

The thing I always want from timezone tools is: “Let me simulate a date after one side has shifted but the other hasn’t.”

Humans do badly with DST offset transitions; computers do great with them.

Pretty cool already!

I use 'Sonnet 4.5 thinking' and 'Composer 1' (Cursor) the most, so it would be interesting to see how such SOTA models perform in this task.

It's wild how much the output varies for the same model for each run.

I'm not sure if this was the intent or not, but it sure highlights how unreliable LLMs are.

Ask Claude or ChatGPT to write it in Python, and you will see what they are capable of. HTML + CSS has never been the strong suit of any of these models.

  • Claude generates some js/css stuff even when i don't ask for it. I think Claude itself at least believes he is good at this.

I just realized I'm running late, it's almost -2!

More seriously, I'd love to see how the models perform the same task with a larger token allowance.

just curious, why not the sonnet models? In my personal experience, Anthropic's Sonnet models are the best when it comes to things like this!

You should render it, show an image to the model and allow it to iterate. No person has to one-shot code without seeing what it looks like.

Try adding to the prompt that it has a PhD in Computer Science and have many methods for dealing with complexity.

This gives better results, at least for me.

  • Why does that give better results? Is this phenomena measurable? How would "you have a phd in computer science" change its ability to interpret prose? Every interaction with an LLM seems like superstition.

    • Because ie. a forum thread that contains this often have better answers, and LLMs are trained on data from the Internet. It's just statistics.

That's super neat. I'll keep checking back to this site as new models are released. It's an interesting benchmark.

I wonder which model will silently be updated and suddenly start drawing clocks with Audemars-Piguet-level kind of complications.

It is funny to see the performance improve across many of the models, somewhat miraculously, throughout the day today.

I believe that in a day or two, the companies will address this and it would be solved by them for that use case

I'm reminded of the "draw a clock" test neurologists use to screen for dementia and brain damage.

Selection of western models is weird no gpt-5.1 , opus 4.1 ( nailed it perfectly ) Something I quickly tested

Interesting idea!

Why is a new clock being rendered every minute? Or AI models are evolving and improving every minute.

This is great. If you think that the phenomena of human-like text generation evinces human-like intelligence, then this should be taken to evince that the systems likely have dementia. https://en.wikipedia.org/wiki/Montreal_Cognitive_Assessment

  • Imagine if I asked you to draw as pixels and operate a clock via html or create a jpeg with a pencil and paper and have it be accurate.. I suspect your handcoded work to be off by an order of magnitutde compared

Watching these gives me a strong feeling of unease. Art-wise, it is a very beautiful project.

whats going on with kimi k2 and being reasonable/so unique in so many of these benchmarks ive seen recently? I will have to try it out further for stuff. is it any good at programming?

I love that GPT-5 is putting the clock hands way outside the frame and just generally is a mess. Maybe we'll look back on these mistakes just like watching kids grow up and fumble basic tasks. Humorous in its own unique way.

  • > Maybe we'll look back on these hilarious mistakes just like watching kids grow up and fumble basic tasks.

    Or regret: "why didn't we stop it when we could?"

anyone tried opening this from mobile? not a single clock renders correctly, almost looks like a joke on LLMs

What a wonderfully visual example of the crap LLMs turn everything into. I am eagerly awaiting the collapse of the LLM bubble. JetBrains added this crap to their otherwise fine series of IDEs and now I have to keep removing randomly inserted import statements and keep fixing hallucinated names of functions suggested instead of the names of functions that I have already defined in the same file. Lack of determinism where we expect it (most of the things we do, tbh) is creating more problems than it is solving.

GPT-5 is embarrassing itself. Kimi and DeepSeek are very consistently good. Wild that you can just download these models.

Honestly, I think if you track the performance of each over time, since these get regenerated once in a while, you can then have a very, very useful and cohesive benchmark.

would be gr8t to also see the prompt this was done with

  • The ? has "Create HTML/CSS of an analog clock showing ${time}. Include numbers (or numerals) if you wish, and have a CSS animated second hand. Make it responsive and use a white background. Return ONLY the HTML/CSS code with no markdown formatting."

    • Hmm nothing fancy then, but perhaps with tubing results will vary.

      I hate prompt discovery (not engineering this thing!), but it actually matters.

Now that is actually creative.

Granted, it is not a clock - but it could be art. It looks like a Picasso. When he was drunk. And took some LSD.

Why? This is diagonal to how LLM's work, and trivially solved by a minimal hybrid front/sub system.

  • Because, LLMs are touted to be the silver bullet of silver bullets. Built upon world's knowledge, and with the capacity to call upon updated information with agents, they are ought to rival the top programmers 3 days ago.

    • They might be touted like that but it seems like you don't understand how they work. The example in the article shows that the prompt is limiting the LLM by giving it access to only 2000 tokens and also saying "ONLY OUTPUT ...". This is like me asking you to solve the same problem but forcing you do de-activate half of your brain + forget any programming experience you have. It's just stupid.

      1 reply →

These types of tests are fundamentally flawed. I was able to create perfect clock using gemini 2.5 pro - https://gemini.google.com/share/136f07a0fa78

  • The website is regenerating the clocks every minute. When I opened it, Gemini 2.5 was the only working one. Now, they are all broken.

    Also, your example is not showing the current time.

    • It wouldn't be hard to tell to pick up browser time as the default start point. Just a piece of prompt.

  • Even Gemini Flash did really well for me[0] using two prompts - the initial query and one to fix the only error I could identify.

    > Please generate an analog clock widget, synchronized to actual system time, with hands that update in real time and a second hand that ticks at least once per second. Make sure all the hour markings are visible and put some effort into making a modern, stylish clock face.

    Followed by:

    > Currently the hands are working perfectly but they're translated incorrectly making then uncentered. Can you ensure that each one is translated to the correct position on the clock face?

    [0] https://aistudio.google.com/app/prompts?state=%7B%22ids%22:%...

  • I don't think this is a serious test. It's just an art piece to contrast different LLMs taking on the same task, and against themselves since it updates every minute. One minute one of the results was really good for me and the next minute it was very, very bad.

  • Aren't they attempting to also display current time though? Your share is a clock starting at midnight/noon. Kimi K2 seems to be the best on each refresh.

Limiting the model to only use 2000 tokens while also asking it to output ONLY HTML/CSS is just stupid. It's like asking a programmer to perform the same task while removing half their brain and also forget about their programming experience. This is a stupid and meaningless benchmark.