« first day (2051 days earlier)      last day (1129 days later) » 

12:00 AM
RELOAD!
[Minesweeper] Games Played: 69, Bombs Used: 56, Moves Performed: 8827, New Users: 6
RELOAD!
[rubberduck-vba/Rubberduck] 1 issues closed. 2 issues opened. 6 issue comments
 
1:00 AM
My screen is stuck on a purple page showing no progress for minutes. My fan is spinning still, but my drive isn't blinking to show activity.
I guess I'll give it through supper, anyway...
It said it installed, then asked to restart. And got stuck.
 
@M.Doerner it's the same here. I was thinking about the fact that batteries are normally sold in voltages but wires or cables are usually rated in amperes.
 
1:21 AM
Hmmm. Pressing the power makes the screen turn off, and pressing again makes it come back.
 
holding it should turn it off
 
Just did that...
 
@this remember a few years ago I mentioned a function for extracting size buckets out of a fixed-width single column that I needed to turn into individual records? That's the culprit for the 50+ minutes processing.
 
oof
 
Can't get past the purple screen.
 
1:26 AM
7
Q: Put it in a bucket

Mathieu Guindon You're running a jeans company. Your system is collecting detailed orders' data, but it's a bit archaic and it's storing the number of units ordered per size in a delimited string with 20 "fields", each taking up 4 characters. You want to normalize this data to make it easier to eventually ana...

I think that was it
 
Even f11 system recovery doesn't pull the recovery screen up...
 
At least it's not a blue screen!
 
If it was a blue screen, Windows would recover.
 
Basically I think I need to somehow inline the function
Because cross apply is costing everything
 
why does our WPF have so many copy pasta RE styles
@MathieuGuindon what version are you on now?
 
1:32 AM
SQL 2012
 
Because we didn't know how to get styles working for a long time.
 
^
Resource dictionaries actually
Took a while to figure out we needed MergedDictionary
 
hmm maybe I should just make it so.
(decided I needed a low-hanging fruit so went to fix on the RD's not honoroing Windows theme)
 
Not so yay. I need to learn how to load the merged dictionary. :-p
@MathieuGuindon I'm missing something - there's no cross apply in the linked CR post. I assume you're using a later version that's not in the post.
 
1:37 AM
Shit. It installed over Windows on my C drive.
 
ouch. No fun.
 
My UEFI sees both Windows and Ubuntu start up managers.
Booting into my D just gives the option of installing...
Ok, I'm going to do the "try without installing option"
And then try a reinstall...
 
@this the script that invokes the function is applying it for a large number of rows
 
Got in
 
sanity check - .xaml file can be just a text file with extension? Nothing magical about them?
(VS won't let me create a new xaml file via add item)
 
1:41 AM
yep.
well assuming you don't want or need a designer
 
and to clarify - are you using a version like your OP or did you adopt Chris' solution using substrings?
Not sure I can use desinger. It's going to be the dictonary, basically
 
no, using a TVF atm
@this right that's just a plain .xaml file
 
trying to install from here...
 
you could have a designer for it if you wanted one =)
 
okey dokey - do you want to share the TVF definition?
 
1:43 AM
@Hosch250 what are you installing?.
@this will do........ tomorrow?
 
Lol, it saw that Ubuntu was already installed and ask if I wanted to rewrite or do a side-by-side.
 
oh, @Hosch250 is bricking his computer
 
I meant to put it on an external ssd.…
 
sure but i think tomorrow may be a bit hectic - I can try to look at it between meetings
 
cool =)
I'll be reviewing the indexes involved and reshaping the script anyway. There has to be a way to make it complete faster than that
 
1:49 AM
well, the fact that you get them in denormalized manner and have to pivot it is going to hurt.
The best thing we can make sure is that it pivot exactly only once.
(it should but who knows)
But that will always be your slowest & expensive operation; it might actually benefit to dump it into a temporary table with indices then join it to whatever it was cross-applying originally.
or you can try yelling at the mooks to stop sending you crappy format
 
eh that system was written in the 70s I think
 
I hope they are not still using punch cards
 
Hmmm. It seems it might've tried partitioning my disk so Windows wouldn't be lost. Doesn't help me get in, though.
 
The irony is that it's written in some kind of BASIC dialect
 
