Remix.run Logo
ASCIIMoon: The moon's phase live in ASCII art(asciimoon.com)
266 points by zayat 3 days ago | 86 comments
SlowTao 2 days ago | parent | next [-]

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 2 days ago | parent | next [-]

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 2 days ago | parent [-]

Some reason probably being that it's easier

noduerme a day ago | parent | next [-]

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 a day ago | parent [-]

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 a day ago | parent | prev [-]

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 a day ago | parent [-]

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...

thih9 a day ago | parent | prev | next [-]

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 21 hours ago | parent | next [-]

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 14 hours ago | parent | next [-]

> 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 17 hours ago | parent | prev [-]

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 a day ago | parent | prev [-]

I enjoyed the next part with the solution

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

HumblyTossed 2 days ago | parent | prev | next [-]

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

JdeBP a day ago | parent [-]

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 a day ago | parent | prev | next [-]

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

namanyayg a day ago | parent | next [-]

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

panki27 a day ago | parent | prev [-]

`curl wttr.in/moon`

bravesoul2 a day ago | parent | prev | next [-]

https://xkcd.com/1738/

echelon 2 days ago | parent | prev | next [-]

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 2 days ago | parent [-]

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

a day ago | parent | prev | next [-]
[deleted]
panzi 2 days ago | parent | prev [-]

Yeah, was about to write the same comment.

thot_experiment 2 days ago | parent | prev | next [-]

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 2 days ago | parent | next [-]

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 a day ago | parent [-]

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 a day ago | parent | prev | next [-]

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 2 days ago | parent | prev [-]

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.

_aavaa_ 2 days ago | parent | prev | next [-]

While cool it’s a bit of a cop out to use a bitmap as a mask for both the circular shape and the shading of the earth’s shadow.

emptybits 2 days ago | parent | next [-]

I agree. And if you copy and paste the ASCII moon they have there, it does already have a perfectly good circular shape to it. Well done.

It's ASCII art. Drop the bitmap mask.

ludicrousdispla 2 days ago | parent | prev | next [-]

Lunar phase should be showing the moon's shadow (on itself) which will not be circular from our perspective on Earth except during the new moon phase.

This looks more like what is seen during a solar eclipse.

eichin 2 days ago | parent [-]

Yeah, this rendering is Just Wrong - moon phase is viewing a half-lit sphere from different angles, no external shadows are involved. Maybe look at https://github.com/chubin/pyphoon instead, which claims a history including Jef Poskanzer code going back to the 1970s...

way_stone 2 days ago | parent | prev | next [-]

If "live in ASCII art" is the pitch, it's reasonable to expect ASCII itself being the part that is "live".

_aavaa_ 2 days ago | parent [-]

But the vectors/bitmaps aren’t needed. The moon circle is already done in ascii. And the shading could at least be done with font color.

mlindner 2 days ago | parent | prev [-]

The moon doesn't have the Earth's shadow on it though. So it's wrong in that respect too.

shagie 2 days ago | parent | prev | next [-]

From the about page... https://asciimoon.com/about/

> ASCIIMoon is a small web app that tracks the moon's phases and uses ASCII art to create a basic visual representation of the moon's current appearance based on light percentage.

> This is a personal project, and is in no way a precise representation.

https://www.moongiant.com/phase/today/ is what it should look like. The moon for July 2nd should be something that is a half circle illuminated and a half circle in the dark.

The image on asciimoon shows a circle occluding the moon where it appears that the circle occluding the moon's edge is at 50%.

I'd have to sit down and do the math, but there is way more than 51.79% illuminated in today's rendering.

While I recognize that this is a personal project and not a precise representation... it has a fair amount of work to do to make it so that the correct percentage is illuminated.

This does have some interesting JavaScript and css tricks... but it needs some more math done.

angry_albatross a day ago | parent | prev | next [-]

It seems misleading to say that this is "rendered in ASCII art"... more like the phase is being rendered, and it has an ASCII art moon background. If I copy and paste the moon text into a text editor, the phase is gone, so it's not actually part of the text.

