« first day (1931 days earlier)      last day (83 days later) » 
00:00 - 20:0020:00 - 00:00

12:00 AM
RELOAD!
[rubberduck-vba/Rubberduck] 7 commits. 1 opened issue. 1 closed issue. 19 issue comments. 274 additions. 29 deletions.
[Minesweeper] Games Played: 80, Bombs Used: 57, Moves Performed: 11813, New Users: 5
 
0
Q: ADODB Wrapper Class (Revisited)

rickmanalexanderI recently posted this question on my implementation of an ADODB Wrapper Class. I realized in my own review that I was missing some very important things, so much so, that I decided it would be worth it to re-write the entire class. Saying that I have done quite a bit of restructuring so I am goi...

 
 
1 hour later…
1:03 AM
@ZevSpitz well done. Your article on expression tree for VB and C# is on Windows newsletter I received.
 
 
2 hours later…
3:14 AM
> Should the bottom panel font size be configurable then?
 
3:45 AM
> Should the bottom panel font size be configurable then?
 
@Duga the CE's font size setting should really be in the general settings, and affect all RD toolwindows
 
4:47 AM
@PeterMTaylor Thanks. One of the goals of the article was to have been a showcase for this -- github.com/zspitz/ExpressionToString . Not sure it was really successful.
 
4:58 AM
@ZevSpitz give yourself time...early days of adoption towards new ideas
@ZevSpitz oh 44 issues on that project already...
 
5:12 AM
@PeterMTaylor Yes, and they're all mine, even though the project has been up for about 10 months. Feels like I'm talking to the ether sometimes.
 
 
7 hours later…
12:26 PM
@M.Doerner @IvenBach It knows when you are sleeping
 
Please send help:
That's 16 books in my wishlist, 1 physical one I own and haven't yet started, and one I just "bought" today for $0 (a RavenDB book with a finished manuscript that they didn't bring to publication).
 
12:42 PM
"Help" as in buy me a book (or donate to the cause) or "Help" as in "I can't stop myself and I need an intervention"?
 
More the second.
Although, I don't really need intervention, since I didn't get around to putting them in my cart yet :)
Actually, come to think of it, I think I have another one or two saved on my personal computer that I can add to the wishlist.
 
LOL! At least this is one of the less self-destructive addictions. About the only issue you might have is if a bookshelf collapses under all that weight and lands on you.
And, if it does, you can just read your way out.
 
4 more.
So, IIRC, I have 9 books already, and 20 in my wishlist :thinking:
@FreeMan Yeah, I need to finish the jewelry box I'm working on.
So I can make myself a bookcase to hold all my books.
I really should just go digital, but I hate reading on computers.
 
oh... I was really confused by how the first statement was related until the 2nd one showed up.
 
I spend 8+ hours/work day on the computer already.
 
12:51 PM
@Hosch250 BTW, I'm no expert, but I think that is the first sign that you really do!
"No, it's OK, I can stop any time I want!"
:)
 
In XAML, how can I use a static resource as one of multiple child elements of a panel?
In this particular case, I want a border as a static resource, and I want multiple instances of the border in a grid.
 
@FreeMan Anyone can dream... :P
Now, if I'd gone and ordered them without a plan to actually read them before they became irrelevant, that would be another story.
@ZevSpitz You should be able to define it in the Panel.Resources section.
Then reference it by each item you want to apply the style to.
 
@Hosch250 Not following. I can't do this:
<Grid>
    <Grid.Resources>
        <Border x:Key="MyBorder" />
    </Grid.Resources>
    {StaticResource MyBorder}
    {StaticResource MyBorder}
</Grid>
Does XAML support a StaticResource element?
 
No, what you would do is create a Style with TargetType="Border" or something (it's been over a year since I used WPF; this won't be word-perfect).
Then what you'd do is: <Border Style="{StaticResource MyStyleName}" />
Alternatively, you could turn the element into a new control and use it repeatedly.
Something like <MyNamespace:MyBorder />
 
