« first day (1119 days earlier)      last day (2061 days later) » 
00:00 - 15:0015:00 - 00:00

12:00 AM
RELOAD!
[rubberduck-vba/Rubberduck] 6 commits. 3 opened issues. 1 closed issue. 9 issue comments. 72 additions. 10 deletions.
> Just to be clear, you want a "Find ToDo Items..." action in the context menu?
 
@IvenBach I don't know what that issue you opened needs to be resolved...
 
@Vogel612 github.com/rubberduck-vba/Rubberduck/pull/3067 is the open PR that I have. It's the quick fix for the empty else block that's holding it up.
 
I'm talking about 3092
 
Duh check: Context menu is the one that opens when you right click?
I'm not sure on the actual name.
 
12:11 AM
yeap
 
Correct. Have it give you the option of 'ToDo' items showing up in the context menu
 
Man. I've missed you guys. So much love in this channel.
2
 
@RubberDuck The whole time I've been here, since February, I've only ever heard about you. And seen you pop in a couple times.
Now just need @comintern to come back.
4
 
@IvenBach did you read the room's transcript from 2014?
 
I went through it briefly, but didn't sit down and read all of it
It was a bit lonely in the room back then.
And cold too, I remember seeing the room got froze a time or two.
 
@shadowofsilicon
14
A: Understanding events and event handlers in C#

Mat's MugJust to add to the existing great answers here - building on the code in the accepted one, which uses a delegate void MyEventHandler(string foo)... Because the compiler knows the delegate type of the SomethingHappened event, this: myObj.SomethingHappened += HandleSomethingHappened; Is totally...

 
@IvenBach Speaking of the context menu, is there a reason there isn't a Rubberduck menu injected in the context menu of the module edit window?
 
12:25 AM
@RubberDuck we miss you too! Rubberduck misses RubberDuck!
 
it would be awesome to right-click and jump right to a refactoring.
 
@shadowofsilicon huh, there is
 
RightClick>Rubberduck>Refactor
 
^
available refactorings depend on current selection
 
there is? I'm gonna have to look much, much closer tomorrow. Haven't seen it.
is it hidden or not there if some text is selected?
 
12:31 AM
Just disabled if irrelevant; never hidden
 
@Mat'sMug it's hard mate. No dev environment and no personal need for the tool anymore.
 
TBH I haven't needed RD for over a year now
 
@Mat'sMug it's still interesting, right?
 
Yeah? What are you doing these days anyway?
 
SSIS, SSRS, lots of SSMS ... SQL Server =)
Some C#, too
 
12:38 AM
@Mat'sMug do you still need to use that LINQ-to-Sage-thingie of yours?
 
@shadowofsilicon I had some issues with RD not showing in the context menu before.
 
@Vogel612 I'm frustrated beyond words with the darn Sage API... C# code was blowing up with a COMException without leaving a meaningful message in the API's session errors collection... So I went and kinda ported it to VBA.
So yeah, a bit of VBA still =)
 
Sage. Ewww. #NeverAgain
 
and here I am, frustrated at a REST / SOAP Api that overquotes their JSON results...
 
@Mat'sMug sounds a lot like what I was doing just before I met you.
 
12:41 AM
that seems kinda boring in comparison
 
Lolz. I see your bad webservice and raise you an over architected and under engineered distributed mess.
 
@RubberDuck I see your 'over architected and under engineered distributed mess' and raise you three dozen web-services, and a VB.NET website with no code behind (all VB.NET code is in the .ASPX page).
 
sounds about right and exactly like the thing I've been working on ...
 
Serious about seeing your bad web service too. I've got one that takes headers and a payload on post, and then embeds them in json as fields and a bag of raw bytes.
This thing returns pdfs as bytes embedded in json
 
@RubberDuck We have one that does that for a SOAP XML document.
 
12:44 AM
But @EBrown wins. Hands down.
 
I literally consumed a web-service about three weeks ago that consumed an XML SOAP service with an embedded HTML document, an embedded XML document, and an embedded PDF.
 
Geez why is all the code like crap everywhere
3
 
Because the number of devs doubles every 5 years.
 
The embedded XML document had partial structures, and was undefined. They gave us a document that said "this response returns the ____ result."
 
Programming is definitely an art. The artist is never satisfied of his work.
 
