« first day (1952 days earlier)      last day (1228 days later) » 
00:00 - 19:0019:00 - 00:00

12:01 AM
[rubberduck-vba/Rubberduck] 1 opened issue. 15 issue comments.
[Minesweeper] Games Played: 45, Bombs Used: 34, Moves Performed: 6423, New Users: 9
> `On branch 2702_CodeExplorer_ExtractInterfaceRefactoring
Your branch is up to date with 'origin/next'.

nothing to commit, working tree clean`
> > On branch 2702_CodeExplorer_ExtractInterfaceRefactoring
> Your branch is up to date with 'origin/next'.
>
> nothing to commit, working tree clean
> ```
On branch 2702_CodeExplorer_ExtractInterfaceRefactoring
Your branch is up to date with 'origin/next'.

nothing to commit, working tree clean
```
> According to your fork, you are 2 commits ahead and this PR only has 2 commits. That suggests to me that you may have committed your changes to your local repository on your computer, but you haven't pushed the new commits to your Github's fork repository. You should probably do a git push, most likely (git push origin, but need to double check in case alias is different or something).
> @bclothier I see the last commit on the fork lines up with this PR, ...git status would show local ahead of origin if there were local commits, no?
> @bclothier I see the last commit on the fork lines up with this PR, ...git status would show local ahead of origin if there were local commits, no? I'm worried @Mrblackey might have lost the changes if everything is up-to-date...
> No, no. It's on wrong branch, I think:

https://github.com/Mrblackey/Rubberduck/tree/next is 3 commits ahead.


> Your branch is up to date with 'origin/next'.

That should have been the feature branch, not `next`, right?
 
12:16 AM
@Hosch250 Horse? Uh... I’ma say hold off on that as that’s no small sum of money.
 
> I didn't lose the changes...
Weirdest thing - this is what it says on my fork @Github:

> This branch is 3 commits ahead, 47 commits behind rubberduck-vba:next.
> @Mrblackey
> Mrblackey Resolved all reviews and change request. …
> Latest commit
> 8108d18
> 33 minutes ago
which lines up perfectly with my git push.
> I didn't lose the changes...
Weirdest thing - this is what it says on my fork @Github:

> This branch is 3 commits ahead, 47 commits behind rubberduck-vba:next.
> @Mrblackey
> Mrblackey Resolved all reviews and change request. …
> Latest commit
> 8108d18
> 33 minutes ago

which lines up perfectly with my git push.
 
No.
 
> Cool, let's close this PR and make a new one off your next branch then! :+1:
 
It is a few thousand. I'm expecting it to be about $10k, once I get the gear and all, TBH.
 
> @Mrblackey the issue is this PR is tied to other branch. At top of the PR page, you see this:

>
Mrblackey wants to merge 2 commits into rubberduck-vba:next from Mrblackey:2702_CodeExplorer_ExtractInterfaceRefactoring

But your new commit is on the `next` branch. Push it to that 2702... branch and then it'll update the PR.
> Or that (reopened)
 
12:20 AM
@Hosch250 better a horse than a kingdom, eh?
 
Now, a kingdom is expensive.
That takes several million, if not more.
 
:-)
 
OTOH, if you have castle law...
 
I know nothing about horses but do they require time from you besides the usual feeding and cleaning?
 
Some. I mean, you ride them and train them.
 
12:22 AM
so you should also ask yourself if you're in a place to give them the time they need as well as the money
 
Yep.
 
I've been leasing a horse for a year.
 
> Or I think git checkout next then git cherry-pick 8108d18c23f94e121b8c88121488260078e92530 and push might work too.
 
I go out basically all day on the weekend.
 
12:23 AM
Oh, didn't realize
 
> Or I think git cherry-pick 8108d18c23f94e121b8c88121488260078e92530 and push might work too.
 
cool
 
I wouldn't buy without some experience.
 
> Tried that already.
I can't seem to figure out what am I doing wrong.
I get all sorts of failures.
 
12:28 AM
LOL.
 
> Curious. You always can go nuclear and do what @retailcoder originally suggested, close this and make a new PR (you can reference this PR in the new PR).
[rubberduck-vba/Rubberduck] build for commit 69037734 on unknown branch: AppVeyor build succeeded
 
