« first day (1565 days earlier)      last day (1615 days later) » 

12:01 AM
RELOAD!
[rubberduck-vba/Rubberduck] 1 commit. 3 opened issues. 4 issue comments. 4 additions. 2 deletions.
[Zomis/Server2] 2 commits. 51 additions. 4 deletions.
[Zomis/test] 1 issue comment.
[Zomis/zomis.github.io] 1 commit. 1224 additions.
[Zomis/zomis.github.io-source] 5 commits. 236 additions. 138 deletions.
 
12:27 AM
> In Options > Indenter Settings > Vertical Spacing > Maintain Vertical Spacing,

rows are limited from 0 to 2. My coding style makes generous use of vertical spacing within procedures so I would like 3 or 4 rows of spacing between them.
 
@IvenBach @KySoto got a pop up saying sign in forup to five mins each day? Man that’s ideal for people with short attention span me thinks!
 
> The refactoring tool "Move Closer to Usage" doesn't honor indenter settings. For example, when using the tool on variable `varToMove`:

```
Sub test()
Dim varToMove As String ' indented
Dim j As Long
Debug.Print varToMove
End Sub
```
It ends up like this:
```
Sub test()
Dim j As Long
Dim varToMove As String ' not indented
Debug.Print varToMove
End Sub
```

It would make
> To me it makes sense for the indenter to remove the whitespace lines without an extra option to turn on and off. I can't think of any reason to want to preserve it. If this is made an optional setting then having it on by default seems like the way to go.
 
12:55 AM
> For *your* preferences, perhaps. As far as I'm concerned, blank lines that
don't honor the indent level they're at, drive me nuts. I systematically
add that indent whenever I paste code from CR or SO into the VBE. If
current indent is 3 levels, I see no reason to suddenly have a blank line
(which is pretty often just completely arbitrarily left blank) at 0 indent
just because it's blank - if it's already indented then if I type a comment
(or an instruction) on that empty line then *it's alread
 
1:10 AM
> I just showed up to argue with Retailcoder.

Git shows indentation on blank lines as white space error. It makes the diff noisy.

Of course, VBA commits in Git tend to have a ton of noise anyway, so... yeah. I just felt like being contrary.

Having an option is definitely the way to go.
 
@Duga the point is that we had this discussion, and concluded that it was going to be configurable - case closed
 
> @rubberduck203 git diffs aren't any messier from Visual Studio, and to get VS to *not* indent empty lines, you have to actively be *fighting* the IDE.