It turns out XAML does support a StaticResource element, but I can't use the same Border object in two different places.
Specified Visual is already a child of another Visual or the root of a CompositionTarget.
 
1:04 PM
Yep.
You can only use a specific element in one place. If you want to duplicate (the looks of) it, you either need a custom control or a style.
 
1:30 PM
posted on September 19, 2019 by Rubberduck VBA

The big buzzy words are just a name given to what’s happening when we identify a procedure’s dependencies and decide to inject them. Like any procedure that needs to invoke Workbook.Worksheets.Add must depend on a given specific Workbook object. If the workbook we mean to work with is the document that’s hosting our VBA project,… Continue reading Dependency Injection in&

 
2:04 PM
When you get an email that starts out:
> Hi, we've got a new video webcast and again, we're giving away ten (10) $100 Amazon gift cards during the event...and we'd love to have you join.The event is Sept 24 at 1pm ET, will last under 1 hour (promise) and is titled: "Your Ultimate Guide to Phishing Mitigation"
It sure feels like a phishing attempt
It seems, though that "Roger Grimes, KnowBe4’s Data-Driven Defense Evangelist" is a real guy working for a real company that actually attempts to edjumacate people on phishing and social engineering attempts.
Who knew...
 
0
Q: Flexible Binary Search

TinManThis search consists of two functions QuickMatch() which searches for the value and getQuickRowValue() which returns the value of a given row. Both functions have a SearchBy As SearchByIndex parameter which is used to determine which values will be compared. For instance: getQuickRowValue() can...

 
@BloggingDuck reached 100K all-time views
 
I've got to admit... looking at the code posted in that image, I'm a bit flummoxed by If 2 = 1 Then... Why not just remove the dead, unreachable code? — FreeMan 8 secs ago
@FreeMan though I've now received 2 emails for bizzarro stuff from some company I've never signed up with for stuff I'm not interested in...
 
@FreeMan I knows I get less than I’d like :p
 
2:23 PM
> You've earned the tag badge
next up:
 
@IvenBach v
2 days ago, by IvenBach
@MathieuGuindon I can sleep after I’m ded. Got no time for it right now.
you'll be fine
 
@FreeMan @IvenBach You might enjoy the Warren Zevon song "I'll Sleep when I'm Dead".
@MathieuGuindon On that note, you might like "Hit Somebody" (a song about a Canadian hockey player).
@FreeMan Giving away stuff is something some presenters do.
 
@Hosch250 that, or "Wake Me Up When September Ends" :)
 
A couple of presenters did that at the conference I went to.
One for sitting in the front row, and one for answering questions.
 
@Hosch250 I don't doubt it. It's also something promoters of time-share vacation homes do in order to get you into their strong-arm presentations. I'm not claiming that this email was a phishing attempt, but it certainly smelled phishy when I saw the pop-up notification, and as I started reading it. It was only when searching for the speaker's name that it gained legitimacy. Poorly designed email, and more spam than phish, since I didn't sign up for their messages.
 
2:35 PM
Well, actually, it could be phishing.
Maybe they want you to click an illegitimate link in the email and send your information to them.
 
could be. It would be a classic - phishing by way of promoting a phony anti-phishing seminar!
 
Kind of like how they use bank mock-ups.
 
2:50 PM
> The above comment to remove the corresponding keys from other .resx files is in the form of a question, so I'm hesitating to do so - though it sounds like a good idea. The only other alternative I can think of would be to create an issue for each language .resx - then, at least, the updates would be tracked. Preference?

Regarding xmldoc examples. I've not done one before, but using the existing inspection as an example, it looks fairly straight forward. It looks to me as though the resu
> > The above comment to remove the corresponding keys from other .resx files is in the form of a question, so I'm hesitating to do so - though it sounds like a good idea.

