« first day (2050 days earlier)      last day (137 days later) » 

12:00 AM
RELOAD!
[Minesweeper] Games Played: 66, Bombs Used: 39, Moves Performed: 8509, New Users: 3
RELOAD!
[rubberduck-vba/Rubberduck] 1 issues opened. 6 issue comments
> I'm seeing this error again in:
```
Version 2.5.0.5244
OS: Microsoft Windows NT 10.0.18363.0, x64
Host Product: Microsoft Office x64
Host Version: 16.0.11328.20492
Host Executable: MSACCESS.EXE
```

It began after I let the code inspection window add some MemberAttributes:
`'@MemberAttribute VB_VarHelpID, -1`

Now when I hit parse I get a compile error:

![image](https://user-images.githubusercontent.com/26984068/72481935-decd7500-37b0-11ea-8696-e7d05c84465c.png)

Followed by t
 
So, my drive came!
I got it partitioned and formatted. Now I'm downloading Ubuntu.
 
12:18 AM
@Duga hm, isn't that the member attributes bug that was fixed like just before 2.5.0?
 
Is there any hotkey to close the Properties window in the VBIDE?
F4 opens it. Alt+F4 closes the IDE window, Ctrl+F4 closes the active code module pane.
 
> I'm seeing this error again in:
```
Version 2.5.0.5244
OS: Microsoft Windows NT 10.0.18363.0, x64
Host Product: Microsoft Office x64
Host Version: 16.0.11328.20492
Host Executable: MSACCESS.EXE
```

It began after I let the code inspection window add some MemberAttributes:
`'@MemberAttribute VB_VarHelpID, -1`

Now when I hit parse I get a compile error:

![image](https://user-images.githubusercontent.com/26984068/72481935-decd7500-37b0-11ea-8696-e7d05c84465c.png)

Followed by t
 
~.~ It ain't consistent.
1) Private instancing --> PublicNotCreateableRadioButton is greyed out. (IsEnabled == False).
2) PublicNotCreatable instancing --> PublicNotCreateableRadioButton is greyed out. (IsEnabled == False). Add the new interface from the dialog.
3) PublicNotCreateable instancing --> PublicNotCreateableRadioButton is not greyed out. (IsEnabled == True).
 
12:37 AM
OK, so here's where I'm at.
I have the ISO file downloaded and moved to my USB drive.
I want to keep my Windows on my C drive, but I can't remove the disk like some places are talking about.
So, what's the next step. I gather I need to get a 2nd USB drive and use Rufus to unzip the ISO and dump it onto the 2nd USB drive and then boot from that and load it into the 1st one?
@Vogel612 Maybe you could help here? I think I'm just used to using VMs :(
No rush; we can discuss it tomorrow.
 
12:51 AM
@Hosch250 wait what exactly are you trying to do
 
Install Ubuntu as a dual-boot onto an external SSD.
 
okay i cant help then :/
@Hosch250 well not a ton but can i at least ask - is the windows on the C drive the other partition on the external ssd?
 
Windows is on the C drive. I partitioned and formatted the other disk as GPT and NTFS.
 
GPT is the ubuntu partition and NTFS is the "store things" partition?
 
GPT is the partition, and NTFS is the partition format
 
12:58 AM
im so tempted to edit my previous comment lol
anyways the one step that im not getting, and which made me ask what you were doing, is why you need to use a second usb drive
cant you use rufus and the ISO in windows to make the boot media without the need for a second USB drive?
or is the first USB drive the SSD?
 
Supper is going on, so I might drop out quick (this one is much better hot).
 
@Hosch250 im trying to guess what it is now
 
But, sounds like I need to boot the computer from one USB drive for the install, and then use the installer options to install it onto the D drive.
 
yes that is correct
 
Meat and potatoes :)
 
1:02 AM
oh yeah definitely eat that when its ready
 
Stew meat (boiled, with gravy) and mashed potatoes.
It's ready now :)
 
