« first day (346 days earlier)      last day (3216 days later) » 

12:00 AM
RELOAD!
[Cardshifter/Cardshifter] 2 issue comments.
[Hosch250/Rubberduck] 4 commits. 2794 additions. 1164 deletions.
[rubberduck-vba/Rubberduck] 2 commits. 1952 additions. 579 deletions.
[Zomis/StackSTV] 2 commits. 20 additions. 12 deletions.
Saved Cardshifter/Cardshifter
Saved Cardshifter/cardshifter.github.io
Saved Cardshifter/extra-resources
Saved ckuhn203/Rubberduck
Saved Hosch250/MeekSTVVoteCounter
Saved Hosch250/ResxEditor
Saved Hosch250/ResxTranslationHelper
Saved Hosch250/Rubberduck
Saved Phrancis/GroovySwingPostgres
Saved rubberduck-vba/Rubberduck
Saved ShearOfDoom/Cactus
Saved skiwi2/BusinessSoftware
Saved StackExchange/StackExchange.DataExplorer
Saved Vannevelj/RoslynTester
Saved Vannevelj/VSDiagnostics
Saved Vogel612/JavaBot
Saved Vogel612/TranslationHelper
Saved Zomis/BrainDuck
Saved Zomis/CodeReview-Shield
Saved Zomis/Duga
Saved Zomis/Minesweeper-Analyze
Saved Zomis/Prosit
Saved Zomis/Rubberduck
Saved Zomis/StackSTV
Saved Zomis/SudokuSharp
Saved Zomis/test
 
 
2 hours later…
1:55 AM
wow
seeing a bug on android where a for:in loop is giving me the values out of order
 
2:39 AM
weird
 
 
5 hours later…
8:08 AM
hey
 
 
2 hours later…
10:14 AM
@bazola Are you using a List or a Set? Or what exactly are you looping through?
 
11:23 AM
@Duga @SimonAndréForsberg what is this "saved" thingie? new feature about catching up with downtimes?
 
@Vogel612 it's only a notification that the daily statistics are reset for the repos. Later though I will make sure so that if @Duga is unable to post in chat for any reason, the daily stats won't be reset. (it has happened a couple of times that stats are reset without any chat messages posted)
 
@SimonAndréForsberg its a Map
looping through the keySet() and adding the value to a Table
 
@bazola that explains it. A HashMap does not keep any order of elements. If you want to retain order, use LinkedHashMap, but I don't know if that's fully supported in GWT.
 
ah that is right, i forgot about LinkedHashMap
I've used it in one of the other games so I believe it is supported on GWT
thanks :)
 
good good
So many things gets so much easier in programming simply by using the right data structure
 
11:37 AM
@SimonAndréForsberg by using the right data structure not using PHP and JavaScript
 
yeah, well, the right tool for the job also helps of course
 
12:04 PM
Hey everyone!
 
hey @Marc-Andre
 
Do you still like your job @skiwi ?
 
@Marc-Andre Yeah
But I don't like layout stuff!
I just want a text box with wordwrap
 
[Zomis/Server] Zomis pushed commit 5989c6d5 to master: improved error handling by catching errors earlier
[Zomis/Server] Zomis pushed commit 0e8c586b to master: added InviteRequest and InviteResponse as message classes
 
Ahahaha yeah I know that feeling :P
 
12:14 PM
> This just got fixed as I was creating message classes for invites. See also github.com/Zomis/Server/commit/…
 
12:47 PM
Uh...?
Hestroy a friendly minion tits to your hand. | 6 | 7/7 | Lorn, Junthen | None | Neutral | Epic | Minion | Goblins vs Gnomes
Interesting...
<b>Deathrattle:</b> Your opponent casts a spell, gain +2/+1. | 8 | 3/2 | Silengem Neversurner | None | Neutral | Common | Minion | Goblins vs Gnomes
This minion forces your opponent to cast a spell when it dies, and then it gains +2/+1
 
tits to your hand I lol'ed
 
@skiwi format reversed?
 
Whenever you summon a minion, deal $3 damage instead. | 5 | 5/5 | Dura Suncite | Maglockdast | Minion | Classic
@SimonAndréForsberg Yeah, it seems to be working :)
Now it starts with generating some random text, and then tries to see if it's fits on a minion, spell, etc.
 
