« first day (1323 days earlier)      last day (1857 days later) » 

12:01 AM
RELOAD!
[retailcoder/Rubberduck] 8 commits. 639 additions. 188 deletions.
[rubberduck-vba/Rubberduck] 1 issue comment.
[Zomis/FactorioMods] 1 opened issue. 5 issue comments.
 
12:12 AM
@Hosch250 the last is, well, any of the users I'm putting up with at work lol
 
@Mat'sMug that's why you give them a etch-a-sketch, not laptops.
 
@this pretty much. they have macs
 
such lovely machines wasted. :(
 
(the annoying ones anyway)
So I get an email from Amazon telling me my delivery is delayed
Expected next week, will arrive later
Got home, huge box waiting for me
 
Amazon pisses me off.
They deliberately screw with you if you don't have Prime.
 
12:16 AM
So I got my server, but not the hard drives.
 
LOL.
 
i.e. I have a very expensive brick in the garage
 
Are you going to host RD web yourself now?
 
If I can securely do that, I guess I could =)
We have the same model (2 gens later though) at work - so I'll be getting help from the network guy
 
12:43 AM
Finally gotten the workbook calculating results with some confidence again..
A long way off from where its own non-workbook dedicated environment.
 
@Mat'sMug we're not executing the VBA code pasted into the forms, so I don't see any issues there...
like... the only thing you need to set up is a proper DMZ
If you're really paranoid, you could go for two routers, one to the internet with an intermediary net for the server, and then a second router for the homenet behind that
 
12:56 AM
there's also the arbitary code execution to consider
e.g. don't run unpatched WP site
or you have a nice zombie for hackers to use.
 
true that ...
IIUC rd-web is running on ASP.NET anyways
might be useful to consider also moving the blog over...
which reminds me ...
On a work project I'm writing user-documentation in markdown
and GH can render it as github-pages very easily
might be a way to get simple user-documentation up and running.
 
Nice. Using some particular plugins?
 
none
 
I've been looking for a good way to document our internal stuff
good => easy and hassle-free
 
we got the wiki for that, but it feels like that's only a stopgap solution
 
12:59 AM
yeah, nobody wants to write wiki.
Since we use slack, everyone already know markdown so there's less of a learning curve
My main problem though is I would like to have screenshots inline the page
 
GH wiki is markdown syntax, but it's still ... not quite something that we really use, I guess...
 
e.g. should be just cut'n'paste.
yeah, that's my problem #2 - for the documentation system to be useful you should be able to F1 the keyword, and there you are.
 
hmm ... that's a rich-text format thing.
F1?
 
I know. The point still remains.
the F1 key?
 
ya... I only know that as "HALP"
 
1:01 AM
yeah, that works, too. :)
What I do not want to do is to have to sprinkle our codebase with bunch of comments or even URls.
Just F1, and we're there. and we can edit it to update.
(this is where you interrupt me and say keep dreaming, this)
 
FWIW that's what XML-Doc already supports
it's just a PITA to write
 
yeah it does but did it support exporting directly to website? I think we were earlier talking about the need to massage the syntax to render in the website?
and not directly relevant but no support for creating & viewing screenshots. Mind you, not that I want it inline anyway. It has to be its own help documentation separate from the code, but if you're viewing the documentation, IMO, it should be braindead easy to add images or commentary on the spot.
 
@this Customizeable websites is my profession. Want me to take a look?
 
there's not even one. it's just a pie in sky
 
I can set up a wiki section where people with certain permissions can create and edit pages with WYSIWYG controls.
TinyMCE or CKEditor should work.
I could support markdown too.
 
1:11 AM
hmm. Great - but what about the F1?
 
F1? You mean in RD?
 
let's start with that, sure.
I'm pretty sure it's easy to override the function of F1
 
It should be easy to create a key map to the wiki home page.
 
but see, VBIDE has a builtin system
 
FWIW, I don't know how else F1 would go to that.
 
1:12 AM
where we have help file and a help context ID
 
It's easy to hijack the VBE's built-in shortcuts.
 
we could abuse the context ID to indicate which page it should go to
 
We could just listen for when they press F1 and open RD web instead of letting the VBE handle it.
 
that way you can get help immediately just by placing cursor appropriately. No manual opening a browser, typing in URL, etc.
and more importantly, be able to update the help article yourself, right there.
That's my pie in sky.
 