And as others have pointed out, phases don't work like that.

p1mrx 2 days ago | parent | prev | next [-]

The current shadow looks physically impossible... or it would only be possible during a lunar eclipse.

At least there are no stars in the shadow, so they get partial credit.

2 days ago | parent | next [-]
[deleted]
omoikane 2 days ago | parent | prev [-]

See also: https://xkcd.com/1738/

divbzero 2 days ago | parent [-]

Also not possible: common representations of the star and crescent.

https://en.wikipedia.org/wiki/Star_and_crescent#Contemporary...

quuxplusone a day ago | parent [-]

See also: "Little-Known Types of Eclipse."

https://slatestarcodex.com/2019/05/02/little-known-types-of-...

jpecar 2 days ago | parent | prev | next [-]

Reminds me of ACME phoon ... I used to have this in my .bashrc ;) https://acme.com/software/phoon/

classichasclass 2 days ago | parent [-]

Likewise! That's what I was expecting to see.

spicybright 2 days ago | parent | prev | next [-]

Seeing the shadow whip across from the css animation rule when going between waxing and waning gibus is real janky looking.

tingletech 2 days ago | parent | prev | next [-]

I made a moon phase with javascript and SVG once https://github.com/tingletech/moon-phase

I think this is my most popular repo on github.

fractallyte a day ago | parent [-]

Very nice - I used a similar technique with SVG elliptical arcs to display Moon phases!

Nition 2 days ago | parent | prev | next [-]

This looks really nice (apart from the shape of the gibbous moon, but others have already pointed that out).

Could you possibly detect the user's approximate location and rotate the whole thing 180 degrees if they're in the southern hemisphere? Down here, the moon looks technically the same, but it's 180 degrees* rotated because we're standing upside-down when we look at it. The craters are flipped and the light comes from the opposite side.

*Actually it's only rotated a full 180 degrees at opposite poles, and the exact rotation depends on your latitude. But perfect is the enemy of good etc.

LAC-Tech 2 days ago | parent [-]

Down here, the moon looks technically the same, but it's 180 degrees rotated because we're standing upside-down when we look at it.

We are standing the right way up your northernist simp.

They are the ones who are wrong. Never forget it.

Nition 2 days ago | parent [-]

This is correct of course but we would only confuse the Americans.

JdeBP a day ago | parent [-]