@skiwi now that was an interesting one
that one could totally work. we could even include it in Cardshifter.
 
Best minion :D
A 5/5 for 5 mana is even solid
Eh... I spot one issue
Actually, there's more than one issue
It doesn't have Race: None, it doesn't have a Rarity and it's for the Maglockdast class
 
12:55 PM
Doesn't mean that some parts of the card aren't useful.
 
Tru etrue, it looks solid
There's these times when I don't mind that for generating it uses the same seed, accidentally deleted that file (overwrote it)
 
in The 2nd Monitor, 32 secs ago, by Simon André Forsberg
@maaartinus hey. I'm working on the server for Ultimate Tic Tac Toe. Could you drop in to this chat room and we can talk about it?
 
Whenever you summon a minion. | 9 | 8/8 | Reonashord | Mech | Neutral | Epic | Minion | Classic
I think I found my OP card
For each enemy minion, summon Thaddiugs. | 5 | Sune Kild Shoum | Priest | Common | Spell | Curse of Naxxramas
 
Who's Thaddiugs?
 
Unfortunately, I have no clue
Now if it would be Thaddius :P
<b>Battlecry:</b> Give a friendly minion <b>Secret</b> at the end of the turn. | 20 | Awive af Dea | Warlion | Rogue | Spell | Classic
It's so good, it costs 20 mana
 
1:06 PM
There is a Thaddius but no Thaddiugs, maybe it's a generated card ?
 
It's the Murloc counter!
Whenever a Murloc is summoned, gain +1 Attack. | 2 | 0/2 | Mara Wirgit | Beast | Neutral | Common | Minion | Basic
wut
<b>Battlecry:</b> Deal 6 damage to your hero. | 1 | Mind Light | Druid | Common | Spell | Classic
 
o/.
what is up with your test speed? D:
 
Hi @DanPantry
 
(I saw the chat linked in Nth monitor)
 
<b>Deathrattle:</b> Replace your hero with Hand of the Attack of your weapon. | 2 | 4/1 | Master Hand Reckeinper | None | Neutral | Legendary | Minion | Goblins vs Gnomes
TTSS
(Time to stop spamming)
 
1:12 PM
@DanPantry I guess the name "quick play" is not quite accurate?
 
@Simon lol
 
Okay, I cannot resist one more!
<b>Battlecry:</b> Destroy your hero this turn. | 2 | 3/2 | Flame Latxer | Deasthaty | None | Mage | Legendary | Minion | Goblins vs Gnomes
 
that test is actually performing a full game, from start to finish. Perhaps it's a bit overkill but sometimes it can be useful.
 
@SimonAndréForsberg ah right, OK, that makes sense.
 
most errors are already caught by other tests though
 
1:37 PM
@SimonAndréForsberg Hi!
 
Interesting, if the data is "too correct", then the results are boring
 
@SimonAndréForsberg Does the server need to do anything besides login and turn forwarding? Or do you mean some server capable of playing, too?
 
@maaartinus The server itself won't play in a game. The server will do a bit of logic to make sure that moves are correct etc.
 
1:54 PM
That's "playing" in a sense. OK, no AI, just checks. This costs some time, too, but we don't need thousands turns per second.
What can I do? I can't see in this room anything else concerning UTTT.
 
@maaartinus the server will support internal AIs as well.
@maaartinus You can take a look at this and start implementing it: github.com/Zomis/Server/wiki/Protocol
and please ask me and give feedback about the protocol
for making a move in UTTT, the command to send and listen for is MOVE <gameid> <x> <y>
 
OK. I'll have a look at it now.
What will the xxx in "The xxx and password parts are currently ignored." mean?
 
currently, all clients are accepted whatever password you enter, but that will be used for authentication later on.
The xxx is for what client type you are using. Your client could for example use maaartinus there
 
OK.
 
it's just for me to know which client is being used to connect
 
2:01 PM
OK.
In a 3+ player game, how would I invite/accept a game as the n-the player?
 
@maaartinus so far, 3+ player games are not really supported. Neither Battleship or UTTT is a 3+ player game AFAIK. I will likely support other 3+ player games though. Inviting and accepting will be done as it is done currently, but I will probably extend the invite functionality with a "invite start" message which will start the game if possible with the current players that has accepted.
 