![image](https://user-images.githubusercontent.com/5751684/45658802-2d84d500-babf-11e8-90f6-b3a1d83906d0.png)
> Now that I think about it I do indent blank rows and sometimes add or delete whitespace so that blank rows have the "proper" indentation in case I add something to them. Perhaps the indenter could stop ignoring blank lines and add or remove whitespace so that it indents every row, regardless of content.
 
@Duga flip much?
 
1:25 AM
> @CHR-IS-B I can see people preferring empty lines be left alone, as much as empty lines being indented, or any & all extraneous whitespace be eliminated - hence my pushing for a configurable setting 😄
> When using the refactor tool "Move Closer to Usage" on a declaration for a variable that is not actually used, RD doesn't move the variable (as it should). There is no notification so from the user's perspective, no action was performed.

RD should notify the user why it did nothing (i.e. can't move variable closer to usage because it's not used).
 
1:46 AM
> @retailcoder I can understand that.
> The VBIDE API does not allow us to edit a line of code in-place: we have to replace it, and doing that causes the line to be validated/parsed by the VBE, which is what is causing the most violent headaches around autocompletion: I have to try and predict what the code will look like in the VBE after the original code is "autocompleted", in order to be able to correctly determine where to place the caret... and while in most cases it's relatively easy, the edge cases are... insanely inf
[rubberduck-vba/Rubberduck] build for commit b81f8177 on next: AppVeyor build succeeded
[rubberduck-vba/Rubberduck] build for commit b81f8177 on next: 53.03% (target 0%)
 
2:10 AM
@Hosch250 you around? InterfaceContainsInterfaceType chained wrapper test is failing, and debugging that project is a royal pain in the neck ATM.
I'm slapping an [Ignore] attribute an opening an issue
 
> Test method `InterfaceContainsInterfaceType` is failing. The test case involves this code:

```csharp
namespace Rubberduck.VBEditor.SafeComWrappers.Abstract
{
public interface ISafeComWrapper
{
FooImp Execute();
}

public abstract class Foo : ISafeComWrapper
{
public virtual FooImp Execute() { return new FooImp(); }
}

public class FooImp : Foo
{
public override FooImp Execute() { return base.Execute(); }
}

pu
 
2:37 AM
> @Hosch250's work, originally submitted in #4238; resolved conflicts.
 
@Vogel612 want a good one?
it's almost like we're the only project to integrate AV with GitHub auth ffs...
 
[rubberduck-vba/Rubberduck] build for commit dbc87a0e on unknown branch: AppVeyor build succeeded
[rubberduck-vba/Rubberduck] build for commit dbc87a0e on unknown branch: 53.03% (target 0%)
[rubberduck-vba/Rubberduck] build for commit 3f9465c5 on unknown branch: AppVeyor build failed
BUILD FAILURE!
 
2:57 AM
@Duga oooh, I forgot that PR was still open!
 
holy crap I just had a freakin' epiphany
 
[rubberduck-vba/Rubberduck] build for commit 7e8f9372 on unknown branch: AppVeyor build failed
BUILD FAILURE!
 
@Duga yeah yeah ..hush now
ok, rubberducking this
so the problem with AC is that we pick up WM_KEYDOWN messages before the VBE handles them, then AC figures out what character to insert & where, then rewrites the line in-place.
this means fighting the VBE over its "prettify" behavior
what if instead of rewriting a line of code that's not yet been "prettified"...
...AC took the current line, and replaced it with itself before working out the autocompletion behavior to enact
but only if the current selection is at the end of the line
hmm
1) we'd lose AC when editing an existing line of code
2) typing will probably flicker all over the place
ok nevermind
there is no good solution
let's say we just have to live with #2. the flickering is barely noticeable anyway.
to work around #1 there's still the problem of figuring out where the damn caret needs to be post-prettify
...
this could be done with a bare-bones regex tokenizer that simply counts "words", and then comparing the pre-prettify caret position's "word index" and in-word position as applicable...
..then proceeding with the line-replace, re-tokenizing, and then locating the position of the "word index" and the new caret position
hey @this
 
4:08 AM
so, if I can roughly tokenize the pre- and post- prettify code, then I ...solve #2 instantly, since I don't need to rewrite the line in-place at all
and that solves SCP hiccups
 
@Duga 2 resolver tests still failing. TTGTB
 
 
4 hours later…
8:37 AM
@IvenBach Sure, only that it's twice as many characters... :P
 
9:02 AM
> 3786 is exhibiting the same problem

Load word document
Developer.Visual Basic
Debug.Compile <myprojectname> we get a clean compile
Click on Pending button and nothing happens.
 
9:34 AM
 
 
2 hours later…
11:57 AM
@MathieuGuindon Good job, Smee!
@MathieuGuindon you say 4374 is a good first issue. If you're available for some hand holding tonight. I'll give it a go.
 
@FreeMan Smee? Who's Hook if not him?
 
whew!
 
Does that make sense? Bare-bones tokenizing with a simple regex?
 
@MathieuGuindon not sure how good my C# understanding will be, but I learn best by diving into the deep end and coming up spluttering. Reading, reading, reading... nothing much sinks in.
 
12:04 PM
e.g. caret is at the end of the 3rd word
 
tokenizing using the ANTLR?
 
no, because we don't know that the current line is compilable
in fact it likely isn't
so let vbe prettify, get the prettified line, retokenize, find the 3rd word, and place caret at the end of it
 
Ok - do you have the context?
 
hmm, seems to me you need it
 
12:07 PM
AC shouldn't require a parse
 
you should be able to sic the ANTLR on the rest of the procedure to provide you the context, right?
Back up - is this still for SCP, right?
not for blocks?
 
SCP yeah
 
ok, right. I don't think we really need a context beyond the current line (line continuations notwithstanding)
 
aye line conts remain a problem. kinda.
 
what do you hope to achieve with the tokenizing + regex?
 
12:09 PM
knowing the correct caret position post-prettify
 
earlier,you were comparing by stripping out whitespace and comparing the relative position, right?
 
not really. it was just a "best guess"
For a stable solution I need to take the guessing out of there
 
ok. prettifying only will 1) add/remove spaces, 2) close the string if it's not closed already. There is no other effects (e.g. closing a ) never happens). Right?
 
so tokenizing will help you with the spaces issue
 
12:14 PM
that's the main problem yeah
 
and you should be able to figure the last " that might have been automatically added by prettifier
 
yup, rather easily
actually that one's totally predictable
 
as long the caret is in middle of line, you don't have to care about the caret's line position
 
you only need to compare the relative position of caret to a token it's in.
and place it after the AC, whatever
The other part you would need to watch is when the caret is at end of line and we have typed a space
 
12:15 PM
hence tokenizing with a simple syntax-agnostic regex
 
In that case, there'll be no tokens.
You would need to preserve that information only for the end of the line.
 
but the space will be removed, and there's no way to put it back in
 
why not add it yourself before putting the caret?
 
I can
vbe will strip it when I replace the line
 
hmph
going to feel weird typing, losing space, typing, losing space.
2
 
12:17 PM
I can add a character and select it though
but then that assumes you mean to continue typing on that line
 
nbsp? :p
 
thought of that... it's dangerous imo
 
wasn't really serious.
 
lol I gave it a serious 3 seconds =)
 
just so I'm clear- vbe strips it when you replace the line.... but it will still do that even if you basically send the window message for typing a space?
 
12:19 PM
no, it does it when VBIDE API replaces the current line
 
so what's stopping you from sending an extra window message to insert a space after replacing?
 
sending a WM might do the trick, but then it complicates things a bit. ...this should work though
 
I think that would solve your issue without any guessing because once you tokenize, the caret must be compared to a token; the end of line is the only place where the caret won't have anything to compare to.
 
well wait a sec. how does AC ever kick in if the last char on the line is a space?
 
I was thinking of scenario where the prettifer adds the " that you don't want
 
12:23 PM
ok but how would that happen?
 
back up - if you replace a line containing an unbalanced set of quotes, will vbe close that out?
 
yes
Ok yeah gotcha
 
that would be undesirable, and that would be where the caret could be after a space (e.g. not done with the string being written)
 
but how did AC kick in in the first place in that scenario?
space would be the last thing you typed no?
 
example: foo = "I am writing something ( for the sake of example |, and I type )
 
12:26 PM
meh, I don't think the closing dbl quote gets in the way
 
it would be if the caret was put after it.
if it's still inside then OK.
 
gtg get stuck in traffic, bbl
 
but there should be a space still. so if we end up with foo = "I am writing something ( for the sake of example)", that would be wrong as I intended to write foo = "I am writing something ( for the sake example )"
 
but the ) would already be there because ( would have AC'd it =) ....but yeah I see
 
12:41 PM
agreed. That's not a typical case but that can happen (maybe as a result of a cut'n'pasting a fragment for instance)
I think that if you program it to work without any presumption of any prior AC, it will work all the time, even when AC already has worked on the same line for prior instances of quotes or braces.
 
1:02 PM
> Yea. The fix has not been merged yet. I'm having some troubles with the build process on my local machine, which makes it hard for me to verify what exactly the issue is and whether I've fixed it.... I'll male sure that this issue is automatically closed when I think it's fixed. The prerelease after should then no more exhibit this behavior
> Yea. The fix has not been merged yet. I'm having some troubles with the build process on my local machine, which makes it hard for me to verify what exactly the issue is and whether I've fixed it.... I'll make sure that this issue is automatically closed when I think it's fixed. The prerelease after should then no more exhibit this behavior
 
1:13 PM
@MathieuGuindon I'll try to take another look this weekend. I may have an idea how to fix it.
@IvenBach No, that's been around for a while--before C# 6.
 
1:59 PM
Well... this is fun...
Working on an SSIS package and VS2017 has decided to stop working.
>:(
now to find out if it saved what I've done.
 
@FreeMan you speak as if it's something unexpected.
 
oooh... it did save it, it did, it did!
 
I have a couple ideas of things to work on.
 
I guess it's not that unexpected, then, eh?
 
@FreeMan Not for some. It usually works for me.
 
2:01 PM
you better save them now, though. Or it'll get lost for reals.
 
That ^
 
saved.
ctrl-shift-S every time I do something, then, eh?
 
if it crashed while saving the recovered file after a crash, that would be unexpected. :p
 
Also, if you have any new files and hadn't built the solution (which does a save automatically), the .*proj files might not have had the changes saved.
Not sure about SSIS, but I've had that issue a couple times with C# projects.
The file will be there, but not in the .csproj.
Of course, the new .csproj template is better--it doesn't need to have every file listed.
 
the good news is that it does appear to have saved everything I did, which is nice since I don't think I'd intentionally, manually saved it once...
 
2:03 PM
I wonder why they didn't do that from the beginning.
 
bad me! bad! bad!!!
however, it did give me this handy little notice when it restarted:
 
hmm. wonder if that'd make SSIS project go boom
 
I'm no genius, but if I disable the Integration Services Projects, won't that prevent me from doing the SSIS stuff that I installed to enable me to create SSIS projects?
 
1) is a minimal functional language that reads like a C-style language with braces and stuff.
2) is an OOP language that reads a lot like Python, but with strict type checks and stuff.
1) I'd just transpile to F#, and 2) I'd just transpile to C#.
 
2:23 PM
@FreeMan I'm just as confused as you are. I'd think so, too.
 
well, as I've discovered, MS isn't always so helpful when it comes to their helpful messages...
 
FWIW, that just detects errors in components.
It doesn't realize that's a critical component, just that it had an error and crashed.
Knowing VS, it was probably something about networking.
VS crashed all the time when I had to use TFS when the network was slow because it is constantly sending data back and forth.
Now I'm on Git, it's much more stable.
 
@FreeMan I feel like Option Explicit should be a requirement when posting a VBA question... (Not sure how it would be enforced though.)
 
@Inarion it's annoying having to point that out to people all the time, but hopefully they'll learn it by being told about it. If SO just told them they had to put it in there, most people would copy/pasta with no idea why, the same way they've written their code. No learning that way...
 
@FreeMan Of course they'd need to place it in their actual code and compile it that way... But that's wishful thinking.
I mean, the obvious solution would have been for Microsoft to have the option default to always have Option Explicit unless the user actively opts out. No idea why this isn't the case.
 
2:35 PM
@Hosch250 lol, "Roslyn crashed. Disabling Roslyn might help prevent similar issues"
 
@Inarion It's "harder" to have to declare your variables and the goal of VBA is to be as easy as possible. (Unless you're @MathieuGuindon writing a Battleship game or @ThunderFrame designing weapons.)
 
@FreeMan "harder to write", but easier to everything else
i.e. 95% of the job
 
But, when you're an accountant without a CS degree, and you just want to make something easier, you're not thinking about the other 95%. You just want to make it happen. Not saying it was the right decision, but I can certainly understand the decision.
did I just agree with Microsoft? Isn't that one of the signs of the apocalypse?
 
Best get your asbestos undies on, then folks. It's about to get really warm!
 
2:41 PM
what accountants without a CS degree need to understand, is that their job is to do accounting, not waste half their work week debugging broken code because it was so easy to write.
 
Gotta love questions like these: How do I copy a range from one workbook to another in excel WITHOUT having to name it in VBA?
I want my code (it's always The Code) to achieve my goals, without telling it what to do. Can you please write that code for me?
I guess once you get into programming, you'll realize: It's not magic. It never was.
 
@Inarion <== THAT is the exact type of question accountants w/o a CS degree ask.
 
by writing code that's easy to read, they can concentrate on their actual job because debugging code that's easy to maintain (but yes, harder to write), is much easier. and once you realize that whenever code is involved, reading it is 95% of what you're going to be doing with it, you start putting in the effort towards making it done right. Or, you pay someone that knows what they're doing, to do it for you.
 
@FreeMan sniff There's a hint of prejudice in the air. ;) (Without knowing any better, I tend to agree.)
 
Who's opening the file? The user? Or the macro? Make it be the macro, that way you'll have a reference to the Workbook object, without needing to care for its name. — Mathieu Guindon 1 min ago
gosh, this kills me:
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
ParameterName _
    :=ParameterValue
it's criminal
 
2:51 PM
@MathieuGuindon I don't disagree with you at all! However, for those who don't CS for a living, they don't know that - they just want to make it work. Now! Anything that impedes that makes it less likely they'll write the code. Learning to write better code can come later.
I look at the crap code I wrote 3 years ago compared to the comparatively slightly less crap code I write now and it's a big difference. And I've got the degree and do this for a living!
 
@FreeMan and my answer to them would be "fine, make it work now - tomorrow I'll say "told ya"
 
and that's what we do with our answers on SO.
OK, after VS crashed and restarted, I'm getting this error in my SSIS project:
Error : System.IO.IOException: The process cannot access the file 'C:\Users\bshepard\source\repos\Integration Services Project1\Integration Services Project1\bin\Development\Integration Services Project1.ispac' because it is being used by another process.
I've restarted VS again, but it's still insisting that the file is in use.
Suggestions?
 
reboot
 
Reboot the whole machine?
 
(serious)
Windows has a lock on the file
 
2:56 PM
yeah... I was typing as you typed.
BRB!
 
it's one of thing that I do kinda of like with python - by making whitespace significant, you can't not indent and write weird shit like splitting the named parameter's assignment.
 
@this F# is like that too.
I kind of like it, and you really don't need braces, hence my #2 project idea.
 
@this at least RD has an inspection for that
 
> Arguably we shouldn't even provide the option to move closer to usage on such variables. The described intended behaviour is fine, though.
 
@MathieuGuindon for splitting the named parameter's assignments?
 
3:09 PM
yup
 
wowza. that's remarkably specific.
and a good thing, too.
 
because it's remarkably fugly code that desperately needs fixing
 
lol. point.
i'll never know how it could possibly appeal to them who wrote that way.
 
my guess? macro recorder
 
oh it does that?
 
3:11 PM
oh fk yes it does that!!
 
hmm. gosh, been a while since I really looked at macro recorded code.
lol ok that sorta explains why.
 
@MathieuGuindon winner, winner, Chicklet dinner!
 
now I just need to find out why it's not finding any matches on my Lookup step...
Not case sensitive, is it?
 
depends
 
3:13 PM
there are probably minor spelling differences in the text that I'm not seeing because I haven't looked hard enough.
interesting. VS downloads & installs its own updates. SSMS directs you to a web page to DL the updater and you have to do it yourself
Also, it's really hard to type here when installer pop-ups keep interrupting your typing!
and the SSMS installer isn't even polite enough to offer to close SSMS and continue - it just bails if it's running.
:/
 
> Not quite sure why this is tagged with 01-duckling. If the Refactoring would automatically call the indenter afterwards, that'd be fine. As it is described, the refactoring would need to examine the target context's surroundings for other variable declarations.

Doing so is a somewhat complex endeavour. Note that the current description assumes the target site will be at the end of a block of declarations.

What if the original code was the following?

```
Sub test()
Dim varToMove
 
@Duga right, should probably be 02
I was thinking of just taking in an IIndenter dependency, and running it on the replacement line and then left-padding as appropriate
but maybe what we really need is just a "[x] Indent procedure after applying a refactoring or quickfix" setting
 
> Horrendous looking code is, however, up to the programmer. If someone wants their Ases aligned, but uses Move Closer to Usage, then it's on them that their code is... difficult to read. After making these changes, they may chose to disable the As Type alignment and re-run the indenter and be done with it.
 
@MathieuGuindon that seems more appropriate, yea
 
@Duga IMO someone that aligns their As clauses will be more keen to have a wall of declarations at the top of their procedures, and hence more likely to DGAF about "move closer to usage"
 
3:25 PM
then we'd need some kind of "global-ish" coordination for refactorings
 
@Vogel612 there's a base class for refactoring commands, no?
 
I would be surprised if there wasn't
 
that's where I'd put the post-refactor indent I think
 
yea, definitely
unrelatedly: could you check the emails on rubberduck.org?
 
or would an IRefactoring decorator be more elegant?
 
3:27 PM
there should be a GH email verification request
@MathieuGuindon hmm ... it would definitely reduce the number of places where IIndenter will be injected
because if we inject to the base class, every deriving class needs to provide it and accordingly request that itself
 
does every refactoring imply indenting?
 
if a setting says so, then yes :)
 
