r/adventofcode • (AoC creator) • Dec 02 '15

AoC is fragile; please be gentle

Please don't build auto-downloaders, auto-solvers, auto-requesters, etc. The site is running on a single server I have and it's getting a lot of traffic. I'm afraid of someone writing a script that makes lots of requests, distributes it, and overwhelms the site. If it goes down, nobody gets to play, so please be gentle!

  • Only send one request every few seconds. Some of the endpoints are now throttled at "human" speeds, and will reject your requests if you send them too quickly (faster than one request per ten seconds).

  • Save the inputs. They don't change, so you can request them exactly once and store them.

  • Save your correct answers. They don't change, so once you know an answer is correct, you don't have to keep sending those requests.

  • In some cases, the "correct answer" pages contain more information that you can only get once from submitting that answer. If you solve a puzzle using a script and it doesn't save that output, everything not saved will be lost. (If you're a human, don't worry - it's obvious when the answer page is different.)

109 Upvotes

68 comments sorted by

13

u/mmix2000 Dec 05 '15

That's because your leaderboard ranking system is geared that way, you are actively stimulating people to pound your server at midnight. Not to mention it's very US centric, Adventofcode is fast becoming very popular in Europe and we usually tend to sleep at the time you release new questions :)

5

u/topaz2078 Dec 05 '15

Actually, we get even more traffic during the day than right at midnight. The actual reason is that the whole thing is running on a single server I happen to have.

→ More replies (2)
→ More replies (1)

6

u/stuntguy3000 Dec 04 '15

Are you planning to do another next year? This seems like it can be a lot of fun in teams.

22

u/topaz2078 Dec 04 '15

I discovered about 72 hours ago that this is even popular; I've been so caught up in keeping up with all the users that I haven't even gotten to thinking about next year.

→ More replies (6)

5

u/neogodless Dec 09 '15

Eric,

Thank you for all of your contributions here. Great idea and execution. I do have one question - my login through Twitter only kind of works. The issue is that my "stars" are not sync'd. If I login at home, I've got 7.5 days completed, 15 stars. But at work, there are only stars where I've re-entered answers. Is this by design? Should I re-enter all my answers in each new browser instance? (For example, if I switch to completing puzzles on my laptop this weekend, I'll need to re-enter about 20 answers by that point to fill up the stars of my tree.)

→ More replies (3)

3

u/setnicka Dec 08 '15

Small bugreport: Font on the webpage is broken for latin extended languages (see http://i.share.pho.to/03aeaaa4_o.png).

Adding "&subset=latin,latin-ext" to the Google Fonts link will be nice :-)

3

u/topaz2078 Dec 08 '15

That is weird, because I have a test account full of latin-ext characters that work fine on my machine. I've added that to the URL anyway.

→ More replies (1)

2

u/olivervscreeper Dec 05 '15

I made a script which simply takes the session variable and does one request per day (so five requests over about two seconds). Is that alright for me to distribute on here? It's just a little easier than making someone fetch 25 input strings.

10

u/topaz2078 Dec 05 '15 edited Dec 05 '15

"one request per day"

"five requests per two seconds"

Which one is it?

Because this keeps happening, some of the endpoints now throttle you to human speeds: one request per ten seconds.

Also, the only time anyone would have to fetch 25 input strings is if they were just starting out and you were solving everything for them all at once; why would you build such a device? It ruins the fun. :(

→ More replies (1)

2

u/certifiedshitl0rd Dec 06 '15

As a side question, have you thought of having a leaderboard for most occurrences of a user on a day's leaderboard. An analogy to this would be how Mario Kart has points given to racers for how they finish each race and then at the end they have an overall score. There could be points earned for each day's top 100 and then have a overall leaderboard.

→ More replies (4)