now im hungry :(
 
TTYL!
 
okay enjoy it
this is the link that basically confirms what you're saying: askubuntu.com/questions/446682/…
(the accepted answer)
 
I'm invoking the Declaration.Attributes.AddExposedClassAttribute() on the class that's implementing the interface. I need it to be on the actual interface class. My stumbling block is the AddInterfaceClass doesn't have the added interface as a Declaration, but instead as an IVBComponent.
 
1:08 AM
@IvenBach wishes he could help
but i am curious what you're doing!
 
Back.
 
@Hosch250 it must have been good haha
anyways yeah look at that link
i think that basically covers it
 
@IvenBach you won't have a declaration for the new interface until the parser has seen it
 
Yeah, roughly what I've been reading.
 
you should be able to make the boot media in windows
 
1:14 AM
@MathieuGuindon That's the catch22 I'm stuck as a Mort. Parsing is suspended until after the new interface has been added and members on the implementing class have been updated. I want to add the Exposed attribute on the newly added interface but.... Don't know how.
Home time.
 
@IvenBach how about just generating a .cls file and importing it in?
 
um, don't we have rewriter API that can write to the exported file?
 
1:47 AM
Yeah but rewriters work off a token stream, which involves a parse. We don't need that here - we just need to dump text into a .cls file and import it
the extracted interface class is "from scratch"
 
oh, i assumed there was something already.
 
@IvenBach Why would you call Declaration.Attributes.AddExposedClassAttribute(). Only the parser should ever do that.
I think I should make that internal as well.
It has absolutely no effect on the VBE.
 
I think someone once commented that lot of thigns in RD are unnecessarily public.
 
The only thing it does is letting RD believe that the attribute is there.
 
@this If it wasn't me, it should have been :D
 
1:52 AM
If you want an attribute in a new class, you will have to write the entire code of the class into a file and import it.
 
@Hosch250 so you were quite into streaking back then? ;-)
 
Please note that the class code will have to include the entire header.
 
Apparently. I didn't understand scoping well :)
 
I think we all go through that step in our programming learning journey.
 
Well, without that nice directive in the project file to make internal classes public to certain other projects, internal would be really painful.
 
1:57 AM
speaking of streaking:
> If you are familiar with VB just bare with me.
:facepalm:
 
Although, I meant it was probably me who said things were too public.
 
oh lol. Sorry I read it as taking blame for making it too public.
 
Pretty sure I've brought it up before.
 
Oh boy, I'm going to get yelled at. Just ordered a Peavey CherryBomb harp mic... haven't spent a dime on harmonicas in over a year, I earned that mic, right?
 
But yeah, that was probably me too.
@MathieuGuindon Go play at bars and make it pay for itself :)
 
2:06 AM
lol
FWIW I'm probably the one to blame for making too much stuff public
 
better start working on your next serenade, then.
 
Whammer Jammer is slowly getting there... 2 years in and I think I got the intro sorted out =)
(except the subtle tremolo he throws into 8th notes... that's just... brutal)
 
@MathieuGuindon You should get your kids Lentil, by Robert McCloskey.
It's about a kid who plays the harmonica.
And saves the day when the town spoilsport sucks lemons really obnoxiously when some bigshot comes to town so the brass band players mouths pucker and they can't play.
Make Way for Ducklings and Blueberry Sal are also good.
They're just about the right age too :)
 
2:23 AM
Maybe the music will catch on later. Right now they're into The Legend of Zelda / Switch video games ....can't blame them!
 
:)
These are children's books.
Perfect for kids who are just beginning to read.
 
Hm, they don't have a 3yo's level in English =)
...and yes, I see this as my failure
it'll come though
one day they'll want to make their own "Zelda" game or something
 
Well, French is their native language. Maybe they have a French translation somewhere :)
Anyway, just got one of my personal projects' projects to use NRTs.
There is some weirdness to it (needing ! reminders in some places, especially around boxed structs and stuff, like Enum. members).
 