12:46 AM
I asked what is the ____ result, and I got "It's the ____ result you asked for."
 
Lol omg
 
lol
 
Oh and sometimes it doesn't return anything at all.
 
Oh. I've got one.
 
And it's an async endpoint, which means I have to send a POST to it, then query it periodically over the next several minutes to see if a result generated.
 
12:47 AM
Huh
 
But sometimes a result doesn't generate, and there's no "no result is going to be generated for this", so I have to decide when do I timeout?
So I don't.
I query the piss out of their API.
You build me a s--t API and I'll totally ruin your day.
 
this is a joke, right??
 
lol
 
@Vogel612 I wish man.
 
Someone decided that all data needed to be written through the same endpoint. .... including the logs. So! What happens when the endpoint gets flooded?
 
12:48 AM
@EBrown wait there's no...
 
@RubberDuck Either a loss of logs or a f---ton of them.
@Mat'sMug No, there's no "we have no data for this."
I just guess.
Because some legitimate queries can take literally thirty minutes or more to generate.
 
I mean rate limit
 
The service gets sick and starts DDoSing itself, creating a negative feedback loop that causes more instances to drop....
 
Holy c..
 
@Mat'sMug Oh yeah, but I got them to increase our limit.
Then I broke it and they're unaware of it.
GO TEAM
 
12:50 AM
@EBrown no One's ever heard of 100 continue?
 
@RubberDuck Hahahahahahahahahaha
 
@RubberDuck sounds like a job for a proper message queue
 
Hahahahahahahahahahahahahahahahahahahahahaha
Ahahahahahahahahahahahahahahahahaha
@RubberDuck You're hilarious.
 
@Vogel612 We have one!
 
Do you know how they embed their XML?
 
12:50 AM
a single one?
 
They literally escape < to &lt; and then put it directly in a property.
 
because then you're officially allowed to kick somebody's face
 
No. A cluster with many topics. Point is we're not allowed to log to it directly.
 
So the XML looks like <subXmlThing>&lt;?xml version="1.0" encoding="UTF-8"?>...</subXmlThing>.
I'm not joking about that.
#FML
 
Uhhhhh CData much?
hides
 
12:53 AM
@RubberDuck I don't think they would know how to write a CData even if I wrote it for them.
The embedded HTML is literally done the same way.
 
at least they're consistent ~also hides
 
It starts <subHtmlThing>&lt;!DOCTYPE html>&lt;html>...</subHtmlThing>.
 
And the payload can't be returned with a proper content type because?....
 
Do you know why I drink heavily?
 
Because you love to program. Same reason I drink.
 
12:54 AM
@RubberDuck They have one! There's a <subHtmlThingType>html</subHtmlThingType>, that's the actual string in the field.
 
No. I mean, hit an endpoint that returns text/html.
Or application/xml
 
@RubberDuck it's not even guaranteed that such an endpoint exists, you know?
 
So you have two fields: <subDoc1Type>html</subDoc1Type><subDoc1>&lt;...</subDoc1><subDoc2Type>xml</subD‌​oc2Type><subDoc2>&lt;?xml...</subDoc2><subDoc3Type>document</subDoc3Type><subDoc3‌​>PDFDATA</subDoc3>, where document == pdf.
@RubberDuck No.
 
Or application/pdf.... #fml
 
@RubberDuck This one returns application/octet-stream.
No joke.
 
12:56 AM
~shivers
 
Wat?
 
@RubberDuck It's a file download. :D
 
Okay. Let's be productive for a moment. There must be a reason more than one person thought this was a good idea.
 
Dude you don't understand, my blood pressure went through the roof with this project.
@RubberDuck There's only one person though.
This company has one programmer, and has had the one programmer, for like 30 friggin years.
 
No. Someone on my project also thought this was a good idea.
 
