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

12:02 AM
RELOAD!
[rubberduck-vba/Rubberduck] 4 opened issues. 22 issue comments.
[Minesweeper] New Users: 46, Games Played: 124, Bombs Used: 85, Moves Performed: 16633
> Nothing "special", they open one at a time, some use macros, but they don't do anything fancy, no dynamic mapping of buttons or controls, etc.. The "fanciest thing" that some do is to utilize TempVars.
 
@HackSlash Roflmao. "Modern web parsing tool" and "written in VBA" in the same sentence.
 
12:29 AM
@Vogel612 thank you that is a good principle I will remember. does the possibility of modification apply to a webpage if all the code is still rendered on the server side?
 
 
3 hours later…
3:36 AM
Hiya, how do I find out what interfaces Object data type implements please?
 
 
2 hours later…
5:13 AM
So, I wrote a Q&A on it here. I'd appreciate it if anyone felt like giving feedback on how to improve it. Especially, the bit where I mention that Object interfaces might be at fault. I couldn't find references to Object interfaces (late bound object). I suspect it may actually by an MSHTML interface with Object that is at fault (IDispatch....) and
that my wording might be slightly off.
 
 
2 hours later…
7:07 AM
 
 
4 hours later…
10:45 AM
@M.Doerner There's a "Yo dog..." meme in there, but I can't be bothered to put it together this morning...
 
11:02 AM
@MathieuGuindon Once again, SE focuses on the most critical items that their users are screaming for...
@QHarr Don't forget that IE11 is now officially dead and support will be trailing off at some level of "quickly".
 
 
2 hours later…
1:05 PM
I have a sample from a 3rd party that is erm, interesting. Instead of raising events like a sane developers they force me to set up a manual message loop to poll for status. But they do something strange here:
    delegate void myDelegate1();
    void threadTrans()
    {

    }
    void Run1()
    {
        myDelegate1 md1 = new myDelegate1(threadTrans);
        //blah blah
        this.Invoke(md1);
        //blah blah some more
    }
What is this accomplishing?
A whole lotta of nothing, me thinks unless it's so subtle and I'm oblivious....
 
1:19 PM
@this it's indirectly invoking threadTrans ...but it's useless because md1 isn't being injected so Run1 might as well just invoke threadTrans directly AFAICT
 
Exactly!
I have no idea what they were trying to accomplish there
checks off cargo cult programming on his bingo card
 
Code probably predates .net 2.0 and the author was confused about what delegates are for?
 
the worrying thing is that this is for a credit card processing....
 
Question about the Extract Interface refactoring: I started out with a simple Property Get in my original code:
Public Property Get ReportID() As String
  ReportID = this.ReportID
End Property
 
1:24 PM
This isn't a homegrown Github project. :-\
 
I did the extract and ended up with the expected property in the Interface. In my (now) Implementation, I still have the Get as shown above, but also have:
Private Property Get Iimplementation_ReportID() As String
  Iimplementation_ReportID = ReportID
End Property
which is what will be referenced when I use it, but it also retains the original Getter. Is there a valid reason for retaining that intermediate step, or should/could I reasonably modify it to read:
Private Property Get Iimplementation_ReportID() As String
  Iimplementation_ReportID = this.ReportID
End Property
and skip the intermediate get/let/set?
 
depends what you want your class' default interface to expose
if all the code that consumes this class does so through member calls against Iimplementation (uh, what kind of a name is that for an abstract interface?), then there's no need to keep the members on the implementation's default interface, no.
 
Ah, yeah. wait... OK, I see. The original getter is Public and that's what's exposed. the implementation call is Private
it's an anonymized name. For no real good reason.
OK, I think I understand why I effectively have two. Wasn't registering the Public/Private difference.
#NeedMoarCoffee
 
The thing is that if you remove the public getter on your implementation, you force the call sites to explicitly cast the object to the interface in order to access that method.
 
Yeah, if I'd removed the Public getter, I'd have ended up making the Private getters public to make up for it, which probably is not what I would have wanted, and would have been a wrong bandaid.
 
1:32 PM
with that public getter, you can do Dim foo As Foo: foo.ReportID but for an API, you should work with abstraction, so you'd return only a IFoo and work with it, rather than Foo
yeah, definitely don't expose the implementing getter
 
So, if you want all users of the class to always use the extracted interface, you should probably remove the getter. However, as long as there are users of the concrete class, it is probably better to leave the original getter where it is.
 
hmm need a Replace Concretes with Abstractions refactor....
 