And I had to tweak a bunch of EF stuff to use new features they wrote to support this (like ctors with correctly named args instead of just plain DTOs).
Nullable Reference Types.
 
2:34 AM
Oh
 
I already had the project on 8, just needed to turn it on :)
On the whole, though, it isn't bad.
Now I just need to go clean up my DB and rebuild it.
I found a bunch of fields I wasn't using.
Stuff I'd originally planned to add, but changed my mind about.
Anyway, TTGTB here. TTYL!
(Technically, it's not bed this early--need to clean up still, etc.)
Enjoy your mic, and good luck with your wife :)
 
Anyone else notice that sometime cleaning needs up to 3 cleans before it cleans cleanly?
 
@M.Doerner Because at my present familiarity I Iven-Mort knows no better. I'll follow your advice to write out to a file and import that.
@MathieuGuindon peavey.com/products/index.cfm/item/664/116675? That's not bad for a once a year.
 
2:52 AM
@IvenBach yep! =)
 
I spent twice that on a 3d printer and a bit more thereafter on filament.
 
hehe.. gotta live a little bit sometimes, too!
 
Filament was paid for in cash. My sweet wife will have a harder time tracing that. :shifty-eyes:
 
lol
#toys
 
I print my own now. #OOOoooohhhhYEAAAAAH!
 
2:56 AM
hmm so I upgraded my pR to latest on 2019 and just tried to run tests.
It seems to run but does actually nothing.
No passes, no fails, just.... not run despite getting the output from the test console. What am I missing?
 
how do you do a For each loop on a custom dictionary wrapper
 
<~ realizes he's the last one that hasn't switched to VS2019 yet
 
@theVBE-it'srightforme you need to add an attribute to the member.
something like Attribute NewEnum.MemberId = -4
I think we have @Enumerable annotation to help with that?
 
yep
no
@Enumerator
on the NewEnum member
 
how does that work specifically if the dictionary being wrapped is holding two dictionaries itself
 
2:58 AM
^ probably easier to just add it
well, you'll need to pick one....
 
oh wait im an idiot lol
 
@this we need a template for a custom collection class
 
i have a method in the custom class to return one side of the dictionary or the other
 
oh yeah. Taht would be very easy to add
 
thanks for the help
(custom class is a bimap implementation)
 
3:00 AM
That said, I kind of question the utility given that the IEnumVARIANT will enumerate over variants.
e.g. it's legal to do Dim v As Variant: For Each v In MyCustomCollection: Next
and you can't force that only strong typed iterator be used.
 
actually speaking of that im curious since i never asked this, is there any built in bimap in vba
i couldnt find one
 
I'm not exactly sure what you mean by bitmap
are we talking like, an actual bitmap image?
 
no bimap as in bidirectional map
 
welp, I have no clue what's a bimap.
 
its just a two sided dictionary
 
3:04 AM
Oh, I gotcha now
 
yeah not super complex
(otherwise i would not have been able to make it)
i presume you can see the usefulness
 
