« first day (1532 days earlier)      last day (1648 days later) » 

7:00 PM
yaaay, I got a red test!
maybe yay, that is
 
@TweetingDuck Dave Thomas. As in Wendy's Dave Thomas? Isn't he dead?
In case anyone has a bit o' free time:
0
Q: Calculate NPS in a stored procedure

FreeManWe collect customer surveys and one of them is the dreaded "How likely are you to recommend our service?" question from which we calculate a Net Promoter Score. (I hate this calculation, but I'll leave that discussion for a different time.) We store the surveys in our database, and, since the qu...

 
there's a null somewhere ..
I'm tempted to declare that test methods don't know how to run themselves
actually... that seems rather reasonable
 
7:16 PM
^
 
hmmm... I've noticed several times that Calculator.exe is in a suspended state on my machine. Not an issue per se, but it's mildly annoying. A quick Google search turned up this Superuser question that also mentions that it interferes with short-cut keys.
There is a windows support thread referenced. They are talking about Windows short-cut keys to launch an app, not application shortcut keys, but I wonder if there is anything in there that would impact RDs recognition of keyboard shortcuts?
 
aand that dropped the TestMethod to a thin wrapper around Declaration without any reference to RDParserState or IVBETypeLibsAPI
2
nice
 
Good job!
is it also now not a viewmodel? That struck me a bit odd.
 
@FreeMan It's possible. RD's are system wide. That behavior is certainly obnoxious - Windows 10 is slowly turning itself into malware...
 
@this that part was separated out by me before already. one of the first things I did
 
7:21 PM
@Comintern indeed!
 
otherwise I couldn't have moved it into it's own project
 
oh, i missed that, Even better then!
 
I've not read the full support thread yet, but it did start back in 2016. No mention yet of MS fixing the issue.
 
hmm ... ~60 todo/fixme/hack markers in the whole solution ... seems good enough
I think the next step after pushing this is to find out how I can fake different test results ...
 
down from what?
 
7:23 PM
probably slightly up
I've just littered FIXMEs everywhere and finally got to adressing some of them
somewhat relatedly to that issue: I wonder whether my boss will be annoyed if I drop a few hours onto fixing warnings across two codebases
 
@Vogel612 if you can write unit tests for it, it becomes a bit more defensible
"see, this could have blown up but now we are handling it so we know it won't blow up"
 
hmm ... a few k of those warnings are "just" rawtypes warnings
 
YASE! Got 2 diverging workbooks brought back together into 1. Now I'm going to wait for the #IForgotThat moment when it's least helpful.
 
I read through the whole tread - ended after about 45 days. Back in 2016. No resolution. There was a link to another Superuser thread though that covers basically the same info.
 
> # [Codecov](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/4146?src=pr&el=h1) Report
> Merging [#4146](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/4146?src=pr&el=desc) into [next](https://codecov.io/gh/rubberduck-vba/Rubberduck/commit/055d9110421e53908807d8aac9348209f4af3b55?src=pr&el=desc) will **decrease** coverage by `0.33%`.
> The diff coverage is `43.08%`.


```diff
@@ Coverage Diff @@
## next #4146 +/- ##
=======================
 
7:34 PM
This is the modern app host. If you kill it, you can't run modern apps. Most people don't care about this anyway. It causes a problem because it listens to all possible shortcut registrations for some reason, it didn't do that before Win10. Windows has always seemed to deal with multiple competing shortcut registrations badly... it leads to a delay. Every answer in this thread is related to such competing registrations in one way or another, but Windows 10 introduced ApplicationFrameHost.exe as a new culprit. — VoidStar Aug 24 '15 at 4:26
It causes a problem because it listens to all possible shortcut registrations
 
@this No chaining, just LINQ.
 
@M.Doerner good. In theory, that is easier to analyze; we can check whether a SCW is being used in a LINQ and prevent the use of LINQ.
 
The ComReferenceSynchronizerBase is not disposing a single wrapper it uses.
 
7:46 PM
[rubberduck-vba/Rubberduck] build for commit 7328ba35 on unknown branch: AppVeyor build succeeded
> # [Codecov](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/4146?src=pr&el=h1) Report
> Merging [#4146](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/4146?src=pr&el=desc) into [next](https://codecov.io/gh/rubberduck-vba/Rubberduck/commit/055d9110421e53908807d8aac9348209f4af3b55?src=pr&el=desc) will **increase** coverage by `0.16%`.
> The diff coverage is `51.23%`.


```diff
@@ Coverage Diff @@
## next #4146 +/- ##
=======================
[rubberduck-vba/Rubberduck] build for commit 7328ba35 on unknown branch: 52.47% (target 0%)
 
is it bad that i dont really know what unit testing is?
 
depends.
You should find someone to make you one of today's lucky 10k though
 
i see the option in rubberduck but, i have no idea what to use it for
 
@KySoto have you written a complex procedure that had several possible outcomes and wished you could check if it's working right, without having to do all the setup and cleanup?
 
yeah, i usually step through it and ensure the critical points have the expected value
 
7:51 PM
Right, now further imagine your boss come to you and say, we need to handle something new.
 
i also sanitize my inputs as much as i can
 
and you find yourself changing several place in your code to handle that new request
have you worried that you were breaking something when you were doing that?
 
usually its broken data inserted by operators that causes issues
 
sure, but I'm talking about modifying a already working process
 
they thought up some thing to break it all
yep
 
7:52 PM
unit testing takes that from "usually" to "always" because you know you haven't broken anything by modifying code
 
so in either situations --- that's exactly what unit testing is for.
What @FreeMan said.
 
to be honest, i usually make my procedures as wide open as i can
so if i THINK one day i might have to deal with situation y
 
Let's take the operator breaking something because it's simpler.
 
i set it to be able to handle it
yeah
 
so let's suppose they broke the system becuase they fat-fingered a ' in the data
so you need to handle that ', right?
 
7:53 PM
usually its a supervisor that goes and fudges data
and they dont know what they are doing
 
so you first write a unit test that assert that procedure will not blow up when handed a '
 
but they know about the shift button
 
This will fail since your procedure right now doesn't handle it right.
But that's OK! You then modify your procedure to handle the ' (or whatever)
then you run all unit tests, including the new unit test you just added
and that way, you validate that your changes did not introduce any new bugs
 
that sounds difficult to integrate into an existing codebase
 
Unfortunately, that is true. That's where the refactoring part comes in.
There's a jerk here who is supposed to fix up one of the refactoring but he keeps put it off because... I don't know. He's a drawler, that one.
 
7:56 PM
so we have several hundred access applications
front ends
some arent used very often
 
let me take a guess @this jerk's name...
 
but access is the data collection tool of choice at the moment
 
But you should talk to IvenBach, he's in same situation as you are --- he is slowly adding unit tests to his big hairy Excel file(s)
 
though
 
@KySoto you can disable the functionality of the Shift key in your Access code. I don't recall how, but I did do that at a previous job.
 
7:58 PM
ah yeah, id rather not do that though because some of hte supervisors DO know what they are doing in the tables
 
You have to run some VBA code to lock & unlock it. I think that the code (especially the unlock code) needs to exist in a different .accdb.
 
and then theres the engineers
they sometimes need to edit the data in hte table out "in the field"
 
give those who need to a way to do what they need programaticaly, don't just let 'em rummage willy-nilly!
 
heh, all of our thin clients run the access runtime
most operators use those
but yeah, i know what you mean by give them a proper way to edit
its just... HUNDREDS of applications
i mean hell
im still migrating a few access backends to sql server
 
@KySoto :shudder:
 
8:00 PM
im still migrating a few access backends to sql server
i created an application to keep track
 
@this @FreeMan knows why to unit test. Don't ask if @FreeMan has implemented unit testing...
 
though unit testing would probably be the most usefull in my function that parses out data from access applications
its this... 300+ line monster of a function
it builds the dependancy web
because before i started
we had access applications that were linked to old archived versions of applications... it was a tangled mess
 
do consider that some refactoring may be needed. Unit tests are meant to test only one thing --- the logical behavior of a function, no more, no less.
 
ive made it a long term goal to just straight nuke that activity from orbit
 
@kysoto do you at least have them under source control? That's what we did at the last job I worked that had a big Access estate.
 
8:03 PM
It sholdn't be messing with files or doing DB access, etc.
 
for the most part yes
 
(though I do think RD is in a dire need of a mock database framework similar to tSQLt)
 
we have a seperate drive with all of hte source copies of our access applications
 
because there are some scenarios that I just don't see happening without that support.
 
then i have common code modules that sit in a master "template storage" that i pull from
and it has its own source thing going on too
when i get into an application that hasnt been worked on for a while, it invokes that update modules function i was discussion with @this
 
8:05 PM
Oh I meant actual SC... they're used to be a plugin for access to vss from microsoft but they dropped it. There are a couple of commercial providers now.
 
well i manually run it anyway
its a pretty well integrated system
all the new stuff is standardized
 
I'm hoping to start an open source project for vb(a) source control but realistically won't be anything usable for 6 months at least.
 
and when i get tasked to do some update on an old app, i standardize it to the new versions
**standardize it to what i put into everything else
i even have some access control for sensitive applications using AD groups
so if they try to do anything form based they get booted
im still working on locking down table permissions but my boss isnt a fan
 
'nuff coding for today.
 
if security is an issue why not use SQL Server?
 
8:15 PM
^^
 
^^^
 
for most things we are
im still working on getting everything over
 
ah gotcha
 
then theres the matter of table permissions, like i said, im still trying to get my boss sold on setting them up on the doodle of least access needed
i cant remember hte exact name for that concept
 
oh i might have misread - thinking you meant permissions on Access table
 
8:27 PM
oh no. thats another reason im moving away from access as a backend
 
I think it goes by few different name. Principle of least privilege is one I usually use.
 
we have tables that must be controlled/logged
thats the one @this
so we have triggers logging any activity on a couple special tables
its not perfect, but its better then the forms based auditing that was in use
 
definitely. form based auditing don't really make sense.
 
they dont.
its too easy to just shift open and scramble
the other thing that really sucks about access backends is the whole, you have to have read/write permissions to a database
otherwise you lock everyone who has write perms out
 
and there are some who try to hide that by denying the tranverse permission,.
They do it mainly because the IT is all "no, you can't have SQL Server", so they have to resort to all those crazy gymnastics just to get an illusion of security. Ironic, eh?
 
8:32 PM
well im lucky that i have sql server
i mean... its 2008 r2
so its about to die in a year
but its better than access as a back end
 
@this btdt. At one point I also went to the trouble of setting up a "dropbox" share - logs could be created by all users, but once closed they became read-only.
That was, uh, fun.
 
you just made my face curl up in disgust
and a frown
 
Yep. Should have been a sql server, but that was #NotAllowed
 
@KySoto at least you're off 2k
 
yeah we have 2k for our ERP only
 
8:35 PM
@mansellan run your own rogue MySQL server or similar. that'll make 'em happy once they find out!
3
 
The hoops that "proper IT" make "shadow IT" jump through...
 
for everything else, there is sql server 2008 r2
im trying to hint towards upgrading to 2016 to my boss
mentioning things like being out of support next year
and we can directly deploy reports to sharepoint using 2016
and if we directly deploy to sharepoint that cuts down on the need for those access applications that exist to for reports only
 
@mansellan it only get worse when the "proper" IT try to ratchet down everything. It's like grabbing sand and trying to hold it by tightening the grip. People gonna do what they must do to do their job.
 
im lucky, i dont have to build applications for anyone but our company
and my position exists within IT
 
@this Couldn't agree more.
 
8:38 PM
I'm hopeful (mwahahaha) that with power platforms, it will incentivize the IT dept to give more power to the workers.
 
yeah, gotta maintain that balance of security vs usability
 
@FreeMan you'd be surprised how far they will go!
 
what is the benefit of sharepoint? i've read about it but i don't fully understand it
 
any love?
0
Q: Calculate NPS in a stored procedure

FreeManWe collect customer surveys and one of the questions is the dreaded "How likely are you to recommend our service?" question from which we calculate a Net Promoter Score. (I hate this calculation, but I'll leave that discussion for a different time.) We store the surveys in our database, and, sin...

 
also, I think i've done about 50 internship applications so far lol
 
8:46 PM
@jcrizk If you find out, could you let everyone else know ;-)
 
@jcrizk sometimes, that's what it's like applying for jobs!
 
@FreeMan you don't say
 
@FreeMan I'm calling that someone tells you off for the horizontal scrolling
 
@jcrizk Keep at it. It's tough when you don't get responses back.
 
@Vogel612 what horizontal scrolling?
 
8:47 PM
first Select
 
:)
 
@IvenBach I'm not discouraged in the slightest; just the nature of the beast.
 
I have zero love for sharepoint
 
I've been doing it since my freshmen year of college and I quickly learned the nature of the beast lol
 
ok... TTGH. TTFN!
 
8:48 PM
@FreeMan Put a copy on Pastebin or something - that way it can be viewed as intended.
 
@jcrizk Glad to hear. I applied to NASA on a lark thinking I'd never have been picked. I was the only candidate my mentor wanted for the internship. #WhodaThought
You can't get an internship you don't apply to. Usually
 
@IvenBach That's pretty sweet lol and totally true
 
@FreeMan I would totally do that
actually for a while I had a rogue Access database setup
 
Does a project reference to another Excel file or database show a FullPath?
 
@jcrizk The benefit of sharepoint.... is that it was here when i got here and thats what people are used to.
 
8:53 PM
:+1:
 
the other part is the person who previously built the sites was not super up to date on tech, but that doenst matter anymore since she passed
 
BTW if any of you find the time to shoot the EngineTests I pushed a glance, I'd be really grateful for simplifications to the setup there...
 
So since we have it, im determined to see if i can make it useful beyond shared docs which our file server does better) and calendar sharing-y stuff
 