I see. I was only asking as I saw it missing in the INV*.
Could not find artifact net.zomis:ttt-ultimate:jar:1.0-SNAPSHOT
 
currently, invites are being autostarted when a player accepts
you don't really need that artifact. You have made your own Ultimatoe implementation, right?
 
Yes, but mvn compile says I do.
 
oh, if you want to compile the server yourself, right.
 
2:09 PM
I though it'd be a good start.
It's Java 8. So forget it, I'm still on 7.
 
alright :)
I'm planning on having a server up and running 24/7
 
Or maybe I make a VM, but this will take some more time.
 
you could try to connect to my server.
@maaartinus FYI, in case you want them, the net.zomis dependencies you need is here: github.com/Zomis/UltimateTTT github.com/Zomis/Commons . I have to say though that they're a bit of old and unoptimized code, so there are not easy to get up and running :/ The UltimateTTT doesn't even contain a pom.xml apparently.
(and these days I'm using more Gradle than Maven)
 
Sure, I will connect. I wanted to do it with your client first, but that's not necessary.
I also prefer gradle.
Is your server running somewhere?
 
my UltimateTTT repo does not contain a stand-alone client though, in fact.
@maaartinus stats.zomis.net port 7282
 
2:19 PM
I've just send some garbage to it via telnet... no answer.
It was the garbage. With USER xxx username password it works.
 
@maaartinus I saw the message. Try sending a valid message instead :)
@maaartinus I think there might be an issue with the line endings...
@maaartinus I restarted the server, try again
 
I've tried to invite myself "m" in the other terminal.,..... OK, trying.
Still "FAIL No such user".
 
ah, I think I know why perhaps...
 
USER x m1 a
WELC m1
STUS m1 online
STUS m2 online
INVT UTTT m2
FAIL No such user
OK. I must leave now for a while. Leaving this window open, will read it.
 
2:29 PM
Monking
 
Hey @Phrancis!
 
[Zomis/Server] Zomis pushed commit c63599f9 to master: trim string before transforming to Message
[Zomis/Server] Zomis pushed commit fae51526 to master: retuning null on error again, to allow the backupHandler to intercept the message
 
3:00 PM
@Simon work on the multiplayer server for UTTT and Battleship, and have a bot fight with maaartinus. And get rid of that reload spam when things are saved
 
28 mins ago, by Duga
[Zomis/Server] Zomis pushed commit fae51526 to master: retuning null on error again, to allow the backupHandler to intercept the message
What do you think I have been doing, @Duga?
 
@SimonAndréForsberg Should I try again?
 
3:18 PM
@maaartinus go ahead, server's running
 
INVT 0 UTTT m1
INVY 0

made me offline.
 
@maaartinus Ah, right. Sorry, I just changed it today so that INVY is now INVR 0 1 (Invite response, gameid, 1/0 for yes/no)
 
3:34 PM
stackoverflow.com/questions/11926360/… the color syntax does not work with ç weird
 
That is weird
 
4:17 PM
@SimonAndréForsberg No problem. I'll try it later with code. Telnet would be waste of time, now.
 
yeah, code tends to be easier to automate :)
 
 
1 hour later…
5:35 PM
The server should always answer somehow. I did

USER xxx username password
WELC username
STUS username online
USER offline
USER offline
STUS username2 online
INVT 0 UTTT username2
INVR 0 1
NEWG 0 1
PLAY 00

and I'm offline. But with telnet I get the information only from another client, the failed client gets simply ignored. I guess, you closed the stream, but my stupid telnet client tells me nothing.
 
@maaartinus the reason why you got offline recently is either because I shut down the server, or because of a timeout that I noticed in the log. I think you had a socket just lingering around without doing anything, those are bound to timeout sooner or later
 
I've tried again. You kicked me out after an error.
 
@maaartinus right now the server is not running. I will develop some more on it
 
OK.
 
6:04 PM
Let's not go there;
<b>Battlecry:</b> Gain 13 Attack for each other minion. | 7 | 7/7 | Captag Gapeu | None | Nextral | Epic | Minion | Classic
<b>Deathrattle:</b> Summon a 3/4 Nandio. Handsturn. | 2 | 3/2 | Anidination | None | Neutral | Legendary | Minion | Classic
 
@skiwi 13 attack!? Damn.
 