@Duga WTH?
 
12:45 AM
[rubberduck-vba/Rubberduck] build for commit 8108d18c on unknown branch: AppVeyor build succeeded
 
12:57 AM
[rubberduck-vba/Rubberduck] build for commit c4f77497 on unknown branch: AppVeyor build succeeded
 
@this any thoughts on whether logging these could be of any value?
 
yesterday, by M.Doerner
AFAIR, the RefactoringAbortedException is meant to facilitate voluntary aborting an exception, i.e. when the user chooses to cancel on any confirmation. Because of that it is never reported.
Inclined to say no
OTOH, how do we know there was a misuse....
 
something for telemetry?
 
right...
will telemetry need to be its own target? Not sure we want to send Trace data?
 
no idea, but I was thinking a cancelled dialog could be Info level
@this could easily be
 
(its own target, I mean)
 
I'm inclined to prefer a separate target - it might be able to use Trace/Info but the way they are, they are more useful for debugging than for telemetry and would need lot of editing.
 
hm, that's right
 
1:40 AM
Soon, the ducky will know whether a TW is docked, floating or undockable.
 
2:20 AM
Tell me that we are not giving this duck beer or whiskey @this
 
2:34 AM
Nope. It'll be just better at following the marble in the three shell game.
ahhh, yeah!
I got the undockable to dock again. :-D
 
ooooh sweet!
 
just need to fix the menu. it comes out as very very thin bar
(it's tall because it keeps re-adding the same menu entry again and again)
 
 
1 hour later…
4:02 AM
 
yessss!
 
i hope that the new knowledge RE: window's state also comes in handy for avalon custom panes
 
it absolutely will
 
> git.exe push --progress "rubberduck-vba" MiscBugFixes:next
oops
good thing it rejected that. Would have been an unpleasant mess.
 
FINALLY! fixed the darn analyzer stuff... PR incoming...
 
4:09 AM
:+1:
 
> Closes #3214 !image We also now can know the toolwindow's state (whether it's docked, floating or undockable). The context menu is injected via message pump, so it is only available over unused area of the toolwindow. Right-clicking on a used area will yield the usual context menu:...
 
this is a great night
 
@this yep :)
ttgtb
 
[rubberduck-vba/Rubberduck] build for commit 7419dc60 on unknown branch: AppVeyor build succeeded
[rubberduck-vba/Rubberduck] build for commit 2bc2707f on unknown branch: AppVeyor build failed
BUILD FAILURE!
 
4:32 AM
@Duga on the bright side, the analyzer works
 
 
1 hour later…
5:44 AM
> @this Thank for the background. My understanding of the purpose for the parser suspension was definitely incorrect. So - I'm thinking the latest update addresses all the comments thus far.
 
6:29 AM
@Duga Shouldn't that have failed the build locally already?
 
 
1 hour later…
7:50 AM
> @Mrblackey (and crew): for the record, this would be corrected by calling

```
git push origin HEAD:2702_CodeExplorer_ExtractInterfaceRefactoring
```

where `origin` stands for the repository name of your fork. You could replace HEAD with your local branchname and also pass the option `-u` (or `--set-upstream`) to make git aware that these branches belong together.
 
8:04 AM
> Thanks, I tried that too, after @bclothier suggested the same - still didn't work.
> Thanks, I tried that too, after @bclothier suggested the same - still didn't work.
I guess I just corrupted my branch in some way... Doesn't matter, all works fine now with Next branch.
 
 
1 hour later…
9:19 AM
-1
Q: Is there any way to loop through class properties to fill them?

DamianSo I'm writting some code which works perfectly but bothers me a lot: For i = 3 To UBound(arr) If arr(i, 4) = 0 Then Exit For Login = arr(i, 4) Agentes.Logins(Login).Negocio = DatosAgente("NEGOCIO") Agentes.Logins(Login).Mes = DatosAgente("MES") Agentes.Logins(Login).Año = Da...

 
9:51 AM
 
10:12 AM
@Duga w00t! fine work sir. note to self: I must pick up some of the VB6 UX/UI niggles that have been there since forever...
 
 
1 hour later…
11:41 AM
@M.Doerner it would have, but local build was the meta solution
 
