« first day (2091 days earlier)      last day (1089 days later) » 
00:00 - 18:0018:00 - 00:00

12:00 AM
RELOAD!
[Minesweeper] Games Played: 122, Bombs Used: 61, Moves Performed: 16096, New Users: 14
 
@MathieuGuindon that's not a bad idea!
I will put something together.
 
RELOAD!
[MDoerner/AdventOfCode2019] 3 commits. 1127 additions. 16 deletions
[rubberduck-vba/Rubberduck] 20 commits. 9781 additions. 6533 deletions. 2 issues closed. 2 issues opened. 15 issue comments
 
@MathieuGuindon don't be shy about correcting my quirky grammar. English isn't my native tongue anyway!
 
12:15 AM
=)
@this ping me if you're missing accesses =)
 
 
2 hours later…
2:07 AM
posted on February 26, 2020 by Rubberduck VBA

Apparently this is this blog’s 100th article (!), and since Rubberduck is also about the future of Office automation in VBA, I wanted to write about what’s increasingly being considered a serious contender for an eventual replacement of Visual Basic for Applications. Just recently Mr.Excel (Bill Jelen) uploaded a video on YouTube dubbing it the… Continue reading Office-JS &

 
2:35 AM
Awesome article dude @MathieuGuindon feels like a dear diary from the other side of the void. Perfectly understood your position from where you stand with the web and the things I had see changing too. :) looking forward to part 2.
 
Thanks! =)
 
2:55 AM
 
 
1 hour later…
3:56 AM
@Duga Officially the countdown starts. 8
 
what, it didn't start at 10?
 
yeah but some stars are the shooting type
 
4:12 AM
I was hoping to start it from 10 but I dropped a couple babies stars as they fell.
 
ok, so it wasn't just me imagining then
I thought we were supposed to be lcoser and was a bit disappointed that it was only 8
No more star handling for you, Iven.
 
So dropping stars is bad but babies acceptable. Noted. No wonder Niel deGrasse Tyson got so much flack over the Pluto thing.
 
well, for one thing, Pluto was never a star.
 
Order of outrage: Planets > Stars > Babies.
Odd priorities that is.
 
What can I say? Fruitcakes fruitcake.
 
5:02 AM
@MathieuGuindon thanks again for the help. Out of curiosity, what did you use to convert Word to WP?
I made a number of edits, added a new paragraph and retitled. I think it's ready to go. Maybe the end of week?
 
@this copy, paste, and patience :)
 
LOL. I certainly didn't have the 3rd item. :)
Thanks again!
 
my pleasure - I'll schedule it for Thursday
 
 
1 hour later…
6:32 AM
@BloggingDuck I don’t know how many VBA devs will be able to follow this post. Lambdas, anonymous types, and tuples oh my! None of that exists in VBA and is non-trivial to grok when you first encounter them.
 
7:03 AM
ttgtb
 
Night pond.</iven>
 
 
5 hours later…
12:05 PM
Come on C#, why is there no IndexOf on IReadOnlyList?
 
12:18 PM
Should all inspections take a declaration finder as parameter to DoGetInspectionResults?
We get one in GetInspectionResults in InspectionBase in order to do the filtering of ignored results.
Then most inspections get another one at the start of running the inspection.
Getting them multiple times has the slight risk of getting different states because of a reparse while inspections still run.
 
> FWIW, I installed .5359 yesterday. When I fired it up this morning, I had no issues. I also got the notification that .5361 was available. I DL'd and installed. It too, opens without issue.
 
12:47 PM
@this AAAAAAArrrrgghhhhhh!!! It's Cliiiiiiiiipyyyyyyyy!!!!!
@this Wow... that's some copyright-violation-avoiding-stuff right there...
 
1:02 PM
@MathieuGuindon "The King is dead, long live the King!"
 
1:17 PM
@M.Doerner would having the finder also eliminate the risk of inspection A reporting a result on a declaration X while a related inspection B not reporting a result (when it should) on the same because it now has X' instead of X? The other question is whether parse tree inspections always end up dealing with a declaration.
 