PICK?
 
1:54 AM
no idea
might have been the 80s
@this that's already giving me ideas
 
Oh shit.
Nvm...
 
@Hosch250 Do I see a factory reset in the near future?
 
No. I trashed that too :D
 
In other news, my head is still on my shoulders. Just need to watch the volume and war can be avoided.
And I need to try that mic with other amps (now that could mean war)
 
Oof, I think I found the problem.
It's my Nvidia driver.
 
2:09 AM
It's always the drivers =)
 
I need to disable the startup splash so the driver doesn't load until after I log in.
If I can get to the grub page from the purple page.
 
@MathieuGuindon that's why they're always in backseat, too.
 
It loads too fast for me to get grub up...
Trying auto-login.
If I get in, I can disable them from there.
No luck. @Vogel612 send help!
 
2:34 AM
Germany is asleep at this time, .....or should be
 
besides, he'd probably get faster response from his local Geek Squad.
 
hi
i dont think I followed the [_.newEnum] thing very well
i enabled hidden members in Object Browser but still don't see it for a dictionary
 
I don't think it even shows there
 
'@Enumerable
Public Property Get Keys() As IUnknown
    Set Keys = DictionaryCopy.Keys
End Property
that is what i ended up with which doesnt work
 
no because Keys isn't the IEnumVARIANT you need to return
Did you see this?
 
2:48 AM
oh no i did not
i put attribute at the top of the module, not inside the function
because idk why actually
let me try that
 
hmm I take it back. it is shown but only in VBA.Collection.
For the Scripting.Dictionary, there is no _NewEnum; the Keys and Values each return a variant array
so most likely, the Keys & Values works w/ For Each using variants directly.
 
IOW iterating dictionary keys is bloody inefficient =)
 
Trying one last thing. Changed the grub options before the install :)
 
Dictionary is meant for keyed retrieval - that is essentially instant O(1) access
 
i thought for each was really fast with a dictionary?
 
2:53 AM
Hopefully this works.
 
ForEach is fast with object collections
For...Next is really fast with arrays
 
collection = linked list; dictionary = hash table, basically
 
but mind, a collection degrade in performance with larger sets where dictionary doesn't.
 
that is why i thought you were supposed to always use dictionaries i guess
 
2:55 AM
@MathieuGuindon if the Keys and Values are in fact arrays, do we really break any encapsulation?
 
For most things a Collection is sufficient
 
Didn't work...
 
@this by exposing the dictionary? Or by exposing the keys array?
 
the latter. He wanted to iterate his bimap, so if it returns the array of values (or keys?), it'll do the job without breaking the encapsulation since arrays are not mutable... right?
 
2:57 AM
soo we sent him on a wild goose chase, then.
 
but don't expose the dictionary
 
Sorry, @theVBE-it'srightforme !
^^ Yes, that must not be done.
 
that's what yesterday was iirc
 
Just return the Keys or Values to let them iterate over either the left/right side, done.
I had the mistaken impression that Keys & Values were themselves mutable and basically a collection, hence my suggestion to him yesterday that he create a readonly dictionary.
 
Oh, no they aren't
 
2:58 AM
oh lol i actually knew they were arrays now that i think about it
 
which won't work because the Scripting.Dcitionary does not expose a _NewEnum member to start with.
no _NewEnum, nothing to iterate over since we cannot implement the enumerator ourselves.... or can we?
 
Doubt it. What's the IUnknown?
 
to do that, the VBA class would need to implement the IEnumVARIANT which isn't suported (hence IUnknown. Probably not.
 
oh, huh, i can see it in stdole!
 
3:01 AM
im getting tempted to have .Left and .Right return a copy of the dictionary lol
 
@this that must be how you can foreach over an array
 
nope
---------------------------
Microsoft Visual Basic for Applications
---------------------------
Compile error:

Bad interface for Implements: method uses type that is not supported by Visual Basic
---------------------------
OK   Help
---------------------------
 
Sub Next(celt As <Unsupported variant type>, rgvar, pceltFetched As <Unsupported variant type>)
    Member of stdole.IEnumVARIANT
Sub Skip(celt As <Unsupported variant type>)
    Member of stdole.IEnumVARIANT
That's why
 