12:25 PM
@Hosch250 might as well, people "identify" as everything else these days...
 
 
1 hour later…
 
1 hour later…
@Duga Strange. The bad key doesn't apparently exist in french nor spanish.
 
true
 
and thank you, @BZngr - this PR is truly awesome.
 
thanks
 
3:09 PM
[rubberduck-vba/Rubberduck] build for commit d717e029 on unknown branch: AppVeyor build succeeded
 
@this what is your primary language (coding)?
 
SQL?
I guess I'd say SQL, VBA, C# but I do spend a lot of time between the 3, SQL only edge out a bit ahead.
 
copy; just curiosity
 
My languages are C#, JS, TS, SQL.
 
TS is an initialism for...?
 
3:13 PM
Although, because we use Linq-to-Entities, I think about the generated SQL for a lot of my C# code.
TypeScript.
 
ahh; have not heard of that one
 
TS is basically JS with lipstick.
I don't think you really can know only TS and not know JS.
 
Close.
 
(e.g. the abstraction leaks badly)
 
TS has proper types, scoping, etc.
 
3:15 PM
@this ergo, JS is a pig?
 
@FreeMan That's a given.
 
ha
 
Types, as in actual classes, interfaces, etc, instead of just blobs of objects.
Type safety, of course.
 
@Hosch250 yes, but atop a foundation of sand
 
Yep.
I treat it mostly as a really good linter.
 
3:16 PM
because in my experience, if something goes wrong in JS, TS won't help you out.
Yeah, that.
 
Because, for example, JS doesn't have scopes.
But TS does, and enforces it.
So the JS really isn't scoped at the end of the day, but the TS can help you guarantee that something is only used in a certain location.
Or rather, JS scopes are more like functions as values inside other functions, etc.
 
I wonder -- did they improve the TS debugging?
 
Not sure.
 
i've learned more about TS in that conversation than i previously knew, but it still leaves me with the same amount of questions lol....
regarding my languaged, i'm limited to vba and js, though i've been trying to learn sql a bit more as i use a bit of vba to sqlite for database entry (i know it's not ideal; dont' kill me)
 
I've never been able to debug my JS anyway, other than console.logs...
 
3:18 PM
last time I futzed with it, I had to debug in JS, which made for a mind-bending experience because I had to map between TS to JS which can be very different.
@Cyril out of curiosity, why SQLite?
 
because of congress?
 
@this They have .map.js files (or is it .js.map) that the browser/IDE can use to map it for you.
@Cyril What does congress have to do with your DB choice?
 
@Cyril this is... we're in the presence of some greatness here.
 
ah, that sounds familiar. I may have failed to use it properly. I remember getting frustrated with the inability of IDE to properly debug. I broke down and just debug the raw JS in browser.
 
not many people dabble in databases for the companies i've been part of, so for me to even talk about people using databases over excel spreadsheets for security has been a bit of a nightmare. so, i found sqlite, which has credentials supporting it via the library of congress and a set of standards. using that info, i have bee nable to get Quality units to start moving some spreadsheets to databases... and if i do it, i use the few lines i know in sqlite
very long story to say "i needed a standard form and congress accepts this standard" for what i wanted other people to do
 
3:22 PM
LOL I find it kind of weird that congress would have sqlite but apparently not big irons like Oracle or SQL server.
 
IKR?
 
those are privatized, and sqlite is open-source, supported by the government, particularly the navy
 
I'd have gone with SQL Server, based on feedback from various DB experts (even anti-MS ones in general).
 
Don't get me wrong - SQLite is great for what it's meant to be - an embedded in-process database engine. It's just that using it as a database for any clients isn't the typical usage.
I assume you're using SQLite ODBC driver, right?
 
yeah, databases are not my strong suit... but i can take that log you've been maintaining for 15 years in excel and migrate it to a .db and link your excel to that .db so that everyone can update one location
yes, odbc
 
3:25 PM
@Cyril There's MySQL, too. But I don't think it's a zero-install so even if it was there, I imagine you'd have to deal with the nightmare of installing it.
Cool - and has it improved? Last time I futzed with SQLite ODBC (~10 years ago?), it was quite primitive
 
i've not much looked into other connectors beyond power query, so not sure i could tell if what i use is primitive or not
i r nawt virsd
 
