« first day (2095 days earlier)      last day (1085 days later) » 

12:01 AM
RELOAD!
[banane-io/PDB] 1 commit. 5 additions.
[banane-io/pdb-frontend] 1 commit. 5 additions.
[Minesweeper] Games Played: 126, Bombs Used: 94, Moves Performed: 18366, New Users: 28
RELOAD!
[rubberduck-vba/Rubberduck] 3 issue comments
 
 
2 hours later…
2:42 AM
@M.Doerner FWIW, we should be working with the ComProject and it’s children rather than the type library directly at least for VBA project. The backend might be able to load the type library of non VBA references directly as that should be safe to do out of process.
 
 
6 hours later…
8:20 AM
 
 
4 hours later…
12:35 PM
Hm, I am currently working mt way through UnreachableCaseInspection to remove one fixme regarding using only one declaration finder per execution. Now, I get the impression that the inspection uses stale state at several points when we execute it after a reparse.
I guess I will restructure is a bit to remove the state entirely.
I think the only two kinds of state in an inspetions should be the declaration finder provider and the listener (parse tree inspection only).
Hm, some also need an IParseTreeProvider.
 
1:07 PM
@MathieuGuindon Hi. Did that, now I have 2 errors.
In output window:
16>call "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\Common7\Tools\VsDevCmd.bat"
16>midl.exe /win32 /tlb "Rubberduck.x32.tlb" "Rubberduck.idl" /out "C:\Users\jverner\AppData\Local\Temp\RubberduckMidl"
16>midl.exe /amd64 /tlb "Rubberduck.x64.tlb" "Rubberduck.idl" /out "C:\Users\jverner\AppData\Local\Temp\RubberduckMidl"
16>**********************************************************************
16>** Visual Studio 2019 Developer Command Prompt v16.4.4
16>** Copyright (c) 2019 Microsoft Corporation
Severity	Code	Description	Project	File	Line	Suppression State
Error	MSB3073	The command "call "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\Common7\Tools\VsDevCmd.bat"
midl.exe /win32 /tlb "Rubberduck.x32.tlb" "Rubberduck.idl" /out "C:\Users\jverner\AppData\Local\Temp\RubberduckMidl"
midl.exe /amd64 /tlb "Rubberduck.x64.tlb" "Rubberduck.idl" /out "C:\Users\jverner\AppData\Local\Temp\RubberduckMidl"" exited with code 9009.	Rubberduck.Deployment	C:\Users\jverner\Desktop\RUBBERDUCK\Rubberduck.Deployment\Rubberduck.Deployment.csproj	60
 
that shouldn't be necessary, actually
IIRC there's two options for generating the idl file from the TLB and we're selecting for one of them in the deployment project...
 
Hmm, seems like I have it.
 
2:06 PM
Why does this all have to be so indrect?
Why have a field with a collection that listens to an internal event triggered whenever something should get stored in the collection?
Why not simply add it to the collection instead?
 
 
2 hours later…
3:43 PM
> I have found the solution, at least to my problem.

As I do tests with rubberduck I have added the Rubberduck AddIn reference.

Having this reference the error was caused when updating the project and it was blocked. Then remove the reference before updating and now it works normally.

I can already use version 5!
 
3:56 PM
Hey @MathieuGuindon. I wanted to let you know that I’m going to stop following issues. I’ve been quietly reading a lot of them the last few years, but find myself doing so less and less.
You have my email, right? Just in case you ever need something.
 
@RubberDuck thanks for the heads up! got your email, twitter, facebook, and SE too :)
(and LinkedIn IIRC)
do I remove you from the teams/admin stuff?
 
4:17 PM
Nah. Leave me there just in case you get hit by a bus. I’m just not going to subscribe to all the issues & stuff.
How’ve you been btw?
 
~waves
 
Hey @Vogel612!
 
Hiya @RubberDuck
how are your adventures in embedded development coming along?
 
@RubberDuck sounds good! :)
crazy busy at work with interfacing Shopify data with Sage300 GL journal entries, #fun
asked for the GL account #'s back in May I think
got them 2 weeks ago
 
oh wow...
 
4:20 PM
last week, boss: "so you got the GLs, you done yet?"
me: now needs to write a separate and rather complex query for each and every single one of the provided accounts
like, all 30 of 'em
 
hang on ... each account gets a different query?
 
pretty much
 
ow.
 
sales for shirts -> account A
sales for made-to-measure jackets -> account B
sales for ready-to-wear -> account C
sales taxes -> accounts XYZ, by state code
and so on
 
@Vogel612 I built a beer vending machine. So, there's that.
 
4:23 PM
wouldn't it be easier to associate sales themselves to an account during the PoS interaction?
 
Been spending a lot of time contributing to the Rust community lately.
It's.... not quite there for production yet.
For embedded that is.
 
I mean ... it doesn't help dealing with the old data, but it sounds like something that would immensely simplify the accounting.
 
Oddly enough, I've been working with C# and WPF for the better part of the last year at work.
 
We actually discussed calling into Rust to make COM interop more manageable yesterday.
I think mostly jesting, but I'm really interested in getting into a low-level language and Rust seems like an excellent candidate
 
@Vogel612 you're assuming the accounting makes any kind of sense :)
 
4:26 PM
ahhh, yes, I see
 
Hey @Vogel612 Have you looked at Nim at all. Same objectives as Rust but better syntax.
 
