« first day (1868 days earlier)      last day (35 days later) » 
00:00 - 17:0017:00 - 00:00

12:00 AM
[rubberduck-vba/Rubberduck] 4 commits. 5 opened issues. 1 closed issue. 38 issue comments. 167 additions. 103 deletions.
[Minesweeper] Games Played: 63, Bombs Used: 55, Moves Performed: 9755, New Users: 6
12:30 AM
Hey @Vogel612, insomnia?
I sympathise
my GF has a handin for a paper tonight
Ah ok. Deadlines suck.
so I've been keeping myself awake with some factorio so I can give it a quick once-over before final submission
12:31 AM
My record was 30s before cutoff...
googles factorio
Oh cool, an RTS?
@MathieuGuindon yes, but I may need a kick in the backside
@mansellan more like... it's own genre
factory and optimization games were basically reinvented with factorio
depending on how you play it, it's basically a hard optimization game where you try to squeeze out the last bit of throughput out of the constraints given by the game
heh... sounds like the sort of game I need to never go near. I tend to get a little obsessed :-) My wife nearly disowned me over Boom Beach, and that's just a simple phone game...
I did enjoy Civilisation when I was a young'un though...
yea, AFAIK rolfl has multiple thousand hours of playtime
similar thing with Simon and possibly skiwi?
it's one of these games that naturally comes up with "just finish this thing up and then I go to bed"
12:36 AM
yep, not touching it!
and the moment you do finish, something else is just not quite perfect enough to sink some more work into it
I'm a perfectionist, and that sounds like perfectionist-crack...
So... ima forget I heard about it. Have fun though ;-)
What's your GF studying?
Same as me: CS
cool :-) the industry needs more women.
she's a lot more detail-oriented and meticulous than me though
especially in theoretical CS I missed points in the exams because I was "in a hurry" without really needing to hurry
12:39 AM
Oh? You seem plenty precise with your PR comments?
but those are something completely different from building a proof
I'm very handwavey
That reminds me though, I need to decide if I'm gonna complete my BSc...
If I could get away with it, I'd be writing a lot of "and then we can probably apply theorem A to finish the proof"
Enrolment for next term is looming
@Vogel612 lol
> @retailcoder that's a valid concern, but I'd say pulling this into working for all grids in RD is beyond the scope of a single PR. I'm not even sure how many users would notice or use this kind of feature...
12:42 AM
TFW you haven't logged into your uni site for so long you forget your password...
fires up Dashlane
oh, its a non-trivial one... forgot I did that...
1 hour later…
2:06 AM
[rubberduck-vba/Rubberduck] retailcoder pushed 33 commits to next (only showing some of them below)
[rubberduck-vba/Rubberduck] IvenBach pushed commit 0008a7cc to next: added hasResults attributes to xml-doc examples
Some german translations
Signed-off-by: Imh0t3b <cmasius@web.de>
[rubberduck-vba/Rubberduck] IvenBach pushed commit 21d369d1 to next: Delete Rubberduck.CodeAnalysis.xml
[rubberduck-vba/Rubberduck] IvenBach pushed commit 2bf63579 to next: Update .gitignore
[rubberduck-vba/Rubberduck] IvenBach pushed commit 896a1612 to next: Merge branch 'next' of github.com/rubberduck-vba/Rubberduck into Issue2947_ToDoHeaderReorder
[rubberduck-vba/Rubberduck] IvenBach pushed commit e82c4b94 to next: Fix resource renaming error
[rubberduck-vba/Rubberduck] IvenBach pushed commit b112e24e to next: Merge remote-tracking branch 'upstream/next' into Issue2947_ToDoHeaderReorder
[rubberduck-vba/Rubberduck] IvenBach pushed commit 3f72e633 to next: Merge remote-tracking branch 'upstream/next' into Issue2947_ToDoHeaderReorder
[rubberduck-vba/Rubberduck] IvenBach pushed commit 30a81ead to next: Merge remote-tracking branch 'origin/Issue2947_ToDoHeaderReorder' into Issue2947_ToDoHeaderReorder
Merge pull request #4986 from IvenBach/Issue2947_ToDoHeaderReorder