OK. You've piqued my curiosity, though. I'll keep in mind to check it again and see if it's now more useful as an ODBC source.
 
let me know your thoughts on it when you do; would be nice to have a professionals opinion on the capabilities/antiquity of something i currently utilize
essentially, my use of sqlite databses were so people stopped using excel files and circumvented someone else trying to use sharepoint like a database... and i quote "it's a great tool, though the view is limited to 5,000 entries"
er, stopped passing around excel files... not stopped using*
 
I doubt it's "antiquated" - I know the project is very well-maintained.
Yeah, just say no to ExcelDb or SharePointDb. :D
SharePoint in particular is appalling.
It's using SQL Server to hold data, right? But it uses basically a EAV model and dump all list items from all lists in a single giant freaking table!
 
and it's only getting worse as they are revamping sharepoint 2020 to support the limitations they are reaching when trying to build Teams on teh platform (or so i read via tech reviewes on reddit)
@this there are some initialisms being used that i'm not familiar...
 
3:32 PM
@this weren't you the one advocating the merging of Excel & Access?
20 hours ago, by Mathieu Guindon
@this so that Excel becomes an actual database?
 
Entity Attribute Value.
 
ahh
 
@FreeMan read a bit more, young grasshopper. ;-)
 
It's the worst possible option you can do.
 
^
 
3:33 PM
It's even worse than using Excel as a DB.
 
I mean, you can set up Excel as a good DB with relations and all.
 
@this I read on from there. It's just fun to poke the bee hive
 
Most don't, but you can.
EAV is ALL wrong.
 
IDK about having relations in ExcelDB. I know there's list validation but there is nothing to enforce uniqueness so you could get in a situation where a child had 2 daddies.
Just don't.
SQLite is obviously much better than ExcelDB or SP. Heck, even the old JET database is preferable.
 