12:57 AM
And rather than hire more, they continue to slam him with work (which is fair, I met him and he's an asshole).
@RubberDuck Oh.
 
Like, I'm dealing with the same stupid crap.
 
Chugs alcohol.
@RubberDuck Wait, who do you work for?
 
Cheers.
 
It's not the company we buy this service from, is it?
Is it still Willow Wood?
 
soo ... I've heard from a bartender that you should drink because you like the taste, and not for any other reason ...
 
12:59 AM
I'm not allowed to disclose my client. But they don't provide their data raw.
No not willow wood.
@Vogel612 obviously never wrote any code before.
 
@RubberDuck That's fair. I won't state the name of the company we get this from because I'm nicer than that.
 
@Vogel612 Usually, that's the <i>last</i> reason to drink lol
 
@Vogel612 I usually find I like the taste better as the night goes on.
 
@RubberDuck hmm ... I doubt that, but he's a student, so there's that ...
I'm sure he's written code, just... he might not have had to deal with other people's code yet.
either way, it's 3AM in the morn and I should go to bed.
 
Let's play how fast can ducky run out of stars. It's been a while...
4
 
1:01 AM
'night @Vogel612!
 
Good seeing you @Vogel612
 
@RubberDuck I haven't even used a star in a while.
 
I'll read up on the war stories. Maybe I'll also remember one from my time in the trenches
 
#SadDay.
@Vogel612 G'night buddy, enjoy yourself.
 
> Not sure, but can't you do this in the XAML?
> @Hosch250 I would have thought so... but I didn't find any method or property to do it. YMMV.
> I don't think you can. But, this does need to be presentation-only. It should go in the code-behind (the .xaml.cs file).
 
1:15 AM
Well, @Mat'sMug, I have good news.
Very good news.
 
what's up?
 
First, coworker "Joe" said he is impressed with my work.
Next, boss "Jane" said she is only waiting for my contract period to run out before she offers me a job.
She can't offer it to me before that because of the way contract-to-hire works.
 
that's great!
 
And third, which really came before second, she said I'm not a junior dev.
Finally, there is a little bit of bad news.
 
...
 
1:18 AM
"Joe" is implementing some logic for a widget, and he doesn't understand interfaces.
 
oh
well, it's going to have to sink in :)
 
This is an implementation detail, and he was going to put it in the interface :/
 
C#?
 
I told him to put it in a private method since it was an implementation detail, and he got that. Yes, C# 6, and we are looking into migrating to C# 7.
Then, somehow, we were discussing interfaces, and he didn't realize you could have a public method that didn't have to be on the interface.
 
> > It should go in the code-behind (the .xaml.cs file).

@Hosch250 Um... Isn't that where I put it? `RetailCoder.VBE/UI/Refactorings/Rename/RenameView.xaml.cs`
 
1:20 AM
One of the top devs of the company who sits next to me sent me a private Slack message and said it was sad that a senior dev didn't know that, and that he's worried about the team because a lot of them aren't that great.
 
hmm
 
> Yeah, I was just making a random comment. Remove the delegate keyword and it looks good to go.
 
@Hosch250 be wary of those threads - you never know who sees them
 
Yeah, I know. I didn't say much.
 
1:22 AM
RE has a VBA tag!
 
I almost forgot the really good news.
"Jane" said that if they can't keep me busy, I'm free to work on Rubberduck.
6
 
@Hosch250 Sounds like an uphill battle... but one that will pay great dividends in time. I'm in that position now... my company has great engineers that can make a machine run, but programmers that understand OOP
 
That don't understand OOP, you mean?
 
*no programmers that understand OOP
 
@Hosch250 what! that's insane!!
 
1:23 AM
Oh.
I often have a couple free hours every few weeks, but I don't know if I'll take advantage of it.
 
@Mat'sMug I think it's a veiled threat - it's another way of saying "We intend to keep you very busy indeed"
 
lol
 
Well congrats @Hosch250.
 
Yes, congrats @Hosch250. Very good news, indeed. :)
 
So, we'll see what the offer is for. The recruiter said probably about $65k, but we'll see--especially since I'm not a "junior dev".
 
1:27 AM
It'll probably be $70-$90k, which is literally double my first programming job, and close to it for my current one.
 
I was planning on trying to get about $70k since I know I'm good, but I'm tempted to go for $80k now, since I know they know I'm good too.
 
let them spit the first number
 
But, we'll see. If they make a good offer, I might not even have to counter offer.
Although that's probably a stupid move.
 
@Hosch250 Always counter
And good luck, I mean it, even if I am bitter about it.
 
Yeah, I can just go for about 5k more if it is really good.
Thanks.
 
1:31 AM
Yes. Always counter. Especially since you know that they know you're good and that it would be a shame to loose you to another employer.
 