Allow reordering of ToDoExplorer header columns
2 hours later…
4:29 AM
@Vogel612 not when you’re teaching me. You must have your pedantry level cranked to 11 when getting me learned.
3 hours later…
7:37 AM
@Vogel612 Just doing my factorio lazy run, which is one thing holding me off of finishing my current PR.
2 hours later…
9:08 AM
> I confirm similar issue.

Rubberduck version loading:
Operating System: Microsoft Windows NT 10.0.16299.0 x64
Host Product: Microsoft Office x86
Host Version: 16.0.11629.20246
Host Executable: EXCEL.EXE;
2 hours later…
11:30 AM
@M.Doerner yea I messed up mine not too long ago
@IvenBach You do notice that I'm skipping ahead at first until you rein me in, right?
12:35 PM
> **Rubberduck version information**
The info below can be copy-paste-completed from the first lines of Rubberduck's log or the About box:

Rubberduck version [...]
Operating System: [...]
Host Product: [...]
Host Version: [...]
Host Executable: [...]

A clear and concise description of what the bug is.

**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

**Expected beh
> Could you please fill out the sections of the template? Otherwise, we will not be able to help you.
@Vogel612 I took precautions and revoked my crafting permission after the initial crafts.
12:52 PM
> [Prerelease-v2.4.1.4799]

Hi, I installed the latest pre-release and started to try it out in a reasonably sized Access DB (50,000 code lines in 500 files). It took about 5 minutes to parse the code base on the first run. Everything seemed to run ok but when the Access DB tried to save itself it at the end it got an error to do with not enough resources and ended without saving anything. I tried again and got the same problem but this time all the VBA code vanished. The Access DB was left in
> Sorry, it should be all there now.


On Thu, Jul 18, 2019 at 2:40 PM Max Dörner <notifications@github.com> wrote:

> Could you please fill out the sections of the template? Otherwise, we will
> not be able to help you.
> —
> You are receiving this because you authored the thread.
> Reply to this email directly, view it on GitHub
> <https://github.com/rubberduck-vba/Rubberduck/issues/5056?email_source=notifications&email_token=AJHNYVGRNICC72U5ZWXD4RLQABQDNA5CNFSM4IE2IWH2YY3PNVWWK3TUL52HS
1:41 PM
@Duga 500 modules, reasonably sized. Curious what they consider a large project.
1:54 PM
I'm inclined to take that with a grain of salt - when there are that many modules, it turns out to be a product of copy pasta with one or two tweaks.
esp. w/ forms or reports
2:21 PM
it's still a giant workload for ducky
tbh i'm surprised it parsed at all
Our parser rulez.
I wonder how thay navigate throughout 500 modules?
2:37 PM
they don't.
if they need to change, they copy and paste a new form and use that instead.
in many applications we inherit there's a good % of dead code
but in VBIDE, it's very hard to see what's really dead code
Ctrl+F driven developmnent?
I guess?
the mindset is usually "OMG just fix this shit right now"
never "gee, I probably should do a better job and clean up my code"
... Yes... but if it works than let it be
ah.... I hate that.
Ohh cammon! OOP have SOLID and all bunch of complicated rules that regulate everythink and VBA have one simple rule to follow😁 "make it works". You don need Uncle Bob for it;)
2:45 PM
I think we have a consensus of hate here.
Unfortunately, some people seem impervious to spiked 2x4s of correction.
2019-07-18 13:27:22.4319;WARN-;Rubberduck.Parsing.Symbols.IdentifierReferenceResolver;Default Context: Failed to resolve strSQL & "WHERE (((tblArtikel.ARTNR)= '" & !SLArtikelNr & "'))". Binding as much as we can.;
how the hell is that even legal code?
In deed
new article title: Cry that Bob's your uncle!
oh damn, it's gotta be in a With Me block
@MathieuGuindon probably in a form/report module
2:47 PM
yeah but the bang is implicitly qualified
FUN TIMES!!!@2112!@!@$#
need an easter egg inspection for bang.
I do not agree with replacing Me.xxx with xxx
that just hurts readability.
so With Me and then !FooBar is fine?
must be a dot, no exceptions.
Frankly, I never had to actually use a bang....
2:49 PM
in The Nineteenth Byte, 19 hours ago, by flawr
oh matlab has a fun one: what is 2\4/2 ? :)
Talking about operators with wacky precedence...
With Me and .FooBar still gets us the compile-time validation
> Ah, a\b is b/a, right?
> right, except when the operands are not commutative
> It evaluates to the sound of a programmer quietly sobbing
> sin a × b
Is that sin(a) * b or sin(a * b)?
BTW, I just checked - you can hide members that way.
Private Sub Form_Current()
    Dim Text0 As Variant

    Text0 = "hello, world!"
    Me.Text0 = "goodbye, world!"

    Debug.Print Text0, Me.Text0