Probably every refactoring should imply an indent
makes the refactoring itself simpler as well, because we could start ignoring indentation concerns in the refactoring
 
> @Vogel612 has invited you to collaborate on the
rubberduck-vba/Rubberduck repository
?
 
no
I worked around that one already :)
 
3:30 PM
ah
> Hi @rubberduck-vba-releasebot!
that one
 
yea that one
tell me if you need it again. the password is the same as on AV
 
oh crap, I logged in as myself on GH
facepalm
ok that worked
we need a duckbot pic
 
@MathieuGuindon : Be GitHub.
 
oh a mechanized ducky?
 
kinda
I'm logging it off
should it not be a member of the org?
 
3:34 PM
I added it as collaborator.
I didn't find a way to add it to the org
possibly don't have the permissions
 
[rubberduck-vba/Rubberduck] Vogel612 pushed commit 52b85f9b to next: Move AppVeyor Releases to rubberduck-vba-releasebot
 
there ya go. :)
 
EXACTLY what I was thinking of!!
 
you want to do the honors, or should I?
 
3:39 PM
@Inarion hence my suggestion for a longer variable name that's twice as many characters.
 
^ is that cheating?
 
did Duga star RD?
 
hmm, profile pic caching didn't update yet
 
3:43 PM
@this she's not ours to control
but I think she has a github account to modify her own source code
 