@this Nope.
That would open us up to an XSS attack.
We'd at the minimum need to vet contributions.
 
1:14 AM
wait, what? to edit our own help documentation via a web browser?
 
No, we'd be able to edit it.
 
That's what I'm saying?
 
Oh, sure.
But not just anybody could edit it.
 
in my case, I do want my people be able to do that, not just me
but yeah, login system or soemthing might be good
 
There is really only one for-sure way of dealing with XSS attacks. Treating all text as plain text.
When you start adding WYSIWYGs into the mix, you have to be really, really careful.
 
1:16 AM
doesn't markdown qualify?
 
I know how to prevent some of it, but not all of it.
 
it's supposed to be text-only
 
Markdown will work, yes.
 
there's the matter of the images, though.
 
Because we generate the HTML. The user doesn't.
 
1:17 AM
yeah, makes sense.
images should be fine, since they are just uploading a big string of binary, not html stuff, right?
 
Mostly, yes. There are some insidious attacks people can use. However, we could use imgur.
On the whole, though, I wouldn't worry about images.
 
that is a possiblity. In my pie-in-the-sky, the images should be right there with help documentation. I don't want broken external links.
 
This is for internal RD docs?
Or external public docs?
Trying to figure out what you are going for.
If it's internal, it's much easier.
 
my pie in sky was for my company's internal code base - but that would be of immense value to any one else- so I think RD docs is a great place to develop the concept
 
You already pre-vet the contributors and you can control the infrastructure a little more.
 
1:19 AM
Yeah, that's definitely for my original scenario.
for RD docs.... ???
 
I'll do it for RD docs on my own time, and you can run with it from there.
 
I'd be so stoked.
 
Or, you can charge me a consulting fee to develop it for you :P
I mean, I can charge you.
I'm so tired, LOL.
 
Hmm, I could host a @Duga instance too
 
Still waiting?
 
1:20 AM
@Mat'sMug You could even work with Simon to set up failovers.
 
@Mat'sMug and you could host a smokey instance as well ;)
 
Anyway, nothing happens till I get my hard drives =)
 
@Mat'sMug sure, you feel up to maintaing a bit of Java?
 
IIUC @Duga runs on a Docker container
 
