FearNotDaniel 3 days ago

> Current time is determined by a Cloudflare Worker using the request IP

I was scratching my head for a while wondering why you need an IP address to determine the current time… I’m inferring this means geo-locating the IP to determine the client’s time zone and then using that to convert server time to the user’s local time, right?

Makes me think, it would be nice if there was a standard request header to specify preferred TZ for 'local time', just like Accept-Language (which sadly quite a few websites ignore and show me German-language content anyway just because my location is in a German-speaking country).

Still, great work OP :-) now can anyone tell me why Tintin is trending at the moment? Did I miss something? All my feeds seem to be suddenly full of Tintin content right now.

5
pavlov 3 days ago

> “why Tintin is trending at the moment”

The Tintin character entered public domain in many countries in January 2025.

I think this “What a week” image is from a 1930 album (“The Crab with the Golden Claws”), so it’s part of the public domain now and can legally be used for things like this meme generator.

The situation in EU is different though. Hergé died in 1983, and I think his entire oeuvre has 75 years of protection after his death. I’m not 100% sure.

zinekeller 3 days ago

> The Tintin character entered public domain in many countries in January 2025.

Many countries or only US (which uses the publication date)? Considering that the original publication is in Belgium and that almost all countries use the author's death as the benchmark, I am not so sure (even with the rule of the shorter term).

zinekeller 3 days ago

Update: Wikipedia's copyright notes regarding a Tintin file... is definitely not what I've expected https://en.wikipedia.org/wiki/File:Tintin_and_Snowy_from_Tin...

> Also note that this image may not be in the public domain in the 9th Circuit if it was first published on or after July 1, 1909 in noncompliance with US formalities, unless the author is known to have died in 1954 or earlier (more than 70 years ago) or the work was created in 1904 or earlier (more than 120 years ago.)