yeah @dugabot or something
 
I know, but Simon could have had. If she had, then RDB can't be cheating, either.
 
@this Robot duck has a diaper on. Never realized that as a child.
 
@IvenBach TBH, I always found him to be weird. Why have a TV on the chest, too?
There's so many problems but I guess that's the whole point. It's a cartoon character. :)
Didn't help that we had Krang, too. Brain in the belly? Really?
 
wasn't Krang the actual brain?
I don't recall the golem's name
 
3:46 PM
@IvenBach It seems we just disagree on this one - I didn't intend it to be HN and I don't get confused by it (I tend to get very confused by code written in HN; just too much visual noise). As such I don't see much incentive to change it. Also, I allow myself to be more lenient when the usage of such a variable is very localized, i.e. Dim it directly above a loop and use it only there.
 
@MathieuGuindon TBH I don't think the robot ever had a name; they were collectively named Krang, as far as I can remember.
 
~sigh the coverage run just takes ages to run the tests...
 
@Inarion I find myself doing Dim i as long every now and then. #ItHappens. I know better but sometimes #MakeItWork takes precedence.
 
@IvenBach i'm guility of the same thing. When it's the only loop in the procedure it's not a big problem
 
@IvenBach Along with the solo programmer's #ItWorksForMe ;)
 