@Vogel612 then again, the deposits go in one place when the order is placed; taxes written to another account then, and then the bank deposit is another GL account at another aggregate level (total for the day; fees are per-location, other things are per-order), and at fulfillment we write the sales entries and COGS into other GL accounts, and then there's inventory valuation somewhere in there, ...so I collect everything from Shopify, and then merry-go-query :)
@RubberDuck full circle!
 
yea, accounting is generally a mess. I had a short run-in with accounting laws when I started my company for freelance work.
 
Right Mat?
 
But luckily I could sidestep basically all of the mess because I don't have all that much revenue
 
4:31 PM
oh, and it's for 3 divisions, each with their own sets of GL accounts
#madness
 
@Vogel612 Rust is 100% ready for production if you have an OS under you. Great choice IMO. We've talked about using it to speed up some image processing.
 
@Freeflow looks interesting, but apparently compiles to C, C++ or JS
the syntax is very reminiscent of haskell
it seems to be using whitespace block scoping though, so that's a huge minus from me
 
@MathieuGuindon That sounds as if somebody made a great mess when setting up the accounting system.
 
Yes =)
 
I have a lot to do with accounting; it really is not that complicated as long as you do not have to make some special valuations for financial items.
Those can get very tricky.
 
4:39 PM
can confirm!
 
I am spending most of my time at work on implementing a new accounting standard for insurance business since about one and a half years ago.
That is really complicated.
Especially since the standard is still evolving.
BTW, I am actually also planning on learning Rust in the near future.
More precisely, I have to actually implement something with it, now that I am half the way through the book.
 
 
3 hours later…
7:50 PM
Hi. Just wanted to ask about this article rubberduckvba.wordpress.com/2020/02/27/…
In figure 3-7, shouldn't If Len(This.FirstName) = 0 Then be If Len(This.FirstName) <> 0 Then? Or am I missing something.
 
No, it is correct as-is.
It ensures that the data is initialized only once.
Once a first name is set, which really should not be empty, any further attempt to use the initialization method to alter the contents won't do anything.
 
Ah I see! Clever. So it's just a 'if I ever try to initialize again' check. But not 'if user entered empty name' check. That would be elsewhere. In the property for example.
 
arguably, there should be an Else block that throws an error
or a validate-and-throw guard clause
otherwise we're silently failing here, potentially hiding an error
 
Design question: I have a (ton of) method(s) whose purpose is to aggregate some data. In order to avoid inspecting the same parts multiple times, the known results are passed into all methods. Should the methods return the manipulated results collection or just return void to better indicate that they are affecting their inputs?
 
8:06 PM
so there's heavy temporal coupling involved IIUC?
 
No temporal coupling at all.
It is just that getting the results for one part jumps to some other parts that might get revisited on the usual path.
To avoid doing the work multiple times, the known results are passed along.
 
I'd tend towards returning I think
 
So when I implement interface, i just rewrite Get Name() to Get IPerson_Name() and insert Implements IPerson to the top.
That would mean the RubberDuck - Refactor - Extract Interface is not working correctly (I just tried to use that)
 
@SonGokussj4 that removes the Name member from your class' default interface though
 
A better way is to first add the Implements IPerson and then to use the dropdown on top of the code pane to generate the method skelletons.
 
8:10 PM
^
 
@MathieuGuindon Well it didn't. It just added IPerson_... properties and the Implements command. The old Get Name() is still there.
 
I know that there are some minor issues with extract interface that I addressed in my pending PR.
However, it should work.
We do not remove that since it could break your code.
 
@SonGokussj4 that would be the expected/intended behavior. Moving the member could be an option for that refactoring perhaps, but we don't remove members, refactorings should change the code without breaking anything
 
@M.Doerner Ok so I would write class:
Option Explicit

Private Type TTable
    Table As ListObject
    Name As String
End Type
Private This As TTable

Implements ITable

Public Sub FillData(Table As ListObject)
    Set This.Table = Table
    This.Name = This.Table.Name
End Sub
Then manually Interface class
Option Explicit

Public Property Get Table() As ListObject
End Property

Public Property Get Name() As String
End Property
Then Rubberduck - Refactor - Implement Interface?
 
That will work.
Alternatively, you can add the implementations semi-manually via the VBE dropdown.
 
8:16 PM
Okay. I'm missing what is VBE dropdown here.
 
On top of the code pane, there are two dropdowns.
Use the left one to select the implemented class, then the right one to select the method.
If there is an implementation it will navigate there.
If no implementation exists, it will generate a skelleton of it and navigate there.
 
Oh! Neat.
I was using that only for generating Event on forms until now.
 
10:13 PM
@MathieuGuindon You may want to bump the star count for RD on your LI profile. 67 is a long ways off from 1000+.
 
That's how I feel with social media.
 
to be fair it does say "at the time of this writing"
ugh stupid app only lets me edit the French version
 
Trollolol.
 
#WillFixLater #Eventually #Maybe
 
10:26 PM
Argh, our tests for parse tree inspections were all broken.
They did not report that an unexpected exception was thrown because we unconditionally swallowed them in the inspector.
 
welp, that's not good
 
10:50 PM
I have just pulled the tree walking into the InspectionTestsBase and QuickFixTestsBase to stop using the inspector.
 
11:19 PM
Now, I have two failing tests for a quick fix.
Apparently, the order of elements is non-deterministic.
 

« first day (2095 days earlier)      last day (1085 days later) »