Our sharepoint at work is awfully slow.
and finding anything you did not get a direct link to is a nightmare.
 
define slow?
hmm bad site design?
 
8:57 PM
I guess.
 
ours isnt too difficult to find at least the area you are looking for
each department has a site
 
@M.Doerner it does
 
Sometimes I get lucky with the search, but ther are a gazillon documents on that server.
 
ahh yeah
each department has a shared doc library
so the stuff in each area at least pertains to the department
so all of the HR stuff is pretty easy to find
 
@M.Doerner sounds like they didn't configure the search engine fully
 
9:00 PM
I am looking at the documents from a 5 year 50+ consultants software implementation project.
Would not surprise me knowing our IT.
 
normally one has to do some setup to enable IFilters and set up a crawl schedule. Then after that, the search should be pretty good
 
Hm, finding out whether a reference points to a user project is annoying.
I basically have to look at the file path of the project.
Unfortunately, I can only get that from the project itself.
 
Didn't Wayne abstract the getting of path from a reference?
 
Oh, where did we put it?
No, wrong way around.
I have the path on the reference.
The problem is the path on the project.
I have to determine the projectId in case it is pointing to an open project.
Actually, I want its QMN.
 
but if you have the path, can't you enumerate the projects to match the path? It should be also unique?
 
9:07 PM
I can do that, but that is exactly what I wanted to avoid to do for each reference on each project.
I might have to simply do that up front.
 