Handsturn??
Does taht mean you swap your hand with the opponent hand?
lol
At the start of your turn, you have a 05% chance to draw an extra card. | 2 | 0/2 | Kilg Contar | None | Druid | Rare | Minion | Classic
New style?
Whenever you hast and yo cast a spell, draw a rantors. | 6 | 6/5 | Arcinbe Swamper | None | Neutral | Legendary | Minion | Curse of Naxxramas
 
@skiwi sounds like a fine effect to me
 
Aw yeah
Deal $2 damage to all enemy minions and Deal 2 damage to all characters. | 4 | Hellfire | Warlock | Common | Spell | Basic
 
5 hours ago, by skiwi
Okay, I cannot resist one more!
s/one/six/
@skiwi interesting that it removed the $ on the second one.
 
6:11 PM
@SimonAndréForsberg Some of them have it hardcoded and some don't
I'm nmot exactly sure what it means, but I think $ is affected by spell damage
@SimonAndréForsberg Hey, that was from a while ago :P
 
I think the same thing ^^
I've never seen any damage amount yet that don't have a $.
@bazola @Phrancis @skiwi I'm considering a name-change for this room, as we do talk about more than just Cardshifter in here. Thoughts, suggestions?
 
@SimonAndréForsberg Cardshifter & Stuff
<b>Enrage:</b> Your weapon has 10 Attack. | 8 | 4/7 | Groul'shjat | None | Neutral | Rare | Minion | Classic
These cards are actually quite balanced
 
@SimonAndréForsberg How is the protocol for turns?
 
@maaartinus how exactly do you mean? what part of the turns, so to speak?
 
When I play UTTT at (0, 0), what should I send?
 
6:17 PM
MOVE <gameid> x y
so for example MOVE 0 4 2
gameid 0, x 4, y 2
 
OK, and is that also what the other party receives?
 
@SimonAndréForsberg Hmm, since pretty much everything we do is Java-based.. How about "Bytecode Games" ?
 
Fine.
 
@Phrancis almost sounds like the name of a company
 
6:21 PM
It does, doesn't it... "Bytecode Gaming" maybe?
 
We do more stuff than gaming though, at times, don't we?
 
Yeah... @Duga in particular
Hm. "Bytecode Addicts"?
"Bytecoders"?
"The Byte[code] Bar"?
 
btw @SimonAndréForsberg, even reversing the data didn't stop the network from memorizing them when fully trained
 
@Phrancis How about "Groovy Projects"? (not everything is using Groovy of course, but even LibGDX and other projects are Groovy)
 
@SimonAndréForsberg Not bad, but that implies a bit that we're like one of those rooms that "nurture" a language on the network? (e.g., VBA room, JS room etc.)
(which would also be fine by me, except we would probably need to change the face of the chatroom a bit, and move all those links in the description to perhaps the project wiki)
 
6:32 PM
hmm... true that...
 
Albeit, "projects" does imply a bit more than just "The Groovy room"
 
it can probably remain "TCG Creation" for now, I like having those quick-access links up there
 
i think of it as the game design chat room of code review, but I'm not quite sure of what another good name would be, and its a good thing for cardshifter to have a home
 
How about "Groovy Creations" ?
 
Is there a quick way to get a plain text log of everything that has been said in here?
 
6:36 PM
@skiwi no
@Phrancis Me like
 
Is there any way to get chat logs?
(Via SEDE?)
 
@bazola indeed it is good for Cardshifter to have a home. I hope a name change won't distract us even more from the project that unites us.
 
scrapping the transcript. How easy is it I don't know
 
1 min ago, by Simon André Forsberg
@skiwi no
7 secs ago, by Simon André Forsberg
1 min ago, by Simon André Forsberg
@skiwi no
@Marc-Andre yes
 
It's spread over multiple pages, me dislikes that part
 
6:38 PM
Web-Scraping is the only way really, @skiwi
 
Don't want to spend effort in that :(
 
Then don't!
 
@Phrancis Fair enough ;)
 
You could be writing code for a videogame right now, you know, instead of feeding data to that thing :)
I also know a website where you can download full classic books in plain text, maybe that would yield interesting results to feed Moby Dick and such to that RNN. And while it's learning, write code!
 
@Phrancis You are contradicting yoruself :D
I just want something that offers plain text
 
6:48 PM
Key word:
> while it's learning, write code!
 
@skiwi you could feed it random uploads to pastebin, that might be cool
 