I don't think I can parameterize the column that I want to select in an ODBC query, can I? i.e.
SELECT ? FROM MyTable WHERE ColumnA = ?
 
Not in DAO, but in ADO
But FWIW, Access does parameterize queries even if they are on a linked table.
 
hmmm. GTK!
I do mostly ADO, so that sounds tasty! TYVM
 
e.g. SELECT * FROM MyLinkedTable WHERE ColumnA = [Forms]![MyForm]![MyControl] get translated into a parameterized ODBC query SELECT * FROM dbo.MyLinkedTable WHERE ColumnA = ?
ditto for queries like PARAMETERS foo TEXT; SELECT * FROM MyLinkedTable WHERE ColumnA = [foo];
But for passthrough queries? You're on yer own, buddy.
 
what do you mean "on your own" for passthrough? You mean I have to build the parameters myself?
'cause I'm OK with that
 
1:24 PM
there is no support for parameters in a passthrough query
Therefore you must concatenate strings (ew)
e.g. qdf.SQL = "SELECT * FROM MyLinkedTable WHERE ColumnA = " & PrepareSQLString(foo) & ";"
 
oh. I can only do parameters in a pass-through in ADO, but I can't do a parameterized column in ADO?
 
All examples I gave above are DAO, not ADO
In ADO, you can use parameters, of course.
 
eh, that's not so bad. I can concatenate the SELECT clause.
 