the thing is that i think i have other uses of the class where I needed it returned as an actual dictionary
but ill have to think about it i guess
im still processing this i feel
thank you for the help
 
3:03 AM
I can get in in"preview" mode and find the grub file on my disk, but can't edit it.
 
oh i do have another issue that i hope is easier
 
@Vogel612 Maybe that helps?
 
i have a sub i call to add a control dynamically
which works as far as I can tell, except with the font styling
 
HRESULT Next(
  ULONG   celt,
  VARIANT *rgVar,
  ULONG   *pCeltFetched
);
llllllaaammmmeeeee
 
Sub AddUserformLabel(ByRef Location As Object, ByVal Name As String, Optional ByVal Caption As String = "", Optional ByVal FontName As String = "Calibri Light", Optional ByVal FontSize As Single = 11, Optional ByVal FontBold As Boolean = False, Optional ByVal FontItalic As Boolean = False, ...
 
3:04 AM
This is technically compatible; just need to be LONG
 
then in the actual routine
 Dim lbl As MSForms.Label
    Set lbl = Location.Controls.Add("Forms.Label.1")

    With lbl
        .Name = Name
        .Caption = Caption
        .Font.Name = FontName
        .Font.Charset = 2
        .Font.Size = FontSize
        .Font.Bold = FontBold
        .Font.Italic = FontItalic
every single thing works, except when it gets to the .Font.Bold and .Font.Italic it applies bold and italic to the font regardless of whether it is passed True or False for the variable values, or for that matter, whether or not True or False are hard coded on those lines
 
Hm
How many parameters are there?
 
uh
can RD count that?
its not so many i cant by hand but im curious
 
RD just knows what the parameters are, ..we could implement a code metric that specifically counts them, yeah
 
hmm..yeah, I think we have to redefine the IEnumVARIANT interface if we want VBA to use it. That implies having some DLL as I don't think we have enough control within VBA to tell it to use a particular IID.
 
3:09 AM
I think more than 30 is a problem, if I recall
 
@MathieuGuindon / @Hosch250 why is WPF telling me it needs keys for dictionary?
> All objects added to an IDictionary must have a Key attribute or some other type of key associated with them.
 
You need a x:Key attribute
 
well it has a cyclomatic complexity of 1 and a nesting level of 2
 
for dictionary?
 
3:12 AM
<ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="../Styles/DefaultStyle.xaml" />
    </ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
 
So that other xaml markup can refer to it =)
 
the examples don't show it having x:Key in the resoure dictionary?
 
not anywhere near what you thought was problematic
 
in fact we have other merged dictionary that doesn't have x:key like here
 
3:13 AM
@this if you add a style with an x:key attribute, does it still complain?
 
style to where?
 
Oh wait wait no, you're making a standalone .xaml file
 
yeah it's just this...
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <LinearGradientBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" EndPoint="0,1" StartPoint="0,0">
        <GradientStop Color="{x:Static SystemColors.HighlightColor}" Offset="0"/>
        <GradientStop Color="{x:Static SystemColors.GradientActiveCaptionColor}" Offset="1"/>
    </LinearGradientBrush>
    <LinearGradientBrush x:Key="{x:Static SystemColors.ControlBrushKey}" EndPoint="0,1" StartPoint="0,0">
and as you can see, the 2 elements, both LinearGradientBrush already has a x:Key
 
And now you know why we went with "effit, copy+paste it is" ;-)
 
please explain to me again why WPF is great
 
3:17 AM
as an application, it's great
as a library with a bunch of xaml controls...
..it's a bit more "fun"
 
i also confirmed it displayed the same behavior with both label and textbox controls
 
this is probably retarded but can we make it an actual application that's activated by the addin?
 
it assigns size and font name correctly which is what is so confounding
 
@this take the UI layer out of process? ballsy!
 
It wouldn't be dockable then, at the least.
 
3:21 AM
Rubberduck 3.0: Alt+F11 launches an alt IDE
 
but we dock it using elementhost don't we?
 
@MathieuGuindon is that not the dream?
 
That's exactly why we aren't an app...
 
I guess that means elementhost won't like being given a WPF object OOP
 
We are a control in the elementhost. We don't own the startup.
 
3:22 AM
It might actually not be as crazy far-fetched as it sounds
 