> Also, where Stack Overflow questions become Rubberduck inspection ideas.
^ reads and remembers stuff, just not always the most important stuff...
nor the most useful stuff
 
@FreeMan the Private IInterface_MemberName member must be private because it has no business being exposed on the class' default interface. You invoke it through IInterface.MemberName, the member is Public on IInterface.
basically you never want to see something.IInterface_DoStuff anywhere
something should be declared As IInterface, so the member call should be something.DoStuff
arguably Extract Interface should look at the consumers of the class and adjust call sites accordingly, but depending on user inputs in the refactoring UI that may or may not always be possible
 
@MathieuGuindon which is precisely what I would have ended up band aiding together if I'd removed the "backing" Public get/let.
Have no consumers at this time. I was working on making the Interface, then realized I was writing the Implementation at the same time. Renamed it and removed the '@Interface annotation, parsed, then used the Extract Interface to save having to rewrite the little bit of implementation code.
Thanks again, all!
 
2:03 PM
Just to be sure... when building an MVVM based form, I should be able to build the Model without thinking at all about the View or ViewModel (except for the basic level of knowing what data will be needed in the View). Likewise, I should be able to build the View with no knowledge of the Model. It's only when building the ViewModel that I'll need to know about both the V & M because it's the glue that holds the two together.
 
2:16 PM
@MathieuGuindon requires some mental reading since it might be legit for one call site to work w/ concrete but illegitimate for another call site to do so.
@FreeMan Not necessarily. VM can be given the interfaces but not be responsible for the creation of the concretes implementing the interfaces.
Mind, I'm not saying that VM can't new the V and M up itself but doing so couples it to the concretes
 
Update: official hiring process is under way, final contract expected by the end of the week
7
 
hmm... I meant physically/mentally "knowing" about them. I've started on the Model, and I've got the current Views that this new work will be replacing, but there should be no need to design a View while developing the Model beyond knowing, generally, what data and functions will be needed.
@MathieuGuindon wo0t!
new position, same company?
 
new position @ new company
 
wow, congrats!
do you have to give the purple suit back? ;-)
 
I can't wait to resign at this point lol ....nah I get to keep the suits!
 
2:30 PM
Congratulations! I hope it works out for you!
 
@MathieuGuindon Even better!?
 
and he gets to show off his mad threads at the new place, too!
 
2:58 PM
@Hosch250 if it wasn't clear I was suggesting to use a modern web parsing tool INSTEAD of VBA. Then I provided a VBA library because that is what was most likely to benefit QHar. If the library does what they were trying to do then it could save a lot of time trying to write something similar.
 