I remember negotiating a salary. They asked me for a number. I gave them what I thought was a ludicrous number, and they said we can't pay that, we can pay you 5K less than that, and give you a 5K car allowance. I didn't know there was a car allowance, so I kind got what I asked for.
 
Wow.
 
So you mean that if they offer $80k, I could counter for $100k and I have a chance of getting it?
 
how's your impostor syndrome doing?
 
1:34 AM
I'm getting more comfortable, which is dangerous.
 
they presumably know/think you don't have anything else to go to. They'll never pay you what they really think you're worth unless they genuinely believe you might walk.
 
I'm comfortable enough with SQL and Entity Framework to put it on my resume.
@ThunderFrame Oh, I don't think so.
 
Agreed. You gotta build the illusion that you may and can walk somewhere else.
 
At least, one of the company owners in orientation said that any of us could walk out the door and have a job tomorrow.
Most of them were people with 20-30 years of experience, but he did include me in the statement.
 
@ThunderFrame RE has a new user! =)
 
1:36 AM
@Hosch250 sure, people only value something when they think they might lose it.
 
Well, they are a good company, so I don't think I'll try to nail them too hard.
 
They bring breakfast in every Friday, they let me get off early on Friday once I've worked my 40 hours, they give everybody a turkey for Thanksgiving, and they give you 15 days of PTO plus sick days and travel benefits, and you get more PTO and gifts when you reach certain anniversaries.
 
[rubberduck-vba/Rubberduck] build for commit 326a1497 on unknown branch: AppVeyor build failed
BUILD FAILURE!
 
And I mean gifts like Bose earphones and a bunch of points to buy stuff through their company website, which offers anything Amazon has.
 
1:42 AM
@Duga dafuq
oh, lol
 
@Hosch250 Well don't squander it. Sounds like a good opportunity, don't mess it up by doing something dumb (not that you will), but seriously, don't mess it up.
 
That's what I'm trying not to do.
My mom is so worried about that she told me not to even counter offer.
 
Or you'll end up like me, and work for less than you make now and slave away for months hoping for a half day off eventually, and let's face it, they just don't happen.
 
I wonder if that would make a good Workplace.SE question
To counter, or not to counter
 
1:53 AM
I'd like to work here my whole career, if I can. I don't like the stress of getting a job.
In fact, I lost 10 pounds my first couple weeks :/
 
then don't screw them over by raising 20% above their offer ;-)
 
BTW, though, if you want to come over here, I bet I could get you an interview.
 
Oh, and you'll be in full support mode on all the bull-shit API's I mentioned above.
 
lol
 
@Hosch250 I can't move.
 
1:54 AM
OK.
No, I wasn't serious about the $100k, @Mat'sMug. That's just what would be a ludicrous figure for me.
 
at $70K you're already making a ludicrous amount of money for your first position IMO
 
@Mat'sMug I think it's $60k.
$30/hour.
 
@Mat'sMug More than that.
 
still
 
Times 50 is $60k.
 
1:56 AM
@Hosch250 You calculated your hourly wrong.
 
@EBrown more than 70 or more than ludicrous?
 
Or is it your salary that's calculated?
@Mat'sMug Both,.
 
..
 
30*40*50 = 60,000.
My mom said you just count 50 weeks at an hourly rate.
 
Let's face it, they'll come back to him at the end of the contract term and have a cordial sit-down, and say "look, we really want to keep you. How do you feel about $75,000 yearly and bonuses?"
@Hosch250 You don't, because you get more PTO than normal.
So you count 49 weeks.
 
1:57 AM
Oh, OK.
 
Take your $30/hr * 2080 hours in a year, divide by 1960 hours and that's your true hourly wage.
 
I don't get PTO as a contractor.
 
so what, the PTO is a benefit
 
That's just if I get hired.
 
1:58 AM
When does your contract end?
 
@EBrown add the benefits, then divide
 
90 day contract. This is my 7th week, I think.
 
@Mat'sMug That would be an under-estimate.
 
@EBrown I'd say yes to that, but you said to counter. What do I do?
I need to buy a house and car and adjust for inflation and I don't want to get squeeze out in 5 years like so many junior devs because I can't afford it anymore...
 
Assuming @Hosch250 works 49 weeks of the year, but then gets 3 weeks of PTO a year, then he gets paid for 52 total, which means he would multiply his hourly by 2080 (total work hours in a year), then divide by actual work hours to get his adjusted hourly rate.
 