The Public Property Get NewEnum() As IUnknown needs to return an enumerator, so you can have logic in there to do whatever but the easiest is just to make it do Set NewEnum = internalCollection.[_NewEnum] (you'll need to enable "show hidden members" in the object browser to see this one in IntelliSense)
I think it can be a Function too
 
so i can have it take a parameter to choose which side of the map to loop through?
 
Yes, I can see the utility.
No.
 
@theVBE-it'srightforme nope, no parameters
 
3:07 AM
<meme about crying>
 
it's just using IEnumVARIANT internally
 
The caller is the VBA guts in this case
 
and IEnumVARIANT isn't directly usable in VBA, either.
 
seems easier to just use the .Dictionary method I defined and loop through that
 
3:08 AM
the bits that make For Each iteration work anyway
 
kind of make sense when you consider that VBA must be Automation-compatible
 
though i should probably rename it lol
 
@theVBE-it'srightforme exposing the wrapped collection breaks encapsulation
 
the big part about being Automation-compatible is that you must be able to provide a late-bound version. A early-bound iteration would violate that.
 
its only exposing half of it technically
but
 
3:09 AM
@MathieuGuindon that is true but so is providing the implemented enumerator anyway, no?
 
that is true :/
 
To keep the encapuslation, it probably need to iterate over a simple KVP array, I think.
 
its hard to, uh, always keep up encapsulation
wait if I have that method return a copy instead of the actual collection wrapped would that still be breaking encapsulation?
so like CopyOf(Keys(Left)) instead of Keys(Left) basically
 
It's expensive though
 
it wouldn't
But yes, what Mat said
 
3:12 AM
expensive in processing power or memory?
 
both?
 
:(
so what is worse then
breaking encapsulation or inefficient use of system resources
 
hmm I don't get it. I can debug an unit test, and breakpoint gets hit but test explorer outcome doesn't update. claims it wasn't run.
something's broken.
@theVBE-it'srightforme let's take a step back.
 
mk im listening :)
 
You have a bimap and you implement a pair of dictionary internally.
so you want to iterate the bimap --- what exactly do you expect to be the i in the For Each i In myBiMap?
 
3:16 AM
yeah exactly
 
? I'm asking you what type is the i?
 
its a variant basically
 
of what?
 
im not sure what the key value is going to be
 
so you want to iterate the keys?
 
3:17 AM
well there are three things to iterate right, the keys on the left side, the keys on the right side, and the "pairs" as a whole
so yeah i do
 
See, for For Each to work, you have to pick one of them.
 
basically in this instance i just need to go through the keys on the left
 
or at least do For Each i In myBiMap.Keys & For Each i In myBiMap.Values
 
well you cant do those names because both sides are technically both things but yeah i think that is what i was saying
 
I think the latter is more closer to what you want to achieve since there's no doubt over what side you are going to iterate over.
Ok, Left, Right. Whatever.
 
3:19 AM
@this i was being pedantic :3
 
:) I'm just flying blind here.
 
@this hey you're learning something!
anyways yeah that gets back to the original comment about breaking encapsulation
because .Left and .Right return the half of the dictionary
 
Right - @MathieuGuindon can we implement a custom collection that does nothing but allow iteration? Would that avoid the problem?
e.g. the class would have only single member, NewEnum, and pass on the underlying dictionary's enumerator.
The result would be a readonly collection, I think.
 
The simplest working base yeah
 
so yeah, you'd want to create a ReadonlyDictionary and have your BiMap.Left and BiMap.Right properties return ReadonlyDictionary
then you can safely do For Each i in myBiMap.Left wihtout allowing them to mutate the underlying dictionary.
Mind you, if the dictionary stores objects, you can't stop them from mutating the objects stored in the dictionary itself.
 
3:23 AM
right
 
yeah the dictionary is storing object
 
but then it's on these objects to allow or forbid mutation
 
but i kinda need to be mutating them in some cases so
 
That's OK. That should not be breaking encapsulation, necessarily
 
#ByDesign then
^^
 
3:24 AM
esp if it's your intention to allow changes to the objects. I just wanted to mention that in case it wasn't something you wanted.
 
okay thanks
so how do i implement the read only thing exactly
 
what you want to avoid, is to leak the pointer to your internal collection
 
Allowing them to mutate your dictionary would break the encapsulation of your BiMap class because it lets them into the privately held dictionary.
(or what Mat said in fewer words)
 
so callers can't just willy-nilly add/remove items from it directly
 
:53241020 Public Property Get Dictionary(Optional ByVal Side As Sides = l)

    Set Dictionary = VKeys(Side)
definitely not what that is doing right ;)
 
3:26 AM
sigh I give up. I don't know what is with 2019's refusal to update tests.
 