(and to be clarify I wasn't thinking that it must run OOP; if it can be done on a thread, then great... maybe.)
 
The new IDE, or just pulling the WPF out of process?
 
pretty sure he'd rather want a new IDE.
 
^
"Might as well"
 
Mansallen's idea about file explorer did get me thinking
 
3:24 AM
Got any deals on with ms?
 
if we make it work with the exported files, we can conceivably use VCS instead and we would just need to hijack the Alt + F11
 
nah didn't get an email
It's ok, she had thousands of replies
 
To pay for a new IDE and give us the necessary debugger info.
 
Oh
eh, F5-debug dumps the project into the VBE, and you use the VBE in break mode
 
3:27 AM
yeah
VBIDE is OK when you're debugging. Not so OK when you're wanting to refactor.
 
Anyway, bedtime here. Ttyl! I'm available as soon as I get into my Linux, lol. Can work on it all day tomorrow. WFH because of storm and they are driving the Linux install so I can learn Docker, so it's cool.
 
'night
 
later!
 
Make FunctionReturnValueNotUsedInspection report references

Previously, it reported on declarations, which does not help in finding the offending call sites.
An inspection with the old intended behaviour will be added again in the next commits.
[rubberduck-vba/Rubberduck] MDoerner pushed commit 9a518724 to next: Make DeclarationFinder store members by declarationType
Reintroduce FunctionReturnValueNeverUsedInspection

This is basically what the old FunctionReturnValueNotUsedInspection was supposed to be.
[rubberduck-vba/Rubberduck] MDoerner pushed commit 14a021bf to next: Merge branch 'next' into FixFunctionReturnValueNotUsedInspection
[rubberduck-vba/Rubberduck] MDoerner pushed commit cc99a0b7 to next: Make reporting of unhandled exceptions more useful
[rubberduck-vba/Rubberduck] MDoerner pushed commit 2384e289 to next: Rename inspections and adjust resources according to comments to PR #5338
Merge branch 'next' into FixFunctionReturnValueNotUsedInspection

# Conflicts:
# Rubberduck.Resources/Inspections/InspectionInfo.resx
# Rubberduck.Resources/Inspections/InspectionNames.resx
# Rubberduck.Resources/Inspections/InspectionResults.resx
Alignment of punctuation at end of inspection resources

Also includes some German translations.
Merge pull request #5338 from MDoerner/FixFunctionReturnValueNotUsedInspection

Fix function return value not used inspection
 
3:48 AM
gosh whoever did the XAMLs like to customize a lot of colors....
there are far more colors in the palette than what the system uses.
 
 
1 hour later…
5:13 AM
The projection does a good job preserving both distance and azimuth, at the cost of really exaggerating how many South Americas there are.
3
 
@Duga dammit, didn't mean to push that right away
 
> # [Codecov](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/5327?src=pr&el=h1) Report
> Merging [#5327](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/5327?src=pr&el=desc) into [next](https://codecov.io/gh/rubberduck-vba/Rubberduck/commit/60f69853bb174290a5494c5fe4fb07db537b6a28?src=pr&el=desc) will **increase** coverage by `0.36%`.
> The diff coverage is `70.97%`.


```diff
@@ Coverage Diff @@
## next #5327 +/- ##
=======================
[rubberduck-vba/Rubberduck] build for commit d44c74b2 on unknown branch: AppVeyor build succeeded
> # [Codecov](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/5327?src=pr&el=h1) Report
> Merging [#5327](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/5327?src=pr&el=desc) into [next](https://codecov.io/gh/rubberduck-vba/Rubberduck/commit/60f69853bb174290a5494c5fe4fb07db537b6a28?src=pr&el=desc) will **increase** coverage by `0.34%`.
> The diff coverage is `70.97%`.


```diff
@@ Coverage Diff @@
## next #5327 +/- ##
=======================
[rubberduck-vba/Rubberduck] build for commit d44c74b2 on unknown branch: 61.68% (target 0%)
[rubberduck-vba/Rubberduck] build for commit d44c74b2 on unknown branch: 70.97% of diff hit (target 60%)
> Thanks for the report! I've reproduced the issue and can confirm there's a problem, but it appears to be an edge case affecting procedures with commented-out statement-syntax loops. Commented-out block syntax does not behave like this.
> Side note, version 2.4.1.5105 is getting old 😉
 
6:35 AM
[rubberduck-vba/Rubberduck] build for commit 93156c58 on unknown branch: AppVeyor build succeeded
> # [Codecov](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/5327?src=pr&el=h1) Report
> Merging [#5327](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/5327?src=pr&el=desc) into [next](https://codecov.io/gh/rubberduck-vba/Rubberduck/commit/60f69853bb174290a5494c5fe4fb07db537b6a28?src=pr&el=desc) will **increase** coverage by `0.34%`.
> The diff coverage is `70.97%`.


```diff
@@ Coverage Diff @@
## next #5327 +/- ##
=======================
[rubberduck-vba/Rubberduck] build for commit 93156c58 on unknown branch: 61.69% (target 0%)
[rubberduck-vba/Rubberduck] build for commit 93156c58 on unknown branch: 70.97% of diff hit (target 60%)
> OMG this is totally my new favorite toy!

Made a few UI tweaks:

![dialog](https://user-images.githubusercontent.com/5751684/72589856-68249a80-38ca-11ea-8945-dd17e58f4ebd.png)

I'm thinking the UI could be further streamlined by using a datagrid instead of a listview, where a TextBoxColumn could allow data entry, and CheckBoxColumns could set selection and read-only status. Thoughts?
> hold on a second, I lost the combobox!
 
6:57 AM
@Duga nevermind, I'm an idiot
a tired idiot
ttgtb
 
Sleep well our beloved idiot leader.
 
7:34 AM
 
 
4 hours later…
12:22 PM
#LateToTheParty
 
> <strike>InspectionInfo: The file has trailing new lines that should be removed for aesthetic reasons.</strike>

InspectionInfo: The file has trailing new lines that should be removed for _source control_ reasons.

FTFY!
 
12:41 PM
@Duga Do WANT!!!
 
> @retailcoder I like the space benefits gained by your placement of the command buttons. And, I like the idea of placing all editable controls in a datagrid, one line per member. In fact, the single-entry-line is where I started out.

Full disclosure: when I started contributing to RD, I knew _absolutely nothing_ about WPF. After a couple prior PR run-ins with dialog tweaks and this PR, I believe I now know _next to nothing_ about WPF. So, anything I advocate for (or against) regarding
 
 
1 hour later…
1:51 PM
> No worries, it's just UI tweaks, the functionality itself is just... perfect! I can push another commit tonight if you'd rather do something else than fight with xaml.. was going to do it but ran out of time and figured it would have to be for another day. I'm picturing something like we had in the defunct Extract Method dialog from v1.4, eventually with up/down buttons and drag & drop support for reordering the members.
 
@Duga Is the order of the members in any way important other than to satisfy some peoples' OCD for having them alphabetical or use order or...?
 
Not really
 
2:50 PM
@Duga Reminder: I think Add/Remover References dialog already has that functionality
 
So with the electrical analogy, what is really behind the 120v outlet interface is both the 120 legs, the neutral, and the ground. The 120v interface only reveals a single 120 leg, the neutral and the ground.... So that a 240v interface would reveal all of it?
 
assuming the wiring is rated for it, yeah.
 
And then adding a xformer over the 120v puts a different interface over the 120v interface...
 
yep
 
thx
 
2:56 PM
That also illustrates the point where the implementation must support what interface claims to do.
When you plug a transformer, you are usually just dropping to a lower voltage.
and it's generally safe to go from high voltage to lower voltage.
 
the internals of the xformer are unimportant as long as its output interface does what is is supposed to... could be implemented many different ways...
 
But it wouldn't mean you could splice your extension cords together to plug into 4 of the outlets and power a device that wants 400V; that would be dangerous.
Exactly!
We don't actually know what kind of wiring they put in behind the wall. We're trusting that the outlet on the wall tells us truth about what kind of load they can take.
 
Lets the smoke out
 
Ever seen those plugs with a horizontal slot?
 
yep
real pain to get the parallel blades to fit
:)
 
2:59 PM
That's also another example - it's for those that requires high power but not 220V.
(needs more ampere? Can't remember. I'm no electrician)
 

« first day (2051 days earlier)      last day (1129 days later) »