End Sub
This outputs hello, world! goodbye, world!
While this is blatantly obvious, in a more complex form with module-level variables, that can get lost
So that's a big reason why I do not like it when they refer to controls on a form without prefixing w/ Me.
@MathieuGuindon That's known as "going out with a bang" :-)
O__O 2.2K results for ObsoleteCallStatementInspection
2:59 PM
don't you mean ObsceneCallStatementInspection?
AssignmentNotUsed is problematic
the false positives are plaguing it
how do you know it's false?
I don't, but there are a significant amount of resolver errors due to implicit late binding
that would explain the part about 10 minutes.
My surprise was referring more to the fact that it didn't throw OOM errors
5 minutes
3:02 PM
@MathieuGuindon Does Fix-All crash the duck?
> FWIW, I cannot agree with the idea of replacing `Me.Controls(ctrlName)` with just `Controls(ctrlName)` because that leads to ambiguity. Here's an example to illustrate the problem:

Private Sub Form_Current()
Dim Text0 As Variant

Text0 = "hello, world!"
Me.Text0 = "goodbye, world!"

Debug.Print Text0, Me.Text0
End Sub

In a more complex module, especially with module level variables, that can be easily missed and can lead to ambiguous name. I'd rather that
@Hosch250 probably
IME, you can just get OOM just by parsing
and I know I did hit OOM for one project iwth only 200 modules
hence my surprise that he wasn't reporting OOM for his 500 modules / 50K LoC project
2019-07-18 13:28:53.2424;TRACE-;Rubberduck.Inspections.Abstract.InspectionBase;Intercepted invocation of 'ProcedureNotUsedInspection.DoGetInspectionResults' returned 1331 objects.;
that can't be right
must be event handlers
or functions invoked by macros / events
3:07 PM
2019-07-18 13:28:52.7214;TRACE-;Rubberduck.Inspections.Abstract.InspectionBase;Intercepted invocation of 'ParameterCanBeByValInspection.DoGetInspectionResults' returned 1174 objects.;
oh wow, they have the Excel type lib referenced
2019-07-18 13:28:52.6344;TRACE-;Rubberduck.Inspections.Abstract.InspectionBase;Intercepted invocation of 'ImplicitActiveWorkbookReferenceInspection.DoGetInspectionResults' ran for 1432ms;
I thought that was not supposed to run.
if the type lib is referenced, it runs
no that can't be right
we have 2 flags
1 when a type lib is referenced
other when it's the host
that inspection is supposed to run when it's the host
not just the reference
3:09 PM
only one of the Excel-specific inspections requires being hosted in Excel, and its the string-ref'd worksheet inspection
yeah you're right
ah, yes, I remember now - this is a indication of problem even in non-Excel VBA projects esp when late binding. Probably why it runs even for non-hosted.
I was thinking it was running only for hosted.
ha, I knew it
2019-07-18 13:28:50.9534;TRACE-;Rubberduck.Inspections.Abstract.InspectionBase;Intercepted invocation of 'HungarianNotationInspection.DoGetInspectionResults' returned 2939 objects.;
isn't 2939 kind of low?
2019-07-18 13:28:46.8522;TRACE-;Rubberduck.Inspections.Abstract.InspectionBase;Intercepted invocation of 'OptionExplicitInspection.DoGetInspectionResults' returned 14 objects.;
> > It took about 5 minutes to parse the code base on the first run.