maybe set up a new method on the provider to match based on the path?
that way, the provider can cache the paths
(just for reference: this is the reference i was referring to -- github.com/rubberduck-vba/Rubberduck/blob/… )
 
9:43 PM
well, this is very odd.... its just the caption property of that button. Setting the HelpFile property is, apparantly, just fine and dandy...
so not a null pointer
 
Huh. Is it losing the string somewhere?
 
Just to make sure - did you already verify if setting the caption works at other point?
it might be just that VB6 does not like you touching its bits while it's in middle of setup
 
@this not yet - this was the easier test
will try now.
 
9:57 PM
@this have you ever had any issues with enum members, when not qualified, causing you grief?
 
@IvenBach Are you referring to VBA or C#?
 
VBA-Landia
 
I'm more likely to have issues colliding with the referenced ones.
 
can't recall but I always use two part naming, period.
 
You can do that with constants too. This one is fun to slip into a module somewhere...
Global Const vbNullString As String = "vbNullString"
 
10:02 PM
I'm not gonna play Guess Who with any given declaration.
See? I gonna protect myself from ThunderCode.
@Comintern also, rockin' it old skool with Global, eh?
 
@this Your belt 'n' suspenders approach appeals more and more to me every day.
 
just be sure there's actually a pant for them.
 