Please go ahead with deleting the keys - it makes it much easier to spot entries that need to be edited /re-translated when going over what resource keys are missing a translation. If the keys remain, it's too easy to miss the change: translators usually only need to look at missing resource keys, as opposed to reviewing ev
> #5011 implemented this for inspections. Quick-fixes, refactorings, and other features could probably also use similar xml-doc to generate content for the website, but let's have separate issues for that.
 
3:09 PM
:/
I have an IWebDownloader and an IApiDownloader. I need an IDownloader that can be fulfilled by either...
le sigh...
 
@FreeMan looks like a job for an adapter pattern
i.e. you have a 3-pin DC power supply, a 2-pin DC power supply, and you need to plug them both into a USB port: you make an adapter that takes both 3-pin and 2-pin DC power supplies, and outputs to a USB port :)
 
Sounds great. Will have to build in some more tech debt cause this one is has to be done ASAP and I don't have time to learn something new right now. :(
why pay today when you can pay with interest tomorrow?
 
eh, an adapter is just a class that implements the two interfaces it needs to get to talk. #bigwords
 
and I still have to get their stupid API to give me data back for the one call I need...
I know, not the right way, but...
Make it work, make it right, make it fast
or something like that...
 
TIL VBA.Interaction.Choose is a thing =) — Mathieu Guindon 12 secs ago
 
3:25 PM
@Hosch250 and @MathieuGuindon Comfortably Numb is my favorite song for a reason.
 
that guitar solo is just the best there ever was
 
Many of their songs have memorable guitar parts.
 
Shine On You Crazy Diamond is equally amazing
(and so many others, yeah)
 
3:43 PM
Several Small Furry Animals Grooving in a Cave with a Pick
#bestSongTitleEvar
very bizarre, @MathieuGuindon. I've been using your logger (TYVM!) for quite some time. Every now and then, Access refuses to compile and complains that DebugLevel is not a valid name.
Usually a compact & repair, and/or closing Access or Excel will fix it.
 
smells like corruption
 
Oddly, it's always one of the LogLevel enums that it doesn't like.
weird...
I blame you Microsoft
a C&R did it this time...
just... weird...
 
Access seems a rather flakey VBA host. The number of times I hear y'all doing C&R on broken Access databases...
 
3:58 PM
yup.
even better, this "db" has all of one local table for some initialization config stuff (and another one for a test that 'the other "programmer"' has added) - everything else is linked to SQL server
 
Did a C&R on a DB once. File size went from >1GB to ~3MB.
 
O_o
I'm no expert, but should prolly be doing that a bit more frequently...
 
@BloggingDuck nice article :)
 
Should there be an inspection for this:
  Dim ClinicFileName As String
  ClinicFileName = CLng(SQLQuerySingleString(sqlString))
 
@FreeMan It was a DB I was learning Access/Normalization on. Had no idea about C&R until after the file became bloated worse than Aunt Gertrude after Thanksgiving dinner.
 
4:05 PM
VBA will conveniently recast my Long back into String, but that's prolly not what I'm after if I'm explicitly casting...
@IvenBach there's a mental image I didn't need today...
 
Be glad #AuntGertrude isn't real. Bless her soul.
 
@Vogel612 thanks! it was supposed to go live ~2AM, but my internet decided to go on strike and "something bad has happened" when I hit [publish] last night ...luckily everything was still there this morning!
 
@IvenBach LOL! "Bless her soul" is so Southern
I've only received 2 responses to my API call attempts "200 OK" and "500 Internal Server Error". Are these part of a standard collection of errors that I'd get, or are they custom to the API I'm calling?
 
HTTP status codes
very much standardized.
 
Is 200 the only "all is good and you're getting the data you requested" return code?
and all others are "ummm... something went wrong"?
 
4:17 PM
no, there's a handful of others
201, 202 and 203 also exist
202 usually does not return any data, 201 is just "keep alive"
there's also 301 and 302, which are redirects
error codes start at 400
there's a list on wikipedia
and the http cats at http.cat
4
 