500 modules is not a small project. The host application is COM, and COM interop calls (e.g. retrieving the source code from each individual module, iterating controls on UserForms, querying the internal VBProject's `ITypeInfo` to get project-level precompiler constants, etc.) all run on the single thread available: the main/UI thread.

I you look at the log, you see that Rubberduck proceeds to dispatch the actual parser a
3:16 PM
I hope it doesn't come off as "well no wonder, your code is sh!t"
@Duga Long-term, the storage of VBA is standardised. Perhaps we could read the host file directly rather than through COM...
the interface is standardized. the implementation is host-specific
you mean tap into the IStorage?
I suspect most hosts would just use the structured file format, iirc the vba SDK kinda gives them that for free. i could be wrong on that though.
would have to rtfm
Oh wait
only the p-code is usually stored...
ok, ignore me :-)
maybe we need to have an installer screen to prompt whether to configure RD for brand new projects (current config) or for legacy projects (don't run inspections on parse, disable most inspections altogether)
that way our out-of-the-box first impression wouldn't be "bruh your thing is slooooooow"
but that's a project thing, not an install thing.
3:29 PM
Yeah, ideally
still, if you are dealing with such large legacy projects, current config is clearly not appropriate
-_- my boss mentioned today that he wanted me and my fellow programmer to become "Commenting Maniacs"
posted on July 18, 2019 by CommitStrip

Yeah, I'm trying to decide if it's going to be good UX to go "hey, youloaded a new project! It looks like it's full with legacy code, sooo do you wanna to use legacy settings."
which I wouldn't like very much. It makes the application feel obnoxious to use
3:31 PM
im just like... commenting as much as you want us to would be super tedious
borderline clippy, if I say so
by his example he gave us it looks like he wants us to write our code like we are trying to give a solution on SO
@this "It looks like you inherited a cluster****, would you like me to help with that?"
@KySoto I'd say "why not write self-documenting code?"
@mansellan which is an awesome way to start the day!
he doesnt want to have to take time to figure out what hte code is doing
he wants everything spelled out
3:34 PM
IDK, I think self-documented code is much easier to read than a block of comments and obscure code
he wants it so that a non-programmer understands it
@KySoto wait, wut?
i realized after i typed i needed to reformulate what i said
heh, my question stands :-)
he wants it so that someone who has no idea whats going on in an application can go in and understand wahts going on
3:36 PM
that's... ambitious.
so if me and my fellow programmer were to poof
they could hire someone and it wouldnt take any effort to understand whats going on
maybe im overracting to what he asked for
I'd just argue tthat self-documented code takes less time and is easier to understand
i tried
AND if it has to be dumbed to a noon-programmer level, then they have no business working
@Feeds Truth
3:39 PM
my boss knows just about enough vba to do harm
i mean, hes an IT manager, so really, i wouldnt expect him to be a programmer
@KySoto try higher abstraction level and meaningful identifiers, not damn comments-that-say-WHAT
i++; // increment i
^ ask em if that's the kind of comment they want to see
and quit on the spot if the answer is "yes"
(if you can afford it)
@Feeds That's like the XKCD one about encryption and drugs and $5 wrenches.
@MathieuGuindon (i cant)
If water is wet; and violets are blue; sounds cute in a haiku but; comments don't need to.
3:55 PM
@Vogel612 Not really. I'm glad you're continually willing to help me learn though.
@MathieuGuindon well when we had our meeting he wanted a comment on a part where it says
If <control or something> like "#####" then
i dont remember exactly what the name was, but it was fairly obvious since the word serial number popped up a bunch of times around it
ok. now what if that's in a function named ControlOrSomethingContainsXxx?
he wanted us to comment what it was doing
i think the control may have been named serial number
or scan
with a @Description annotation saying "returns true if controlorsomething value contains specified value"
yeah it was if me.txtscan.value like "#####" then
3:58 PM
abstraction is the key
not comments
@Hosch250 Their thickened neanderthal skulls function the same as a helmet. Same goes for their thick skinned rhino hides.
then on the next like there was a variable that had the name serial number
anywho, the only people who have RD are me and my fellow programmer
so i dont know if the @description annotation would be helpful
well, i guess it would since it would be a comment
and the functionality is abstracted behind a meaningful function name
it was in the afterupdate event of txtscan
oh.. actually i was wrong, i just found the example he used
If Me.txtSN.value Like "#####" Then
eh it doesnt matter -_-
still have to deal with it
I'm sorry
4:09 PM
thanks man.
@KySoto I have 1 (writen: one) code "review" / presentation to my all-non-technical bosses in +10y of.
It takes up to two screen to overwhelm programmer mind.
However I would try to understand what is his concern that he wont to solve with you commenting code? I would assume that concern legit and solution is well you need to help him with better solution.
is he going to read your comments?
possibly yeah,
i know why this whole thing started
he needs to know that 1) writing the comments is not free, takes time & effort, and 2) the comments will be distracting to the people that actually maintain this code
like 5-8 years ago the MAN, the guy, the dude, the engineer, who wrote the C++ for all of the testing equipment etc
just up and left one day
didnt say anything, just quit
More importantly, that comment is another thing to go wrong, too. E.g. you had a bug that bought down the production and you scrambled to fix it, changed code in 100 different places.
4:13 PM
WTAF is wrong with ObsoleteCallStatementInspection??
@KySoto Mug's already said it. Abstraction and making it kindergarten-coder simple is the way to tackle this.
that thing should be blazingly fast
he has zero comments and very poorly named code
3 months later, you look at the comments and it describes the condition PRIOR to the bug fixes
@Vogel612 IKR
4:14 PM
I'd probably argue that a git repo does much better job of keeping the code documented
because you get the history for free
the AssignmentNotUsed Inspection probably has a handful of FPs that can be traced to the known bug with it
@IvenBach some of the stuff the engineers want from us cant be made kindergarten simple
esp for that critical bug fix where you had to change 100 different places.
if only it was easier to maintain hundreds of access applications on git
I guess it depends on the structure of the parse tree. I presume high cyclomatic complexity translates into longer tree traversals
4:15 PM
That's why OASIS-SVN. ;-)
not really, no
hmm.. IDK then. it should be fast.
@MathieuGuindon parse-tree traversal is straight up linear
@this i might have to look into it
as long as it works with gitlab
we can do it
@KySoto I used to say that a lot more. Granted there are some situations where you can't abstraction can get you a whole lot closer.
4:15 PM
there might be some weirdness around complicated expression constructs
but if there's copies of same thing (wiht one or two tweaks), is it still linear?
but other than that it should be in O(LoC)
IDK if having similar declarations (e.g. same name, just different document module) would hurt the hashing
@this parse-tree traversal doesn't care about hashing
I suppose not if the hash is on the fully qualified name.
4:17 PM
no that's not the point...
I was thinking of declaration lookups
@IvenBach i have a great example, the engineers want this application thats a do all the stuff box with a complicated data model
ObsoleteCall doesn't do declaration lookups AFAIK
@KySoto wait, does you boss need comment on beginner level? Or just propper comments? how would you explain in simple terms what interfaces is to macro-Recorder-Man?
4:17 PM
and even if that's the case, there are inspections out there that do perform declaration lookups
@AndrzejO i think beginner level comments
it simply looks for callStmtContext nodes and finds nodes with a CALL token
also, we use Access, not excel
and just so I know - does it slow down the insertions when there are hash collissions?
@this do you know if OASIS-SVN can interface with gitlab?
4:18 PM
that's not really its concern
it works with TortoiseGit quite well
gitlab is just a host
so it should work just fine
well ive never used tortoisegit
that's just a GUI wrapper for the git
speaking stricitly, you don't even need tortoise git
but it makes it easier if you're too lazy to type or want pretty graph / diff
@KySoto lol so classes are not allowed? no interfaces? only modules? 300 liners? :D
4:23 PM
hm, the inspection is not simply traversing the tree. in fact, this is terribly inefficient by nature:
            foreach (var context in Listener.Contexts.Where(context => !context.IsIgnoringInspectionResultFor(State.DeclarationFinder, AnnotationName)))
                string lines;
                var component = State.ProjectsProvider.Component(context.ModuleName);
                using (var module = component.CodeModule)
                    lines = module.GetLines(context.Context.Start.Line,
                        context.Context.Stop.Line - context.Context.Start.Line + 1);