:meh: They're overrated.
 
well, so you go around with belts and suspenders to hold up what? your leg's skin?
 
10:21 PM
Let's see how many tests I have broken with my latest changes.
 
@this I'd say it's holding up my dignity.
 
That is a strange test to fail now.
Ok, no wander that broke.
Adding 20 referenced projects with the same name might not be the best idea.
In the end, it is probably my own oversight.
 
OK, progress... setting the caption in the AddClassModuleCommand (because why not?) == success.
so its a startup timing issue
not sure how to properly fix though, as localisation happens OnStartupComplete - there isn't much after that at startup iiuc?
 
10:41 PM
I was just about to mention that.
You could test to see if it's VB6 and then spin initialize off into a Task that starts with Sleep. That would be pretty hack-tastic though.
 
yeah...
still, com interop in the vbe requires hacks...
oooh
setting it directly at the very end of OnStartupComplete works
wth?
 
Remind me, which caption exactly is the problem?
 
@mansellan Rubberduck - fighting bugs with hacks.
 
@M.Doerner it's the caption for Rubberduck on the main menu
 
Ah, the one in the main commanbar of the editor, right?
 
10:45 PM
yes
hmm... all this is happening syncronously, so there must be something yet to resolve at the point we set it. sleuthing continues...
 
We had to realize several times already that the VBE (and now VS6) has not finished loading when it fires StartUpComplete.
 