And links to this footnote (https://guides.library.cornell.edu/copyright/publicdomain#Fo...):

> The differing dates is a product of the question of controversial Twin Books v. Walt Disney Co. decision by the 9th Circuit Court of Appeals in 1996. The question at issue is the copyright status of a work only published in a foreign language outside of the United States and without a copyright notice. It had long been assumed that failure to comply with U.S. formalities placed these works in the public domain in the United States and, as such, were subject to copyright restoration under URAA (see note 10). The court in Twin Books, however, concluded "publication without a copyright notice in a foreign country did not put the work in the public domain in the United States." According to the court, these foreign publications were in effect "unpublished" in the United States, and hence have the same copyright term as unpublished works. The decision has been harshly criticized in Nimmer on Copyright, the leading treatise on copyright, as being incompatible with previous decisions and the intent of Congress when it restored foreign copyrights. The Copyright Office as well ignores the Twin Books decision in its circular on restored copyrights. Nevertheless, the decision is currently applicable in all of the 9th Judicial Circuit (Alaska, Arizona, California, Hawaii, Idaho, Montana, Nevada, Oregon, Washington, and Guam and the Northern Mariana Islands), and it may apply in the rest of the country.

Also, Disney lost here (Accordingly, we reverse the summary judgment in favor of [Disney & co.]). It might not even PD in the US if this is upheld (and it seems so).

pr353n747-0n83 3 days ago

Being public domain decreases the liklihood that I will meme a given piece of IP

kleiba 3 days ago

You could also compute the speech bubbles on the client's side...

berkes 3 days ago

Yes, but it seems

> No JavaScript is sent to the browser.

Is a design goal. I doubt it is possible without JS. Especially inside SVG.

dlazaro 3 days ago

Yes, that was a design goal!

It is probably technically possible to have the time continue to update with just CSS on the client (based on [1]), but the initial time still has to be set server-side.

[1] https://css-tricks.com/of-course-we-can-make-a-css-only-cloc...

lordmauve 3 days ago

I'd argue this is the wrong design goal: correctness is more important.

I'm in the UK but my work PC's Internet exit node is in New York due to enforced use of corporate proxies, so the time shown to me is 5 hours out. Javascript would report the correct timezone.

It is not possible to correctly identify physical location from IP addresses. Not just because of proxies and VPNs and the accuracy of the data: you can go near a border and find your mobile phone connects to a cell tower in a neighbouring country, without even visiting! IP Geolocation is accurate enough for statistics and marketing but probably shouldn't be used for anything user-facing.

l1ng0 2 days ago

I missed a bus because my phone connected to Morocco and updated its clock, when I was on the beach in Spain. Weirdly it was near Málaga, not even that close.

tdeck 3 days ago

I love that this comment is on a novelty meme generator. Imagine if someone was late to their job interview because they were relying on the "What a day, huh?" meme to tell the time.

mNovak 3 days ago

Now this is an interesting idea.. a wall clock display showing the closest time-relevant meme..

rpastuszak 3 days ago

(Thinking aloud) How I'd approach that:

- you could render the page using puppeteer server-side, getClientRect/calc and apply the dimensions to the path, then spit back the markup, OR

- you could use HTML + CSS to render the bubbles

encom 3 days ago

"Tonight: Orange Reddit over-engineers a meme website that any normal person would just make with seven PNG files and getDay()."

latexr 2 days ago

Why would you need seven PNGs? And Reddit also has an orange logo, I don’t think that particular dig works.

rpastuszak 3 days ago

you might be laughing now, but following the spirit of the Orange Website, I'm building a moat with all of that know-how

Cthulhu_ 3 days ago

...is it pedantic if I ask if WASM is considered JS and / or whether it can run without any assistance from JS?

I mean in the 2000s there were a number of other options (flash, silverlight, java, probably more) but that era is behind us, and that would be extra pedantic.

berkes 2 days ago

It's not pedantic and actually a good question, IMO. One that, IMNSHO, isn't discussed enough.

WASM esp in the browser offers a great opportunity to "Do Things Right" that JS in the browser got all wrong in hindsight. I'm not talking about language design, but about what JS can do, access, control, etc: from telemetry to security issues.

The modern DOM apis show how this can be fixed. But there's no way we can fix "the old APIs" which are also used for fingerprinting, tracking, DOSing clients, breaking your back button, annoying scrolling etc. We can see this clearly in how browsers bolt stuff on, like popup blockers early on, and "copy to clipboard only after a human interaction" or "detect too many dialogs" or "detect CPU hogging".

WASM seems to head in the right direction: sandboxing, careful exposure to resources, proper permission systems etc.

But, as a bystander, I don't see much public discussion on how the WASM runtime/sandbox/layers in browsers can and should be shaped to i) fix and avoid mistakes JS made, and ii) while also having better DX and UX in this regard. As mentioned, just a bystander, maybe this discussion is happening, and I just missed it?

RicoElectrico 3 days ago

> Makes me think, it would be nice if there was a standard request header to specify preferred TZ for 'local time',

That's a another data point for fingerprinting, sadly. Not that Chrome would care, but Firefox and Safari teams do, I guess.

snailmailman 3 days ago

I believe this is already a thing? In JS at least

Firefox’s “resist fingerprinting” does a lot of things to stop fingerprinting. One of those things is that it fakes my time zone as being UTC. 99% of of the time I never notice this being an issue. But occasionally I’ll try to pull up the wordle late in the day and get tomorrows puzzle.

FearNotDaniel 3 days ago

True. But pro-privacy is the argument that the server no longer needs to geo-lookup your IP address and find out where you are with much greater accuracy than is needed to determine what timezone you would like dates/times to be displayed in.

account42 2 days ago

This argument holds as much water as saying that Google's Privacy sandbox reduces tracking because it gives advertisers the information they want. The IP is still available so you can assume that malicious websites will use it for whatever nefarious purposes they desire. An additional timezone header does not incentivize them to track you less.

asddubs 3 days ago

well, for almost everyone this information is contained within the IP anyway, though.

FearNotDaniel 3 days ago

In what sense is the user's local time zone "contained within" the IP? The only way I know to get from an IP address (i.e. those four eight-bit integers separated by period signs) to a client-side timezone is first to use a Geo IP lookup table to obtain a physical location (usually, but not always correct), and then use a timezone database to look up the current political timezone in that location. Sure, some server setups will automate this for you so that the already-looked up information is contained within the request object that your chosen language/framework supplies. Is there something I've missed about those four eight-bit integers somehow directly encoding information that specifies the user's timezone, or did you mean something different?

asddubs 3 days ago

I don't really understand what point you're trying to make. Are you just arguing semantics about the choice of words I used for the fun of it, or do you actually disagree with something I said?

eknkc 3 days ago

It’s available on the client side where most of the fingerprinting happens using JS.

And I feel like this is a lost cause at this point. Just assign every one of us a unique online ID and be done with it.

latexr 3 days ago

I’d appreciate if you didn’t try to bring everyone down with you, just because you have personally given up.

This recent HN submission is relevant.

https://news.ycombinator.com/item?id=43083151

lgas 3 days ago

It could be opt-out/opt-in and then all six users that care about privacy could do as they wished.

timlyo 3 days ago

Sadly that almost makes things worse, if it's off then it's a data point that helps to id privacy conscious people.

oneeyedpigeon 3 days ago

Just use a default (GMT) for people who don't want to disclose it.

account42 2 days ago

Timezone: GMT with an IP that says something different is still more information than the IP alone.

oneeyedpigeon 3 days ago

I assumed something like this header already existed because it's such an obvious need, but...

> All HTTP date/time stamps MUST be represented in Greenwich Mean Time (GMT), without exception.

according to [rfc2616](https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3....). Presumably that makes a lot of awkward conversions unnecessary, but a separate TZ header would be a great addition.

FearNotDaniel 3 days ago

Yeah that HTTP date format thing is kind of orthogonal - the same document slightly later explicitly says it's talking about the format used within HTTP messages/headers and not relevant to user-facing display within the page content. Which in that case makes a lot of sense because it's effectively saying "use UTC everywhere".

jraph 3 days ago

It could be a get parameter, with a picker allowing you to select your timezone.

FearNotDaniel 3 days ago

That would be an absolutely awful user experience, unless there was also a way to default to knowing what the user's actual local timezone is without them having to manually pick it from a list of the 38 or so currently in use. I mean, you could try to persuade browser builders and site developers that this new get parameter is a standard that is automatically added to all requests by all browsers, and honoured if the site developers feel like it, but that's kind of messy and effectively doing the same job that request headers were designed to do.

account42 2 days ago

You could have the user create an account which remembers which timezone they picked on signup.