okay thanks this will definitely make this better
out of curiosity, would this be worthy of a CR post?
 
Yes!
@theVBE-it'srightforme uh, not sure I follow the code, though. if it's returning one of the internal dictionary, yes that broke the encapsulation.
 
@this yes i forgot the Private VKeys As New Dictionary part :)
 
please don't auto-new them....
 
and yes i already removed the New from that line and put Set VKeys = New Dictionary in Class_Initialize :)
 
3:28 AM
lol
 
hahaha
i'm learning lol
okay back to the read only dictionary thing, i dont think im exactly following how it works
 
@theVBE-it'srightforme You’re in good company as we are all idiots together.
 
you'd create a new class module. name it ReadOnlyDictionary
 
@this im not that bad at VBA
 
It should have only 2 methods with one backing field (for the dictionary clearly)
Load to actually provide it with the actual dictionary
NewEnum with the @Enumerator annotation to provide enumeration
That should be all you need.
 
3:33 AM
so Public Property Let Load(ByVal copy As Dictionary)?
 
No.
You wnat it to be loaded only once
 
so Public Sub Load(ByVal Source As Dictionary)
is Dictionary yours or the Scripting.Dictionary?
 
@IvenBach hey we're not idiots, we like to learn!
@this scripting, i cant implement actual custom dictionary
 
If latter, it should be Scripting.Dictionary (my pet peeves - I always use two part naming on all my objects.)
 
3:35 AM
@this yeah thats gonna require a bit of refactoring :3
 
anyway - so your BiMap would create the ReadOnlyDictionary, load it, then return it. If you want to further encapsulate it, you could create interface IReadOnlyDictionary to hide the Load method
WTF. On next test explorer works?!?
 
what is the difference between public sub to load and public property let to load?
 
Why am I even wasting my time fighting with this lameass test explorer....
 
they seem functionally equivalent to me
 
They are, yes. Only that one is basically a design smell. :)
 
3:38 AM
why is it a design smell if they are the same thing :3
okay i get it ty
 
well, not exactly.
 
so in load i literally just set the backing field to the Source
 
If I'm looking at the object browser and I see that little symbol for property
and I find out that it's write-only, I'll go WTF
it's really all about communicating your intention clearly as possible. with a sub/function, we expect mutation to happen.
with property, we might not.
 
(not exactly best way to explain it but...)
@theVBE-it'srightforme yes
 
3:40 AM
i have used subs for all the UI framework classes when assigning things that are just internal parameters
which i did because you cant easily send multiple things in a property let but still
@this okay
and the NewEnum
i will try to figure that out before asking
oh the only other thing
is it possible
 

We're all idiots

Aug 22 '19 at 19:34, 15 minutes total – 24 messages, 6 users, 0 stars

Bookmarked Aug 22 '19 at 19:52 by Mathieu Guindon

^ Mugs title, not mine.
 
to make the ReadOnlyDictionary fit into a variable declared as Scripting.Dictionary?
@IvenBach fair :(
or can they not be viewed as functionally equivalent because this one is read only
 
no it'd be just a variable you return for your Left or Right properties in your BiMap
 
so whatever client code is using it needs to declare a holder if necessary?
actually dw about that right now i should get to trying to get it funcitonal
thanks for the help
I will make the CR post tomorrow when I have it more presentable :)
 
 
5 hours later…
9:01 AM
@IvenBach I don't think I've seen @Vogel612 calling himself an idiot yet.
 
 
1 hour later…
10:11 AM
@SimonForsberg well you didn't look hard enough then...
If I'm not mistaken, that conversation may have been triggered by me doing exactly that
@Hosch250 nah, you just Rufus it onto the first USB drive instead of copying it and boot into the USB drive for the installation process to start
 
11:00 AM
@theVBE-it'srightforme. If you are not committed to a pure VBA solution then I'd suggest again taking a look at codereview.stackexchange.com/questions/233671/…. Its a library in C# which wraps a c# dictionary for use in VBA. Amongst its many abilities is the two way operation of the dictionary.
 