3:15 PM
mkay... I decided to take a look @MathieuGuindon's Battleship to get a better feel for what I'm working on. (In general, I see where Battleship is MVC vs the MVVM I'm working on), but, when I went to parse the code, I'm getting:
2021-05-19 11:06:33.2442;ERROR-2.5.2.5927;Rubberduck.Parsing.VBA.ParseCoordinator;Unexpected exception thrown in parsing run. (thread 12).;System.AggregateException: One or more errors occurred. ---> System.UnauthorizedAccessException: Access to the path 'C:\Users\bshepard\AppData\Local\Temp\Rubberduck\vzxercqa.e1k' is denied.
Since this is a fresh clone of the git repository and the last update there was 17 months ago, this shouldn't have been affected by the bug that hit me a couple of weeks ago.
Thoughts?
 
this looks identical to the problem you were having a little while back
 
3:29 PM
Yeah, but I thought the issue was determined to be something RD was doing...
 
Hm, I don't recall what the solution was
 
yeah, me neither. It's all on a local drive, nothing network related. maybe @this remembers?
 
it does look like a weird (write) permission issue
 
must be something with my degenerate laptop. Parses fine on my desktop machine.
Seems to me, that may well have been the "resolution" last time.
 
3:46 PM
> **Rubberduck version information**
Rubberduck version 2.5.2.5927 loading:
Operating System: Microsoft Windows NT 6.2.9200.0 x64
Host Product: Visual Basic x86
Host Version: 6.00.9782
Host Executable: VB6.EXE;


**Description**
I don't know if this is by design but I had pre-2.5.2.5920 installed for All users and before installing .5927 I uninstall the old one, with my uninstall cleanup tool also removing the folders in "Appdata\Roaming". On launch of VB6 I got the message that "R
> The matter of leaving behind folder is a tricky one. We do not delete that folder because it contains user's customizations and it would be inconvenient to lose it if it was uninstalled then later installed (particularly in response to correct some kind of install or registration issues).

As a consequence, the installer will delete the folder.

However, the VB6 not loading it might be actually a different problem. Can you please confirm if you are running VB6 as an administrator? That w
> The matter of leaving behind folder is a tricky one. We do not delete that folder because it contains user's customizations and it would be inconvenient to lose it if it was uninstalled then later installed (particularly in response to correct some kind of install or registration issues).

As a consequence, the installer will not delete the folder.

However, the VB6 not loading it might be actually a different problem. Can you please confirm if you are running VB6 as an administrator? Th
> The matter of leaving behind folder is a tricky one. We do not delete that folder because it contains user's customizations and it would be inconvenient to lose it if it was uninstalled then later installed (particularly in response to correct some kind of install or registration issues).

As a consequence, the installer will not delete the folder. That does introduce complications when mixing the per-user install with per-machine install since we normally want the folder in the different p
> It is theoretically possible to run VB6 in a non-elevated context, but it causes many problems as it lacks rights to register objects for debugging. I think at the very least it's impossible to debug ActiveX projects, but I can't recall for standard exes.

Are you trying to run VB6 non-elevated?
 
4:09 PM
Mug. Hope your new employment is smoother than your current crusty purple velvet one.
 
I'm wondering - if I'm threading multiple threads and they need to be cancellable, do I actually want to change from:
Task.Factory.StartNew(DoWork, token);
to:
Task.Factory.StartNew(() => DoWork(token), token);
in order to ensure that the DoWork() has the token so that it can check/throw if it's been cancelled. But then what's the point of passing the token to the task factory?
 
@this I believe that's the preferred form iirc
 
Then what is the use of the 2nd parameter to the StartNew() method?
 
it's something to do with the task status under cancellation, lemme see if I can find the link
I think I was thinking of this post if a quick scan jogs my memory correctly.
> However, if the delegate raises an OperationCanceledException from the same CancellationToken passed to StartNew, then the returned task is canceled instead of faulted, and the OperationCanceledException is replaced with a TaskCanceledException.
 
LOL @ the gif
Yes, I am definitely not using it the way I thought it would be used
glad I asked, will change to do DoWork(token)
 
4:29 PM
So blackbox has encrypted the rubberduckdb.config file, which is great. I've now squashed my local commits and could push to my fork... but blackbox somehow can't find the file it encrypted (it's right there!) so I'm kind of in a rather stupid place right now as far as the website is concerned.
also thanks @all for the encouragements! this new position means quite a lot to me and my impostor syndrome!
 
4:48 PM
Look who is claiming imposter syndrome...
 
getting withdrawal symptoms for lack of twinBASIC news :-)
 
5:04 PM
> Yes, I am running Win10 and VB6 as Administrator, although not with the originally created "Administrator" account. Not a big deal for me as I got it installed but thought I would report it. However, I think it would be nice with a notice about this, either in the installer or the Installation documentation (if not already, I haven't checked).
 
> I haven't checked
narrator: we know you didn't
 
> @AstrocalcVB FYI the release notes of the "latest release" can be found at https://github.com/rubberduck-vba/Rubberduck/releases/latest - pre-release builds don't get this information (for now anyway), but it's the same content every release, copied here for convenience:

---

[**Installation instructions**](https://github.com/rubberduck-vba/Rubberduck/wiki/Installing)

**VBA6 | VBA7 x86/x64**

Installs without administrator privileges for the current Windows user login.
Local admin u
 
5:24 PM
> **Rubberduck version information**
Rubberduck version 2.5.2.5927 loading:
Operating System: Microsoft Windows NT 6.2.9200.0 x64
Host Product: Visual Basic x86
Host Version: 6.00.9782
Host Executable: VB6.EXE;

**Description**
After successfully installing the latest pre-version I tried once again to parse my largest project. Again, it resulted in a Parse Error now with an OutOfMemoryException, but I can confirm that the object.Circle optional arguments bug has been fixed with this
 
 
 
1 hour later…
6:47 PM
https://stackoverflow.com/questions/67608911/auto-increment-of-a-selected-column-with-a-header

Anyone remember why writing a 2D Variant array to a range silently fails here?
Nvm figured out the issue.
 
 
1 hour later…
8:12 PM
> For the record, I just parsed w/o problem another smaller project containing the same cTaskDialog class, so the class as such doesn't seem to be the problem. However, this project only make use of the class at one location, while the larger project use it more extensively.
 
8:38 PM
SSMS intellisense is dumber than VBA's....
 
 
3 hours later…
11:46 PM
[rubberduck-vba/Rubberduck]: 1340 stars vs. [decalage2/oletools]: 1548 stars
 

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