When your query is in code, it makes more sense to use ADO anyway. However when it's dealing with bound forms, then you're dealing with DAO and thus need to work with it using expressions.
Note that SELECT ? FROM MyTable; or SELECT * FROM ?; or SELECT * FROM MyTable WHERE ID IN (?); are not valid ways to parameterize (regardless of how you execute the query.
 
everything I've written so far is ADO. I borrowed stole Mug's code for his auto-parameter-builder and that's DAO, so that's the only DAO I've got.
 
1:28 PM
A parameter does not mean "parse whatever it is and concatenate it into the SQL"
So those 3 examples will not work (or may work but not give the expected result)
I think you would have to actually concatenate the SQL in ADO for those 3 cases. If you want to parameterize it, you have to go a higher level using sys.sp_executeSQL and execute dynamic SQL within the query.
 
that syntax is, however, what the stolen borrowed code expects. It does the heavy lifting of turning ? into the appropriate supplied parameter, attaching that to the collection of parameters, and passing it along to the DB to be executed
 
oh, wait, it does use ADO, though.
Public Function Execute(connection As ADODB.connection, sql As String, ParamArray parameterValues()) As ADODB.Recordset
 
it's not concatenating, though, is it?
 
no, it's building .Parameters and adding them to the collection that's then being passed to the server
cmd.Parameters.Append ToSqlInputParameter(Value)
 
1:39 PM
Thought so. Still, my point stands; it won't work for those 3 examples I cited.
 
right - the SELECT ? and FROM ? won't take a parameter. Those parts would need to be concatenated. The rest, however, will work.
I'm just trying to create a single Function that I can call to get data from a config table where there may be multiple columns that I need to get at different times. Instead of creating a Function for each column I might need to get.
 
The WHERE ID IN (?) wouldn't, either.
 
seems to be easier that way.
@this yeah, discovered that the hard way, too. :(
fortunately, for this case, I don't need that.
@FreeMan this does make sense, does it not?
 
I've seen some people prefer that method. It seems to work. I don't normally do that but YMMV.
 
I have a client config table with about 20 attributes per client. I don't want to have to write Function GetClientAttributeA(clientID), Function GetClientAttributeB(clientID). I'd much rather write Function GetClientAttribute(cliendID, attributeName)
sqlString = "SELECT " & attributeName & " FROM <table> WHERE ClientID = ? and pass along the clientID to the Execute() above...
granted, it means I've got to provide the proper attributeName in my code and there's a moral contract for me not to execute a SQL injection attack on myself...
 
1:52 PM
But if that's an issue then you need a stored procedure.
 
@this "that"?
 
instead of concatenating the strings client-side.
@FreeMan that.
 
oh. I missed the sarcasm tag. (i.e. I'm not bloody likely to do SQL injection on myself!)
 
Still, that is more probable; an innocent user typing in O'Brien and getting a syntax error for it.
 
@this Passing in the declaration finder into DoGetInspectionResults cannot help between inspections. After all, each requests its own instance in GetInspectionResults.
 
1:55 PM
@this is now bookmarked.
 
Not a proper attack per se but still annoying. You don't want to call users ID10Ts, after all. ;-)
 
The parse tree inspections are exactly the inspections that currently do not use a declaration finder internally.
 
@this will make sure I don't create any column named [O'Brian]
 
LOL
@M.Doerner but then they'd be burdened with something they never use.
 
However, the inspection base will always request one because it needs it to evaluate whether the results are ignored.
 
1:57 PM
seriously, at that level, the dev (99.999999% chance dev = 'FreeMan') would be blowing up the dev table, because that wouldn't work and never make it to production...
 
2:23 PM
> I think the title for this issue is very misleading. The inspection should also fire for object type parameters, but only if they are assigned to. That is not the case in the provided MCVE.

So, I guess the issue should rather be called. Procedure can be written as function should not return results if there is no assignment to the parameter.
 
2:42 PM
@BloggingDuck mf'er... when i wanted to give up on JS, it comes back to bite me in the ass... lol
albeit a couple things i have to lookup outside of your post, very informative
i won't make a comment to the post (i hate doing anything that asks for an email), but will say it would be nice to touch more on the longevity of the system, specifically about Shared Workbooks and moving to Excel Online using Office-JS, whereupon EVERYONE has access in real time... which also puts the extreme negative that there is not a development->master->production hierarchy for the project (though that is probably ancillary given the scale of "most" projects)
 
I'm not sure but I think you can use fake emails.
 
SharedWorkbooks with events and the sort, specifically, moving to the online-system, is what i'd be hoping to have discussed regarding the longevity and implications.
figured i need to specifically state the point after i kind of digressed in previous paragraph
 
What is this "development" thing you speak of?
 
i'll test it after a meeting, B; i honestly didn't even think to try a fake/old email
 
3:04 PM
alright, fake email worked (or if someone really has that email, i'm sorry!)
"Your comment is awaiting moderation."
 
Huh, why can't I use value tuples in JunkDrawer?
 
Normally I use dontspamme@bro.com. Sucks for that person with that particular address.
 
"CyrillusIsCyril@AOL.com" was my first thought haha
real name with an ad hominem
 
Shouldn't it be in cyrillic, not latin, though?
 
depends if you're refering to the greek indignation for pope cyrillus
or the mandates referred in latin because of the HRE
 
3:08 PM
No. КириллэтоКирилл@aol.com
 
i believe that's missing a "b" as it's soft-tone, but yeah lol. i can't remember how to make a "ve" with ascii "keepiloc ve keepill"
i think i just denegrated my own name HAHA
 
tell that to Google translator. I have no idea how it works anyway. All I see is misplaced and flipped letters.
 
greek is Kyrilloc (where the "c" is the french c with the tail, like in francois), which has a soft end... specifically in russian (not "all" cyrillic languages) the soft-sound is indicated by a small "b" subscript behind the letter
ya gavoreet po-rooski ... really weird to phonetically type that haha
alright, i just took way too much of a tangent and need to get back to work
catch you in a bit
 
So on my earlier stupid bound form experience
i had to create a fresh form and copy the controls to it
and it worked.
 
3:30 PM
joe@schmoe.com you're welcome to use that if you'd like...
 
@this fred@gmail.com has been getting my junk
 
@M.Doerner might be that the nuget isn't installed for that particular assembly
 
@BigBen ooohhhh... sergey@gmail.com - that sounds like a good one! (or is that sbrin@gmail.com?)
 
@Cyril shared workbooks on win32 are a total trainwreck disaster
online collab is a completely different story
 
@MathieuGuindon isn't it supposed to also work on desktop, too?
 
3:45 PM
@FreeMan lol... we could come up with a lot of those, e.g. stevejobs@icloud.com.
 
O365, yes. but still collab is not the crappy "share workbook" feature
 
oh, didn't realize there was a crappy predecessor.
 
@BigBen yeah, but Steve is gone now, so there's not much fun in that.
 
(seems to be MSFT's thing; make a crap first release, do better 2nd time around.... hopefully)
 
no no no, "share workbook" has been around for ages
 
3:46 PM
@FreeMan - oh I know - still I say stick it to him
 
Shows how much I use it.
stevejobs@microsoft.com and billgates@apple.com
 
lol
 
@MathieuGuindon Oh, I always thought that was already included in 4.6.
 
larryellison@gnu.org and rms@oracle.com
 
hahahahah
 
3:49 PM
@this there were NDA sessions at summit 2018 about collab, it went public relatively recently
 
Yes I remember. There were a lot of hooplas about hwo it'd work with VBA code, etc. etc.
 
How do I add the reference?
 
(just to be clear, that is also tied up with the "AutoSave" feature, right?)
@M.Doerner I think .NET Core now ship the system assemblies as nuget packages.
 
Can I make multiple queries against one CTE?
 
though we are still FX, we are using .NET Core build so we play by Core rules.
@FreeMan CTE lives for only one statement
If you need to reference it more than one statement, you really want a temp tale
 
3:51 PM
copy/pasta, here I come... :(
 
manage nuget packages for solution -> installed -> value tuple -> [x] Rubberduck.JunkDrawer
 
Yeah, I know, create a view...
 
Generally I avoid stacking views
 
a view for the CTE, then multiple selects from that would be the proper, long-term way to do it, right?
 
so I'm more liable to copy'n'paste a CTE from one view to other. But if it's stored procedure, then temp table is really what you want.
 
3:52 PM
this is just short-term, quick'n dirty
 
If it doesn't hurt performance, sure. That's the main reason I avoid stacking views.
They don't do very good job of optimizing the stacked views.
Esp. if you involve aggregations or window functions.
 
Thx, done.
 
not sure exactly what 'stacking views' means, but I was referring to making a view out of the CTE portion, then having multiple queries against that. If that's what you understood, too, and were addressing, then you've lost me
 
CREATE VIEW x AS SELECT a, b, c FROM foo;, then CREATE VIEW y AS SELECT a, b,c FROM x; --- View y is stacked on top of view x.
if you're taking a CTE out of a view and making CTE into a view, then reference it in original view, you're stacking views.
In the simple example I posted, it will inline OK. When there are joins/aggregations/windows functions, all bets' off.
 
ah. I've just got a SQL query with a CTE. I now need multiple queries against the WITH table() as () portion for some quick reporting. I was thinking that the proper long-term solution would be to make a view out of the WITH table() as (), then do my multiple queries against that. However, this is a quick'n dirty one-time thing, so copy/pasta it is.
 
3:59 PM
@FreeMan Q&D would be to add into #temp between your last select field and the from clause - C&P is just plain lazy ;-)
 
oh. yeah. that makes sense...
:/
 
8 mins ago, by this
If you need to reference it more than one statement, you really want a temp tale
;-)
 
Always remember that a CTE basically just gets inlined into the main query.
It only helps you to organise your query easier.
 
Yes that is true. That said, it generally does a better job of inlining CTEs than it does stacked views.
But make it complex enough, then it will just flail at finding the best transformation.
Besides, I'd rather read CTEs than look at 2-4 different views and trying to piece it all together.
@MathieuGuindon I just realized a question about VBA design. Would you agree that if you have a class that has no state, does it really want to be just a module?
 
@this yeah, but I don't want to tell a tale of any sort, temp or otherwise...
@this I asked that (not in so many words) a few days ago. Never got a response from the class...
 
4:07 PM
@FreeMan Sorry missed that. My guts says that if there's no state, there's no need for instance, and instancing is a new complexity.
I'm sure you can have classes with no internal data. An example would be to receive or to fire events. But that's not what I am thinking of having a state.
 
@this in theory, yes - it's basically a static class. In practice, its members are now exposed as macros and UDFs, and if I don't want that, even with Option Private Module (which merely hides the members from view, but they can still be invoked)
 
WTF
 
that's pretty much what I thought, but... Mug's code review appears to me to have a stateless class
 
Yep, that's one
 
If the class implements an interface, it really does not want to be a module.
It is basically a strategy.
 
4:11 PM
^
 
Thinking about it - the Option Private Module prevents access from outside the project but not within. The host has the project so I guess it's "within". :\
 
I write tons of such classes.
 
In this case, there's no interfaces involved, but you're correct that if I find it needing an interface, then I'd have to convert it to a class proper
In which case such conversion is trivial.
 
At least, with Option Private Module the procedures do not appear in the selection in the macros window.
 
(converting class to module is not always trivial, though)
 
4:12 PM
@M.Doerner yeah but if you know the name you can just type it in ...and it runs
..which makes Option Private Module marginally useful IMO
 
Confirmed the same behavior in Access
So it's really only good for blocking other projects from calling the function.
 
also, isn't a module just a crippled class?
 
I don't think so.
at low level, there are no classes.
 
oh
I had it the other way around
 
@MathieuGuindon What did you expect in Excel? After all, you can invoke private methods there.
 
4:15 PM
Classes only hide the fact that we are doing stuff like someClass::someMethod(someClass* self, ...);
 
@this good point
 
VBA, being a bit older shows more of the C/C++ "root" than Java or C# does.
 
@M.Doerner seeing Application.Run("SomePrivateSub") work was a shocker for me :)
v1.0 unit testing required Public Sub exactly for that reason
 
@MathieuGuindon seems to be host-specific. Access says "no" there.
(but then again, the Application.Run implementations are messed up among hosts. Some won't like fully qualified name. Others won't like private access. That was a fun time.
 
interesting. guessing it could if it wanted to
 
4:19 PM
I think the macros window just uses Application.Run.
 
me too
 
I did find out that I can work around the limitation of Access` Application.Run not taking a fully qualified name like so:
'Call projectA.someFunction
Set Application.VBE.ActiveVBProject = Application.VBE.VBProjects(1)
Application.Run "someFunction"
'Call projectB.someFunction
Set Application.VBE.ActiveVBProject = Application.VBE.VBProjects(2)
Application.Run "someFunction"
 
lol, it's almost like macro recorder Select/Activate code :)
 
Yeah. Tacky.
 
4:42 PM
@MathieuGuindon that it is, and though that is the case, there are a LOT of shared workbooks out there
transitioning those to a new format would be... fun
i also just ready your response... make the OOP package shareable would be an interesting usage
i will need to look at the Collab feature as i'm not familiar
 
hm, I thought it was widely accepted that shared workbooks are a bloody nightmare and should be avoided like the plague
then again, links between workbooks are the same, and they're everywhere, so..
 
@MathieuGuindon by the technical community***
you have management in their 40s/50s who have been using the same tech since 1990... yes, there will be xls shared workbooks
 
I read Open season on managers
 
if daffy duck can do it...
jokes aside, people are resistant to change and if it "works" for their purpose, they see no need to change
"the data I entered isn't there" "then redo it"... continues to pull that file for a report like they've done for the past 18 years they've been at the facility
no, i'm not bitter... flashbacks to 'nam
back on the level, starting to learn typescript would be worthwhile?
in knowing minimal JS, and TS being additional terms atop of JS (correct me if that's wrong), it should be similar and able to be used on most current JS platforms, right?
 
Any JS is valid TS
and TS compiles to JS
...and my experience with TS so far has been rather delightful
 
4:57 PM
copy; thanks for the input... guess that's the next thing i try (just have to find a place to try it)
 
note, I come to TS from C#, came to C# from VBA. VBA -> TS might be a bit brutal
 
my path has been VBA -> JS/GML
 
@Cyril office.com is where it's at :)
 
that's about all i've worked on in my life
GML is basically JS with modules
 
@MathieuGuindon ♫ UnderstaaaAAAaaatement ♫
 
4:59 PM
@MathieuGuindon Honestly, I found it easier to grok JS than TS because there's less of cruft between what TS outputs vs. what JS outputs.
Really need to try it again, though - the IDE was less than stellar when I tried it out few years ago
 
0
Q: What is the Fastest Way to Find the First Formula in an Excel Range with VBA?

William HumphriesIs there any quicker method than using a for loop to find the first instance of a formula in a cell? For Each dc In .Worksheets("testWS").Range(searchRange) If dc.hasFormula() = True Then formulaRow = Split(dc.Address, "$")(2) formula = dc.formula Exit For End If...

 
@this in O365 the script task pane is still pretty much useless, until there's an HTML DOM or some way, any way to make any kind of custom UI
 
I think they'd be better off integrating with web browser's built-in deveopment tools somehow.
(if that is even possible)
 
I replied to an email JKP sent to the NDA mailing list about the script task pane, ...with a whole tutorial about, basically, getting started with TS, HTML and CSS ...in Script Lab. Got nicely slammed, but now someone at MS wants to put that tutorial up on ms docs
 
Nice! (not the slamming part, tho)
 
5:03 PM
:)
 
script lab download keeps giving me a 404 page when i click to download... time to have fun!
 
keeps 404'ing
er, after i put in my email of MS account, clicking the Sign in gives the 404
 
Back to the module-as-a-static-class vs. predeclared class --- I see a potential wrinkle in refactoring. Suppose I define 3 methods on the module. Months pass, I realize I need it to be class, so I convert it into a class and make it predeclared to make it compatible. Does it smell to keep the original 3 methods as part of the default instance's interface (e.g. pretend they are "static" even on an instance type)?
@Cyril is it connected with Office365?
 
@Cyril works fine here..
@this why would it suddenly start smelling? not seeing the problem..
 
5:07 PM
I didn't say that part: because in process of making it a class, I now add 4th method that's a factory method.
 
@this yes, work email. just had it work for me after: put in email, click "sign in", get 404, alt+left arrow to go back, ctrl+f5, click "get it now", put in email, click "sign in", then voila... if i just ctrl+f5'd following the link from Mat's post I received the 404, or didn't refresh and just followed the link
 
so I now have 3 unrelated methods and a factory method on the default interface.
 
@BigBen :+1: for your succinct answer with no extra fluff.
 
"Office 365 has been configured to prevent individual acquisition and execution of Office Store Add-ins." That effort for naught...
 
not totally unrelated but having a factory method among static-like methods feels strange? Or is it me?
 
5:09 PM
@IvenBach why thank you
 
@this I'd make an explicit interface for it then
...but yeah, it does [feel strange]
 
Sorry, "it" being what? the 3 original methods?
 
@BigBen I was gonna answer like that but couldn't jump on it immediately. Enjoy your Enterwebs points. :)
 
Or I could just leave that original module alone and make a new class module
 
5:11 PM
@IvenBach hm, that's a SO question... migrated
 
yay! More SO points for me.
 
But GTK that I wasn't too far off to think it odd to intermingle factory methods with static methods even if they might be for the same type.
 
@this what if you want to use indexing? you cant have inline selects
 
I mean, it depends
 
put in my IT ticket to see if i can get access to ScriptLab... as always, thanks mat and ben
 
5:14 PM
a class /default interface might expose a bunch of static/stateless methods and a factory method and there'd be nothing inherently wrong with that, assuming there's instance state to be held on whatever the factory method is outputting
..and that's where the explicit interface comes in, to keep the instance vs stateless stuff cleanly separated
 
Oh, that's a given.
I'm focusing only on the managing the static/stateless methods on the now-a-class type
 
@this how "advanced" would you consider joins to be for DB use/theory? Note the air quotes.
 
@KySoto Not sure I follow.
@IvenBach A diehard noob.
 
@IvenBach basic, foundational stuff :)
 
Side note... my ticket to IT:

In working to accommodate the changes to using MSTeams, which utilizes Office-online, I was attempting to download the ScriptLab addin from Microsoft Garage and received a message: "Office 365 has been configured to prevent individual acquisition and execution of Office Store Add-ins." when attempting to open the addin.

Would it be possible to get permission to access ScriptLab to determine if it’s feasible to move Collab/shared-workbooks to Office-online, using Typescript rather than VBA scripted activities? Testing early would be ideal compared to pounding
 
5:16 PM
:ping ping ping ping: haha.
 
@MathieuGuindon woah woah, that's too much! I'm not even sure I know basics.
 
Because my explicit intent is to account for moving the 59 shared/collaborative workbooks...
 
@Cyril nice!
 
postscript, F**K TEAMS
 
that bad eh?
 
5:19 PM
we have 1 site in our org that is 100% teams atm (they're the dummy site)... they can't message or call people without starting convos on Teams, and only about 20% of those people have corporate cell phones, so they're radio silent on just about everything
 
that sounds retarded
well let me assure you that Webex Teams is not great either
 
TBH I've yet to find teleconferencing software that's actually sane.
 
we've had lots of talks about issues with teams in its current Development stage for production usage... but won't digress at this point, as i don't want to completely derail Iven's conversation about exposing himself to the factory
waiting to see how that turns out as i'm learning as they describe it
 
In general, exposing oneself is not recommended. Especially if the factory is staffed by women. More so if there are minors there.
 
@BigBen the person who is leading the charge for training other sites how his (the test facility) utilizes teams keeps calling it "a child of sharepoint"... that should really throw red flags to the populous
 
5:22 PM
umm yess with that description
 
@IvenBach maybe you should try asking the question?
 
@this "..and that's where the explicit interface comes in, to keep the instance vs stateless stuff cleanly separated" - Mat's Mug, 2020
 
lol
@this FYI post is scheduled for tomorrow 10 AM
 
"I love it when a plan comes together" very surprised that we've got enough random lines that can fit these conversations already
 
Sweet! I hope it helps those who want to get started w/ classes.
 
5:24 PM
@this You may be joking with mug but that's how I feel.
 
coming up with actual examples will be an interesting project, though. One can only do so much with abstract theory.
 
thanks again for doing this, and feel free to put up a draft anytime
 
:+1:
@IvenBach Seriously. There's still more for me to learn. Can't know 'em all. What is your question? x2
 
@this <-- chiming in at that's still where i'm at. i've spent quite a bit of time just taking with you all about it, and Iven provided some wonderful examples that helped further my understanding
 
In fact the talks we had was the inspiration for the article.
 
5:28 PM
then i'm glad my ignorance has been benefitial!
that reminds me... @hosch250 any good suggestions for TypeScript reading?
 
No question. Just in reviewing an online course suggested for me joins were stated as "advanced". At that point I almost discounted the idea of taking it. I'd rather repeat foundational topics ensuring I understand them.
 
haven't seen him recently and apparently @hosch goes no where... hm
 
@IvenBach if they think joins are "advanced", then they're really setting the bar very low
Joins is very foundational.
 
I've used them but only from drag-n-drop. I know I'd understand content now though.
 
TBH, I didn't really grok joins until I worked on MySQL's CLI.
 
5:35 PM
@this tbf, if the "basic" user is still using "table1" references, etc. with a single report/view, and "intermediate" just has better naming and having multiple reports/views, then "advanced" would be join/union to create complex reports/views
 
The drag'n'drop GUI makes it easy and fast to setup joins and encourage one to just randomly mash buttons until it works without really thinking through the effect a particular join would have.
 
^ That was me circa 2008-2010.
 
so even if join/union are foundational information, application of them may be advanced
 
Typing it out at the CLI made me think it through and it finally clicked. But that's just how it happened. YMMV.
@Cyril I can't see one not learning about joins after a week worth of class on basic query TBH.
Queries don't really become interesting until you start joining.
 
> User was deleted on 2/12/2020 7:58:04 PM
 
5:38 PM
:\ I guess he really was fed up w/ SO. He did talked about leaving SO for a while.
 
@this i'm stating that based on personal experience... i read abuot the items, but the beginner work didn't utilize those as they were deemed "advanced" activities
had two sql books that outlined as such
 
WTF
I find that very surprising.
My MySQL book addressed joins pretty early, I think.
 
basically... chapters 1-3: bombard you with info about possibilities... chapter 4: teach you basic syntax... chapter 5: start incorporating single uses of terms... chapter 6-10: "advanced" use of combining terms/functions
4 is beginner, 5 is intermediate, 6-10 advanced. technically a single join falls into intermediate in the scenario provided
 
Just checked. My old MySQL 5.0 book has the joins in chapter 12, out of total of 42 chapters.
The sequence does sound right, though.
I don't have an Access basic book, but I'm reasonably sure it's broached early as possible.
 
i think that ties directly back to your comment about a "low bar" for advanced, from typically book-structure, despite those being the simple things you just "do" now
i think i had a sql 2 book and the other was "learn sql overnight"
i only still have the one (gave it to my wife to help her learn about databases)
 
5:43 PM
@Cyril ugh. it's like the VBA books that shove classes in some appendix section dubbed "DANGER advanced stuff do not look DANGER"
how advanced-Excel is vlookup considered?
 
@MathieuGuindon i mean... yes... you saying it that way also makes me kind of question how i label "beginner, intermediate, & advanced" users, though context does always help
 
In my other SQL books, we actually spend more time on database design than the queries.
@MathieuGuindon black arcane wizardry, I guess.
That said, I will admit that if I do use VLOOKUP, I have to read the references every time I use it because I do not use that a lot.
In fact, I'm more liable to just screaming to dump it into a table so I can query it with SQL, like the good Lord intended.
#HaveHammerSeeNails
 
@MathieuGuindon assuming you were rhetorical, but as i said you made me question how i label... i consider that intermediate, because the person is using functions, but may or not understand why and the limitations... if they're using index/match i consider that pretty advanced, since people using that tend to understand "why" they're doing so.
 
I actually never use VLOOKUP because its syntax is just confusing and it is a bit restricted.
 
beginner can open a file, use single-argument functions, and can navigate the ribbons
 
5:49 PM
See, if i saw someone using index/match then I know that same one is well-read in Excel, even though they might not know the ins or outs.
 
okay, my point was a bit disingenuous - SUM and VLOOKUP might both be functions, but the concepts behind them are wildly different... it's easier to figure we're looking at a bunch of cells and we're going to add them up, vs conceptualizing what a "lookup" might be
 
i hear you
 
@Cyril I'd put typical lookup usage of INDEX+MATCH under intermediate, and then under advanced I'd discuss how INDEX can yield an array, and what that means when you use it in, say, a named range expression
 
good point
i know i have tiers of "advanced", as well... i use more of a logarithmic scale
 
Is there a specific reason we do not reference the ValueTuple NuGet from all projects?
 
5:53 PM
1) great in excel, no vba; 2) great in excel, some vba; 3) great in excel, great in vba (very general representation)
 
The other factor to remember is that lot of advanced topics requires broad background knowledge. That's why sometime they dub the curve as a hockey stick.
 
@M.Doerner not that I can think of
 
If we use it everywhere, we can try to put it into the main project file.
 
@M.Doerner I'm just wondering -- are you seeing an issue similar to the one reported in the WPF thread here? github.com/dotnet/wpf/issues/2274#issuecomment-587928139
Agreed that if it's used in more than 2 projects, it should be a reference in the base project file.
 
take "dependent dropdowns"; I have one (in-cell data validation list) listing sales reps, the cell is named SalesRepCode; then next to that there's a CustomerNumber cell with a data validation list that references this named range:
=INDEX(tblCustomers[CustomerCode],MATCH(SalesRepCode,tblCustomers[SalesRep],0),1):INDEX(tblCustomers[CustomerCode],MATCH(SalesRepCode,tblCustomers[SalesRep],1),1)
 
5:56 PM
It is currently used in eight projects.
 
that kind of use of INDEX isn't intermediate IMO
 
Agreed. I think that is an example of advanced use, especially because you're using other concepts like the table reference with the INDEX.
That said, I want to say that this really should be a VBA function. It gives me a headache just to look at it. :-p (I'm a bit sensitive to nested functions)
 
ha no, the entire point is to avoid having any code for that
the workbook isn't even macro-enabled
 
Yeah, true.
Still.....
 
but I severely digressed... what I meant to get at, was that the concept of a lookup function is pretty much the same as that of, say, an inner join
 
00:00 - 18:0018:00 - 00:00

« first day (2091 days earlier)      last day (1089 days later) »