11:32 AM
@Duga reminder: we still have an open issue RE: writing a wiki article on how to do translation...
 
11:44 AM
> Great! To get started, you need to set up the development version. [This wiki article](https://github.com/rubberduck-vba/Rubberduck/wiki/Contributing) explains what you need to do to get it all setup. Once you've got it setup, you can then use the [ResXManager](https://marketplace.visualstudio.com/items?itemName=TomEnglert.ResXManager) to help you find all resources that needs to be translated and create Portuguese resources for those.

If you need specific assistance, feel free to drop by
 
11:57 AM
hmm VS 2019's Test Explorer seems really broken. I tried again on next and it ran some but stopped at 1600 and reported 11,000+ tests not run.
Anyone got an alternative?
 
12:11 PM
Do you have R# installed? It has a test runner, too.
 
not on the VM w/ 2019.
 
12:25 PM
@theVBE-it'srightforme it's OK

We're all idiots

Aug 22 '19 at 19:34, 15 minutes total – 24 messages, 6 users, 0 stars

Bookmarked Aug 22 '19 at 19:52 by Mathieu Guindon

 
9 hours ago, by IvenBach

We're all idiots

Aug 22 '19 at 19:34, 15 minutes total – 24 messages, 6 users, 0 stars

Bookmarked Aug 22 '19 at 19:52 by Mathieu Guindon

;-)
You guys love that bookmark, don't you?
 
#LateToTheParty #AsUsual
 
#ButFashionable
 
You haven't seen what I'm wearing today. yes, I'm dressed
@this and yes, when you've smacked your head on every branch, run into every tree trunk, and stumbled over every root for the last 5 miles, it's nice to know you're not the only one who can't see the whole stinkin' forest.
 
huh... when did this "show timeline" button show up?
 
huh that's new
 
>
What I am doing is opening the .resx files in visual studio code and translating them to Portuguese.

I am saving files already translated this way:
![Capturar](https://user-images.githubusercontent.com/47114001/72526955-82755e80-385f-11ea-8eb5-ecb3223ef743.PNG)
It's that way?
Is it necessary anything else?
If so could you help me?
 
12:56 PM
@Vogel612 OK, thanks, I'll try that tonight.
 
@FreeMan been there for ... about a year or so?
might be that you gained new privileges and the thing shows up for you
 
@Duga I'll leave it to others who actually has translated stuff to reply - I have no idea if that will work or not.
 
Wow! Either I'm exceptionally unobservant, or it's a new priv. I'm only at 2900 points on Woodworking (currently in beta), so I'm a long way from the last priv and a fair bit from the next one, too.
I got a huge bump in the question scoring recalc over at Avaiation which pushed me to 13k (from around 8 or 9k) so I got access to mod tools, but that doesn't apply everywhere, does it?
 
37
A: Add a link to the timeline of a post

Yaakov EllisI am happy to announce that a new and improved post timeline is now available to all users. It can be accessed by clicking the clock icon underneath the voting and favorite buttons that are located to the left of a question or answer. Clicking on the button will bring you to the timeline p...

Looks like it just rolled out to all users
 
ah, thank you! Must be that I'm exceptionally observant today!
 
1:11 PM
ahhh ... so it was a mod-only thing before.
 
musta been
 
> I am happy to announce that SE users can now actually have their opinions listened to and can make SE staff do sensible things
^ Mood
 
1:29 PM
@FreezePhoenix Did that come from The Onion?
 
^ sad
 
1:55 PM
@Hosch250 that's... messed up.
what's the endgame? do they want SE to turn into another "gimme teh codez" site just to get more traffic? if so, i don't think that's gonna work...
 
No idea.
I'm liking Codidact more and more.
 

« first day (2050 days earlier)      last day (137 days later) »