(that's what Duga is written in, right?)
 
1:21 AM
groovy, java, some shellscripts
 
@this ^^^
 
she also has a probably rather large database attached
 
IDK about docker on windows. Anyone had good experience w/ that?
 
haven't tried
wasn't too stoked about docker on *NIX already
 
so you aren't sold on docker promise?
 
1:26 AM
I never really had a workload or usecase for it...
whole different story.
 
oh ok.
 
I can understand the use-case of Docker and I actually appreciate the solution that Docker is,
I just never needed it
sure I've used it and it feels nice to have your dev-machine clean even after changing the application you're developing twice a week, but...
it's not something I'd be willing to use in full-on production, because you just get better performance and better separation of concerns out of bare-metal hypervisors or even full on separate boxes
might be different for testing systems that need to mimick prod, but ...
In the end it's not something I aspire to decide for or against in my carreer
 
so far, we've just made use of Azure VMs. With labs, it's even easier for development.
we did look at docker briefly but didn't end up using it because it was just more complication with no net benefits.
 
that said...
 
@Vogel612 FWIW, the updates are armed with hammers too.
 
1:31 AM
you mean rowhammer is basically unpatchable .... ya
~here I was trying to sneak off into bed
 
Unless you expand the size of the chip and insulate the cells from each other.
Which will make things a million times slower, if not more.
 
We have hit the point of smallest manufacturable silicon structures though, so at least the problem most likely won't get worse :sweat_smile:
 
@Vogel612 Oh ya?
Smallest currently-know manufacturable silicon structures, lol.
 
last I knew, making features any smaller could result in electrons quantum-tunneling through transistors
 
Isn't that the whole point?
We'll just turn that into a feature.
 
1:35 AM
huh. i seem to recall earlier that we were still few nanometers away from that point.
@Hosch250 I think we have to switch away from binary first, though.
 
> "The hard part about computing is destroying information."
which is exactly why we must not have quantum-tunneling electrons, because that leaks information
 
Set the whole block to 0.
Or 1, if that's easier.
@Vogel612 Eh, let's just pretend it doesn't.
 
It starts at around 1:20
and the explanation begins at 2:00
 
Or we can pretend that the electron contains different information at different points.
 
makes no sense. at least not in binary
 
1:39 AM
So, maybe at one point Schrodinger has a cat, and he doesn't at the same time, just so long as you don't look in the box.
 
and if quantum is non-deterministic.... well, I don't know how we could possibly compute
"here, give me a random number."
2+2 =5 <= looks ok to me.
 
@this We just have a margin of error.
So, 2+2 = 5 +/- 1.
 
a big one.
do you really wanna to run financial stock markets on that?
Coca-cola stocks has risen by 100 points, with margin of error of +/- 1000
 
@this Yep.
 
Hmm. I see. I guess I better +1 up my caveman clubbing and fishspearing skills.
 
1:43 AM
 .----------------.
| .--------------. |
| |     __       | |
| |    /  |      | |
| |    `| |      | |
| |     | |      | |
| |    _| |_     | |
| |   |_____|    | |
| |              | |
| '--------------' |
 '----------------'
 
lol
anyway, GTG - have fun everyone!
 
See you.
 
1:57 AM
> The following code triggers the "Assignment Without Set" code inspection. I am assigning a range to an array as described in the first example of this [CPearson.com page](http://www.cpearson.com/excel/ArraysAndRanges.aspx).

The description for the inspection says this will cause run-time error 91 but it works fine. It would be helpful if RD either ignored this particular type of assignment or provide an expanded inspection description to explain why this was flagged.

```
Private Funct
 
Deploy starting.
 
2:37 AM
@this I'm pretty good at those. I could lend you a caveman hand.
Home time for me.... Hoping the cluster runs all night for a better test run.
 
3:07 AM
> My duplicate issue, #3691, has a code example using a string parameter in a class property. Here's a Scripting.Folder example in a Sub. RD 2.1

Variable ‘folderSaveResults’ is not used


Private Sub CreateQueryDebugLog(ByVal strQuery As String)



Dim FSO As Scripting.FileSystemObject

Set FSO = New Scripting.FileSystemObject



Dim folderDebugLog As Scripting.Folder

Set folderDebugLog = FSO.GetFolder("directorypath")



If FSO.FolderExists(fold
> My duplicate issue, #3691, has a code example using a string parameter in a class property. Here's a Scripting.Folder example in a Sub. RD 2.1

Variable ‘folderSaveResults’ is not used


```
Private Sub CreateQueryDebugLog(ByVal strQuery As String)


Dim FSO As Scripting.FileSystemObject

Set FSO = New Scripting.FileSystemObject



Dim folderDebugLog As Scripting.Folder

Set folderDebugLog = FSO.GetFolder("directorypath")



If FSO.FolderExists(f
 
4:17 AM
[retailcoder/Rubberduck] retailcoder pushed 221 commits to next
[retailcoder/Rubberduck] retailcoder pushed commit dd06c0d6 to next: account for default members
 
 
1 hour later…
5:31 AM
0
Q: Delete row that are later than 4 quarters, runs too slow

BenI have a worksheet which is filled with data from Column A to G. Each row is a unique entity and Column G contains a value that shows how many quarters each data is reported late by from today. If the returned value is more 4 (that means the reported date was more than 4 quarters from today), the...

 
 
3 hours later…
8:30 AM
> After installing Rubberduck, I started to notice that sometimes, I would close a workbook and it would remain visible in the Project Explorer of the VBE. And if I were to reopen the closed file, I would end up with 2 entries for the same workbook (with the latest being the one at the top).
![vba project won t close](https://user-images.githubusercontent.com/31558169/35141102-ced10714-fcc7-11e7-816f-7007a1af6470.png)

To make sure that this was indeed caused by Rubberduck, I did some tests w
> Maybe this SO question could be useful here: stackoverflow.com/questions/10696636/…
 
@Vogel612 For most things you can use the generic counting particle つ as a substitute for the proper counting particle. However, if you count two flat things you usually use nimai and counting two things with a binding would be nisatsu whereas it would be nihon for tall cylindrical things . There are over 200 of those counting particles.
Regarding the ordinals, they are nouns in Japanese, e.g. the second corner would be 二つ目の角. (literally translated: the corner of the second occurrence.) In a ranking, the noun would be different though, e.g. 二番の車, the second (best) car.
Regarding quantum computing, the process is a lot more complicated than ordinary computing. I once went to a lecture about it but had to drop out rather fast because I had too much to do.
AFAIU, he basic idea is that you put in a wave function in a defined state (think vector) and then your program applies transforms to the wavefunction such that the result state for the correct execution path gets a probability very close to one.
That is not that much different from why things on normal scales seem to be deterministic although they are quantum on the small scale.
There is so much interaction that the very high interference makes one state have a probability extremely close to one.
Regarding the size problem for silicon chips, some years back I have listened to some physics talks of people building transistors out of insulators instead of semiconductors. That works if things are small enough. The sice limit there to isolate the transistors would be something like three atom layers.
@Duga Come on, the event handling of the VBE is just plain stupid.
I hope the VBE still fires the project removed event and removes the project from its VBProjects collection. Otherwise, we have a very complicated problem.
 
9:21 AM
> Thank you for reporting this.

I think I know what change in RD might have caused this problem and that is related to the SO post indeed. Depending on what the VBE API tells us after the workbook has been closed, the fix might already be on its way.
 
9:42 AM
> Really a "use of default property" flag to get an array of values. Could you have a hint saying "choose one of .value, .value2, .text, .formula, .formular1c1...."
And it's not really "ignore Variant"; the LHS could equally well be any scalar type; after all target could be one cell.
 
10:31 AM
> We have a separate inspection for the implicit default member assignment, (here, `Range.Value`).

It is just that the assignment without set inspection has to smarten up and ignore assignments of classes with a default member that returns a non-object type. It should also ignore if there is a cascade of object type default members where the last one has a non-object type default member. However, that is probably blocked by issue #3153.
 
11:19 AM
 
 
1 hour later…
 
1 hour later…
1:48 PM
Hi.
Prod push is still looking good. :)
 
2:30 PM
[rubberduck-vba/Rubberduck] retailcoder pushed 13 commits to next (only showing some of them below)
[rubberduck-vba/Rubberduck] BZngr pushed commit 79f111ea to next: Merge branch 'rubberduck-vba/next' into Refactor_PRCHelpr_To_PRCExt
 
ghost file is gone!!
 
[rubberduck-vba/Rubberduck] BZngr pushed commit 0a892643 to next: Merge branch 'rubberduck-vba/next' into Refactor_PRCHelpr_To_PRCExt
[rubberduck-vba/Rubberduck] BZngr pushed commit 3ce6d172 to next: Consolidated files - remove PRCHelper
[rubberduck-vba/Rubberduck] BZngr pushed commit ab4f540e to next: Merge branch 'rubberduck-vba/next' into Refactor_PRCHelpr_To_PRCExt
[rubberduck-vba/Rubberduck] BZngr pushed commit 0ab95b08 to next: Merge branch 'rubberduck-vba/next' into Refactor_PRCHelpr_To_PRCExt
[rubberduck-vba/Rubberduck] BZngr pushed commit 02202757 to next: Fix resx merge
[rubberduck-vba/Rubberduck] BZngr pushed commit 34a17f38 to next: Clean-up, improve test coverage - some renaming
[rubberduck-vba/Rubberduck] BZngr pushed commit 189f1c95 to next: Cleaned-up some commented code
[rubberduck-vba/Rubberduck] BZngr pushed commit 1af0bcd3 to next: Manually removed ghost file - RubberduckUI.resx
Merge pull request #3711 from BZngr/Refactor_PRCHelpr_To_PRCExt

Refactor ParserRuleContextHelper to ParserRuleContextExtensions
[rubberduck-vba/Rubberduck] build for commit 3ce0920f on next: AppVeyor build succeeded
 
Github got the progress bar for projects done...
 
hmm, so source control is all done now :)
 
seems like a bug with GH ...
probably because nothing is "In Progress"
 
2:42 PM
or todo
 
3:08 PM
Lots in todo.
 
but not automated as that. ...
well ... I fixed it
 
Yeah, the bar shows about 50/50 now.
 
18 todo, 14 done
 
Re github.com/rubberduck-vba/Rubberduck/issues/3614, should we close that out and create new issues for any more that we find?
 
@Hosch250 I did ask about that earlier but @M.Doerner said he had one more PR
 
3:11 PM
OK.
 
Pretty anxious to see it done with, tho. I looked at the project and wished I could update them but I'm not sure I can do that meaningfully. At least I can put that issue in In progress
 
there's a ton of bugs that may or may not be applicable anymore, btw.
 
the other issues will be likely fixed by what Max and Wayne has been doing in last few PRs.
 
I'll see to whether I can triage them a bit after I finished my tax statement
 
Waiting for Robert Half to get me my W2 for my taxes. I wonder if they posted it on the web.
 
3:14 PM
FWIW, I tend to think that a bug report that's more than a year old is likely stale and should e closed. The more correct approach would be to test every bug report to check if they still apply but.... time consuming. :\
@Hosch250 that's what you get for going with a half. ;)
 
:P
 
ok, updated the project to at least show progress.
hte other issues need to be evaluated independently, so left them in Todo.
TBH the progress bar is kind of a lie
i mean, that one issue is like 97% of the whole project
 
@this it does what every progress bar does: get stuck at 99% :)
 
 
@this Like the xkcd webpage directly.
Chat inlines it, and you get the hover text that way.
 
3:23 PM
ftfy
 
very cool. i thought that wouldn't work cos chat doesn't like non-image URL
 
it inlines stuff from a couple of domains
github is sorely missing from that list though
 
GitHub was supposedly going to join it pushing a year ago.
 
Hey @Hosch250 how's the ANTLR upgrade coming along btw?
 
I couldn't get it :(
The runtime didn't match. I thought you knew that.
 
3:31 PM
soo ... that upgrade is blocked or what?
 
Oh, upgrading to Sam's? That went well, except I couldn't get one of the grammar rules fixed.
 
I'm not quite clear on the status of the issue...
 
I think I pushed that to a branch.
 
I'll try take a look tonight ...
 
Cool.
Actually, no, that's the ANTLR recovery I pushed.
Basically, update the ANTLR NuGet packages, move some of the expressions up in the hierarchy, it should work except for one rule.
 
3:33 PM
@Hosch250 I find it highly ironic that a SE domain can inline a cartoon and a sales ad but not the bread'n'butter of developers for which SE supposedly caters to....
 
@this they just don't have anyone working on chat RN, IIRC
 
I've tried tweaking the grammar and the lexer, but it wouldn't accept the separate rules.
 
RN = ?
 
Right Now.
 
oh lol. Was trying to think of something like source code and failing.
 
3:36 PM
hey @this... found a neat hidden gem to allow calling static methods from the typelibs
so now you'll be able to locate the ITypeLib of the project, locate the ITypeInfo of the module, and then call a member from it, much more refined than Application.Run etc, and host independant
 
Are you kidding us?
 
of course not :)
 
@WaynePhillipsEA a proper way to do something instead of a hack?
 
it has set me back a few hours though, so I probably won't get the WIP PR out today now
Well to be fair, everything I do is a hack :)
4
 
@WaynePhillipsEA wait wait hold on WHAT??!!
 
3:43 PM
RD is trying to be a nice system on top of a hack.
 
yes, I can understand why @Hosch250 thought I might have been involved in the VBE development, to be fair
 
hold on, how does having the ITypeInfo of the module allow us to call its members?
 
Magic
3
 
don't we need the VBA runtime to get involved?
 
In fairness, ITypeInfo should offer that anyway, for its static members. see ITypeInfo::AddressOf
but VBE doesn't support it properly
Nope
 
3:45 PM
...
thanks, you've just shattered my understanding of how VBA code gets to run
:)
 
the VBE TypeInfos are all bound to the runtime
 
oooooooooooh
so you just single-handedly mootinized every host-specific implementation of IHostApplication.Run that we have :)
 
I guess so... might also work on classic VB6 too, just haven't tested yet.
 
4:02 PM
man, where were you all this time!!
I can't thank you enough for what you're contributing
 
You're welcome. I'm just hopeful we can pump some new life into VBA
 
waiiit... Mug did you think that the VTable equivalent in VBA didn't allow invoking methods ???
 
@Vogel612 what "equivalent"? It is v-table. Otherwise, it ain't COM.
 
ITypeInfo isn't called vtable
 
@WaynePhillipsEA sweet!
No, that's not the v-table. That's separate thing - IType*** are just a way for COM to provide metadata about themselves.
 
4:06 PM
@Vogel612 I thought we somehow needed to pass the pointers to the runtime
#FAIL
 
@this wait... and they can do that without a vtable in the background? that sounds pretty weird
 
this is something that the implementator can choose to implement -- not all COM objects come with that implemented. VBA has to implement those -- otherwise it wouldn't know how to run code authored somewhere else so it uses IType*** internally for object browser, intellisense, whatever. It's not necessary to use IType*** to run code, though.
 
yeah you can use SendKeys too
 
At least, that's how I understand things.
 
=)
 
4:10 PM
@Mat'sMug with lot of 4-leaf clovers and horseshoes, some salt. I think it helps if you chant "noodle...necktie!" when you SendKeys, too.
 
@WaynePhillipsEA What's your address? I'll send you a pen.
It's not just any sort of pen. Ask Mat.
 
Yeah. A beautiful one, with a tip that keeps popping out ;-)
(I never repaired it...)
 
hey @Hosch250, sounds cool. I'll email you.
thanks
 
@Mat'sMug :(
If you are ever in my area, let me know. I'll fix it for you.
Or, you could do it yourself. Use a tiny drop of thin CA glue (look up "Hot Stuff"--it's the thin version of the brand I use). Wear latex gloves and don't get it on your skin. I usually use a chemical mask, but I do a lot of gluing at once, so...
 
I could probably shim it
 
4:19 PM
Put the drop of glue on a bit of clean plastic/metal (jar cover will work great). Dip a q-tip in, and rup it around the inside of the metal tube (Before you even get the glue out, pull the pen apart in the middle and take the "refill" out).
Press the metal tip back in firmly all the way. This is where you need to act fast.
 
it's like the hole is a fraction of a millimeter too wide
 
I have a jig to do this step.
@Mat'sMug That's more/less what the glue will do.
Oh, and you'll want to rough the contact surfaces a bit to help it hold.
100-grit sandpaper will work nicely.
 
#TooMuchWork
 
Yeah, and takes a bit of expertise.
But, if you are in the area, let me know.
 
@WaynePhillipsEA just to be clear - would this be only good for calling a module or could it be used to activate a class instance, too?
 
4:32 PM
fwiw I'm good with it only working with std modules
 
yeah, was just curious mainly.
 
just standard modules... for now
 
For now, lol.
 
enums and UDTs are not currently enumerable either. if you get a member that references an enum/UDT you'll be able get the enum/UDT TypeInfo, but you just can't find the TypeInfo diretly by enumerating the TypeLib
it's due to the way VBA allows you to define UDTs/enums inside a class/module type, but internally it creates them in global scope (as type libraries don't support enum/UDTs inside other types)
 
yeah, noticed that in the first draft of the COM collector :)
 
4:41 PM
I figured the VBE TypeLib would just expose them directly inside the ITypeLib, but it doesn't
 
makes me wonder how Private Type TSomething is implemented
 
I'll figure out a way of accessing them. After all, the object browser does it.
Just won't be supported initially
It's a shame that the project Guid field is always GUID_NULL in the exposed type library as well, as I know you store an project-ID somewhere as well for some purposes
 
aight ...
 
@WaynePhillipsEA we hijack the HelpFile to store a unique identifier that helps us tell VBAProject (project1) from VBAProject (project2)
 
I think I'm already mostly finished with tax work for 2017. That was quicker than expected.
 
4:47 PM
@Vogel612 dang, I haven't even received my income statements yet lol
 
@Mat'sMug yeah that's the one.
 
neither have I fully, but luckily my bank allows me to query my bank statement online for basically arbitary timespans
 
I have my income statements from my employer, but not the recruiting office I worked for for 90 days.
I've had my W2 from my employer for over a week already.
 
I'm theoretically waiting on the equivalent of that from my employer. I'm pretty sure they already sent it to my boss, we just didn't get to getting it to me ,...
Then again it's not terribly interesting, because I basically can grab what I earn directly, without any deductions
 
@WaynePhillipsEA would bad things happen if we attempt to write to the project guid?
 
4:52 PM
good question. unfortunately it's not writable via ITypeLib though
 
Ah ok.
 
I'm pretty sure the guid is only populated when written to disk. whilst in-memory it looks to always be GUID_NULL
bbl
 

« first day (1323 days earlier)      last day (1857 days later) »