3:48 PM
i is fine 99% of the time
 
it starts to smell when you have more than one loop in the procedure, though.
 
it's when you start having j and k
yeah
 
^
 
Luckily, RD makes it easy to do away with these sins :)
 
3:49 PM
that went ... flawlessly
 
[rubberduck-vba/Rubberduck] build for commit 52b85f9b on next: AppVeyor build succeeded
[rubberduck-vba/Rubberduck] build for commit 52b85f9b on next: 53.03% (target 0%)
 
@Duga ok that is awesome
 
I'm honestly surprised it worked!
 
does that means Mat will stop padding his commit counts? :p
 
@this probably, yeah :)
 
3:50 PM
Make it work (Crawl)
Make it right (Walk)
Make it fast (Run)
 
Sounds about right. :)
 
In between each of those is an implied CodeReview post.
 
Time constraints will end the process at stage 2, though.
(For me, usually.)
 
I don't worry too much about premature optimization. If something becomes a bottleneck I'll refactor. Then again my stuff isn't hyper time sensitive, yet.
 
WHERE'S THE PROFILE PIC. SHOW ME THE DUCKY!
(Jerry McGuire screaming on the phone)
SHOW ME THE DUCKY!
 
3:54 PM
@MathieuGuindon Evidence of Mug's obsession with his phone :sigh:.
We need an intervention soon, this is getting out of hand.
 
@IvenBach Same for me. Most of the time. One of my first "achievements" here at work was to cut down a script's average time consumption by about 90%. (One of the previous maintainers had put some very expensive file operations within an inner loop...) It was only run once a month though, so saving an hour or two wasn't all that significant...
 
@IvenBach is it normal that I'm envisioning some How I Met Your Mother type of "intervention"?
with the banner & all
 
LOL.
Also, just saw this:
 
Though I'm still not sure if it wasn't done on purpose: Script is still running - I can't use the program now.
 
@Hosch250 Pretty accurate.
 

« first day (1565 days earlier)      last day (1615 days later) »