« first day (1503 days earlier)      last day (1677 days later) » 

1:00 PM
just need to add the key for the VB6 there, then you will be able to get the debug registered.
 
ok will do
 
1:11 PM
> The COM collector is already gathering this information from the typelib, so this would be really easy from the standpoint of non-user declarations. `ConstantDeclaration` already has an `Expression` member for user declarations (and the non-user ones don't need it). I'm up in the air as to whether enumeration members need their own declaration though.

Naming aside, an enumeration member really is a "constant declaration", it's just a sub-set that happens to be the member of an `Enum`. We'r
 
@this I wrote binary logical operators intentionally. The unary one will yield an unexpected result, as you observed.
Moreover, logical operators are bitwise operators per the VBA spec.
 
> # [Codecov](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/4207?src=pr&el=h1) Report
> Merging [#4207](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/4207?src=pr&el=desc) into [next](https://codecov.io/gh/rubberduck-vba/Rubberduck/commit/5d5a35562ebe653848201b5cd477b5eaf8c6068a?src=pr&el=desc) will **increase** coverage by `0.01%`.
> The diff coverage is `100%`.


```diff
@@ Coverage Diff @@
## next #4207 +/- ##
=========================
> # [Codecov](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/4207?src=pr&el=h1) Report
> Merging [#4207](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/4207?src=pr&el=desc) into [next](https://codecov.io/gh/rubberduck-vba/Rubberduck/commit/5d5a35562ebe653848201b5cd477b5eaf8c6068a?src=pr&el=desc) will **increase** coverage by `0.01%`.
> The diff coverage is `100%`.


```diff
@@ Coverage Diff @@
## next #4207 +/- ##
=========================
 
Btw, when VBA7 and VBA6 are both 1 or both True, VBA7 And Not VBA6 will yield False.
True And Not True = True And False = False
1 And Not 1 = 1 And - 2 = 0, which converts to False.
 
1:26 PM
@this could the "register Rubberduck" checkbox be made into two boxes "register Rubberduck for VBA" and "register Rubberduck for VB6"?
Ugh. data usage warning. Thank you, phone.
 
@MathieuGuindon why not just register for VB6, and 32-bit and 64-bit? There's no harm in the extra registrations, right?
 
[rubberduck-vba/Rubberduck] build for commit 04e4c982 on unknown branch: AppVeyor build succeeded
 
@ThunderFrame no harm indeed, but users might want to be able to control that, no?
 
> # [Codecov](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/4207?src=pr&el=h1) Report
> Merging [#4207](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/4207?src=pr&el=desc) into [next](https://codecov.io/gh/rubberduck-vba/Rubberduck/commit/5d5a35562ebe653848201b5cd477b5eaf8c6068a?src=pr&el=desc) will **increase** coverage by `0.01%`.
> The diff coverage is `100%`.


```diff
@@ Coverage Diff @@
## next #4207 +/- ##
=========================
[rubberduck-vba/Rubberduck] build for commit 04e4c982 on unknown branch: 52.23% (target 0%)
 
@this we really need an inspection for this
 
1:37 PM
Is there a registry entry we could look for that would indicate whether or not VB6 was installed?
 
@MathieuGuindon sure, but most people, even IT people have no idea which version of Office they're running, or they assume they're running 64-bit, because windows has 64-bits.
 
hmm.. maybe have a "default install settings" and "customize installation" then?
it does get pretty complicated, pretty fast
 
Most people, even some IT people, don't know that there's a difference between 32 and 64 bit.
 
justr checked - vbWatchdog installs for VB6, even if you don't have VB6 installed.
 
ok, that settles it :)
 
1:39 PM
What about just a prompt? "Rubberduck detected a VB6 installation. Would you like to register the addin for VB6?"
 
truth is, if you have VB6 installed, and you're installing RD, it's probably safe to assume you want to register it for VB6
 
@Comintern I consulted a a large leasing company a few years ago. They were due to deploy Office 2010 64-bit to the entire organization the next day. I pointed out that their code used CommonControls, and 32-bit add-ins, and they had to abort because IT assumed more bits per license was better value.
 
that rant the other day, about logging what the hell you're changing on my machine, had some truth to it
 
You're installing a VB addin - you can expect us to configure it for use with VB.
 
"some" truth ;-)
 
1:44 PM
interesting, vbWatchdog doesn't add the Description value in the registry, for any VB variant
 
@MathieuGuindon KISS
The less I get to futz in Pascal, the better.
 
@this SMACK!
 
@ThunderFrame some keys are actually optional. I think only Extension is mandatory, IIRC.
 
@Hosch250 Simplified Mandatory Access Control Kernel? I don't follow. :-)
 
Well, it started as a joke about the smack from a loud kiss. Then I realized that it could also be the smack resulting from an unwanted kiss.
Take your pick :P
 
1:50 PM
I guess that is a form of Mandatory Access Control Kernel with amazing simplicity.
 
@Comintern that's a question to ask Gene Simmons.
 
LOL
 
I totally love this ad:
user image
5
 
If I can find a high quality scan of that, it's totally going on the wall in my office.
 
2:09 PM
> I don't know if this applies but one difference between a constant and a enum is that you can't qualify the constant like you can with an enum. For that reason, a enum member should know which enum they belong to, which can be important in creating inspections dealing with mismatched enum (e.g. using Foo.Bar as an input to a function expecting a Bar enum which incidentally has a Bar member with same value). If that information isn't already present, then that would be a case for a differ
 
@Duga I added .reg file content sections to the wiki, for adding and removing entries, for those that prefer running a .reg file over a powershell script, or messing about in RegEdit. I can do the same to the Installation page, once VB6 is Official, although once 2.3 comes out, there shouldn't be any need for registry shenanigans, for standard users?
 
> @bclothier Wouldn't that be implicit from the Parent? Any enumeration member's parent should be an enumeration (or we have a resolver problem).
 
@ThunderFrame Technically, the powershell script is running the reg script to register the addin. In the case of installer, the installer writes directly to the registry, under the [Registry] section.
 
2:27 PM
@this I know, but in my experience, IT locks down access to PS, but users can run .reg files
I just pulled from next. I have this in a standard module, and RD is set to compile before parsing.
Option Explicit

Sub test()
  ss = "foo"
End Sub
RD parses just fine, without any compilation error
 
@ThunderFrame Why would you want to develop RD on a locked down computer, though?
 
@this IT will do ridiculous things, like blocking PS, but enabling regedit
yes, you can be a dev, but don't think you can have the tools
 
@ThunderFrame But if they did that, then it would be very difficult to use Visual Studio, won't it?
I mean, Visual Studio's Package Management Console is a powershell console....
 
IDK, does VS use PS behind the scenes, for building?
ah, yes
 
IDK if nuget can do package management without the PS console but again, I would be very frustrated if I had to try and develop on a computer where I can't use PS
That's why I question the value of developing on a locked down computer.
 
2:31 PM
@this a bit like developing on a PC that doesn't have RD
 
IDK. There's a difference of kind, not degree between VBA and C# development.
with VBA (and not just VBA -- think of JavaScript or Python), the tendency is to keep everything self-contained in the environment. You're basically writing a text file, and running it and it just works. In contrast, C#/C++/Java has this whole spew of build tools and external programs that all work together to create an output.
and for that reason, non-admin access in the former is more valuable than in latter.
but that's just my experience.
 
2:45 PM
Trace logs show no sign of a compilation attempt:
2018-07-19 00:41:57.3854;DEBUG-2.2.6773.40617;Rubberduck.Parsing.VBA.ParseCoordinator;Parsing run started. (thread 12).;
2018-07-19 00:41:57.3954;INFO-2.2.6773.40617;Rubberduck.Parsing.VBA.RubberduckParserState;RubberduckParserState (1) is invoking StateChanged (Started);
2018-07-19 00:41:57.8822;DEBUG-2.2.6773.40617;Rubberduck.Parsing.VBA.RubberduckParserState;Module 'ThisWorkbook' state is changing to 'Started' (thread 12);
2018-07-19 00:41:57.8822;DEBUG-2.2.6773.40617;Rubberduck.Parsing.VBA.RubberduckParserState;Module 'Sheet1' state is changing to 'Started' (thread 11);
 
not sure we write anything to log regarding compilation.
Furthermore, it's implemented in ReparseCommand
so if you parse in other way, it won't get checked. Because there's a messagebox interaction, it wouldn't be appropriate to stick it in deeper down.
 
@Comintern Your PR's got merged,s o I'm unsure why I'm getting this:
2018-07-19 00:42:01.3289;WARN-2.2.6773.40617;Rubberduck.Parsing.Symbols.TypeAnnotationPass;Failed to resolve type VBE;
2018-07-19 00:42:01.3827;WARN-2.2.6773.40617;Rubberduck.Parsing.Symbols.TypeAnnotationPass;Failed to resolve type VBE;
2018-07-19 00:42:01.5622;WARN-2.2.6773.40617;Rubberduck.Parsing.Symbols.TypeAnnotationPass;Failed to resolve type VBProject;
2018-07-19 00:42:01.5981;WARN-2.2.6773.40617;Rubberduck.Parsing.Symbols.TypeAnnotationPass;Failed to resolve type VBProject;
hmm wait, that's VBE, not VBA, I'm not reading properly
it's not even COM reflection
 
for the lower level a better fix would be to simply check if the project is compiled and if not, to not try parse at all.
 
@ThunderFrame Do you have serialized declarations in your \AppData\Roaming\Rubberduck\Declarations folder?
 
@this well, my project won't compile,but RD is set to compile, and it carries on anyway
so RD isn't attempting a compile on Win10 64-bit with Office 2016 32-bit
@Comintern no
 
2:53 PM
I forgot to mention on the PR that they should be deleted.
 
@ThunderFrame but it will if you click the Refresh button, right?
 
@this nope
 
hmmm.
just for sanity check -- do you have Compile on Demand and Background Compile checked off in the VBE setting?
those cause a weird bug w/ the compile method.
 
they were on. they should be on, right?
and status bar isn't updating for any code selection
 
No, they should be not
they need to be unchecked in order for the compile before parsing to work correctly
sounds like they are not getting correctly checked.
 
2:57 PM
T-Minus 5 minutes on our company's WordPress website relaunch.
 
> T-Minus 5 minutes on our company's WordPress website implosion.
T, FTFY.
 
@this so it would seem
that fixed it
and my status bar problem too o_O
 
so if you restart, do you get warned without clicking the refresh?
 
@ThunderFrame ..... ok. That's unrelated.
hmm. I wonder why.
let me see....
 
3:00 PM
> I can confirm that the "inappropriate platform" code is highlighted in red in my environment, as well.

Win10, Office2016 - the `#If Win64` code looks fine, then `#Else` code is in red.

(I'd post an actual sample, but since we've all "upgraded" to Win10/O2016, there was no real need to keep it.)
 
@ThunderFrame, can you tell which registry path you had that set?
we're using this path:
        private const string Vbe7SettingPath = @"HKEY_CURRENT_USER\Software\Microsoft\VBA\7.0\Common";
private const string Vbe6SettingPath = @"HKEY_CURRENT_USER\Software\Microsoft\VBA\6.0\Common";
 
> Just for record, as mentioned via chat, the red highlighting is expected behavior.

On VBA6 and prior hosts, the `Declare` statements with `PtrSafe` will light up red because it's unknown keyword.
On 32-bit VBA7 hosts, both type of `Declare` statements are valid.
On 64-bit VBA7 hosts, the `Declare` statements without `PtrSafe` will light up red because 64-bit VBA *requires* `PtrSafe` keyword to be present.

With correct compilation arguments, those won't be issues with compiling the c
 
3:24 PM
@this I'm using Office 2016. So the Vbe7SettingPath. CompileOnDemand is now 0 (was 1), and BackgroundCompile is still 1.
 
yes, we only care about CompileOnDemand
but if it was 1 before why it wasn't checked....
could it be that it didn't exist and it was using default implicitly?
 
#ConfigurationIsFun
 
@this I'll have a tinker
see if I can reproduce
 
@MathieuGuindon esp when it involves registry entries that's only read on startup
 
@this, If I have a custom class called Collection and a function that returns one of them, the OB just says the function return type is Collection - Does ITypeLib provide more information about the owner of Collection, so I know which type of Collection it is?
 
3:38 PM
pretty sure it should.
 
@ThunderFrame It would have it's own GUID.
 
in fairness, the hyperlink in OB does take me to the right declaration, so it does know
 
^^
but.... if parser only has text with implicit reference, how does it know.... I suppose by reference precedence order.
when we support parsing other VBA projects, esp. those that are locked, we probably need to consider their reference precedence order separately from the main project.
 
We don't that already?
 
parsing locked projects? NAIUI.
 
3:41 PM
If we're not already doing that, that's a bug.
 
I think we probably are parsing other non-locked projects, IINM.
(don't take my word for it. I'm just the new guy here)
 
@this No, associating referenced declarations to projects when they're resolved.
 
oh ok. GTK.
wait, just to be clear, I'm referring to the case where a project A has a class named Collection and project B has yet another class Collection that is used internally for the project B. Project A is the first loaded but project B references the project A. Resolver won't try to map implicit Collection in project B to ProjectA.Collection, right?
 
I shouldn't, no.
 
:+1:
 
3:46 PM
@this That's why I asked - I'm adding a comment to #3733 right now
 
Dictionary would be a better example, because Collection is always in both of them. Project A references the scripting runtime, but Project B doesn't. Project B defines "Dictionary" in a class module. Anything that is being resolved in Project B would pick it's own class definition because it will always have higher scope.
 
but if LockedProject has Private instancing on Collection, but exposes a Public function that returns a LockedProject.Collection, then the resolver really needs to know that LockedProject is a type, even if it doesn't reveal its members (that's the same behavior as OB)
 
yeah. I was not sure if that's going to come up because AIUI, we are not currently parsing the locked projects.
 
Project A would pick up Scripting.Dictionary and not Project B's Dictionary because built in references should always scope higher than user defined references.
 
with typelib API, we'll be able to get more visiblity into the locked project.
 
3:50 PM
@this we're not, yet - but we need to
 
ayup
 
@ThunderFrame VBA allows a public interface to expose a non-public type? I thought that was a compile error.
IIR, allowing that breaks COM because the return types of procedures are strictly typed.
 
@Comintern No, you can definitely return it, but you can only declare it as Object.
 
@ThunderFrame then it's not strongly typed anymore, is it?
 
Right, but in that case it's still strongly typed as IDispatch.
RD could infer the type from usage though, and use that for inspections like member not on interface.
Heck, you could even inspect for incorrect assignment of the returned Object to the identically named class.
 
4:00 PM
True. that'd be very slick if RD can tell us that this Object is Lame.Dictionary
 
@this Right, but the public function that returns the type to me, reveals the return type as, say, Command, but the addin also returns, from another function, an ADODB.Command. RD needs to know the return types are different, so that it doesn't fire bad inspections.
 
Yes, I follow
Though we'll need to communicate that Lame.Dictionary can't be strong typed because they #DidItWrong™
 
I'm suggesting that RD needs to extract the name/GUID and accessibility of Private Classes and Types in Protected Projects, and no more. And it probably only needs to do that for the Private Types that are exposed as parameters and return types.
that would match the OB capabilities. OB doesn't list the private types in the Classes pane, but it does reveal them in the member signatures.
 
can you pass private UDTs like that, too? I imagine not.
 
I thought VBA prohibited passing user defined types that way.
 
4:06 PM
Is there any reason to not stick this boilerplate into the code-behind, whenever we add a UserForm module?
Option Explicit
Private cancelled As Boolean

Public Property Get IsCancelled() As Boolean
    IsCancelled = cancelled
End Property

Private Sub OkButton_Click()
    Hide
End Sub

Private Sub CancelButton_Click()
    OnCancel
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode = VbQueryClose.vbFormControlMenu Then
        Cancel = True
        OnCancel
    End If
End Sub

Private Sub OnCancel()
    cancelled = True
    Hide
End Sub
(plus a '@Folder annotation)
 
TBH the rules around UDT are too strict, to the point of making them useless when you need interoperability/implicitability.
 
hmm, perhaps that could be a "New modal UserForm" command...
@this YES!
 
@MathieuGuindon Why not support templating?
let me write some template, then have it get added as New My Modal UserForm Done My Fricking Way™ ?
 
@MathieuGuindon It's not hard to delete boilerplate though. The pattern is still applicable to non-modal forms too, especially if you're listening to events from them.
 
But then again - if they are boilerplate, shouldn't they be a class?
 
4:10 PM
@this They are - they inherit from UserForm. :-)
 
I'm thinking we could even have the OK and Cancel buttons automatically added to the designer
 
no, not what I mean. I meant like, Private WithEvents Handler As ModalFormHandler and Set Handler = Handler.Init(Me)
That way, the code for OK/cancel, wahtever you want it, are out of the userform themselves.
 
@this no, although you do get intellisense for them, just before it fails to compile
 
@this Gotcha, like a view controller.
 
That's what I do for Access forms where I need some functionality without crudding up the codebehind.
 
4:12 PM
@this but the form still needs to handle QueryClose
 
^^
 
and still needs handlers for the buttons' Click events
 
uh, no.
you can have those handled in the Handler class.
 
UserForms don't require buttons.
 
right, scratch the buttons then
although, IMO it's silly to handle QueryClose and not implement cancellation logic and makes poor UX to only be able to cancel a dialog through the control menu, but..
 
4:14 PM
at least you can create different handler classes for different button layouts, no? Your userform codebehind becomes less cluttered since you don't need to handle those buttons; only events raised by the handler.
 
> We need to collect:
- Project Name
- Public Declarations including
- Public Constants
- Public Enums
- Public Types
- Public Procedures/Functions
- Public Classes (instancing set to `PublicNotCreatable`) and their Public members, and whether they're PreDeclared.
- Public Forms (instancing set to `PublicNotCreatable`, yes you can do that, but only by editing the FRM file) and their Public members, and whether they're PreDeclared.

I don't think we need the references, as p
 
> We'll also need to ensure, that should a referenced project become unlocked after opening, that the parser still considers it locked for parsing/resolving purposes, with respect to the referring project, as the protection is likely to be back in place, the next time the file is opened
 
@this I'm liking this
 
^ that will be fun
 
True, but on the other hand consider a form that displays bound data from a database with no buttons. I might want to use the escape key to dismiss it. RD is in the code quality business, not the UX business.
 
4:15 PM
@MathieuGuindon yeah that's why I use that pattern a lot w/ Access forms. Pretty easy to implement.
 
agreed
@this and portable, too.
 
Exactly.
 
is there a github label for COM Collector?
 
@ThunderFrame no but I'm really starting to think we need one :)
 
4:19 PM
I think we're mainly using [parse-tree-processing] as a poor proxy for it.
 
anyway I think RD needs to help its users write better forms with a better paradigm than "show the default instance and keep the model state in the form controls and query the controls from the call site"
 
given the # of issues around it and the need to integrate the typelib API, yeah, we should label it.
@MathieuGuindon I do agree - that's why I think it's better to make it extensible by allowing us to write a template. RD can then ship with a bunch of common templates, right?
 
(speaking of which, we really need a template for the test module....)
 
oh, yeah
 
4:20 PM
i don't like the default one at all.
 
I don't like that it's basically hard-coded
 
yeah. needs to be a setting.
 
(or something akin to that)
 
@this I'd name it something slightly more specific than "COM Collection" though. Something like [typeinfo-processing].
 
4:23 PM
they could be "XML settings", but I wouldn't want them to bloat up the config file... Rubberduck.Templates.xml might work though
 
LOL
No offence but if you've "consulted [your] IT VBA specialists" you should have a solution by now. If not, does your company have any openings for a VBA dev who actually knows VBA? :D . Just use the paths in the hyperlinks to import the files. — Absinthe 16 mins ago
 
@Comintern this isn't ThunderFrame
 
@this Apparently my eye-mouse coordination is suffering today. I must need more coffee.
@MathieuGuindon Oh, SNAP.
 
hello, this is me.
 
4:32 PM
Food o'clock, bbl
 
@ThunderFrame Error 13: Type mismatch
 
@ThunderFrame See, that's how I get confused. @this says he's not @ThunderFrame, but @ThunderFrame denies it.
@this Needs a cast. CThis(ThunderFrame)
 
@Comintern I didn't not deny it.
 
@Duga @this Late to the party. as usual...
 
@ThunderFrame I suppose next you'll be telling me that "this statement is a lie".
 
4:41 PM
@ThunderFrame now now, that sounds presidential lol
 
@Comintern I, um, how is it you Americans say, misspoke?
 
@this potentially dumb question: Could RD reread the registry entries as necessary? /doesn't fully grok the registry. Still...
 
@FreeMan RD can. VBE won't. Thus if I write to make a change, VBE won't know that until the restart of VBE.
 
@FreeMan Think of it like a built in database of system settings.
Like a 100MB .ini file.
 
@this would be nice to be able to trigger VBE rereads.
@Comintern only more fragile
 
4:45 PM
@ThunderFrame IKR? it does write to registry immediately after you make change via the VBE's setting dialog. But it won't give a drat what is actually there until you restart.
Wayne did try to find that built-in setting but I think it causes more problem than it solves so we're stuck with jiggling the registry handle.
 
@this And thanks to RD crash on exit. For a long time, the settings never got written because the process crashed before doing so.
 
hmm. you know, i've seen that reported but dont' remember experiencing that.
 
@ThunderFrame Right. I amend that to "a built in database of system settings with no check contraints".
 
when I restart even after a crash, everything's where they should be.
including RD's toolwindows and everything.
 
@this Ah, gotcha. I was skimming all the previous posts and missed the part about the VBE needing updated registry info.
 
4:58 PM
> We need to collect:
- Project Name
- Public Declarations including:
- Public Modules
- Public Constants
- Public Enums
- Public Types
- Public Procedures/Functions
- Public Classes (instancing set to `PublicNotCreatable`) and their Public members, and whether they're PreDeclared.
- Public Forms (instancing set to `PublicNotCreatable`, yes you can do that, but only by editing the FRM file) and their Public members, and whether they're PreDeclared.

I don't think we need
 
We're going to have to keep track of whether a project has protection, not just whether it is currently unlocked, otherwise the resolver might reveal too much to referring projects, and encourage changes that will break, the next time the referenced project is opened.
 
seems to me that's best handled as some kind of annotation
or as a transient setting
 
5:16 PM
@this in the locked project? It doesn't matter that we can't won't read it if it's locked, but where to keep it? We still haven't committed to a project settings module.
 
yeah would have to be outside, somewhere. TBH I don't have a good solution. My concern is primarily that if we want to pretend that an unlocked project is still locked, you'll get bugs where wrong behavior is given because I intended something else and RD doesn't agree with me.
 
Maybe flag it on the references collection for each project?
Gosh, TTGTB
 
5:34 PM
@Comintern No, he's saying that "this's statement is a lie".
 
6:01 PM
@ThunderFrame so... let's commit to a project settings module :-)
#JustSaying...
 
6:15 PM
so, #TIL: C# Faker. Apparently they generate random values for common data for use in unit tests. I'm not so sure how I feel about that.
 
@this So the tests would be non-repeatable? That doesn't make much sense unless it emits a new test for the failing value...
 
That's what I thought, too. There's .Invalid() that you use for where you want to fail. In theory all valid methods would return different values every time you run the test.
AIUI, you can put a constraint on the valid methods but....
IDK, really. I can see value if it was enumerating all values for a given piece of data.
but on its own? Feels wrong to be writing test like that.
 
Yeah, that seems more like an integration or stress test than a unit test.
private void HowLongCanWeFeedThisRandomCrapUntilItCrashesTest()
 
6:32 PM
Yeah, it'd be a good integration test.
Also, you should log the values everywhere you use it.
 
Yeah that would be sensible, especially if we run into error due to a particular combination
 
I think we're getting caught up on the naming of a simple example sub. The point of it is to add all procs to the procArr, which it does. You are correct in that it probably isn't worth my time. — Citanaf 43 secs ago
how the hell does that code even work
(didn't run it)
but my understanding is that the result is a 1-element array containing the name of whatever the last procedure is in the module
procArr = all_dataArray(procArr, procName)
function returns Empty, but overwrites the procArr array
 
Was DistributedVCS that much of a game changer for software dev? Watching youtube.com/watch?v=4XpnKHJAok8, Linus Torvalds at google in 2007 about git.
 
It's pretty big, actually.
 
The part with a central system and branches seems like a big hairy mess.
 
6:42 PM
when the codebase get to a certain size, yes.
and the old model of checkout-checkin wasn't fun
 
@IvenBach the real game changer was cheap branching, which came along with Git
 
yeah, that's true. Before you basically copied the whole mess over.
it was no different from working with files in a filesystem, practically speaking.
 
@MathieuGuindon The arrays are passed by reference, so the assignment is completely superfluous.
 
I know, but then foo = bar(foo, bazz) doesn't assign foo = Empty when the function returns, thus overwriting whatever foo was given inside bar?
 
The assignment arr = Array(arrVal) the first time through the loop is working on both the return value and the ByRef parameter though. The assignment all_dataArray = arr at the bottom of all_dataArray means that they're always the same.
 
6:56 PM
huh, I missed that line somehow
if you comment it out, it does overwrite with Empty, right?
 
I believe so. The assignment operation can't happen until the right hand side is evaluated.
 
ok, I'm just blind, not crazy
 
Damn. That got a song completely stuck in my head.
♪I'm not crazy, institution♪
♪You're the one who's crazy, institution♪
♪You're driving me crazy, institution♪
 
7:53 PM
#TIL VS allows you to view the visual tree hierarchy.
 
8:08 PM
@MathieuGuindon I was looking at github.com/rubberduck-vba/Rubberduck/issues/4159. Did you want to have the filter be based on the icon?
 
icon+description, ideally :)
 
8:39 PM
I think the testing with random values is called fuzz testing.
It is meant to ensure that your interface handles garbage or malicious input gracefully.
You use random values to not fall into the trap to only test for values that are expected by your specification.
 
iiuc, it's not meant to replace other kinds of tests but to supplement them
 
@M.Doerner I knew there was a word for it, but couldn't come up with it... Fuzzing.
 
@this nope, uninstalling reinstates the failure
 
@mansellan That's good news, I think.
 
to close out the issue, would need to work out which component is involved, and whether it's redistributable. If it's not I guess it's a won't can't-fix.
 
8:49 PM
@M.Doerner that makes sense but then how do you set it up? Would it be just its own test suite that you might run occasionally, apart from the unit test suite? If there aren't looping, it doesn't seem that useful.
it's three dashes here.
 
@mansellan 3 dashes...
:)
@this slightly faster fingers
 
#MdFail :-)
It's amazing how quickly Office 2000 installs on modern hardware :-)
software's gotten so bloated recently
 
@mansellan insert diskette 3 of 37
 
lol
 
What was the total install time?
 
8:52 PM
@mansellan well it's also a magnitude more complicated.
can you imagine running RD on 90s hardware....
 
@IvenBach took about 30s
if that
 
OOM errors just to load it.
 
@this that's kind of happening right now though
 
I know. My point is that what makes RD possible is because of all those underlying framework.
But what we gain in interoperability & ease of development, we lose in effectiveness/compatcness of the code.
 
well... we could retarged the grammar for C++, and rewrite the add-in as a C++ COM add-in
(and instantly solve all the COM interop issues)
 
8:54 PM
LOL
You think?
We're sorry. Windows has encountered a problem and has to close down.
 
I didn't say it wouldn't SEGFAULT at every occasion
 
That's the "ease of development" aspect.
no mind numbing memory management plumbing to deal with.
oh wait
 
^autostar
 
you know, Joel wrote about leaky abstraction. What he didn't warn is that the more abstraction there is, the faster the leaks get.
keep adding it, and the leak turn into waterfalls
 
8:58 PM
We're no longer agile, but going back to waterfall?
 
shudders
 
no, we're getting carried away by the metaphorical waterfall. It's more that our methodology of future will be Chaotic worms™®
 
^^ Is that copyrighted? If not, I'm using that!
 
It is now.
 
lol!
 
9:33 PM
gah, having the build issues described earlier. tried to set project dependencies per chat, but it complains of circular refs :-(
 
pull from next
Max fixed that already
 
hmm, i just did. must be doing something duck-headed...
retraces steps
ah, not merged yet
 
> Regarding the comments about different ways to implement data sources - I want to point out that the Access database engine already is capable of linking to all the data sources listed above and thus providing the data for those.

Therefore, it could be actually faster/simpler to implement a provider using the engine and passing the connection string through to the engine. You then only need to expose an interface for consuming the data. The downside is that this means a hard dependency on
 
grabbed the sln file from max's PR, all good now
 
9:53 PM
@Duga odd, it works for me
 

« first day (1503 days earlier)      last day (1677 days later) »