thanks @Vogel612. ATM I'll simply log the return code and monitor by hand. If I have a null string, I'll skip the attempt to load that to the server...
goes deeper into tech debt
at it again:
Closes Access, starts over
.accdb file is only 6504KB...
 
@FreeMan try qualifying the enum member with the enum type, e.g. LogLevel.DebugLevel
 
will do next time it barfs
 
4:56 PM
stupid VBE - doesn't recognize the difference between Sub FooBar and Dim fooBar...
hard to implement PascalCase procedures and camelCase variables
 
5:07 PM
#NamingIsHard
use different names!
Sub StartsWithSomeVerb() and Dim someName shouldn't collide often though
harder with properties
 
^ yeah, property issue mainly
wasn't clearly stated frustration, mah bad
TIL: CBool("True") -> TRUE
Just saw this in the API docs (well, OK, resaw it - I'm sure I saw it previously, but that it didn't register then):
<?xml version="1.0" encoding="utf-8" ?>
<APResponse>
	<resource>locations</resource>
	<action>getlocations</action>
	<request>GetAllLocations</request>
	<result>success</result>
	<errors>
		<error>If there were any errors they would show here.</error>
	</errors>
I guess that means I could get a "200 OK" response, but that there'd be something in the <errors> tag?
 
awesome, so you get http 200 despite errors
 
but, I know for certain that I get a 500, too.
(the current bane of my existence)
 
@FreeMan it's idiotic, but wouldn't be below what REST API designers can do
 
5:24 PM
yeah... I was getting that earlier when I didn't know to Base64Encode the ID:PWD in basic:Auth - I had a 200 OK, but no data back at all. not even a message in <error>
 
@MathieuGuindon interesting...
 
That's pretty cool ^
 
@Hosch250 is this an SSO type thing, or....?
 
No, Windows' biometrics system.
 
ah.
 
5:58 PM
aka what the defunct Kinect ended up evolving into
(right?)
 
interesting - I hadn't thought about that.
wow! What a great way to gather data!!
 
Not sure.
 
oh, apparently Kinect and WinHello had separate paths
 
Windows Hello is basically a biometrics auth system for Windows. IIRC, it started it 8 or 8.1?
 
5:59 PM
Fingerprint or facial recognition.
 
^^ sorry for the obnoxious ads-infested link
 
@MathieuGuindon Adblock FTW!
 
@Duga I'll try to make a round of issue-review over the weekend. I'm sure a bunch of dupe issues are still open, and another bunch are stale or not relevant anymore
although, I have to say we're quite good with issue management, despite the high count
 
6:49 PM
-1
Q: Copy Non-continuous Cell Values

seadoggie01Backstory: I'm creating department level workbooks that contains director-level information, so I can't use a single workbook (as easy as it would make this). I need to split (and combine) 4 workbooks into 140 or more. I manage to do this relatively quickly (~30 minutes), but I was hoping to spee...

 
> :man_facepalming: was about to suggest changing all `hasResults` to `hasResult`, then noticed its the plural in other inspections. This is a bloody mess and it's all on me.