OnStartupNotQuiteComplete?
2
 
E.g. the VBE is still in the process of loading open user projects at that point.
I guess the VBE has some concurrency issues.
 
11:00 PM
did anyone ever try running the startup asynchronously from the startup?
well, no, not async. More like delayed.
 
Not entirely sure how you'd delay it. The IoC takes a lot of that out of our hands.
On the top of what? Because that isn't VBA code. — Comintern 2 mins ago
How can you not know what language you're using...?
 
He is using VBA but is writing VB.NET instead.
 
i don't think it's a timing issue, I think its an ordering issue - we're trying to captionify something that hasn't properly arrived yet.
 
@Comintern my thought was that VBE will not process any further until we've returned from the startup. If that's true, then by spinning off a task to sleep, then dispatching back to teh UI thread, to complete the startup of RD
 
from what i'm seeing here anyway
 
11:06 PM
@mansellan you mean it's our fault that we're setting caption too early when constructing buttons?
 
yes
 
seems simpler
 
The problem is that you first need to acquire the UI thread context.
 
@this I'm pretty sure that it's going on concurrently based on what I've seen in the native services.
 
nearing in on a fix I think
 
11:08 PM
The UI context is not yet there at the start of StartupComplete.
 
^^ I think that's the last thing that gets loaded IIR.
 
We acquire it when we call Startup on the App.
 
@this or more particularly, when setting a main menu top-level item. There's something special about them.
 
I almost wonder if it's trying to register the accelerator for it. Have we tried just "Rubberduck" yet?
 
yes, tried that early on
 
11:23 PM
> # [Codecov](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/4279?src=pr&el=h1) Report
> Merging [#4279](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/4279?src=pr&el=desc) into [next](https://codecov.io/gh/rubberduck-vba/Rubberduck/commit/055d9110421e53908807d8aac9348209f4af3b55?src=pr&el=desc) will **decrease** coverage by `0.11%`.
> The diff coverage is `17.14%`.


```diff
@@ Coverage Diff @@
## next #4279 +/- ##
=======================
 
11:38 PM
[rubberduck-vba/Rubberduck] build for commit adea46df on unknown branch: AppVeyor build succeeded
> # [Codecov](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/4279?src=pr&el=h1) Report
> Merging [#4279](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/4279?src=pr&el=desc) into [next](https://codecov.io/gh/rubberduck-vba/Rubberduck/commit/055d9110421e53908807d8aac9348209f4af3b55?src=pr&el=desc) will **decrease** coverage by `0.1%`.
> The diff coverage is `27.51%`.


```diff
@@ Coverage Diff @@
## next #4279 +/- ##
============================
[rubberduck-vba/Rubberduck] build for commit adea46df on unknown branch: 52.2% (target 0%)
 
11:49 PM
eureka!
found it, and it explains all the oddness
a quick patch should be easy, a proper fix may take longer
so - first off, i made a mistake
it's not the main menu entry, its the context menu for the forms designer.
and the projects that throw are those that don't start out adding a form to the project
so it's trying to attach a menu to a "context" that hasn't been loaded yet.
 
Ahhh.... That makes perfect sense.
 
so the quick and dirty fix is to patch out the RD context menu for forms under VB6
 
Proper fix might be to create the context menu from VBENativeServices when the first forms designer is added.
 
^^
but that sounds like a "tomorrow" kinda problem, for now I need sleep :-)
night all
 
night
 

« first day (1532 days earlier)      last day (1648 days later) »