3:36 PM
Hey... that means my GeneralConfig table isn't a terrible, horrible idea that I came up with that would make everyone else shudder!
CREATE TABLE [dbo].[GeneralConfig](
	[ID] [int] IDENTITY(1,1) NOT NULL,
	[Category] [nvarchar](255) NOT NULL,
	[Item] [nvarchar](255) NOT NULL,
	[Value] [nvarchar](255) NULL,
:D
 
though it's regrettable to say, i'm not strong enough in the area to provide any real expertise. i can say that i have userforms written in VBA(excel) that are launched as executables with VS; once the userforms have been filled out, the Commit button is pressed and i have VBA code sending sqlite add-commands to a database. it's fairly egregious to describe, so i can only imagine it is a terrible way of doing it, but was what i had the capability of performing.

i was thinking about designing a webform so i can use js to send the sqlite commands, but that would take a lot more learning (a
 
0
Q: Mat's back, blame the monkey

Mathieu GuindonWhen I put down my mug 18 months ago, I promised I'd stick around, and I did. I've been keeping a distant eye on CR and meta, while remaining in our Rubberducking dev chat, and monitoring vba posts on both Code Review and Stack Overflow. Seeing rolfl's resignation and the bleeding of several SE ...

 
Good luck.
 
Quit holding your breath, you've turned blue!
 
3:38 PM
Keep your mug full.
 
Do you have to change your profile picture and reset your user name now, too?
 
:(
 
always and forever... mat's mug
call him the french m&m for short
 
oh, yeah, thanks for stepping up!
 
3:40 PM
should it be "thanks for mugging up!"?
 
s'pose it should well be. #CantWinEveryDadJoke
 
@Cyril haha love it!
 
@MathieuGuindon Our BDFL has had his second ascension. He has risen above the level of mere pure mortals once more and grasped the diamond yet again.
Congrats Mug. Wish you the best.
 
@this just spent a bit of time on that wiki and am now more confused than i was before... i will need to go back and get a masters in computer science before i consult further
 
3:51 PM
Sorry. Maybe if you're familiar with normalization, it's easier to think of EAV as basically turning columns into rows. So instead of having columns FirstName, LastName for people, you have a row FirstName, and LastName, and another column holding the values like John and Smith.
Now try to query that. No, don't.
 
4:01 PM
@this that makes sense. what i was reading in the wiki didn't come off that clear
i saw <first name>, <last name>, "data"which didn't really make sense
 
anyway, the idea was that if you couldn't know or didn't want enumerate all possible columns in a RDBMS, you would just use them as a row instead of column. Of course, that means all kind of integrity constraints you can put on it no longer work because they're no longer "schema" but "data".
 
copy
 
I've done a limited subset of it in some projects but I've found that inevitably some comes along and say "hey, I wanna to report on it" and all hell breaks loose so we end up re-normalizing but since data is already there, we end up having 2 copies. #FUNTIMES!
 
two copies as in the original database then the converted/normalized data in a more metadata-esque fashion?
 
sorry, no, one copy in the EAV subset, and other in the normalized table in the same database
throw in the accompanying programming logic to keep the 2 places synchronized.
 
4:08 PM
got'cha
 
It's practically make-work.
 
that feels like a lot of what happens with databases...
all summed up by the simple statement: poor planning leads to more problems
 
^ pretty much.
 
I've found it works well for configuration data. You have what would be tons of columns, but only one row. So I just turned it 90° - I have 3 columns and tons of rows instead.
 
I think it's fine as long the scope is limited. Your earlier example of configuration data is a typical use because you don't actually report on it
You are just plucking one or two for some other programming logic
But if you were actually querying or reporting upon it.... Well, #HaveFun
 
4:18 PM
yeah, I could see where that could get ugly. The Wiki's example of medical data, though, seems realistic. There are literally 1000s of possible values that could be recorded for a person at any given visit - having a table that wide would be... ugly and mostly empty for the vast majority of visits.
 
I have it in my mind that if one is in a situation where they need something like EAV, is stuck with using RDBMS (meaning that the schemaless DB aren't a option), and is concerned that some querying/reporting will be required, then I would say that the next best thing is to wrap the EAV table with a re-normalized indexed view that is re-created whenever the "column definition" is modified.
 
I'm not going to have too many entries is the DateOfLastPeriod column, for example...
 
The other option is to use XML or JSON column, then create a computed column to contain the key columns.
 
most of what i deal with is defining tables with a desired column count x2... i always put in extra columns in case people want shit added down the road because people are fickle. not sure i've ever tried a simpler format than that.
i set it up like i used to do when i had Access
 
I don't follow. You mean you have FirstName1 and FirstName2 in your table?
 
4:20 PM
easy enough (in MSSQL, at least) to add a column to an existing table. That way you can name it appropriately, too.
 
Yes, but you need programming to expose that in the application.
 
in my case i add all of the desired columns, then add in additional columns to the right with generic headers
like "add_01"
can go back and change the header name later, but i've not learned how to just add a new column to a table in sqlite
like i mentioned, not an expert in any means; just trying to "make-word" like Ben said
 
4:40 PM
@Cyril ALTER TABLE <table name> ADD COLUMN <column name> <data type>
Dun learnt ya!
oh noes... Loose objects!!!!
what does that mean?
 
@FreeMan learnt good... had i attempted to google i am sure that would have been there haha. will try playing with that when nov starts as that's when i have maintenance scheduled for the db
er, preventive maintenance*
 
I think I searched for "Add column sqlite" I usually have to do it whenever I need to add a column to one of my tables because I don't do it that often.
 
@Cyril if you haven't already, review the fundamental of normalization is worth it.
and FWIW, I don't see what pre-emptively adding a column buys you, esp. if you have to rename it anyway. Database schema changes usually are accompanied by corresponding changes in the application's programming.
 
^ that
Additionally, how do you know what data type to give it?
 
4:57 PM
IIRC, that's where sqlite differs from other DBMS. It duck-types, I think.
 
@this i have done it because i ddin't know how to add a column, which i now do, but i did know how to re-label a header. pretty much laziness and not being my background all add up to duct-tape and wd-40 fixes
tmk, all data types are treated the same, which are configured on the back-end display, so i use lots of .texttocolumns in vba on the back-end and entry i dictate the format of dates to the preferred string nomenclature
had a fairly in depth conversation once before about sqlite compared to other db where it's more appropriate to have a uniform entry with strings only then convert to desired datatypes on the back-end. that was the only SME i had on the topic and rolled with it
 
OMG, our selection management is a mess.
 
having never known another way, that's where i stand
@M.Doerner what happened?
 
I just found out that we pass COM wrappers around for absolutely no good reason.
 
What?!?
I thought we fixed that to use QMNs?
 
5:06 PM
We have one centralized utility to get the active selection, but there are several of things getting the active code pane themselves in order to pass it to a method that gets the selected declaration from the declaration finder, which just gets the active selection and searches based on that.
I think I will bring that in line.
I saw this while investigating how the command bar determines the selected declaration.
 
Yeah, we definitely want to avoid COM access as much as possible.
 
My motivation for that is to bring in line how refactorings determine their target and what is displayed in the command bar.
 
AFAIK, there is only one event args that still uses COM wrapper and that's the AC one.
 
Those are not event args; the wrappers are passed directly.
 
Yes, I mentioned that mainly because it's a deficiency that we don't have a way to pass around information without passing COM wrappers. I was thinking that as a general rule, we want to pass something akin to QMN (if not QMN itself) and allow the called procedures to retrieve COM objects themselves.
 
5:32 PM
WTF, the NoIndentAnnotationCommand can take any declaration as target via the parameter put will always add the annotation to the active module.
That makes no sense.
 
wah
hey @user11378204, can you write to chat? (checking...)
 
I thought I saw a recent-ish issue about indentation annotation not working...
not finding it, though
 
@user11378204 feel free to edit your SE chat profile - you should now be able to talk here (may need to F5/refresh the browser tab)
 
Wasn't that about @Ignore?
 
Probably. I may be conflating it.
 
5:53 PM
me thinks that @user11378204 might be shy... Don't worry, the duck doesn't bite (hard)!
 
6:07 PM
Question about the refactorings:
Should their target selection mechanism really try to be smarter than the command bar about the selected declaration?
 
IMO, there should be only one subsystem responsible for selection.
Otherwise, we will produce edge cases that don't fit the scenarios covered by each subsystems.
 
Currently, both the IntroduceFiledRefactoring and the IntroducePArameterRefactoring can be used while you are anywhere on a declaration statement for a single variable.
The command bar only thinks the variable is selected while you are on the name itself.
 
so you mean we have something like Dim foo As St|ring
 
BTW, the extension mechanism is what triggers the Assert.
 
and the refactoring will get foo declaration whereas the commandbar won't show that?
 
6:11 PM
The command bar will only show it while you are on foo and otherwise show the module.
 
That's a big whiff of #GetOffMyLawn right there.
 
The refactoring will get foo wherever you are in the statement.
 
I can see why that might be convenient, esp if one highlights the entire Dim statement.
But that doesn't mean we need a different subsystem or extension for it. The subsystem repsonsible for mapping selection to declaration should handle it.
At least that's my opinion.
 
I think we should either stick with the current way the command bar does it or enhance the handling in the DeclarationFinder to also return the variable.
 
I'm more inclined to want to handle the version that refactoring uses. We don't want to make it too hard for users to refactor simply because they selected too much
 
6:14 PM
I think the entire extensions used by the refactorings to find targets should die.
I have opened an issue for that.
 
Yeah, agreed with kiling the extensions. That's distributing the responsibility too much.
 
OK, but I will have to be a bit more cautious than the extensions because of the ReDim.
 
I'd probably not consider Redim at all - that should be fixed first with a separate inspection / QF before it becomes eligible for any refactoring.
 
I mean, in the selected declaration handling.
 
@IvenBach The simple answer to that question is, "No". The longer version is "...unless you need to know something about it to do your job to put food on the table and keep a roof over your head, and for probably 50% of the (US) population, the answer then becomes 'Yes'"
Also, I'm not sure why they bothered blotting out the name of the asker.
 
6:25 PM
so, semi opinionated... would people prefer to call a context menu [commandbars("cell") and commandbars("column")] on activation of workbook or on right click? i feel like the on-right click is kind of a pita as it's delete (depending how many additions you'remaking), then re-add every time, thoguh the big downside to the on activate is that you have to have enabled the macro to run the first instance, then it will continnue to run on activation provided the location/name have not changed
 
00:00 - 19:0019:00 - 00:00

« first day (1952 days earlier)      last day (1228 days later) »