@bazola The question is whether that's easy to retrieve, without writing a lot of code :P
The majority would be links to torrents though :P
 
@skiwi May I ask, are you lazy or something? Since when was "writing a lot of code" a problem for a programmer?
2
 
@SimonAndréForsberg Because these are not the codes I'm looking for
 
6:51 PM
What are you looking for?
 
Working on all other projects I still want to do
@Phrancis It's running!, on Tale of Two Cities
It no English yet.
It'll be a while before it can make sense of that input
 
lol
 
7:06 PM
Well good, now look at all the free time you have to write code while it's learning English :)
3
@Simon I think I might start over on this challenge nhgrif gave me a while back and write it with Groovy instead. Now that I know a bit more about IO
 
@Phrancis sounds like an excellent idea
 
Is array-handling also Groovy in Groovy?
 
I believe so. But ask yourself if you want an array or a list
 
I don't know what the difference is :D
I know arrays have indexes and can have multiple dimensions. But I don't know anything about lists
 
both arrays and lists can have indexes and multiple dimensions
 
7:16 PM
Time to learn it !
 
the difference is that an array is not re-sizable as easily.
a List is re-sizable, an array is not.
 
Does a list resize itself when you append or remove items, basically? Or does it have to be manually resized?
 
@SimonAndréForsberg Could you plug-in an AI player for UTTT accepting everyone. Or maybe inviting everyone?
 
@Phrancis it resizes itself
@maaartinus I have been working on that a bit today, unfortunately I haven't fully implemented AI support in the server yet
 
@SimonAndréForsberg Sweet! That looks way more appropriate for this use case than an array, then!
 
7:22 PM
@Phrancis But for you particular exercise, I would look into Sets ;)
 
nice, Collections.shuffle is not GWT compatible
 
@bazola true that. I had to add a Fisher-Yates shuffle method for that.
 
i found this one on SO
Random random = new Random(qaList.size());

for(int index = 0; index < qaList.size(); index += 1) {
    Collections.swap(qaList, index, index + random.nextInt(qaList.size() - index));
}
 
there are thousands a couple of Fisher-Yates posts on Code Review
 
@Marc-Andre So... how is a set different... then?
I need to make me a reference document to differentiate between arrays, lists, sets, collections, dictionaries, enums... etc etc.
 
7:28 PM
the official javadoc is what you need.
I read smoked that documentation a lot when I was learning Java, for about five years ago.
 
@Phrancis And Set the more I think about your problem the more I think Set will not be your Solution. Something like a Map<String, List<String>> could be used. But read the documentation about all the Collections! You'll figured it out!
 
I've heard that a quick reference card for a language can be very helpful also @Phrancis
 
@Marc-Andre Shhh!
 
Well yeah
 
@Phrancis There are actually other more important things :(
 
7:39 PM
@Marc-Andre <spoiler-alert> :)
 
I can't delete or edit it anymore ;) or I would
 
Overall, @Phrancis, that is really an excellent challenge. Getting this right will learn you a lot about data structures
I'd maybe even recommend implementing it in several different ways
 
I think I'll do it in ruby too :D Since I'm learnings rails, but there is a lot I don't know about ruby !
 
@Phrancis Here you have your initial version: pastebin.com/WLFhm2Ek
LOL I just noticed how the fragment starts
 
Well looks like pastebin is blocked at work...
 
7:44 PM
Ah right :|
 
@SimonAndréForsberg I might try implementing very rudimentary versions of each just so I can cement in my mind how they work, I think this might make things "click" and usually once it does, I can run with it pretty easily from there
 
@Marc-Andre justpaste.it/mcxe this one?
 
this one is fine.
 
@skiwi looks like the tale of two cities had a lot of very long sentences with lots of commas
 
Unfortunately I really have no clue what it's about
 
7:49 PM
> 36."I see natures!"
 
i think if you had to read a full length book of this gibberish you would totally lose your mind
 
> "My perfectly into the taste of the manner, and the old way to
be all the day, and the barrier who has all the air of the prison.
Spoken like a true neural network
 
8:04 PM
@SimonAndréForsberg While do you sometimes send "USER"?
 
in The 2nd Monitor, 8 mins ago, by michaelpri
Congratulations to our new moderators!!! @Jamal @200_success @SimonAndréForsberg @Mat'sMug
@Phrancis that is a really good idea. Then you should benchmark them ;) (okay, maybe a bit overkill for your level but...)
 
