158

UPDATE: I just sent out emails to collect addresses from the lucky users getting these watches — be on the lookout for those, and try to fill it in the next two weeks! :)

On occasion of our anniversary celebrations, we offered some cheese boards a while back. If you were late for that, though, no sweat! You’re just in time for another limited edition super special swag contest!

This is the bit where you go It’s about time, isn’t it?” To which I’ll reply with “well... yes, it is about time! How d’you guess?!?”

So, if you want one of these with our logo on it:

enter image description here

...then all you need to do is something in which time is the centerpiece! As happened last time around, puns are encouraged, obviously.

You can:

  • Build a time-machine (ok, it doesn’t need to be functional).
  • Write a song or a poem about time (hopefully, something a bit more cheerful than what Pink Floyd did).
  • List a few things you'd drop into a time capsule — either to be used as they usually are, or... to be sent to the past with your time-machine?
  • Write the story of a life-time.

...or anything else you can find the time to do... in time before the deadline. The top 25 entries, as calculated by net upvotes received (not aggregate score, down-voting won't help you win!) will receive this timely package. Whatever it is, you have to be able to submit it as an answer to this question. Links to videos are accepted, however they must be of your own creation and the video must remain available. If either stops being true, your submission will be removed. Also, any code or work of art produced must also be of your own creation.

So, as with the previous context, any format you can think of is allowed: text, images, crayons on newspaper, LEGO, popsicle sticks — as long as you make it temporal... or I guess intemporal or timeless stuff are also accepted...? Anyway, you get the gist!

The Rules

  1. You can post as many entries as you want in good faith as long as they are in line with our terms of service, acceptable use policy and code of conduct. This is also a reminder that all user-contributed content falls under our CC-BY-SA 3.0 license.

  2. Contest is open from 2018-11-27 to 2018-12-27, final entry must be received at or prior to 23:59:59 UTC on the last day. Contest will then be locked for historical reference.

  3. Employees are eligible.

  4. You must be a user in good standing on Meta Stack Exchange during the entirety of the contest, or your entry may be disqualified. Let's have some good, clean fun.

  5. Winners will be notified via email within 10 days of the contest closing. As we will be ordering these based on demand (they're not cheap!), you'll need to allow approximately 30 days for delivery. You'll need to provide us your shipping information privately, in accordance with our privacy policy.

  6. If you win but don't care for watches, we'll give you a selection of other items of approximate value. We want you to enjoy the prize.

  7. Void where contests are prohibited.

Get to it! Time is of the essence!

closed as off-topic by Nog Shine, PeterJ, Nathan Tuggy, Ward, hat Dec 29 '18 at 6:57

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "The problem described here can no longer be reproduced. Changes to the system or to the circumstances affecting the asker have rendered it obsolete. If you encounter a similar problem, please post a new question." – Nog Shine, PeterJ, Nathan Tuggy, Ward, hat
If this question can be reworded to fit the rules in the help center, please edit the question.

  • 38
    Phew - posted just in time! – Tim Post Nov 27 '18 at 16:23
  • 36
    entry to be completed in 6-8 weeks – Glorfindel Nov 27 '18 at 16:27
  • 9
    @rene You could build a time machine out of socks if you really wanted to. – Tim Post Nov 27 '18 at 16:31
  • 25
    I don't know if i have time for this... – Pikoh Nov 27 '18 at 16:32
  • 66
    @TimPost Requesting a name change to Time Post. – Rand al'Thor Nov 27 '18 at 16:32
  • 18
    Umm... watch your comments, y'all! – Shadow Wizard Nov 27 '18 at 16:36
  • 19
    All these puns make me wanna clock someone – Erin B Nov 27 '18 at 16:39
  • 7
    Can anyone do something with Jon Skeet's most upvoted answer? – user392547 Nov 27 '18 at 17:05
  • 12
    I don't know why this was not posted yet: winterbash2018.stackexchange.com – MEE the sneaky user Nov 27 '18 at 18:04
  • 52
    I find these contests very nice. However, the answers shoulds be displayed ramdonly, otherwise you are privileging those who got here first and those who have already received lots of votes, since I dont think everybody would check all pages to see what was sent...=( – carla Nov 28 '18 at 1:19
  • 6
    I really don't have the time for this. – Dragonthoughts Nov 28 '18 at 12:49
  • 6
    Clarified the post to explicitly call out for original stuff, @Mari-LouA; thought it was clear enough, but I guess making it outright explicit doesn't hurt :) – JNat Nov 28 '18 at 14:09
  • 13
    The hours on the "swag" go 1, 1, 1, 4, 5, 6... That's a weird watch! – Cris Luengo Nov 29 '18 at 7:06
  • 8
    I guess we'll get emails about our watches in 6-8 weeks? – Zach Saucier Jan 2 at 17:21
  • 6
    @JNat curious to know, who are the winners? – Div Jan 3 at 10:11

130 Answers 130

18

StackOverClock


Final Result

enter image description here enter image description here enter image description here

You can download both models (v1 and v2) on Thingiverse. I have also added a model of just the StackOverflow logo in case someone wants to print it.


Well, I finally found some time, used some of my (disappointing) skills in 3D design and made something for this contest.

And here it is:

enter image description here

It's a 3d model of Stack Overflow logo with a (somewhat)clock on top that would be (hopefully!) printable.

A view of it in Simplify3d:

enter image description here

I still haven't tried to print it, but i will and promise to edit and upload some pics here if it finally gets a decent printing :)

Two more things:

  • My initial thought was to make it functional by adding a clock kit on top. But I must first find one that meets my requirements, buy it, and change the design accordingly...

  • Upload it to Thingiverse so anyone may download and print it at home.

Both points heavily rely on me fighting my procrastination powers, so I wouldn't bet on me,but who knows... :)

EDIT 1

Version 2.0, ready to accomodate an old clock I found at home.

enter image description here

Edit 2

Images of the first printed model. It's half the size the final model would be, and have some printing problems (should have printed it in another orientation) but makes a nice desktop piece :)

enter image description here

Name of the project by @JackNavaRow,thanks for the idea!

17

On Mi Yodeya, over the years, we have built up a novel body of time-related Judaism literature. Fortunately for fans of Judaeo-horology everywhere1, one of the United States' two annual government-mandated time-mutilation events frequently occurs around one of Mi Yodeya's favorite times of year: Purim Torah season (you know, that time in early Spring when the HNQ fills with titles from Mi Yodeya that don't make sense2). This coincidence has afforded us the opportunity to produce a vital collection of questions and answers, which I will excerpt and adapt here, in the style of Mi Yodeya Publications:

Daylight Saving Time in Jewish Law

A clock missing an hour, with a smiley and question marks

Daylight Saving Time - forward or backward? (2012)

Seth J asked: Halachically speaking, do I have to set my clocks forward one hour in the spring, or can I set them back one hour (this will give me two hours more in my day than everyone setting their clocks forward one hour)?

Alex ruled: The latter course of action is not recommended. If you are two hours ahead of everyone else, then that will lead to great confusion, so that those will be "bad hours" - and we specifically pray (in Sabbath morning prayers) ויציל נפשותינו מן השעות הרעות, that Hashem should save our souls from the bad hours.

So the proper way is indeed to set them forward one hour. In this way, you will be קונה עולמו בשעה אחת (buying the entire world with a single hour).

Seth J challenged: No, I'd be two hours behind. Don't you see how great that would be?

Alex concluded: Then that would be even worse. Jeremiah (7:24) castigates those who ויהיו לאחור ולא לפנים - are behind rather than ahead.

Announcing the clock change in English? (2014)

Isaac Moses demanded: It is well-known that the age-old, widespread, and correct practice is to announce the molad on the Sabbath preceding a new month specifically in the holy language of Yiddish. In contrast to this, in many synagogues I've attended, on the Shabbat preceding a clock change, the date, time, import, and humorously supposed implications on Sunday morning services attendance of the clock change are routinely announced in the profane language of ***ish the vernacular, e.g. English. The former comes 11 - 12 times per year, while the latter comes only twice, so the latter is clearly holier. In addition, as the clock changes involve contractions and expansions of time itself, similar to the spatial distortions that radiated from the mishkan, they must be extremely holy.

What possible excuse could there be is the source for making this holy announcement in a profane language?

Monica Cellio explained: This isn't about the Holy Tongue itself; it's about holding close to the original language. Of course for anything arising from torah this language is Hebrew, so it is proper to announce the molad in that tongue. (While some might confuse Hebrew and Yiddish, I am surprised that you did. I therefore conclude that you have begun your Purim celebration early and that this was an accident. I will try to simplify the rest of this answer to take your current state into account.)

Daylight Saving [sic] Time3, on the other hand, does not -- shockingly -- arise from torah. Why we therefore do it at all is a separate question, beyond the scope of this answer. But given that we do, we tie its announcement to the language of its enactment, which in the US is English, the language used in the legislation.

One could argue that the US legislation is derived from German practice and that we should therefore announce it in German, or perhaps even Yiddish. However, we do not recognize the authority of foreign kings nor bow down to them in any way, so announcing in German would raise issues of marit ayin.

Of course, Jews living in other countries that have clock-alteration laws should use the language of their legal decrees, and if this is a practical matter for you be sure to consult your local timekeeper (which is, I guess, how you got into this mess in the first place, oops).

Seeking texts of all prayers associated with the clock change (2016)

Isaac Moses requested: In previous years, we've discussed the basic commandment status of changing clocks around this time of year as well as the proper language for announcing the change. Given that it's a commandment and that it is invariably announced in the synagogue, I assume that there must be associated blessings and liturgy. Has anyone come across any prescribed prayers, in English, Hebrew, Yiddish, Judaeo-Arabic, vel sim.?

Shalom invented: We need to write some liturgy for this:

  • SHa'on! Na, ELOKEINU, SHAo'n-NA!
  • SHa'on! Na, BOR'EINU, SHAo'n-NA!
  • SHa'on! Na, ME'ORER YESHENIM, SHAo'n-NA!

  • In the merit of Rebecca, who had to water all the camels while still daylight, give us more time!

  • In the merit of Joshua, who kept the sun standing so the people could fight ... give us more time!

  • In the merit of Nakdimon ben Gurion, who got the debts paid in time ... give us more time!

  • In the merit of the manna, that would melt precisely at the hour that the sun, not the shade, was hot -- give us more time!

  • In the merit of Rabbi Akiva, who lost his alarm clock [rooster] but accepted that God has a plan ... give us more time!

  • In the merit of the Ashkenazim who thought that coffee was kitniyos ... give us more time!

  • In the merit of Cain, to whom God granted a non-hour -- lo sha'ah -- give us more time!

  • In the merit of Pharaoh, who said the Jews should not have a false hour -- al yish'u bedivrei shaker -- give us more time!

What are we supposed to do about losing an hour of Purim this year? (2017)

Isaac Moses fretted: This year (5777/2017), those of us who live in the US4 face a special conundrum: we will be moving the clocks forward on Purim itself! If I understand this correctly, that means that we're going to lose an hour of Purim, which seems to directly contradict the rule "When Adar enters, Joy increases".

What modifications to the practices of Daylight Saving Time and/or Purim practices are recommended for resolving this conundrum?

Double AA reassured: No modifications are needed. The Sages already were aware of this issue and accounting for it was even incorporated in the original enactment of Purim, as it says in the Talmud (Megillah 2a):

בזמניהם" זמנים הרבה תקנו להם"
"In their times" (Esther 9:31) -- multiple times were enacted for it.

It is thus perfectly Lekhatchila to celebrate Purim in multiple time systems.

Isaac Moses satirized: The Sages decreed that, in accordance with the rule of "כל הגורע - מוסיף" ("Whoever subtracts must add."), whenever we are forced to subtract an hour from Purim night, we must make it up by extending Purim day by an extra hour.

Later authorities recommended that we devote this extra hour to enhancing the true essences of the four commandments of Purim, as follows:

  • Megillah: Appoint a respected member of the community to stand next to the Reader and, using a stopwatch, strictly ensure that every call of the graggers fulfills the most stringent opinions for minimum duration. Make sure that he is empowered to call for a repeat gragging whenever the last gragging was questionable.

  • Mishteh (Meal): Spend your extra hour pregaming heavily, so that you can enter the Mitzva meal with the appropriate confusion between it and the banquet of Achashveirosh.

  • Mishloach Manot (Messenger Gifts) : Two words: שכר הליכה (reimbursement for distance traveled). Ensure that your delivery route requires as many U-turns and backtracks as possible, preferably all within the most busy crossroads in the neighborhood. An app that helps design a maximally-complicated route is available thanks to a collaboration of the Zomet Institute and UPS.

  • Maseichot (Masks)5: This year, ensure that not only every member of your family is dressed up consistently with the theme introduced in your Mishloach Manot, but dress up your pets, car, house, and nearby streetlights as well.


1. At least, everywhere where the relevant authorities have decreed that everyone needs to mess with their clocks twice a year.

2. The HNQ regularly features titles from Mi Yodeya that don't make any sense, but that's usually because half the words are some sort of lashon hakodesh. During Purim Torah season, the titles often seem off despite being in English.

3. We see here the power of marketing. Surely nobody believes that any daylight is being saved; it is merely being shifted. And that's important, because if you could actually make daylight, or save it away for later, you would be into the space of sorcery and you would be in trouble, because only HKBH creates light as we affirm every morning. So even if they are actually saving daylight somehow, they should keep quiet about it to avoid dragging us into their evil magical ways.

4. OK, Most of the US.

5. In the times of the Temple, the fourth commandment was Matanot Le-evyonim - Monetary Gifts to Poor People. Nowadays, however, common practice is to not spend time on this commandment on Purim, and we observe Maseichot in its stead.

  • This is brilliant. applause – Monica Cellio Nov 28 '18 at 18:46
  • @MonicaCellio Well, it's all CC-By-3.0-appropriated from people such as yourself. :) – Isaac Moses Nov 28 '18 at 18:47
  • 1
    I meant the idea of compiling it in the style of our publications. the content is great too, of course. :-) – Monica Cellio Nov 28 '18 at 18:48
  • 1
    @MonicaCellio "When you've got a hammer ..." – Isaac Moses Nov 28 '18 at 18:49
16

I am Möoz and I wrote this next week.

  • 16
    I upvoted it last week. – Nog Shine Nov 28 '18 at 6:25
  • 2
    @NogShine I will have upvoted it by the end of last week. – Meta Bug Wizard Nov 28 '18 at 15:09
  • 4
    I upvoted it just after the votes were counted. – reirab Nov 28 '18 at 21:48
  • 3
    I upvoted it in all timelines but one. – Dennis Williamson Nov 28 '18 at 21:59
  • Thanos is coming anyway :D – Vikas Yadav Nov 29 '18 at 14:50
  • No, I am Muze! Vote for this Muze! – user312109 Nov 30 '18 at 16:56
  • @Muze I'm you from the future. – Möoz Dec 2 '18 at 23:21
  • 1
    The future is now. – user312109 Dec 2 '18 at 23:43
  • 7 days ago I saw this a day before 8 days later – Pikachu the Watermelon Wizard Dec 18 '18 at 23:05
15

What about an animated history of StackOverflow? Link: https://bfontaine.net/so.gif

This is a gif showing the evolution of SO’s front page from the beginning to nowadays. I made it using Selenium, Python, Imagemagick and of course the awesome Internet Archive project. There’s roughly 5 weeks between frames except for some fetch errors (e.g. no CSS) I removed.

The code uses the WayBack Machine’s API to fetch snapshots URLs then opens them in Headless Chrome using Selenium and take a screenshot of each one of them.

Update: I wrote a blog post explaining how I made the gif.

Update: also made one for Google and one for Twitter.

13

I hung up my clock on the wall. However, the clock then suffered a tragic malfunction, causing odd things to happen to time...

To fix this, I set out to build a replacement clock... or at least the shape of one. However, due to the odd time... things ended up a little strange. Here, it's probably best if you watch for yourself (links to YouTube when you click on the image):

YouTube link


I am very bad at video editing, so... blame me for bad things. Apparently, having a great camera doesn't stop you from videoing badly. All shot on my GoPro HERO7 black.

13

Here's a stopwatch . . . for traveling near a black hole.

As you come closer and closer to a massive body, time slows down. Anyone who's seen Interstellar may recall how drastic time dilation can be near, say, a black hole. So I made a stopwatch (based on one written in Python 3 by Jorgen Cederberg) that ticks at different speeds, representing an observer at a certain distance from a black hole.

You can pick the mass of the black hole, as well as the distance to it. Those are given in solar masses and astronomical units, respectively. Enter your chosen values, click the two "Set" buttons, and you're ready to go! As an example, if you set the mass to 15 solar masses (like the black hole in Cygnus X-1) and set the distance to 0.0000004 astronomical units, time should pass slower by approximately a factor of 2.

Error handling to be added soon, because picking distances less than the Schwarzschild radius will obviously break the program. Other improvements to come, too, hopefully. Let me know if there are any absurd bugs.

from tkinter import *
import time
import numpy as np

G = 6.674*10**(-11) #Newton's gravitational constant, SI units
c = 3*10**(8)       #Speed of light, m/s
m = 2*10**(30)      #Solar mass, kg
au = 1.5*10**(11)   #Astronomical unit, meters

class StopWatch(Frame):                                                    
    def __init__(self, parent):
        Frame.__init__(self, parent)
        self.parent = parent
        self.frame = Frame(self.parent)
        self._start = 0.0        
        self._elapsedtime = 0.0
        self._running = 0
        self.masses = IntVar()
        self.masses.set(0) # solar masses
        self.distance = IntVar()
        self.distance.set(4*10**(7)) # in astronomical units
        self.timestr = StringVar()

        self.start = Button(self.parent, text='Start', command=self.Start)
        self.start.grid(row=2,column=1, sticky=E+W+N+S)
        self.stop = Button(self.parent, text='Stop', command=self.Stop)
        self.stop.grid(row=2,column=2, sticky=E+W+N+S)
        self.reset = Button(self.parent, text='Reset', command=self.Reset)
        self.reset.grid(row=2,column=3, sticky=E+W+N+S)
        self.quit = Button(self.parent, text='Quit', command=root.destroy)
        self.quit.grid(row=2,column=4, sticky=E+W+N+S)
        self.mass_label = Button(self.parent, text='Set mass of black hole:', command=self.ChangeMass)
        self.mass_label.grid(row=3,column=1,columnspan=2,sticky=E+W+N+S)
        self.mass = Entry(self.parent)
        self.mass.grid(row=3,column=3,columnspan=2)
        self.dist_label = Button(self.parent, text='Set distance to black hole:', command=self.ChangeDistance)
        self.dist_label.grid(row=4,column=1,columnspan=2,stick=E+W+N+S)
        self.dist = Entry(self.parent)
        self.dist.grid(row=4,column=3,columnspan=2)
        self.makeWidgets()

    def factor(self):
        """The time dilation factor at a given distance from the black hole"""
        if self.distance.get() == 0:
            r = 4*10**(-7)
        else:
            r = float(self.distance.get())
        return np.sqrt(1-2*G*m*float(self.masses.get())/(au*r*c**2))

    def makeWidgets(self):                         
        """Set up the stopwatch."""
        self.l = Label(self.parent, textvariable=self.timestr)
        self._setTime(self._elapsedtime)
        self.l.grid(row=0,column=1,columnspan=4)

    def _update(self): 
        """Update the displayed time."""
        self._elapsedtime = time.time() - self._start
        self._setTime(self._elapsedtime)
        self._timer = self.after(50, self._update)

    def _setTime(self, elap):
        """Set the time string to Minutes:Seconds:Hundreths."""
        elap = elap*self.factor()
        minutes = int(elap/60)
        seconds = int(elap - minutes*60.0)
        hseconds = int((elap - minutes*60.0 - seconds)*100)                
        self.timestr.set('%02d:%02d:%02d' % (minutes, seconds, hseconds))

    def Start(self):                                                     
        """Start the stopwatch, if not running."""
        if not self._running:            
            self._start = time.time() - self._elapsedtime
            self._update()
            self._running = 1        

    def Stop(self):                                    
        """Stop the stopwatch, if running."""
        if self._running:
            self.after_cancel(self._timer)            
            self._elapsedtime = time.time() - self._start
            self._setTime(self._elapsedtime)
            self._running = 0

    def Reset(self):                                  
        """Reset the stopwatch."""
        self._start = time.time()         
        self._elapsedtime = 0.0    
        self._setTime(self._elapsedtime)

    def ChangeMass(self):
        """Set the mass to the value inputted by the user."""
        self.masses.set(self.mass.get())

    def ChangeDistance(self):
        """Set the distance to the black hole to the value inputted by the user."""
        self.distance.set(self.dist.get())

root = Tk()
app = StopWatch(root)
root.mainloop()
  • Forgive me for asking what must seem a stupid question but why isn't there a run code snippet? I only see the code, not a stopwatch. – Mari-Lou A Dec 6 '18 at 23:12
  • @Mari-LouA As far as I'm aware, Python isn't supported by Stack Snippets. – HDE 226868 Dec 7 '18 at 2:25
  • Well, what can I do to see your timepiece? Is there a website I can use instead? – Mari-Lou A Dec 7 '18 at 7:44
  • @Mari-LouA I'm not sure what your options are; I'll look into it. – HDE 226868 Dec 7 '18 at 17:47
  • If you're interested in winning the prize, you had better hurry. Time waits for no man...I don't think I am the only person who cannot see your entry; even a screenshot would be helpful. – Mari-Lou A Dec 10 '18 at 8:18
13

Sorry it took me such a long time...

So, I had trouble working out what I could do with the theme of time. Once I had an idea it took me a week to try it out. My first attempt failed so I had to spend another full week trying again.

Without further ado - I grew cress to form the words 'Stack Exchange':

enter image description here (Click to watch the YouTube video)


Process Breakdown

Failed Attempt 1

So the first one I tried I made in a large pyrex dish (I wasn't the most popular guy when I filled our best dish with compost) and buried the letters underneath the surface of the soil: enter image description here

enter image description here

I mounted a GoPro on a Cymbal stand (because I haven't got a tripod apparently) and set it to take an image every 60 seconds: enter image description here

Unfortunately, the cress seeds forced the letters up through the compost which meant you couldn't even tell what the cress had grow into:

enter image description here

So after 7 days growing this batch, and with the deadline fast approaching, I decided to go back to basics and grow it on kitchen paper instead.

Attempt 2

For the second attempt, I used less seeds and ensured that the paper was wet at all times. I know that the good folk from Graphic Design SE may be upset that the letters aren't that evenly spaced and I'm using an upside-down V for an A and a sideways M for an E but it kind of works.

The final time-lapse consisted of 8,948 images totalling 19.5 GB.

Some things I learnt:

  • Use a more powerful lamp at night
  • Too many seeds make the letters raise and twist (check out the video and watch the letter 'C' in 'Stack').
  • It's incredibly easy to bump the camera and change the shot.
  • If I didn't have a fixed focus camera it would have been easier to frame the shot better and get less table in.
  • 1
    This is pretty neat. I like that you've included the failed attempt - do you have a video of the first attempt? I'm sure it's a metaphor for something... – Kobi Dec 22 '18 at 7:02
12

watch time go faster*:

watch -n 0.1 --precise date '+%Y-%m-%d\ %T.%N'

*(New! Improved accuracy thanks to @DennisWilliamson! :)

  • add --precise – Dennis Williamson Nov 28 '18 at 22:02
  • @DennisWilliamson I read the manpage about --precise but I can't visually see the difference. Can you see a difference? – tudor Nov 29 '18 at 0:57
  • You're likely to see the hundredths digit change very infrequently with --precise in this particular use. See also this abuse of watch. – Dennis Williamson Nov 29 '18 at 1:06
  • 1
    Ah! Now I understand. The current explanation in the manpage is very confusing. This should be in the manpage instead: --precise: Normally, watch runs the command *after* interval seconds. This option makes each start of the command begin *on* the interval if possible. (based on the link you sent). – tudor Nov 29 '18 at 1:09
  • Downvoting in a friendly competition? Really? That's not very nice. :( – tudor Dec 7 '18 at 21:16
12

Four years and nine months ago (Feb, 2014), I posted something about time in Code Golf (link). It was an answer to a challenge for creating an analogue clock program (I am the author of the question too).

This is yet more timely because it happened a few years ago and is not bought back via the time-machine.

And, timely it used Java 8, which was the newest version at the time and it also bought new features to the language, some of them that I used.

I'll quote it here entirely:

Java 8

I made a clock that changes its colors accordingly to the hour of day, showing local time. As the time passes, it will slowly change it colors, using brighter colors at day and darker colors at night.

The window is resizable and the clock will resize automatically to whatever size you choose.

Further, if the user adjusts the system clock or if a daylight time change happens, the clock will automatically reflect that.

There are two forms to run it:

  1. Running the ClockDemo file, i.e. java clock.ClockDemo. This will open a window and you will see the clock there.

  2. Running the ClockSave file, i.e. java clock.ClockSave filename width height [HH:mm:ss]. This will just save the clock in a PNG file with the given file name, width and height. The clock will be draw with the given time, or if that is omitted, with current time. For example, if you run it as java clock.ClockSave clock.png 600 500 12:38:24 it will save the clock in a 600x500 image in a clock.png file and the clock will be showing 12:38:24 AM. Use hours in the 00-23 interval.


Screenshots

Here are some screenshots and generated files:

00:36:50 AM:

00:36:50 AM

02:38:51 AM:

02:39:51 AM

06:42:13 AM:

06:42:13 AM

11:15:28 AM:

11:15:28 AM

05:02:37 PM:

05:02:37 PM

07:11:30 PM:

07:11:30 PM

09:29:34 PM:

09:29:34 PM


Source code

I separated the source in five different files in a package called clock.

Also available at GitHub.

ClockDemo.java

package clock;

import java.awt.EventQueue;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;

public class ClockDemo {
    public static void main(String[] args) {
        EventQueue.invokeLater(ClockDemo::runIt);
    }

    private static void runIt() {
        final JFrame j = new JFrame();
        j.setTitle("JClock");
        final JClock clock = new JClock(new CoolPaint());

        j.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                clock.stop();
                j.dispose();
            }
        });

        j.add(clock);
        j.setBounds(20, 20, 600, 500);
        j.setVisible(true);
        clock.start();
    }
}

ClockSave.java

package clock;

import java.io.IOException;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;

public class ClockSave {
    public static void main(String[] args) {

        // Too much arguments.
        if (args.length < 3 || args.length > 4) {
            System.out.println("Bad usage: Should be java clock.ClockSave filename width height [HH:mm:ss]");
            return;
        }

        // Parse the image size.
        int h, w;
        try {
            w = Integer.parseInt(args[1]);
            h = Integer.parseInt(args[2]);
        } catch (NumberFormatException e) {
            System.out.println("Bad usage: Should be java clock.ClockSave filename width height [HH:mm:ss]");
            return;
        }

        // Parse the intended time.
        LocalTime time;
        if (args.length == 4) {
            try {
                DateTimeFormatter df = DateTimeFormatter.ofPattern("HH:mm:ss");
                time = LocalTime.parse(args[3], df);
            } catch (DateTimeParseException e) {
                System.out.println("Bad usage: Should be java clock.ClockSave filename width height [HH:mm:ss]");
                return;
            }
        } else {
            time = LocalTime.now();
        }

        // Save to an image.
        try {
            new CoolPaint().saveClock(w, h, time, args[0]);
        } catch (IOException e) {
            System.out.println("Error on image output: " + e.getMessage());
        }
    }
}

JClock.java

package clock;

import java.awt.Graphics;
import java.awt.Graphics2D;
import java.time.LocalTime;
import java.time.temporal.ChronoField;
import javax.swing.JComponent;

public class JClock extends JComponent {
    private static final long serialVersionUID = 1L;

    private final CoolPaint paint;
    private final Object lock;
    private Thread updater;

    public JClock(CoolPaint paint) {
        this.paint = paint;
        this.lock = new Object();
    }

    private void runClock() {
        int lastTime = -1;
        try {
            while (isRunning()) {
                Thread.sleep(10);
                int t = time();
                if (t != lastTime) {
                    lastTime = t;
                    repaint();
                }
            }
        } catch (InterruptedException e) {
            // Do nothing, the thread will die naturally.
        }
    }

    private int time() {
        return LocalTime.now().get(ChronoField.SECOND_OF_DAY);
    }

    private boolean isRunning() {
        synchronized (lock) {
            return updater == Thread.currentThread();
        }
    }

    public void start() {
        synchronized (lock) {
            if (updater != null) return;
            updater = new Thread(this::runClock);
            updater.start();
        }
    }

    public void stop() {
        synchronized (lock) {
            updater = null;
        }
    }

    @Override
    public void paintComponent(Graphics g) {
        paint.paintClock(getWidth(), getHeight(), time(), (Graphics2D) g);
    }
}

ClockPaint.java

package clock;

import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.time.LocalTime;
import java.time.temporal.ChronoField;
import javax.imageio.ImageIO;

public interface ClockPaint {

    public void paintClock(int width, int height, int seconds, Graphics2D g2);

    public default void paintClock(int width, int height, LocalTime time, Graphics2D g2) {
        paintClock(width, height, time.get(ChronoField.SECOND_OF_DAY), g2);
    }

    public default void paintClock(int width, int height, Graphics2D g2) {
        paintClock(width, height, LocalTime.now(), g2);
    }

    public default void saveClock(int width, int height, String fileName) throws IOException {
        saveClock(width, height, LocalTime.now(), fileName);
    }

    public default void saveClock(int width, int height, LocalTime time, String fileName) throws IOException {
        saveClock(width, height, time.get(ChronoField.SECOND_OF_DAY), fileName);
    }

    public default void saveClock(int width, int height, int seconds, String fileName) throws IOException {
        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
        paintClock(width, height, seconds, (Graphics2D) image.getGraphics());
        String f = fileName.endsWith(".png") ? fileName : fileName + ".png";
        ImageIO.write(image, "png", new File(f));
    }
}

CoolPaint.java

package clock;

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.GradientPaint;
import java.awt.Graphics2D;
import java.awt.RadialGradientPaint;
import java.awt.RenderingHints;
import java.awt.geom.AffineTransform;
import java.awt.geom.Point2D;

public class CoolPaint implements ClockPaint {

    private static final int SECONDS_IN_MINUTE = 60;
    private static final int SECONDS_IN_HALF_HOUR = 30 * SECONDS_IN_MINUTE;
    private static final int SECONDS_IN_HOUR = 60 * SECONDS_IN_MINUTE;
    private static final int SECONDS_IN_12_HOURS = 12 * SECONDS_IN_HOUR;

    private static final int AM_0_00 = 0;
    private static final int AM_3_00 = 3 * SECONDS_IN_HOUR;
    private static final int AM_4_30 = 4 * SECONDS_IN_HOUR + SECONDS_IN_HALF_HOUR;
    private static final int AM_7_30 = 7 * SECONDS_IN_HOUR + SECONDS_IN_HALF_HOUR;
    private static final int AM_12_00 = 12 * SECONDS_IN_HOUR;
    private static final int PM_4_30 = 16 * SECONDS_IN_HOUR + SECONDS_IN_HALF_HOUR;
    private static final int PM_7_30 = 19 * SECONDS_IN_HOUR + SECONDS_IN_HALF_HOUR;
    private static final int PM_9_00 = 21 * SECONDS_IN_HOUR;
    private static final int PM_12_00 = 24 * SECONDS_IN_HOUR;

    private static final Color BLACK = new Color(0, 0, 0);
    private static final Color DARK_GRAY = new Color(32, 32, 32);
    private static final Color DARK_BLUE = new Color(0, 0, 128);
    private static final Color PURPLE = new Color(128, 0, 128);
    private static final Color CYAN = new Color(0, 255, 255);
    private static final Color YELLOW = new Color(225, 225, 0);
    private static final Color PALE_YELLOW = new Color(224, 224, 64);
    private static final Color RED = new Color(255, 0, 0);
    private static final Color GREEN = new Color(0, 255, 0);
    private static final Color LIGHT_BLUE = new Color(128, 128, 255);
    private static final Color SKY_CYAN = new Color(48, 224, 224);

    private static final Color[] COLOR_CYCLE = {
        DARK_GRAY, LIGHT_BLUE, RED, PALE_YELLOW, GREEN, SKY_CYAN, LIGHT_BLUE, DARK_GRAY
    };

    private static final int RADIAL_PERIOD_LENGTH = PM_12_00 / COLOR_CYCLE.length;
    private static final String[] ROMAN = {"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X", "XI", "XII"};

    private static class Painter {
        private final int width;
        private final int height;
        private final int seconds;
        private final int radius;
        private final Graphics2D g2;
        private final int cx;
        private final int cy;
        private final int secondColorIndex;
        private final int secondsInPeriod;
        private final Color pointersAndNumbersColor;

        public Painter(int width, int height, int seconds, Graphics2D g2) {
            this.width = width;
            this.height = height;
            this.seconds = seconds;
            this.radius = Math.min(width / 2, height / 2);
            this.cx = width / 2;
            this.cy = height / 2;
            this.g2 = g2;
            g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
            this.secondColorIndex = seconds / RADIAL_PERIOD_LENGTH;
            this.secondsInPeriod = seconds % RADIAL_PERIOD_LENGTH;

            int startIndex = (secondColorIndex + COLOR_CYCLE.length + 5) % COLOR_CYCLE.length;
            int endIndex = (secondColorIndex + COLOR_CYCLE.length + 6) % COLOR_CYCLE.length;
            Color color1 = COLOR_CYCLE[startIndex];
            Color color2 = COLOR_CYCLE[endIndex];
            this.pointersAndNumbersColor = mixColors(color1, color2, 0, RADIAL_PERIOD_LENGTH, secondsInPeriod);
        }

        private int mixColorComponent(int startComponent, int endComponent, double position) {
            int difference = endComponent - startComponent;
            return startComponent + (int) (difference * position);
        }

        private Color mixColors(Color startColor, Color endColor, int startTime, int endTime, int currentTime) {
            double normalized = (currentTime - startTime) / (double) (endTime - startTime);
            return new Color(
                    mixColorComponent(startColor.getRed(), endColor.getRed(), normalized),
                    mixColorComponent(startColor.getGreen(), endColor.getGreen(), normalized),
                    mixColorComponent(startColor.getBlue(), endColor.getBlue(), normalized));
        }

        private Color upperBackgroundColor() {
            if (seconds < 0) throw new IllegalArgumentException();
            if (seconds <= AM_3_00) return BLACK;
            if (seconds <= AM_4_30) return mixColors(BLACK, DARK_BLUE, AM_3_00, AM_4_30, seconds);
            if (seconds <= AM_7_30) return mixColors(DARK_BLUE, CYAN, AM_4_30, AM_7_30, seconds);
            if (seconds <= AM_12_00) return CYAN;
            if (seconds <= PM_4_30) return CYAN;
            if (seconds <= PM_7_30) return mixColors(CYAN, DARK_BLUE, PM_4_30, PM_7_30, seconds);
            if (seconds <= PM_9_00) return mixColors(DARK_BLUE, BLACK, PM_7_30, PM_9_00, seconds);
            if (seconds <= PM_12_00) return BLACK;
            throw new IllegalArgumentException();
        }

        private Color lowerBackgroundColor() {
            if (seconds < 0) throw new IllegalArgumentException();
            if (seconds <= AM_3_00) return mixColors(BLACK, DARK_BLUE, AM_0_00, AM_3_00, seconds);
            if (seconds <= AM_4_30) return mixColors(DARK_BLUE, PURPLE, AM_3_00, AM_4_30, seconds);
            if (seconds <= AM_7_30) return mixColors(PURPLE, YELLOW, AM_4_30, AM_7_30, seconds);
            if (seconds <= AM_12_00) return mixColors(YELLOW, CYAN, AM_7_30, AM_12_00, seconds);
            if (seconds <= PM_4_30) return mixColors(CYAN, YELLOW, AM_12_00, PM_4_30, seconds);
            if (seconds <= PM_7_30) return mixColors(YELLOW, PURPLE, PM_4_30, PM_7_30, seconds);
            if (seconds <= PM_9_00) return mixColors(PURPLE, DARK_BLUE, PM_7_30, PM_9_00, seconds);
            if (seconds <= PM_12_00) return mixColors(DARK_BLUE, BLACK, PM_9_00, PM_12_00, seconds);
            throw new IllegalArgumentException();
        }

        private void paintBackground() {
            Point2D p1 = new Point2D.Double(width / 2, 0);
            Point2D p2 = new Point2D.Double(width / 2, height);
            g2.setPaint(new GradientPaint(p1, upperBackgroundColor(), p2, lowerBackgroundColor()));
            g2.fillRect(0, 0, width, height);
        }

        private RadialGradientPaint colorOnCycle(Point2D center, float radius) {
            Color baseColor1 = COLOR_CYCLE[(secondColorIndex + COLOR_CYCLE.length - 1) % COLOR_CYCLE.length];
            Color baseColor2 = COLOR_CYCLE[secondColorIndex];
            Color baseColor3 = COLOR_CYCLE[(secondColorIndex + COLOR_CYCLE.length + 1) % COLOR_CYCLE.length];
            Color baseColor4 = COLOR_CYCLE[(secondColorIndex + COLOR_CYCLE.length + 2) % COLOR_CYCLE.length];

            Color start = mixColors(baseColor1, baseColor2, 0, RADIAL_PERIOD_LENGTH, secondsInPeriod);
            Color end = mixColors(baseColor3, baseColor4, 0, RADIAL_PERIOD_LENGTH, secondsInPeriod);
            float index2 = (RADIAL_PERIOD_LENGTH - secondsInPeriod) / (float) RADIAL_PERIOD_LENGTH / 2;
            float index3 = 0.5f + index2;
            float[] positions = index3 == 1.0 ? new float[] {0.0f, index2, 1.0f}
                    : new float[] {0.0f, index2, index3, 1.0f};
            Color[] colors = index3 == 1.0 ? new Color[] {start, baseColor2, end}
                    : new Color[] {start, baseColor2, baseColor3, end};

            return new RadialGradientPaint(center, radius, positions, colors);
        }

        private void paintClockArea() {
            Point2D center = new Point2D.Double(width / 2, height / 2);
            g2.setPaint(colorOnCycle(center, radius));
            g2.fillOval(width / 2 - radius, height / 2 - radius, radius * 2, radius * 2);
        }

        private double pointerRevolutionsToRadians(double angle) {
            return Math.toRadians((450 + angle * -360) % 360.0);
        }

        private void paintPointers() {
            double hAngle = pointerRevolutionsToRadians(seconds % SECONDS_IN_12_HOURS / (double) SECONDS_IN_12_HOURS);
            double mAngle = pointerRevolutionsToRadians(seconds % SECONDS_IN_HOUR / (double) SECONDS_IN_HOUR);
            double sAngle = pointerRevolutionsToRadians(seconds % SECONDS_IN_MINUTE / (double) SECONDS_IN_MINUTE);

            g2.setStroke(new BasicStroke(4.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
            g2.drawLine(cx, cy, (int) (cx + Math.cos(hAngle) * radius * 0.55), (int) (cy - Math.sin(hAngle) * radius * 0.55));
            g2.drawLine(cx, cy, (int) (cx + Math.cos(mAngle) * radius * 0.85), (int) (cy - Math.sin(mAngle) * radius * 0.85));
            g2.setStroke(new BasicStroke(1.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
            g2.drawLine(cx, cy, (int) (cx + Math.cos(sAngle) * radius * 0.85), (int) (cy - Math.sin(sAngle) * radius * 0.85));
        }

        private void paintNumbers() {
            Font originalFont = g2.getFont();
            double amplification = (int) Math.max(radius * 0.08, originalFont.getSize()) / (double) originalFont.getSize();
            AffineTransform at0 = AffineTransform.getScaleInstance(amplification, amplification);
            Font amplifiedFont = originalFont.deriveFont(at0);
            g2.setFont(amplifiedFont);
            FontMetrics fm = g2.getFontMetrics();

            for (int i = 1; i <= 12; i++) {
                double angle = pointerRevolutionsToRadians(i / 12.0);
                double textInclination = Math.toRadians(30 * i);
                AffineTransform at = AffineTransform.getRotateInstance(textInclination);
                at.scale(amplification, amplification);
                Font derivedFont = originalFont.deriveFont(at);
                g2.setFont(derivedFont);
                int pixelsOffset = fm.stringWidth(ROMAN[i]) / 2;
                int xPlot = (int) (cx + Math.cos(angle) * radius * 0.9 - pixelsOffset * Math.cos(textInclination));
                int yPlot = (int) (cy - Math.sin(angle) * radius * 0.9 - pixelsOffset * Math.sin(textInclination));
                g2.drawString(ROMAN[i], xPlot, yPlot);
            }
            g2.setFont(originalFont);
        }

        private void paintDots() {
            for (int i = 1; i < 60; i++) {
                if (i % 5 == 0) continue;
                double angle = pointerRevolutionsToRadians(i / 60.0);
                g2.fillRect((int) (cx + Math.cos(angle) * radius * 0.9) - 1, (int) (cy - Math.sin(angle) * radius * 0.9) - 1, 3, 3);
            }
        }

        public void paintClock() {
            paintBackground();
            paintClockArea();

            g2.setColor(pointersAndNumbersColor);
            g2.setPaint(pointersAndNumbersColor);
            paintNumbers();
            paintDots();
            paintPointers();
        }
    }

    @Override
    public void paintClock(int width, int height, int seconds, Graphics2D g2) {
        new Painter(width, height, seconds, g2).paintClock();
    }
}
11

One of the big problems with time travel is navigation. Even the very best time machines do not have the precision of a good Swiss timepiece. After you land you can, at best, know when you are within 6-8 weeks -- and within 6-8 decades is more likely. Those entry-level time machines you get at Target? 6-8 centuries -- you're better off staying at home until you can afford the proper tools!

Time travel is inherently uncertain -- so how do you know when you are? We had a question on Worldbuilding abut this, which I later wrote about in our blog, Universe Factory. Sure, everybody says "use the stars", but do you know how to do that? Have you ever used a sextant and a set of star charts? Or are you going to hope for radio signals and that your laptop battery holds out long enough for you to map the sky? (For long-distance time travel, by the way, you might be able to use the moon. I learn all kinds of neat things on Worldbuilding.)

One thing's for sure, though: even small errors can be very dangerous, depending on when you're traveling to. A song by Three Weird Sisters, based on a book by Connie Willis, illustrates this well; here's an amateur recording of me performing it at a science-fiction convention.

  • 2
    So this is what 1254 looks like? – Redwolf Programs Nov 27 '18 at 23:36
  • 2
    "One of the big problems with time travel is navigation..." I thought you were going to make this whole thing a joke about how left-nav is the missing key to making time travel possible. – scohe001 Nov 28 '18 at 22:38
  • @scohe001 oh, that would have been good! I was focused more on the when and the 6-8 somethings and missed that opportunity. – Monica Cellio Nov 29 '18 at 1:31
9

A song, you say. I don't do lyrics. ¯\_(ツ)_/¯

So I wrote a piano quintet instead.

Whodathunk that would so much time, I'd be way too late to the party.
But now that it's done I might as well post it anyway.

YouTube video thumbnail

MIDI synthesized with MuseScore. Sorry guys, but I definitely don't have anywhere enough time left to buy a cello and learn which way to hold it.

  • 2
    I almost thought you weren't going to do what I was expecting from the beginning, but patience paid off (2:43). :-) – Monica Cellio Dec 11 '18 at 0:36
9

Here's my freehand Time Machine:

Time Machine - Freehand

8

I thought I'd ask SE about this one like last time:

Guilty Panda

But when he couldn't help, I didn't have any second ideas...

8

Argh! It's too late, a hundred particpants have submitted their entries before me. I think I should use a Time Machine and travel back in time and write something for the contest. Speaking of which, this reminds me of my good friend. (Not Josh, another one).

Once upon a time, there lived a fun-loving programmer who was very fond of vintage artifacts and antiques (For the time being, let's call him Tinker). He had a huge collection of antiques comprising gramophone records, wall clocks, jars, carpets, and needless to say, also watches. He collected a lot of them. He loved visiting antique exhibitions and he traveled to many places in search of them. Then one day, he came across an exhibition where vintage and antique watches from the late 19th century were being auctioned. He decided to participate and successfully bid for a pocketwatch complete with chain. It had a weak lume but something was engraved underneath. When observed keenly, the instructions "Handle with care. This side up" could be read. Those lines didn't make much sense for Tinker. However, he was happy with his antique pocketwatch.

One evening, Tinker was sitting in his basement (his usual workplace, also plays Mine craft on his phone, keeps his keys and loses) holding his pocket watch. Tinker's 4 year old kid came there jumping in joy (kids are always happy.). He came and sat in his father's lap, played He played with his father. In this process, he pulled out the pocket watch and started playing with it. Tinker was watching it. He was mindful of the caution written on it to handle with care but little one's butter fingers... the watch slipped out of his hands and fell down. Tinker was shocked. He guessed the watch would shatter into pieces given that it is a century old. BUT much to his surprise, there was not even a scratch on the watch. He picked it up on the floor. It's as good as new. He threw it down intentionally this time. No change. If keeping it safe is not handling with care, then what is!?

Tinker observed it with his new glasses. The watch had a coating of amorphous metal. How on Earth could a hundred year old watch made of It is a locket watch which can be opened into two halves. Under the clock, there's a tiny hidden chamber. There were some traces of letters. They were unclear when seen with glasses or magnifying glass. What to do next? Looked like some mystery puzzle for him. He watched some good old treasure hunt movies. When seen at specified angle under infrared glasses, tiny letters started appearing.

wend to a lodging whither thither art wild ducks and geese
Mice eating rotten cheese
Filled with dangerous bugs and (r)ants
Men like bots and robot like men
Teams of unicorns and ponies
taketh ten steps in a row
thee shalt reacheth a lodging whither everything overflow

Tinker called his colleague Josh (also my good friend) to help him crack the puzzle. Both set on an adventure. They thought hard what the place could be. They wandered in forests, places where fantasy creatures are believed to be seen. Finally, they reached a special place in the woods. It was a dense forest that moon light couldn't touch the ground. But in the middle of the forest, at a very specific place, they found a flowing stream forming a waterfall from a hill which finally leads to a large pond. This place alone seemed very special apart from the whole forest. It is believed that fantasy creatures visit the place in special times of the year. They reached the pond. Took ten steps towards the waterfall. Voila, it was a secret den. Waterfall and creepers were covering it. They entered the secret den and were eagerly waiting for something to happen.

During the dawn of the twilight,
at which hour the horologe is between 6-8
visage the travelling lamp and turn t right
thou shalt see a light
alloweth t glow and shine
doth not overturn, 'r thee shalt multiply into nine

This time the watch was with Josh. He did as directed. A glow came from the watch. After turning the watch, wormhole opened which sucked them into it. There was a slight overturn and they reached a different dimension R'lyeh. It had much advanced civilization and technology. Everything on that dimension is similar like us but the technology was advanced and people are named in differently. Things happening there affect us too. Time passed very slowly there. 1 day = 6-8 weeks (Unfortunately, our friends were not aware of it). Josh and Tinker visited Quack Overflow office and found out it was their anniversary. They saw different monuments in that dimension. After spending a couple of days there, they tried to turn the watch again and return back by taking help from citizens of R'lyeh. But that didn't work like before. When they checked, THERE WASN'T ONE JOSH BUT NINE. Tinker then understood the warning Handle with care on the watch. As the people there are named differently, Josh turned into Shog. There was only place for two to travel through the worm hole. If there was no overturn, the watch would take them back and forth in time. But this overturn made them go to other dimension. So, Shog the ninth and Tinker reached Earth safely and other Shogs were stuck in R'lyeh. The outlet opened in Josh Shog's Kitchen. Finally, they reached home safely. Both got new colourful diamonds along with that watch when they reached back home.

But that wasn't the end. The time on the Earth passed quickly than the dimension where both went. Hence, the tasks given to them went on as usual because changing past of someone will affect the future too and viceversa. People who remembered Josh started calling Shog9. The tasks given to Tinker like writing announcements and swag posts for anniversary were pending as usual. After waiting, that was taken up by another employee JNat. He reached his basement just in time and posted a comment under swag past as if nothing happened:

Phew - posted just in time!


So, I shall borrow this time turning watch from Tinker or Shog and go back into time. (Tinker still uses this watch to bring back his lost keys). Then write an answer to this question. See ya till then.

  • I don't understand what is meant by "It has a weak lume" Did you mean "It had a faint/worn out face" (clocks and watches have "faces")? – Mari-Lou A Dec 2 '18 at 9:44
  • 2
    @Mari-LouA Lume is short for luminous fluorescent watches which glow in the dark. en.wikipedia.org/wiki/Lume Weaker lume means the numbers were not glowing when kept at dark. – Nog Shine Dec 2 '18 at 9:47
  • 1
    @Mari-LouA No, I don't mind the edits. The lume was there on an antique watch because the makers of the antique traveled in time and put lume later. That is why there is amorphous metal coating on the watch. – Nog Shine Dec 3 '18 at 8:01
8

So, a little bit about me, Stack Overflow, and time...

3rd top all-time datetime tag answerer, with over 700 questions answered

screenshot

2nd top all-time timezone tag answerer, with over 1000 questions answered

screeenshot

• Helped author and/or curate the tag wikis for timezone, dst, datetime, and date

• Authored some of the top rated, canonical answers in this category, including:

• Outside of Stack Overflow:

But alas, when it boils down to why do I do all of these things, it's not for the fancy Internet points, or because I'm some kind of narcissist, but because of something Stack Overflow sums up quite nicely in my user profile:

Screenshot - Impact: 9.4m people reached

So, thank you, Stack Overflow.

7

Time Thyme

Thyme

  • Clever. You could expand, Rosemary in thyme. – James Nov 30 '18 at 19:28
7

A quick game using the fastest answers on Stack Exchange

I made a game using quick questions from English.SE, Movies&TV, or SciFi.

  • Answer questions:
    how to answer
  • You have 90 seconds to answer as many as you can - but you must answer faster than the actual question was answered! fast answers
  • All answers are short, usually single word. Either way, don't bother with spaces or punctuation.
  • Click ↵Enter to skip a question.
  • Keyboard required.

Click on Run code snippet to give it a try:

html,body {height:100%;background:#ddd;margin:0;padding:0;}
<iframe style="width:100%;height:97%;box-sizing:border-box;border:solid 1px gray;" src="https://kobikobi.gitlab.io/stackoverflowabouttime/"></iframe>

source code | play without iframe | acknowledgement

  • 1
    Whoa... this is sure winner in "Time Spent vs. Chance to get Swag" category. ;-) – Shadow Wizard Dec 20 '18 at 7:05
  • @ShadowWizard - Well, I can only hope they won't consider only the votes, that sort of breaks down when you have >30 answers... 😐 – Kobi Dec 20 '18 at 7:23
  • I'm afraid they will, rules are rules... (but expect compensation in the form of shiny rep, when the time comes. ;)) – Shadow Wizard Dec 20 '18 at 7:24
  • 1
    A very late answer about fast answers... Have an upvote. – dim Dec 20 '18 at 10:52
  • Oh no! I'm missing an 'e' in "You've answerd {n} questions!" and I can only fix it in 10 hours... – Kobi Dec 27 '18 at 5:49
6

Once upon a time, on a n-sided1 polygon world held up by a stack of stacks balanced on the top of a great unicorn2, flying around in outer space...

Chris: They've been at this for weeks now! Surely they must be finished whatever it is they're doing? What are they doing, anyway?

A Tinkering Bell: Sssh Chris, the Conjuring Magicians have finished redesigning a spell to go back in time for some reason - they didn't tell me what they'd use it for, but they just finished 24 and 52 seconds ago and they're now casting it, so we'll find out soon

Chris: Wait a moment, 24 and 52 seconds ago, how does that work?

The Journeyman Geek: Who knows? It's probably... Oh wait, they've vanished... Just days after leaving us to take care of this place. Ah.


Exactly 365.25 years earlier, in a hot dessert:

Shog the ninth: Tim! It's all your fault again. I told you, you said 'dessert' when you should have said 'desert'. sighs at the typical-ness of the situation Y'know, this reminds me of the time when I was a young lad...

interrupting Tim: Yes, that's right, it's always my fault. Maybe if you got some sand when it said 'something yellow' instead of some custard, we'd be over there, next to that massive pyramid, where we wanted to be, instead of next to this river of, well, custard.

Catija: Don't worry, it's only a narrow river of custard - we can run over.

after wasting more time, the group successfully runs across the river of custard

Grace: OK, that wasn't too bad now, was it? All we need to do now is touch the topstone...

Grace reaches out to point towards the tiny shiny metal tip of the pyramid. In doing so, everything stretches, then rotates *with a BOOM and flash of eniratco3

HELLO. I WASN'T EXPECTING TO SEE ANY OF YOU HERE FOR A FEW CENTURIES.

Jon: Oh dear, this wasn't supposed to happen, we must have done something else wrong. Maybe we were supposed to skydive towards the pyramid?

AHH, THE PYRAMID AGAIN WAS IT? NOTHING TO WORRY ABOUT. I'M TOLD THAT IT'S NOT VERY WELL MADE AND OCCASIONALLY CAUSES TIME TO ROTATE. YOU'LL BE HOME IN SIX AND SIMULTANEOUSLY, EIGHT WEEKS, IF TIME REMEMBERS TO RIGHT ITSELF. IT FORGOT LAST TIME, YOU SEE.

Robert: ?

YES, YOU HEARD ME RIGHT. IT'S PROBABLY QUANTUM. OR MAYBE RELATIVITY.


Present day, in a (presently) relatively unfashionable arm of the Milky Way, on a planet called Earth:

Robert, reading a letter: 'Don't travel back in time, it's not worth it.' signed Robert, 2028. What a strange letter. They've even managed to forge my signature.


1. for all n < 86400

2. Postulated to be of the species unicornis galactica

3. Unlike octarine, eniratco is a very visible colour. Unfortunately, no-one has ever been able to determine anything about it, except that it exists4

4. In theory, at certain times, at least

6

A fiery sun rising, with a plane rising above

I took this soon after I first got my DSLR, and it has remained one of my favourite shots. It evokes a number of emotions each time I look it, and one of those is an awe of Time:

  • A fiery sun rising in a wreath of clouds; marking a new day: The passage of the sun is where all timekeeping started.
  • A puny little plane rising above it, ferrying around people in a rush: So many people worried about the passage of time.
  • Time's own tricks: While I stood mesmerized by the scene, time passed by. By the time I could take a decent shot, the plane was well to the side, whereas I would have liked to see that rising plane right above that rising sun.
  • A photo is an instant frozen in time. Ten years, twenty years, fifty years down the line, I would still like to look at my photos and take a trip back in time.
  • Above all: It reminds me that some of your favourite photos are not so much about skill or technique, but about being at the right time and the right place.
  • 1
    Great photograph, muru. I'm one of those people who is always taking pictures of sunrises, sunsets, full moons, etc. :D This one is so nice I want to try to paint it! – Bread Dec 2 '18 at 13:07
  • 1
    @Bread if you do paint it, please do share! Those clouds around the sun would look so so beautiful when painted. – muru Dec 2 '18 at 16:04
6

you don’t need that watch – when you can ask stackoverflow what time it is

  • And it's not TB because the number of disctinct time in a day are well define! Just a question you want 5 or 6 significant figures for tenth of second? Do we have to handle timezone? Leap second? – Drag and Drop Dec 7 '18 at 7:26
5

This is my second answer. This time I thought I'd take a minute to output a few graphs showing what time of the month/day/hour/minute people post the most on Stack Overflow.

Month of the year1:

By Month

Animated by month per year

Day of the month:2

enter image description here

Day of the week:3

enter image description here

Hour of the day:4

enter image description here

Minute of the hour:5

enter image description here

Second of the minute:6

enter image description here

If we take the highest points from all the graphs, we get March 19th at 2:59:08 PM on a Wednesday, which would next occur in 2020. If we take the lowest points, we get December 31st at 2:07:35 AM on a Sunday, which would next occur in 2023.

You can run this query for any Stack Exchange site you wish here: Simply change MONTH to whatever date/time part you wish.

SELECT DATENAME(MONTH, posts.CreationDate) AS [Month], COUNT(*) AS ct
  FROM posts
  --WHERE OwnerUserId = ##UserId##
  GROUP BY DATENAME(MONTH, posts.CreationDate)
  ORDER BY DATENAME(MONTH, posts.CreationDate) ASC

Remove the -- before the WHERE if you want to see how your stats compare.


1 I left out 2008 and 2018 in the animated version since there are not 12 months of data available.

2 I would expect the 31st to have less, but why the 1st?

3 It looks like some Stack Overflow users take a break on the week-ends.

4 Who would have known - people still sleep at night; though I'm not sure why we should see this much difference due to time zones.

5 I can't think of any very logical reason why people post less right after the hour strikes and somewhat after the half-hour either - perhaps they feel it is time to get back to work?

6 This just looks messy - I guess it's what one should expect? It's a variation of less than 1%, so we probably can't infer too much.

7 You can blame the jQuery usage on the Data Stack Exchange team.

5

And Now for Something Completely Different

Here is my entry for this timely event. It's a simple poem-style riddle. Of course, the answer should be quite obvious in this context. Nevertheless, I hope you'll enjoy it!

Can you find all the puns and double meanings?

The one I obey, my dear commander
Keep on running I will not slander
For I know you will follow my lead
Call me in if you are in need

If one commands the other will follow
That's the deal, one has to swallow
Either way, I rely on you
We kiss goodnight and start anew

Mighty Dictator of all places
followed by all human races
Watch over all the new born lives
earn the fruit of fertile strifes

Endless love, you never disclaim
nor would you repel and never blame
Unbribable Protector, punish me
and I will follow tacitly


Hint

Take your time

5

Time flies! Let us not forget what brought us this contest in the first place — Stack Overflow's 10th Anniversary!

It's about time for Stack Overflow to be named TIME Magazine's Person Website of the Year!

So, introducing Stack Overflow's TIME cover ...

Image

  • 1
    No free-hand underline? – DCOPTimDowd Nov 29 '18 at 17:12
4

For a single moment in time, C++ had no questions for me to worry about:

C++ tag page with 0 questions returned

Alas, the moment was fleeting and all of the questions returned.

4

Mulletmobile

Recently I got this car. Yah, it's a 3rd Gen Camaro. Here's a picture of it:

enter image description here

It's red and sporty. Well, not so sporty right now, 'cause there's no engine in it. It's in various stages of disrepair around the garage. I mean, here's the rods and pistons:

enter image description here

And then there's the heads:

enter image description here

Over in the back is the block:

enter image description here

And the rest of the jumbled mess is out in front of the car itself:

enter image description here

There's still one part I need in order to get it put all together:

enter image description here

Yah, that's right ... a Flux Capacitor. I've been waiting for-EVA for O'Reilly's to get it back in stock ... it's been on back order since ... well, since McFly had a Delorean! Yah, the cat's out of the bag ... I'm makin' me a Mulletmobile Time Machine ... you all are jealous now!

Yah, I still need to figure out the whole deal with my car not being stainless steel, but I'll get it ...

  • 4
    Just 3D-print the flux capacitor... – Zaid Nov 29 '18 at 6:42
4

It's about time I wished Stack Overflow a Happy 10th Birthday!

It's pretty timely that this contest has appeared. I had just enough time to put this together, because I'm salaried and I don't have to punch a timecard. Otherwise my timer surely would have gone off by now.

Stack Overflow, with its glittering uptime, has helped countless people, daytime or nighttime -- anytime. It's been a real timesaver. Someone has a question, and usually, in a wibbly wobbly timey wimey way, it gets answered.

Don't get too sentimental -- it's the users that time and again contribute that make Stack Overflow what it is.

Time Magazine Honors Stack Overflow's 10 Years

Now I'm going back to watching the java tag.

4

To His Coy Asker

with apologies to Andrew Marvell

Had we but world enough and time,
This coyness, asker, were no crime.
I would sit down, and think which Y
Thou meanst, and pass my editing eye.
Thou by the Indian Ganges’ side
Shouldst rubies find, then by the tide
Of downvotes wouldst complain. I would
Defend you e'en before the flood,
And you'd refuse — you're no milquetoast —
To edit or improve your post.
My tries to glean your intent 'd grow
Vaster than empires and more slow;
An hundred years should go to raise
The quality of turn of phrase;
Two hundred to adorn each clause
With comma, colon, other pause.
An age at least to every part,
And the last age should show your heart.
For, asker, you deserve this state,
Nor would I care at lower rate.

But at my back I always hear
Closers, deleters, hurrying near;
And yonder all before us lie
Deserts of vast /dev/nullity.
Thy question shall no more be found;
Nor, in its marble vault, shall sound
My emendations; then worms shall try
That long-preserved inclarity,
And your quaint honour turn to dust,
And all my efforts into rust;
The bitbucket's a gracious host,
But none, I think, do there read posts.

Now therefore, while the youthful hue
Sits on thy post like morning dew,
And while thy willing soul transpires
At every pore with instant fires,
Now improve your post while you may,
And now, like querying bird of prey,
Rather at once thy time devour
Than languish in his slow-chapped power.
Or, better, ask it first of all
So it for edits has no call,
And thus avoid voters' rough strife
And Stack Exchange's excising knife:
Thus, though we cannot make our sun
Stand still, yet we will make him run.

4

Your mission should you choose to accept it is to name that movie. There is no time limit, and this message will not self destruct. Two words, separated by the line break.

Starting out obvious:

It passes, flies, crawls. First letter.
Balding chronologist that was a friend to the Great. 9th letter.
Rode the winged horse. 6th letter.
Born out of war, but a bit of a boar. 8th letter.
Bit of a drunk but always the life of the party. 5th letter.

Harold met Harald at Stamford and one man got emasculated. 6th letter.
Was he the old woman or was he the fly? It's Poetic Prose. 4th letter.
Fourth in line of land settled six by six. 6th letter.
The younger of Brother vs Brother. 4th letter.
Mayan midwife. 1st letter.
Chaotic but chromatic saltwater. 5th letter.
Patricide, complex relationship with his mother, first letter of his famous answer.

From that to this is a short leap.

_ _ _ _ / _ _ _ _ _ _ _

4

My really not so real story from long long ago

Disclaimer: -"इस कहानी के सभी पात्र और घटनाएं काल्पनिक हो सकती हैं, यह किसी भी व्यक्ति, विदेशी, भूत या घटना से संबंधित हो सकती है या नहीं। अगर यह किसी भी व्यक्ति या गैर-व्यक्ति के लिए समान है, तो इसे चमत्कार कहा जाएगा।"

"All the characters and incidents of this story might be imaginary, it may or may not be related to any person, alien, ghost or incident. If it's similar to any person or non-person, then it will be called a miracle."

Plot: It was a stormy day when my girlfriend was going on a long drive with her ex-boyfriend turned best friend and I was enjoying tea with hot Pakora and then somebody knocked and to my shock it was my girlfriend's ex-boyfriend's girlfriend. Her car broke down near my house and she wanted to make a call as her phone battery was down, she was calling his boyfriend for help but my girlfriend picked the call instead and said he is driving can't pick the call and she cut.

Then an idea struck in my mind on time that my neighbor is an expert in car repair and he can help. So we both went to his house with my polka-dot umbrella. But unluckily he was not there and it was his ex-wife's turn to take care of there kids Inu, Minu and Tinu. She told us to wait till she called ex-husband to check if he can come but then the doorbell rings an to our surprise her ex-byfriedn was there with a cricket bat, Inu and Minu started jumping to see him as he was there cricket coach too and his car also break down and he also came to get help from his ex-girlfriend's ex-husband. But her ex-husband didn't pick the call and we thought to play the game Rock Paper Scissors Lizard Spock and I was almost winning and the doorbell ring again and this time it was her ex-husband's ex-girlfriedn came to ask for sugar as she wanted to make tea. But they didn't have sugar so she came with me to my house to get sugar and Tinu also came with us to get the ball from my backyard.

I got my polka-dot umbrella and Tinu took his rainbow umbrella and we started towards my house but then she slipped on a banana peel Tinu was eating and she started crying in pain. Luckily doctor stay walking distance so we went there and to our surprise, her ex-husband and his new girlfriend were already having the party with the doctor and his son's boyfriend. He checked her and said it's nothing major just a small sprain, just take some rest and this painkiller. I and Tinu also stayed with her for a time being and then doctor's doorbell ring and it's none other than it was my girlfriend with her ex-boyfriend with a cricket bat.

We all were shocked what's even happening, she was sweating and had anger in her eyes and a cricket bat but on the other hand, her ex-boyfriend was calm, relaxed and smiling. Before we can ask then anything we see Doctor's son is back with his ex-boyfriend and told us all that my neighbor's house is on fire and my girlfriend's ex boyfiredn's girlfriend is stuck there with my neighbor's ex-boyfriend and everyone else escaped already.

Fire brigade comes and the Fire engine driver was none other than doctor's son's ex-boyfriend's brother and also the boyfriend of Inu, Minu and Tinu's babysitter. Inu started crying and he tries to comfort him and others safely evacuate my girlfriend's ex boyfiredn's girlfriend and my neighbor's ex-boyfriend. Suddenly Inu sees the bat in my girlfriend's hand to be the same bat there mother's ex-boyfriend and their coach brings a few minutes back but before he can say anything his father came and repaired car of my girlfriend's ex-boyfriend's girlfriend and then everybody also starts going back to there houses. My girlfriend also decided to stay at my house while his ex-boyfriend left with his girlfriend. I was trying to close the door but a cricket ball was coming between the door and I was not able to close it, I bend to remove it and see Tinu standing opposite to be shouting look behind.................

That was the first part of 10-part short story without any time traveling robots, sparkling vampires, and unicorns.

Thansk for your time.

3

time to win some swag
hundred people got here first
now need time machine

  • 1
    Made it short since ain`t nobody got time to read all these answers >.< – carla Nov 28 '18 at 1:55

Not the answer you're looking for? Browse other questions tagged .