2:00 AM
you'll get other raises
 
@Hosch250 If they offer $75,000 a year you say $82,000.
 
True, inflation is dirt cheap, but it isn't 60 years down the road.
 
Then meet in the middle ab around $78,000.
 
OK. Although I'd probably say 80k.
 
@Mat'sMug Maybe. We don't do any COL increases at my company.
He probably will because his company values their IT assets.
Hell, he'll probably become a "Team Lead" (or whatever the low-level management in IT is called there) and start getting bonuses within 2 years.
 
2:02 AM
I think they just have senior devs, and then the next level is TPM, whatever that is. Something Project Manager.
 
@Hosch250 in many ways, you should almost take whatever they offer you. Your CV is still sparse when it comes to experience. 2-3 years from now, your CV will be great.
 
@Hosch250 positions get created all the time
 
@Hosch250 ^^^
 
Just to offer some perspective. I made 50 with 3 yrs under my belt.
 
@Mat'sMug IKR - I once had a boss who said "Call yourself whatever you like - just don't ask for a payrise" lol
 
2:03 AM
@RubberDuck Per hour or yearly?
 
@ThunderFrame Oh, I'm not worried about being out of a position. But I don't want to burn my bridge at either end.
 
At 5 years, you bounce to a new job as a Sr.
Yearly.
 
@RubberDuck Yeah, that's where I sit now. #ToledoIsNotAnITArea
 
Don't expect much in raises. Raises come from moving companies in software in the US.
@EBrown Columbus my man. We're the next Valley.
 
Well, tell you what. I'll see what they offer for now, and just do a small counter if it is about 70k or lower.
 
2:04 AM
@RubberDuck I can't move, and I hate the city. :/
 
I can bargain once my contract is up.
 
This is Ohio. Live in the country dirt cheap & commute 30 min.
 
@RubberDuck Ohio is jumping the shark?
 
But I understand not being able to move. Just turned down a gig in Iowa.
 
So, in a year or two, maybe I can bargain harder because I'll know the systems, have experience, etc.
 
2:06 AM
@RubberDuck I love the country - lived there all my life, wonderful man.
 
Yeah man. Lots of talent at a fraction of the price you'd pay on the west coast.
Me too Eliot.
 
@RubberDuck I can't even leave the county because my female companion is too attached to her friends/family.
 
But I don't think it will get much better than working there. Most of them stick around for a long time, especially the ones who know their stuff.
 
@RubberDuck Heh, you gotta double both those consonants Chris. ;)
 
@Hosch250 that's the safe bet. But I always counter.
 
2:07 AM
oh wow
Depends what f(x) equates to. f(x) = 4x + 12 would return 4 * x + 12. — Mat's Mug 19 secs ago
 
@EBrown I love it too. I hate the city. It is so artificial.
Pick one of those VB's. — Joel Coehoorn 7 mins ago
LOL.
Reminds me, I was telling Alicia about how we are getting ready to completely rewrite RD for 3.0.
And how much I hate VBA.
 
@RubberDuck Speaking of Columbus, I'm going to be traveling to her (female companion) grandparent's house in south-east Ohio one weekend this summer, we should meet up one day and grab a beer or something.
 
That would be awesome man.
 
Probably looking at a weekend near the end of July or so.
 
You know, maybe I'll get to meet you guys sometime. They send the senior devs out around the country to meet the clients sometimes.
 
2:11 AM
Her grandfather owns a farm and raises cattle and grows corn, apparently they live up in the mountains literally dozens of feet from WV.
Any rate, gonna bounce. Bedtime and such.
Later @all, congrats @Hosch250.
 
Thanks, and later.
@Mat'sMug Think you can endorse me for WPF?
Also, think I should put DI on my LinkedIn?
I don't suppose you could endorse me for C# too?
 
I would.. I just haven't logged on to linkedin in ages
 
I think they have a forgot your password feature, if you need it.
I should put .NET in.
 
@Hosch250 IDK - Does anybody look at those tags?
 
Not sure.
Whatever. It doesn't hurt.
I'm requesting connections with a couple of my coworkers on LinkedIn.
 