[Website is indeed looking for `hasResult` (singular)[https://github.com/rubberduck-vba/RubberduckWeb/blob/eb207eec1436527d61715491c812000957197f4c/RubberduckWeb/RubberduckWeb/Models/InspectionInfo.cs#L48] - feel free to make another commit to make it `hasResult`, if not then it'll be fixed in a PR that covers/reviewe al
> :man_facepalming: was about to suggest changing all `hasResults` to `hasResult`, then noticed the pluralized attribute is used in other inspections. This is a bloody mess and it's all on me.

[Website is indeed looking for `hasResult` (singular)[https://github.com/rubberduck-vba/RubberduckWeb/blob/eb207eec1436527d61715491c812000957197f4c/RubberduckWeb/RubberduckWeb/Models/InspectionInfo.cs#L48] - feel free to make another commit to make it `hasResult`, if not then it'll be fixed in a PR that
> :man_facepalming: was about to suggest changing all `hasResults` to `hasResult`, then noticed the pluralized attribute is used in other inspections. This is a bloody mess and it's all on me.

[Website is indeed looking for `hasResult` (singular)](https://github.com/rubberduck-vba/RubberduckWeb/blob/eb207eec1436527d61715491c812000957197f4c/RubberduckWeb/RubberduckWeb/Models/InspectionInfo.cs#L48) - feel free to make another commit to make it `hasResult`, if not then it'll be fixed in a PR tha
[rubberduck-vba/Rubberduck] build for commit 5c7ea3a2 on unknown branch: AppVeyor build succeeded
 
@BZngr thanks
(and sorry for the sheer mess ...we really need that xml-doc analyzer)
 
No worries!
does the value of 'hasResult' matter? Or, does it just have to 'exist'?
 
7:05 PM
should be either true or false (in quotes)
right now if the attribute isn't present, website assumes the 1st example has results and the 2nd doesn't
            var examples = node.Elements("example")
                .GroupBy(e => e.Attribute("hasResult")?.Value ?? "implicit")
                .Select(g => new {HasExample = g.Key, Examples = g.Select(e => formatter.Format(e.Value))})
                .ToDictionary(e => e.HasExample, e => e.Examples.ToArray());

            if (examples.TryGetValue("implicit", out var implicitExamples))
            {
                resultExamples.Add(implicitExamples[0]);
                noResultExamples.AddRange(implicitExamples.Skip(1));
actually, it assumes all but the first example yield no result, which is questionable
 
What is a 'result' in the context of the example(s)?
 
        @if (Model.ResultExamples.Any())
        {
        <dt>The following code example(s) would trigger this inspection:</dt>
        <dd>
        @foreach (var example in Model.ResultExamples)
        {
        <p>
            <div class="vbe-mock-debugger">
                <div class="code-area">
                    <div class="code">
                        <div class="block">@Html.Raw(example)</div>
                    </div>
                </div>
            </div>
        </p>
        }
@BZngr just metadata that tells the website whether to put that example under "this example code would trigger the inspection" or "would not trigger this inspection"
        @if (Model.NoResultExamples.Any())
        {
        <dt>The following code example(s) would <strong>not</strong> trigger this inspection:</dt>
        <dd>
        @foreach (var example in Model.NoResultExamples)
        {
        <p>
            <div class="vbe-mock-debugger">
                <div class="code-area">
                    <div class="code">
                        <div class="block">@Html.Raw(example)</div>
                    </div>
                </div>
            </div>
 
Oh - I think I see. So, I have one added example that does not cause an inspection flag. So, it should have the attribute set to "false".
 
another commit coming soon...
 
7:12 PM
:+1:
 
[rubberduck-vba/Rubberduck] build for commit 4766ee86 on unknown branch: AppVeyor build succeeded
 
that said there should probably be some markup for identifying separate code files within an example; currently we identify separate code files with comments
needs some tinkering though, since that would break the assumption that example tags only contain a CDATA tag
 
Ok - this should be it. Gotta go.
 
thanks again!
 
7:29 PM
[rubberduck-vba/Rubberduck] build for commit 3e0520be on unknown branch: AppVeyor build succeeded
 
@MathieuGuindon Is it really hasResult and not hasResults? Then we have to fix some inspections.
 
[rubberduck-vba/Rubberduck] BZngr pushed commit 4b8087b6 to next: Incorporate 4882 input
[rubberduck-vba/Rubberduck] BZngr pushed commit eed336af to next: Deleted keys to modified resource strings
[rubberduck-vba/Rubberduck] BZngr pushed commit 5917a9fa to next: Added xml-doc content
 
@M.Doerner yeah, we do
 
[rubberduck-vba/Rubberduck] BZngr pushed commit 5c7ea3a2 to next: Wording tweak
[rubberduck-vba/Rubberduck] BZngr pushed commit 4766ee86 to next: hasResults to hasResult
[rubberduck-vba/Rubberduck] BZngr pushed commit 3e0520be to next: Enum example does not cause the inspection to flag
 
I'll take care of it
 
7:34 PM
Merge pull request #5153 from BZngr/4882_UCI_MsgRewording

Improve Unreachable Case Inspection Messages
 
(unless someone else gets to it before I do... 3:35pm here, still at work for a while)
 
Ok, then I will just stop copying the wrong version.
 
I'll see if I can build the xmldoc analyzer in the same PR that sweep-fixes all inspections' xmldocs
 
My API documentation says this:
> Return the appointments that occur at the specified locations; must always be an array, even if only specifying a single id
is [106] the proper way to specify the array of a single element in the request header?
:/ I'm guessing not since I got another "500" return code with that...
 
eh, I'm finding out that Shopify's InventoryItems API requires inventory item IDs in the querystring. IOW I'm going to have to pull each item one by one, as a "child request" of each ProductVariant item. #Joy
REST is so much fun, isn't it!
 
7:45 PM
sounds very restful
 
@FreeMan try [{106}]
 
@this no wonder all the cool kids are having a blast with GraphQL...
 
@MathieuGuindon just as a reminder that you probably already knew but it would go into RubberduckMeta.sln. Note also that you have to restart VS or kill msbuild.exe instances if you have built Rubberduck.sln, then switch to RubberduckMeta.sln in same session
 
7:49 PM
@this that does ring a bell, but I would have never remembered - thanks!
 
Wait.
What data type are they using?
 
who? what?
 
If it's JSON, you need [#]. If it's XML, you need <locationId>#</locationId>
@FreeMan's thing.
Actually, I think I botched the XML thing.
Basically, you need to know how the server is going to try to deserialize the call.
I think you'd need a bunch of child elements in the locationId thing for XML. XML gets messy fast.
 
@Hosch250 that is a egregious leak of abstraction
 
@this Oh, not really.
Most REST APIs say what types they expect.
 
7:51 PM
@Hosch250 I shared all the info I've got on how to use the API
 
I mean, at the end of the day, you can't pass YAML to an XML serializer and just expect it to work...
 
@MathieuGuindon thanks, trying now. If I did want 2 location ID's would that be [{106},{107}] or [{106,107}] or do I just as if it will blend?
no dice on [{106}] either.
 
I'm tempted to say it's probably not JSON, because JS has no idea of an Integer.
 
but it may not be the parameter format, who the heck knows.
 
Also, [{#}] isn't a valid JS value.
 
7:53 PM
no, but when your API is insane, returning 200s for errors and docs don’t say what array type.....
 
ok, gettin' on the phone to rattle a cage and see why I haven't had anything other than the auto-response to my support ticket from yesterday. They've had 8 biz hours to at least response wiht a "that's weird, we're looking into it"
 
{
    "cars": {
        "Nissan": [
            {"model":"Sentra", "doors":4},
            {"model":"Maxima", "doors":4},
            {"model":"Skyline", "doors":2}
        ],
        "Ford": [
            {"model":"Taurus", "doors":4},
            {"model":"Escort", "doors":4}
        ]
    }
}
maybe "ids":{[106]}?
 
@MathieuGuindon Yep, you need the "name" part of it if you are going to use the {} syntax.
 
No, it would be {locationIds:[#]}
(The quotes around the name are optional.)
 
7:59 PM
either way, still less trouble than scraping the website
Don't scrape their website, use their API instead. Your life will be so, so much simpler. — Mathieu Guindon 2 mins ago
 
00:00 - 20:0020:00 - 00:00

« first day (1931 days earlier)      last day (83 days later) »