grats @SimonAndréForsberg
 
Yes, congratulations!
 
41 secs ago, by bazola
grats @SimonAndréForsberg
 
@maaartinus good question. I'll answer when this election mania has settled
 
8:14 PM
OK, thx.
 
@Phrancis It doesn't seem to be able to make lots of sense out of this
 
Perhaps it just needs to study it longer?
 
The problem is that I don't see significant improvement anymore
(There's training/validation error numbers you can inspect)
 
8:32 PM
Your threading seems to have problems. I've received (after split)
[maaartinus-1, onlineSTUS, maaartinus-1, online]
I'm sure I sent something wrong, but you glued two lines together.

No need to hurry with the answer.
 
Actually, I just noticed a positive jump on the data @Phrancis
LOL
"I am a subject for the floor?"
 
@maaartinus gluing two lines together can happen when it comes to using sockets in programming. I've had it happen many times before. How about I send a null character after each message? Or a line feed character? That should give you something to split on.
 
8:47 PM
But you are already sending a newline after "STUS maaartinus-1 online". The problem is that while you're sending two such lines (probably my fault), there's no sychronization ensuring that the chars don't get intermixed. Probably somewhere in
https://github.com/Zomis/Server/blob/master/src/main/java/net/zomis/server/clients/ClientSocketHandler.java#L45
It looks like multiple threads writing into a single stream.
 
9:02 PM
@maaartinus it's not a threading issue, it's a caching issue. the socket didn't have a chance to send the data before more data was coming, so it was packed together in the same package.
it's outside of my control, really.
it's very common that that happens with sockets.
all I can do is to either add information about how many bytes you should expect, or to add a specific "end of message" byte.
 
9:25 PM
@SimonAndréForsberg This doesn't sound right. I'm reading it linewise and BufferedReader#readLine reads till the next newline (or EOF). You send the newline, but it comes after some other text. My trivial code doesn't care about packages, that's somewhere deep below.
@SimonAndréForsberg There's such a byte already: The newline.
It just gets intermixed with other text.
 
9:44 PM
Now I'm more sure: This is my code:
		private void step() throws IOException {
			final String line = in.readLine();
			Dout.a(actorName, "RECEIVE", line);
                    ...
                }
and this is the output:
maaartinus-0 RECEIVE STUS maaartinus-1 onlineSTUS maaartinus-1 online
My Dout.a (debug out) is synchronized, it can't be the culprit.
 
@maaartinus I'll take a look at that tomorrow. I'm exploring the moderator GUI world at the moment. If you want to, feel free to make an issue about it on my github repo
 
10:01 PM
> As there's no sychronization in the [sender code](https://github.com/Zomis/Server/blob/master/src/main/java/net/zomis/server/clients/ClientSocketHandler.java#L45), the output may get mixed up.

For example, the following line may be received on the client side:

STUS maaartinus-1 onlineSTUS maaartinus-1 online

This happens because of the first line in another thread executing before the second line in the first thread:

outWriter.print(data);
outWriter.print('\n'
 
10:47 PM
@SimonAndréForsberg Just FYI: It works! I've "solved" the intermixed output with a sleep.
 
@maaartinus ah, good. Did you sleep in your code or in my code?
it's not the best way to solve it, but... functionality first!
 
In mine. That's just a hack, synchronization is the solution.
I can't modify nor restart your server.
 
synchronization is not the solution I believe. there's nothing to synchronize. it's the same thread that sends it, I believe.
 
11:19 PM
I'd bet, it's like I wrote. Updated the issue.
 
11:45 PM
Loki Astari vs. Simon André Forsberg: 3383 diff. Year: -2393. Quarter: -797. Month: -797. Week: -118. Day: -100.
200_success vs. janos: 15976 diff. Year: -3624. Quarter: -703. Month: -703. Week: -120. Day: -90.
Mat's Mug vs. Simon André Forsberg: 38 diff. Year: +928. Quarter: -576. Month: -576. Week: -147. Day: -83.
200_success vs. rolfl: 1787 diff. Year: +1041. Quarter: +1375. Month: +1375. Week: +600. Day: +70.
 

« first day (346 days earlier)      last day (3216 days later) »