Only the North Americans. (-:

lifthrasiir a day ago | parent | prev | next [-]

Besides from usual solutions like phoon, there is a winning IOCCC entry that exactly does this: https://github.com/ioccc-src/winner/blob/master/2000/natori/...

layer8 2 days ago | parent | prev | next [-]

The match between the ASCII part and the clipping circle breaks when zooming out too much on a desktop browser.

Also, given sufficient character "resolution", ASCII art approximates pixel art. This isn't very far from it, with (on my screen) characters of 3x7 pixels. And would require a 200x78 character terminal to fully display.

tolerance a day ago | parent | prev | next [-]

The astronomical criticism here is warranted. But where are the usual defenders of "art" here to take arms for this project's interpretation of "ASCII Art"?

It looks cool and I imagine it wasn't easy to do. And the color of the moon changes when you reload the page.

D___R___ 2 days ago | parent | prev | next [-]

I remember going to a planetarium as a kid and seeing a booth where you could “buy land” on the Moon (or any other planet) and get a fancy certificate to prove it This project totally brings back that kind of charm, but with a digital twist.

It took me straight back to childhood.

JKCalhoun 2 days ago | parent | prev | next [-]

Very cool.

I want the shadow that progresses across the moon to match reality. A crescent shape that always goes through the north and south poles — that flattens as it approaches a quarter moon....

dandrino_ 2 days ago | parent | prev | next [-]

A gibbous moon shouldn't look like it had a bite taken out of it

divbzero 2 days ago | parent | prev | next [-]

Why is the bottom edge of the ASCII moon a black crescent? Is that a real lunar phenomenon or just a rendering artifact in my browser?

bainganbharta 2 days ago | parent | prev | next [-]

`phoon' exists

burnt-resistor 2 days ago | parent | prev | next [-]

Nice start, but it doesn't look or feel right somehow. Keep improving bit by bit. :thumbs up emoji:

ale42 a day ago | parent | prev | next [-]

we do we need a web site for an ASCII art display? I just want a command I can locally can in my terminal. And if I want it online, just a telnet server ;-)

librasteve a day ago | parent | prev | next [-]

this may help https://raku.land/zef:librasteve/Moonphase

adzm 2 days ago | parent | prev | next [-]

I really wish this had libration and a way to watch it animate through the phases.

wang_li 2 days ago | parent | prev | next [-]

Two observations.

First, there comes a point when it’s not ascii art, it’s just dithering. The use of different colors for the characters goes even further from ascii art.

Second, opening this on my iPad results in a moon with a black crescent on the bottom and an oddly shaped dark green crescent on the left. What star system is this moon in?

dylan604 2 days ago | parent | prev | next [-]

I was really hoping this would have been a CLI command

hungmung a day ago | parent [-]

As others have mentioned, check out phoon.

https://www.acme.com/software/phoon/

jmclnx 21 hours ago | parent | prev | next [-]

Nice!

You can also use xphoon(6) on Linux/*BSD to show a kind of ASCII moon on your root window.

treve 2 days ago | parent | prev | next [-]

Could use an ANSI version!

bombcar 2 days ago | parent [-]

and available over telnet!

julienchastang 2 days ago | parent | next [-]

That would be cool!

flymasterv 2 days ago | parent [-]

https://wttr.in/Moon

_joel 2 days ago | parent [-]

curl https://wttr.in/Moon

supportengineer 2 days ago | parent | prev [-]

finger moon@hostname

2 days ago | parent | prev | next [-]
[deleted]
2 days ago | parent | prev | next [-]
[deleted]
chaoskitty 2 days ago | parent | prev | next [-]

Is it just me, or is the site not working right now? It loads, but it doesn't show the date, and the buttons don't seem to change anything...

supportengineer 2 days ago | parent | prev | next [-]

That's absolutely beautiful!

aussieguy1234 2 days ago | parent | prev | next [-]

Now we need "console moon". I type "moon" in my console, out comes the moon phase with the ascii art.

shagie a day ago | parent [-]

    $ phoon
                       -------.
                         . .   `--.
                         .       . `-.
                        .  @@@@@      `-.
                          @@@@@@@   .    \
                          @@@@@@@       . \.
                       .   @@@@@@@   O      \
                          @@@@@@@@@@     @@@ \
                       . @@@@@@@@@@@@@ o @@@@|
                          @@@@@@@@@@@@    @@  \  First Quarter +
                       o     @@@@@@@@ @@@@    |  0  8:26:49
                           .  @@   . @@@@@@@  |  Full Moon -    
                       .-.     @@@   @@@@@@@  |  7 16:41:45
                       `-'   . @@@@   @@@@  o /
                                @@   .       |
                         .  O    .     o   . /
                               .    .       /
                       _   .      .   .-. /'
                                     `-' /
                         o    O   .   .-'
                              .    .-'
                        .      .--'
                       -------'
    $
https://github.com/Distrotech/phoon

https://formulae.brew.sh/formula/phoon

curl https://wttr.in/Moon

wompapumpum 2 days ago | parent | prev | next [-]

very cool

mlindner 2 days ago | parent | prev | next [-]

What the heck is the shape of that moon. It's completely wrong.

jheriko a day ago | parent | prev | next [-]

[dead]

codezero a day ago | parent | prev | next [-]

[dead]

wompapumpum 2 days ago | parent | prev | next [-]

[flagged]

absurdwebsite 2 days ago | parent | prev | next [-]

Cool project!

CommenterPerson 2 days ago | parent | prev [-]

Man this is a tough crowd to impress! (yeah I know it's off but still).

867-5309 2 days ago | parent [-]

there's no cow jumping over it. author's notepad.exe licence should be revoked