2:32 AM
[retailcoder/Rubberduck] retailcoder pushed 50 commits to rd-next (only showing some of them below)
[retailcoder/Rubberduck] shadowofsilicon pushed commit 246586ae to rd-next: Set IsDefault to "OK" button, IsCancel to "Cancel" button, and default focus to textbox in Rename refactoring dialog
 
@RubberDuck shows up and everyone comes out of the woods.
4
@Hosch250 Good to hear you have a bright outlook with work.
 
 
2 hours later…
4:25 AM
0
Q: Button click for Excel checkbox

JeanI think my problem is pretty simple for those with visual basic knowledge (vba); but I have searched and can not find the answer. I am trying to create a button with (well one per row) in excel, that will auto check all check-boxes in that row. Unfortunately, I am not sure how to script it; I co...

 
 
2 hours later…
6:44 AM
> Yes it was the only open project. I only have one.
 
 
3 hours later…
10:00 AM
-1
Q: Converting windows excel vba code compatible with mac

Johnattan ArcillaI have the following 4 codes working perfectly on a Windows pc. The problem is, it is not working correctly when used on a Mac pc. I have no experience coding vba on mac platform and no mac pc as well to debug the codes. A little help converting or testing the following codes on a mac pc will b...

 
 
1 hour later…
11:17 AM
@Mat'sMug Agreed. With a BA under my belt my first (real job, not including factory work) was 35k. My current job (with an MFA, and coding experience) is 40k. I am essentially fighting for 60k. I would pretty much leave this job on the spot if I was offered 70k at a good company (even though I literally love my job).
And it definitely makes me wish I went for coding instead of English at times lol.
 
Kaz
11:38 AM
@BrandonBarney I messed up an offer to Study Maths at Oxford. I'm pretty sure if that'd worked out, there'd be an extra zero on the end of my salary right now.
 
That'd definitely hurt the career prospects I imagine!
I started coding the first time in High School, finished my Intro to Programming class early and my instructor wanted me to start Programming I so I could prepare for the Programming II AP test. She forgot to give me the project files, so after the end of three months just simply not understanding how to complete the problem set with what I had, I gave up. There are many times that I wonder what would have been different if I had just asked for help as soon as I couldnt solve the first task.
 
Kaz
@BrandonBarney I've been very fortunate to find some exciting career opportunities regardless, but it definitely would have been a lot easier.
 
But, all is well that ends well right? I'm still happy and money shouldn't be everything :)
Thats good!
 
11:59 AM
@RubberDuck Someone forgot to review his code again. Honest. :p
Yes, only I would recommend For Each cell In Range("B1:whatever1"). Sorry. I've not had time to properly review your code again. I will though. Honest. — RubberDuck Feb 11 '15 at 23:54
Oh, thats how you do that!
 
lol
@Duga 3 more and we hit 400
 
12:19 PM
@Duga read that as "ar m pit1997 starred us". oops...
 
 
2 hours later…
2:22 PM
And this is why asking about Y when you want to solve X, is wasting everyone's time. Good luck. — Mat's Mug 21 secs ago
ugh. damn vampire
 
Stupid VBE question: I've got 2 classes open in their own windows then Window|Tile Horizontal so I can see them both. I need to open a 3rd class so I can see it as well. How do I get it to open that in a 3rd window without launching a debug session?
 
huh?
close all opened windows except the 3 you want to see, then tile them?
 
I've only got the 2 open (having already closed all the others) and want to open a 3rd.
I'm not sure if/where the option to open a code module in a new window exists.
 
then open the 3rd, what's the problem?
I'm not following. You have a MDI parent window (the VBE) with 3 MDI child windows. Right?
 
2:30 PM
aye. now open the 3rd and re-tile
 
If I double click on a different code module, VBE will open it in window 1 replacing DataMoveCode, it will not open it in window 3.
 
huh
 
ok, now it does. I swear I did that several times and got it replacing the existing code.
told you it was a stupid VBE question...
I promise, I've had several cups o'coffee already...
@Mat'sMug also, I gave you an upvote for your efforts...
 
See:
 
2:32 PM
@FreeMan saw that, thanks! :)
 
1 min ago, by FreeMan
ok, now it does. I swear I did that several times and got it replacing the existing code.
 
lol
 
2:59 PM
@Hosch250 I'm joining the chorus, always counteroffer.
 
00:00 - 15:0015:00 - 00:00

« first day (1119 days earlier)      last day (2061 days later) »