ASCIIMoon: The moon's phase live in ASCII art

zayat | 270 points | 56day ago | asciimoon.com

SlowTao|54day ago

While I love the ASCII art, yeah... thats not how the moon phase works. At half moon it should be exactly half occluded, so like it was cut in half, not just a weird circle cut out.

This is something that partially bothered me about GTA San Andreas on Ps2. They used the same trick as here but I would give them a pass because it was just a small detail on a large simulation on an already very limited system.

There are some great bones here on the site, just need to tweak the shadow and it can be a 10 out of 10.

kingstnap|54day ago

Yeah they seem to have drawn it as a dark circle going across for some reason.

But earth's shadows aren't what create moon phases IRL. The real moon phases are from the sun lighting the moon from different angles so this is just super weird.

andreareina|54day ago

Some reason probably being that it's easier

noduerme|54day ago

yet an incredibly basic and stupid oversight when the only point of your site is to show the phase of the moon.

I'm voting that this was vibe-coded by an LLM on behalf of someone who not only didn't write the code but didn't bother to look at a picture of the moon or look at the sky before deploying it. If so, it's almost the perfect Platonic example of "what could possibly go wrong?"

bstsb|54day ago

in this case the code is publicly available on github and it doesn't have any obvious hallmarks of LLM generation.

(for example the comments are all capitalized, there's inconsistent indentation)

kingstnap|54day ago

The math isn't that bad if anyone wants to do it properly.

Assume y vertical and x horizontal and z out of the page.

The moon is a disk. x^2 + y^2 <= R^2

For all the points, calculate z = sqrt(R^2 - y^2 - x^2)

Let the vector v(theta) = <sin(theta), 0, cos(theta)> point to the Sun.

Points <x,y,z> • v(theta) >= 0 should be bright, The rest dim.

JdeBP|54day ago

Now achieve that when your implementation constraint is that you're using JavaScript to style a <div/> element. (-:

* https://github.com/Sean-93/asciimoon/blob/main/src/component...

echelon|54day ago

That's a great suggestion for a more accurate render, but I want the author to know that I still think they did an amazing job. It's fun and it looks great. (Your feedback was really constructive, and I don't think the author will misinterpret it. Some of the other commenters here, on the other hand...)

I have two additional feature requests:

1. Persistent URLs (replaceState)

2. Lunar eclipses

SlowTao|54day ago

Absolutely they did a fantastic job, already a hundred times better than any web stuff I have ever done.

thih9|54day ago

This is also the standard way to present moon phases in watch complications:

> One of the objections raised to a conventional moonphase display, which shows the visible part of the Moon via an aperture in the dial, is that it is not an accurate representation of what you see when you actually look at the Moon over the course of a month.

https://www.hodinkee.com/articles/the-beautifully-pointless-...

Joker_vD|54day ago

Well, let's hope nobody drills a hole in the Moon (or blows the Moon up) in the next couple thousands of years, for the sake of those watches' usability.

shagie|53day ago

> let's hope nobody drills a hole in the Moon

https://what-if.xkcd.com/46/ - while it deals more with the Earth (which has a more molten core), its still applicable. There's still molten material ( https://science.nasa.gov/moon/composition/ ) but it's a lot deeper.

> (or blows the Moon up)

As a classic Neal Stephenson (great world building, good plot... and it ends)... Seveneves starts with:

> THE MOON BLEW UP WITHOUT WARNING AND FOR NO APPARENT reason. It was waxing, only one day short of full. The time was 05:03:12 UTC. Later it would be designated A+0.0.0, or simply Zero.

... and given the book and the "what happens"... a watch surviving (much less keeping the phase of the moon) would be impressive.

There's also the Dr. Who take ("Spoilers") https://youtu.be/pHOnGSFzd3Y

thih9|53day ago

It’s actually safe to do that, watch owners would be distracted by global cataclysms ;)

> Tides would be much smaller (…) But the movement of tides underpins the balance of ecosystems the world over, and an impact that widespread would cause global biological collapse across oceans and, in turn, the whole Earth.

https://www.popularmechanics.com/space/moon-mars/a43633761/b...

crtasm|54day ago

I enjoyed the next part with the solution

>To address this problem, moonphase displays were invented which use a spherical miniature Moon

HumblyTossed|54day ago

Yeah instead of moving a dark circle over the moon, it needs to be hinged at the north and south and rotated.

JdeBP|54day ago

It's amusing that it isn't truly a circle. It's a box with rounded corners and the corner rounding radius chosen to be half the box width. There is probably not a simple CSS trick like that for doing the correct 2D projection of a hemisphere.

dclowd9901|54day ago

Another suggestion: API so I can curl and get this in my terminal.

namanyayg|54day ago

no api needed https://acme.com/software/phoon/

panki27|54day ago

`curl wttr.in/moon`

bravesoul2|54day ago

https://xkcd.com/1738/

panzi|54day ago

Yeah, was about to write the same comment.

thot_experiment|54day ago

I feel like ascii art loses something when it's not sized to a standard text mode (at least to width, like 132x132 is fine). At some point you're just using weird pixels and this is approaching that for me. Same goes for changing the color of the characters continuously; terminal colors are cool. I'm probably just a crazy purist

aylons|54day ago

It's not even just that: the shadows go mid-character, instead of using characters as pixels. It is just not ASCII ART at all, just some ASCII characters used as a filler.

noduerme|54day ago

oooh. Good point. I didn't even noticd that at first glance as I was floored that anyone would show off something so totally wrong. But yes, not responsive ascii art if you're just throwing a transparent circle over the same bunch of characters.

pimlottc|54day ago

And it's within a circular mask. Half the challenge of ASCII art is creating the illusion of smooth curves and edges when you mostly just have blocky letters. There's barely any attempt at smoothing the edges at all.

https://www.roysac.com/tutorial/rowanasciiarttutorial.html

Wowfunhappy|54day ago

I actually feel like using color at all is cheating. I'm okay with a wider width than 132 px, but it needs to be sized such that you can clearly make out the letters, which I can't in the TFA.