« first day (2533 days earlier)      last day (36 days later) » 

12:02 AM
RELOAD!
[rubberduck-vba/Rubberduck] 1 opened issue. 1 closed issue. 3 issue comments.
[Minesweeper] Games Played: 102, Bombs Used: 66, Moves Performed: 13309, New Users: 12
 
 
1 hour later…
1:58 AM
@this how does one actually market their capability at that?
@Hosch250 ty!
@Hosch250 respecting important religious holidays, I'm sold on the quality already and you haven't even started talking about Blazer yet!
(talk was on the 4th for those who didn't click link)
 
 
 
4 hours later…
6:28 AM
> **Rubberduck version information**

```
Version 2.5.2.5906
OS: Microsoft Windows NT 10.0.19042.0, x64
Host Product: Microsoft Office x64
Host Version: 16.0.13929.20296
Host Executable: EXCEL.EXE
```

**Description**
Somewhen a bug was introduced that testing with the `PermissiveAssertClass` a result of `Null` results in a failed test.

**To Reproduce**
```VBA
Option Explicit
Option Private Module

'@TestModule
'@Folder("Tests")

#Const LateBind = LateBindTests

#If LateB
 
 
5 hours later…
11:44 AM
> Writing a debugger for VB6 P-code has been something I have always wanted to do.
^ Said no sane person. Ever.
@mansellan and this one is just 404
 
@FreeMan it's ok - that leaves us with plenty of insane people to choose from.
 
fair point...
 
12:01 PM
Is SuperUser not a part of the standard SE login? SO, I could see needing a different login, but SU? I'm logged in here, I can navigate to many of my favorite SE sites, but SU says I need to login, and I don't have any record of a unique SU login...
 
cross site login is ... complicated
 
works everywhere else...
 
just logging in with your normal SE credentials should work
 
> I tested with 2.5.1 and that had failed the test, too.

However, since the permissive assert is meant to replicate the same result we'd have gotten with VBA, it could be argued that it's correct.

```
?Null = Null
Null
?IIf(Null = Null, True, False)
False
```

So in a sense, it's correct that comparison of 2 `Null` will always be unequal and thus logically false.

Note that we did update the `PermissiveAssert` class sometime ago (I want to say 2.5.0 but would need to verify) and
 
12:35 PM
@FreeMan huh, weird. this seems to work -> link
 
yes it does
 
hmm, looks like he replaced the url just after I posted. Used to go to "home edition", now goes to "full"
 
What does debugging at the p-code level buy you that debugging in the VBE doesn't?
 
next step, open-source?
@FreeMan well it's one level lower - you get to see the actual p-code steps (similar to debugging CIL in VS when you don't have source available)
By itself, probably only useful for reversers. But it's a step along the route to writing your own debugguer to replace the VBIDE (AvalonMentions++)
 
So I get to see the error in the base code of IIF() as opposed to just seeing that my IIF(...) statement failed?
 
12:39 PM
^
 
Ahhhhh.... got it! I'm all for it!!11!!!1one! :)
 
Well, at the pcode level at least. Beneath that is actual assembly code...
 
of course, as an Average Joe, there's nothing I can do to fix the error in the implementation of IIF(), but, I s'pose, at least I know it's there and can figure out how to work around it. (And we know MS won't do anything to fix it at this point...)
*No implication that there's an error in IIF(), just a function that came to mind.
 
yes indeed
 
got it. I'll store that away as an interesting tidbit, but won't delve into it. No need to melt my brain at this point.
 
12:42 PM
haha yeah
 
 
2 hours later…
2:24 PM
I'm starting a new project (Access based) and want to SC with git. It's been a while, so I don't recall the necessary steps. Should I create master on the network and check the little bit of existing code into that, then clone it onto my local drive, or is it OK to start with a local copy then push to master on the network?
Or do I have it totally wrong...
 
2:37 PM
easier to set up the master repository on network then clone into local, IMO
 
thanks. Glad I thought of that. This time I'm NOT going to make my master a bare repository. That's causing me all kinds of fits with another project.
Of course, I was having fits that caused me to convert it to bare at somebody here's suggestion.
(woulda never thought of that on my own...)
@this Just set up an empty repo on the network, clone it local, then export the bit of existing code to the local and push back to master?
 
empty repo on network, add code to master, then clone local
 
@this eh, I was close. ;)
thanks!
 
> > Could you give a hint how LateBindTests works. How can I change the value to select EarlyBind and LateBind? Simply trying to change it to EarlyBindTests doesn't seem to work.

You have two options.

You could change this:
```
#Const LateBind = LateBindTests
```
to:
```
#Const LateBind = 0 ' or 1 if you want late-bound
```

However, this effects only one module, and if you have several test modules, that is not a great idea.

The 2nd option is to define the non-existent condit
 
3:03 PM
> I was looking at the HTTP logs for the website, and between browser sessions and bots every request that came from Rubberduck's VersionCheck comes in with an "unknown" user-agent:

![rubberduckvba.com logs](https://user-images.githubusercontent.com/5751684/118143870-cd62a000-b3d9-11eb-8df6-370a1d586fa8.png)

(IP addresses wiped)

Not a high priority at all, but the VersionCheck feature including a "Rubberduck-{version}" user-agent header would be nice.
 
@FreeMan FWIW I just deployed a Gitea server. I had to push all my existing code up in to my private git server. I had to make a repo for each project, copy the URL, set the remote, and push. For all of my internal projects that are in production. Setting up the Gitea server took longer than pushing all the code.
@mansellan, I was looking at that VBDec program. I have an ancient VB6 program that was left behind by an employee long past. I would like to decompile it but it's native compiled. Is there any real VB6 reverser that can get you back to basic code from a native executable?
OR am I limited to regular reverse tools like cutter.re?
 
3:34 PM
I think I might have found a way to remove db creds from web.config... is using an ODBC DSN a stupid idea?
> narrator: if it works, it's not stupid
 
registry DSN, yes.
file DNS, maybe not. But then how do you manage it?
 
the Plesk admin lets me define ODBC data source names
so I mirrored it locally and now tweaking the connection string to use it
 
Ok, but the point is that if you get hit by the bus, how do we get it back up without the creds?
 
yeah that's the, uh, other problem
 
(please do not walk in front of any buses)
 
3:38 PM
lol
 
AppVeyor does have way to store secure information. Could that be used somehow?
 
@HackSlash AFAIK there's no way to decompile native back to VB6. It's pretty heavily mangled and a lot of the info you'd need gets stripped out.
 
there's precious little nothing CI with the website repo
 
thinking that what you really want is a build artifact that only ship to the web server with the complete web.config
 
and then no more manual deploy from my dev VM!
 
3:41 PM
@mansellan, yeah I've used cutter and ghidra to analyze this little program but even for a 48KB binary I get quite a long list of assembly code. The decompiler makes it a little more palatable but I don't speak ASM well enough to really be able to understand what I am looking at.
 
3:57 PM
ok so DSN was stupid, it's not saving any credentials. looks like I do need to decrypt the connection string from web.config... fml
hm, at a glance it looks like GitHub actions take care of pretty much everything
 
4:17 PM
ok step 1, get RubberduckWeb onto AppVeyor
 
4:39 PM
so in theory RubberduckWeb now builds on AppVeyor. so.. step 2, make sure git/origin points to my fork (was merrily just pushing to master for a while)
 
5:39 PM
ok that didn't really take a whole hour, but all is good. now to get app.config encrypted on github...
looking at Stack Exchange BlackBox for this
 
6:01 PM
GPG key created
GPG key added to GH profile
 
Go @MathieuGuindon you're doing great!!
figured some feedback was necessary...
 
I have no idea what I'm doing :)
but, progressing!
 
6:16 PM
not sure what a GPG is. is it an alternative to PGP? ;-)
Great Privacy Go? Go Private Greatly? Great Privacy for Genteel?
 
Gnu something
 
ah, GNU Privacy Guard
 
yeah that
 
I legitimately thought it was a typo of PGP (Pretty Good Privacy)
 
It is. Sorta...
 
6:22 PM
GNU folks has a propensity to use "clever" names.
 
@MathieuGuindon Is this the software devs mantra, or just RD contributors in general?
 
software devs in general, I'd say. the others are lying.
Or, Scott Hanselman is wrong.
 
Is there a quote attributed to him?
 
nah just general "just messing around" vibes
 
> I understand you point, So then I'll change my tests to

```vba
'@TestMethod("PermissiveAssertTest")
Private Sub Null_PermissiveAssertTest()
On Error GoTo TestFail

Dim IsResultNull As Boolean
IsResultNull = IsNull(Null)
PermissiveAssert.IsTrue IsResultNull

TestExit:
Exit Sub
TestFail:
PermissiveAssert.Fail "Test raised an error: #" & Err.Number & " - " & Err.Description
Resume TestExit
End Sub
```

Would that be fine or is there a better way
 
6:37 PM
@Duga Feels like it needs a IsDistinct, IDK.
(and IsNull, too even though it'd be just synonymous to .IsTrue IsNull(foo))
 
> Perhaps IAssert needs an IsNull method? (and then... IsEmpty?)
 
@this yeah that.. well IsTrue with an expression makes a valid surrogate for pretty much any convenience method
 
True.
That's why I'm not sure if it should be just IsDistinct --- I don't want to deal with the crap of Null being not same thing as Empty.
Variant has too many ways of saying "no data" and they don't all mean the same thing. #FunTimes
 
> I understand your point, So then I'll change my tests to

```vba
'@TestMethod("PermissiveAssertTest")
Private Sub Null_PermissiveAssertTest()
On Error GoTo TestFail

Dim IsResultNull As Boolean
IsResultNull = IsNull(Null)
PermissiveAssert.IsTrue IsResultNull

TestExit:
Exit Sub
TestFail:
PermissiveAssert.Fail "Test raised an error: #" & Err.Number & " - " & Err.Description
Resume TestExit
End Sub
```

Would that be fine or is there a better wa
 
6:53 PM
@this yeah exactly... also having IsNothing and IsNull on the same interface kinda bugs me
 
Right, I can see how that could end up confusing
An alternative: .AreEqual(left, right, EqualityFlags.NullsAreEqual)
 
One problem, though. If it's latebound, how do we define the flags?
 
another problem is that the interface has shipped with the 3rd parameter being for a Message, no?
 
6:59 PM
in that case, it'll have to be added to the end.
as long it's at the end and optional, it shouldn't be a breaking change.
 
yeah that works
 
for dualbinding module, we could code the enum in the header of the module. More boilerplate....
 
@this conditionally declare Private Const when tests are late-bound?
yeah
 
Yeah. Better than using magical numbers.
OOOOR:
 
:drumroll:
 
7:01 PM
.AreEqual(left, right, NullsAreEqual:=True, EmptyAreEqual:=False)
 
if we ship that with an inspection that flags unnamed Boolean arguments, we're golden
 
yeah....
that'd work. Now the code would be explicit
 
and #NoBoilerplate
 
^
VBA lurve its some boilerplate, it seems....
 
7:20 PM
@MathieuGuindon Unlikely... ;-)
Wayne's gone quiet the past couple of days... I have a hunch something big is about to drop...
64-bit maybe?
 
7:41 PM
he did say in few GH comments he's working on a bigger update.
I'm betting 64-bit, too. We'll find out sooner or later.
 
 
4 hours later…
11:47 PM
[rubberduck-vba/Rubberduck]: 1336 stars vs. [decalage2/oletools]: 1543 stars
 

« first day (2533 days earlier)      last day (36 days later) »