it's hitting the CodeModule 2K times for 2K results
just to avoid reporting the : edge case
the listener should be able to handle this instead.
let me guess... I wrote it
looks up git blame ha, it was @Hosch250!
3 years ago
Sorry ;P
I'm quite likely the one that reviewed and merged it
@AndrzejO i have classes, i dont know if my boss is going beyond looking at the forms and asking whats going on in those.
@this so i installed the demo version of OASIS-SVN annnnd... i started getting an ordinal error
FWIW, did we even have parse-tree inspections at that point?
Those came relatively late in 2.0, IIRC.
> The inspection is inefficient, and hits the `CodeModule` when it doesn't need to - only to avoid reporting a false positive in an edge-case situation that actually does warrant the presence of the `Call` keyword (ref. #1877):


This logic should be able to be handled in the listener during the parse tree traversal
4:33 PM
That might have happened shortly before we got them.
@Hosch250 I don't think we did
@KySoto not sure what you mean by ordinal error
is it a matter of bitness? there's both 32-bit or 64-bit versions which needs to match Access'
@MathieuGuindon Thanks. Great App, was looking for such an app for VBA. Just downloaded it and experimenting :-). — Mohsen Alyafei 4 mins ago
4:39 PM
ha, a NoName(TM) function
i cant report the bug to them either
could it be coming from another addin?
I never saw that DLL before.
the fun part is, when i uninstall it, it goes away
4:40 PM
sounds like a bug
i reinstall it, it comes back
yeah, cant report said bug because i dont have a login :(
i think i have to buy it before i can report that
nah, i'll write for you.
and if i cant properly test it, theres no way i can go and ask the boss to get it purchased
thanks man
but interestingly, I don't have that folder.
and it's working for me.
doy ou have any idea what that DLL Is for and whether you can uninstall it?
it mgiht be a conflict between that particular DLL and OASIS
its a driver i think
but all the googling i did goes all over the place with different software
and i feel like lifewire doesnt seem like a reputable place to look for information on it
4:44 PM
apparently that even tripped up a game
Global variables would be one way. Properly abstracting the data into a model class that can be passed around between instances of forms would be another. I'd argue that global variables is plain ugly and wrong and wouldn't even be considered an option in any other programming language (no idea why it's suddenly acceptable in VBA code), but your mileage may vary. — Mathieu Guindon 54 secs ago
I should probably eat something before I get too salty
@MathieuGuindon might I suggest a Saltine cracker?
@KySoto You playing video games on the work computer??
> Ssleay32.dll is a type of DLL file associated with Need for Speed The Run Limited Edition developed by Electronic Arts, Inc. for the Windows Operating System. The latest known version of Ssleay32.dll is, which was produced for Windows.
4:59 PM
@Hosch250 I don't think it's with a game - googling suggest that it's a driver that is installed on some unknown factors.
I don't have that myself
00:00 - 17:0017:00 - 00:00

« first day (1868 days earlier)      last day (35 days later) »