« first day (1929 days earlier)      last day (57 days later) » 

12:00 AM
RELOAD!
[rubberduck-vba/Rubberduck] 1 opened issue. 7 issue comments.
[Minesweeper] Games Played: 99, Bombs Used: 70, Moves Performed: 12828, New Users: 11
 
1:00 AM
a bit of bummer that it needs to tweak the DLL directly, tho.
 
1:49 AM
Feb 19 '16 at 18:38, by Mitropoulos Mitropoulos
Thanks so much for adding me! I saw that I would need 20 points on Stack Exchange to get into this chat, so I got started on a repo to add something to the excel community that is currently lacking: https://github.com/dimitrimitropulos/VBECustomColors
:)
yeah, not something we would want RD to do
but theming a custom editor pane though... ;-)
hey @IvenBach
 
Don’t mind me. I’m mostly lurking.
Grad school is eating all my free time. Can barely stay afloat/awake as it days go by.
 
eh, get some rest when you can
 
Got my phone interview tomorrow and need to read about SSMS, stored procedures, and all the other questions they’ll ask.
@MathieuGuindon I can sleep after I’m ded. Got no time for it right now.
3
 
On the bright side I took out 3 ‘Read with more experience’ stickies out of my C# book now I understand the material. #FeelsGood
 
1:57 AM
:+1:
 
Never mind me, I'm just 2 years too late. :D
 
@IvenBach rooting for ya!
 
Can you sleep for me too? :p that’d be the best.
 
1:58 AM
@IvenBach After you're deeded? Sounds like an ambitious goal but doable, I think. I think your duckling might not mind.
lol
 
Ded = dead in Ivenism-Speak.
 
That, I suspect your duckling might have an inkling of an objection.
May be teensy weensy put out by that.
Perhaps even a bit cross.
 
Adversity brings out the best in everyone</50’s-dad>
She definitely misses spending time with dad. She knows why I’m studying though.
Fml. Class was canceled and didn’t check email. :grumble: coulda saved 2 hours.
 
hey hey, hey, remember the boy scouts' motto!
besides doesn't that mean free time for the duckling, too? :) (don't try to read a book to her. You might fall asleep before she does, though....)
 
 
1 hour later…
3:12 AM
How’s you know? Got a spy cam in my place?
@this ‘On my honor I will do my best to help the girl scouts get undressed’. At least that’s the one #DearOldDad taught me.
> Leave it better than you found it.
^ that’s certainly the motto my friend followed in his divorce...
 
@IvenBach LOL that's hilarious
@IvenBach not so when it's real, though... :(
 
3:27 AM
Funny indeed. My dad taught me so much he shouldn’t have.
 
4:09 AM
Where am I on a C# scale of 1 = complete noob to 10 = highly proficient? I'd place myself at a 4 or 5.
 
4:28 AM
‘I don’t want you to get a new job. I like you working for Rubberduck’ says my duckling.
6
 
 
7 hours later…
11:09 AM
Anyone home?
 
12:02 PM
@IvenBach I presume that's because you're working from home and your duckling gets to see you and spend time with you :)
@QHarr for some values of anyone?
 
12:26 PM
@Vogel612 Yah
I have written some error handling a small sub along lines of:
Private Sub Foo()
    'some code
    On Error GoTo errhand

    wb.Connections(queryName).Refresh

    Main.ReturnedStartDate

    Main.ResizeExtract

    Exit Sub

errhand:
    'other code

    Resume
End Sub
Now clearly the Resume means I can end up in a loop
Usually I would use Resume Next and check error codes in errHand
I want, however, to go back to first line where error occurred (or I suppose errHand could perform that step corrected)
I'm wondering what is an elegant way to reframe to avoid potential infinite loop?
Hope that makes sense. Not my best explanation.
 
@QHarr I've done that with a retryCounter. Set it to 0 when the Sub starts, increment in the ErrorHandler:, then test it - If retryCounter < maxRetries then....
May not be the best way, but it's certainly functional
that's then Resume Retry Else Resume BailOut
 
12:50 PM
@MathieuGuindon Look at jQuery's $.ajax.
How'd your phone interview go, @IvenBach?
 
isn't his interview today? CA time? #IvenAintUpYet
 
Ohh, right.
I thought it was Wednesday...
 
Gets clue-bat, adjusts @Hosch250's mental calendar
 
1:17 PM
Thanks all
 
1:29 PM
@Freeflow thanks! I remember seeing that go by, but didn't actually read it. I've now read the first few paragraphs and the urge to rewrite all teh codez is strong!!!
But first...
The API I'm hitting is giving me 201908291250 for a date/time. There don't appear to be any formats for TSQLs CONVERT that will chew that up and spit out something legal. Is there a suggested method short of a function that will parse the text by hand?
 
It's just YYYYMMDDMMSS
You need to make it YYYY/MM/DD MM:SS
I'd just split it into components at various indexes and re-build it.
Like:
Dim year As String: year = input.Substring(0, 4)
Or whatever VBA's substring thing is.
 
I get that, but the Convert docs don't have an option that'll take it as is.
you're saying that I'll need a function to parse it into a consumable format
 
That's what I just said. I'd write a manual converter to make it a "normal" date.
 
le sigh... There's nothing remotely "normal" about the results from this API, including the fact that Postman can hit one of their functions w/o any issue, but my code causes it to barf and give back a status=500 (even though the exact same function, with different parameters gets status=200 for other calls)
 
Check the headers.
Postman might be automatically adding some header value.
 
1:43 PM
I'm sure it is - it was Base64 encoding the ID/Pwd without telling me about it (and I didn't realize that was necessary...)
going to get this call working and loading, then I'll get back to the problem child.
 
how hypocritical. 20190916 is A-OK, 20190916 08:42:28 is A-OK. But 2019-09-16 084228 isn't?
Indeed, it doesn't like 20190917T114506Z, which is a valid 8601 format.
but it's A-OK with 2019-09-17T11:45:06Z
Remember, this, it's Microsoft we're talking of
 
#BecauseMicrosoft #BlameMicrosoft
^the cry of programmers the world over...
 
#FunFact MySQL has no problem with that format w/o separators
 
declare @inputDate as nvarchar(12) = '201908291250'
declare @year as nvarchar(4) = substring(@inputDate, 1, 4)
declare @month as nvarchar(2) = substring(@inputDate, 5, 2)
declare @day as nvarchar(2) = substring(@inputDate, 7, 2)
Declare @hours as nvarchar(2) = substring(@inputDate, 9, 2)
declare @minutes as nvarchar(2) = substring(@inputDate, 11, 2)

select convert(datetime, @year + '-' + @month + '-' + @day + ' ' + @hours + ':' + @minutes, 20)
what a PITA!
tests OK, now makes a function outta it
 
why not use DATETIMEFROMPARTS?
 
1:54 PM
that's why I CR here...
 
you probably need to assert the length, too
can't have you splitting on a string too short!
hopes they are not moronic enough to not include the leading zeroes
 
well, I do get leading 0 on months & days...
rummages for an appointment at 8am to see...
201909030825 <-- Whew!!
 
that'd have massively sucked if they didn't
 
If Len(@inputDate) < 12 Then Return '1901-01-01 00:00'
 
because the no-separator format is only unambiguous when there's always a leading zero for each parts.
 
1:58 PM
Talking about strings...
I found something super cool reading C# In Depth.
You can write custom formatters for interpolated strings.
 
directly in the interpolated strings?
 
No.
 
or as a IFormatProvider implementation?
 
You write a formatter that processes them.
Yeah.
And you can make it so it properly handles parameters for building SQL scripts without allowing injection problems.
Of course, it HAS to be an interpolated string. It couldn't be like "text" + val + "more text"
It would have to be like $"text{val}more text"
And you can make it turn that into a parameter.
And then, you can use the formatter hints, I forget the name, to tell it the type.
Like {val:guid}
He said he wouldn't recommend it, because it's easy for people to not do it right.
But the example was quite cool.
 
@Hosch250 just waking up. 10am pst is phone interview.
 
2:11 PM
Nice. Good luck.
We'll all ping you later to find how it went :P
 
To tide you over till then Can pugs speak Klingon?
 
2:55 PM
@IvenBach you'll knock it outta the park!
 
3:53 PM
Hi folks.
 
I'll do my best and answer honestly. Already blocked out the time. Even with another IrmaGourd fire, which is going to happen today, pending I'll just walk out.
 
Missing member annotation kind of doesn't work I think. Nothing after I press "Fix"
 
@SonGokussj4 what's the first quickfix if you drop down the "fix" button?
(hi!)
 
Add attribute annotation
Hi :-) Sorry no time last few weeks. Day should have 30 hours at least.
 
hm
works fine here..
 
3:58 PM
Hmm. Interestingly enough, even the Inspection that worked before (nothing --> ByRef) doesn't work now.

Will try restarting Office.
Works.
 
woohoo!
 
ddi you have a long session when it wasn'tw orking?
thinking maybe somehow it fell out of sync
 
@SonGokussj4 hm, the attribute value string looks wrong
 
About 10 minutes.
 
not that extraordinarily long.
 
4:01 PM
@MathieuGuindon It was refering to the second line.
'---------------------------------------------------------------------------------
Public Sub ButtonUpdateAll()

    ' Collect Workbook and Worksheets
    Set wb = ActiveWorkbook
Inspection changed. But fix is not doing anything even though it refreshes.
 
I'm not sure how to fix that manually .
 
the attribute value is malformed
or your hotkey is a space
fix it by putting your hotkey in the annotation: @ExcelHotkey("T")
(and then syncing the attributes again)
 
actually that should be fixable using "synchronize annotation from attribute"...
we do have that quickfix
 
no, the attribute value is wrong, there's no key... it's just a space
that's why synchronizing makes a @ExcelHotkey annotation without any args
 
4:07 PM
ahhh...
 
is it legal to use a space?
 
RD couldn't care less :)
 
I'm not sure I have any hotkey there?
 
of course RD wouldn't.
 
4:08 PM
I mean for Excel
 
@SonGokussj4 interesting - looks like Excel puts the attribute on any recorded macro, regardless of whether you specify a hotkey or not
 
~sigh... consistency, thy name ...
 
#TheMoreYouKnow
 
So annotation '@ExcelHotkey("") gives me Inspection: 'Vbnullstring preferred to empty literals.
 
lol
that's a legit false positive
 
4:11 PM
that's a bug, actually
 
A false positive bug
 
and we should make @ExcelHotkey("") illegal
 
'@ExcelHotkey(Vbnullstring) gives me the same as before: (" \n14") are out of sync..
 
@SonGokussj4 remove the annotation if you don't want any hotkeys
 
because annotation arguments are expressions, and the inspection incorrectly does not exclude these contexts
 
4:11 PM
then RD will say it's out of sync, and the fix you want is "remove attribute"
 
@MathieuGuindon hmm that implies special casing this for a host specific thing...
if Excel is going to keep adding it...
 
@MathieuGuindon It's gone! Nice
 
@SonGokussj4 yea, that's because RD does not actually evaluate the expression there. It just wants to write "Vbnullstring\n14" as the attribute value for that annotation
 
@this I see it as an annotation-specific thing
IIRC @Folder has a number of validations
 
@MathieuGuindon actually it should be pretty easy to extend the existing Annotation system to deal with validation
 
4:13 PM
nice
 
^
 
kind of like [AnnotationArg("hotkey", IsRequired=True)]?
 
just introduce a bool IsValid(IReadOnlyList<string> arguments) member on IAnnotation and implement it in AnnotationBase , FolderAnnotation and ExcelHotKeyAnnotation
 
ha, even better
 
^
 
4:15 PM
@MathieuGuindon we killed Attributes for metainformation, because it was a royal pain to work with them
 
@Vogel612 you don't say? :D
 
And I've noticed two mildly annoying things.
1) Less: when I have one tab in Inspections opened (with the arrow) and I fix the inspections, it will refresh the Inspections window and closes the tab so I have to click on the arrow again.
2) More - this didn't happen before...
When I fix annotation within some module, it resets the module size so my carefully set position and size of the module window is gone.
This is new.
 
// AnnotationBase
public virtual bool IsValid(IReadOnlyList<string> arguments)
{
  // default to true
  return true;
}
 
no, it's not new
 
RE: #2, so you don't use maximized window for your modules?
 
4:16 PM
rewriting attributes has always involved exporting the code file, modifying it, then re-importing it back in
the window literally no longer exists while that's happening
 
I think it's less noticeable when you use maximized window because we do recover selection for that
but I don't think the recovery handle the window position/sizing
 
it doesn't
it arguably could, but that was never on the table
 
and TBH I don't want it to be on table.
 
^
the less we play with windows, the better
 
@SonGokussj4 so I'm just curious. why do you not maximize the code module window?
 
4:18 PM
^ same (curious)
1) is a legit UX annoyance though
we recover folder expanded/collapsed states in the CE, we should do the same for GroupingGrid groups in all TWs
 
@MathieuGuindon This is curious. Will test some versions from few months back.
 
@this in other news:
        var cursor = response.GetNextPageCursor();
        while (!string.IsNullOrEmpty(cursor))
        {
            _logger.Trace($"Response header yielded a page cursor. Requesting next page.");
            response = _request.RequestItems(cursor, args);
            content = response.GetContent();
            items.Union(content.Items);
            cursor = response.GetNextPageCursor();
        }
I don't know how the heck I originally wrote it any differently than that
@SonGokussj4 since Feb 18
 
but why double negative?
until (string.IsNullOrEmpty(cursor)) would work equivalently
 
@this Hmm. Comfort? I don't see how editing only one window is faster when I'm working in two-three modules at once and I need sometimes code reference from another module?
Your workflow is different? If better, I'm open to learn it.
 
there's a split for that.
 
4:24 PM
I usually stack 3 windows.
 
hmm, wait.
no, nvm
split is within a single window
anyway - for me, I mainly keep them all maximized because I don't like taking time to manage windows
 
@SonGokussj4 you don't normally need to see the entire code for modules other than the one you're editing - drilling the CE down to member level should be enough
if you do need to see the actual implementation, then the abstraction level is likely too low
 
and it's easier to switch between windows that way, too
 
I hate it too. But I'm not sure how would I operate on one window only.
And my Excel vba lines are max 90 characters long.
So it would be wasted monitor space for me if there is only one window.
 
Alt + W + # works if youw ant to do it from keyboard
 
4:27 PM
@SonGokussj4 not wasted if it makes room for the Code Explorer ;-)
 
@MathieuGuindon Good one :-)
@this This is worse. Because the order is changing.
 
that said, that is one thing we could try to accomodate in the pipe-dream Avalon custom code page
make 2 windows dockable
 
@MathieuGuindon That's a valid observation. Will think about that.
 
that way, you get the side by side comparsion without the window management
@SonGokussj4 granted but you see the names in the list
 
@this Oh my yes. Or three. wink wink
 
4:30 PM
i totally get the need to see code side by side. TBH, that hasn't been a regular need for me to compare code side by side
@SonGokussj4 LOL. Yes. It is kind of annoying.
 
when I'm coding Python, there is always 2 code panes opened. One for Class, other for the Main code for example.
 
@this would a "peek definition" dialog (or floating, non-dockable toolwindow?) be useful?
 
well, I do use that a lot in VS coding, yes.
but it's not floating
it's kind of attached to a line, I guess
point being, anything that doesn't involve a free floating window is a win in my book.
 
right. but it has a "promote to document" button to make it a proper child window
 
doesn't that just make it a tab?
 
4:34 PM
yeah
 
still no windows management.
 
but looking at it, it seems pretty easily implemented with Avalon
 
however, if I did tear it away then it woudl be a popup
 
which I almost never want anyway and if it did, it's because I did it by accident
whenever I do that, I put them back. Ain't got no time to monkey with position & size, kthxbye
 
4:35 PM
it's like slicing the code pane at the selected line, inlining a differently-themed read-only editor there
 
in VS, it's writable, I think
not sure if Avalon make it readonly
but even if it's readonly that is still a big usability gain over the VBIDE's.... quaint windowing system
IDK how in the hell people put up with MDIs.
 
@this right, but not when it's [from metadata]
 
ah yes
 
I would really like a dockable container with code panes I can tear out.
Then I can maximize them on another screen.
I really hate that you cannot do that in the VBE.
 
that would be awesome!
 
4:53 PM
I agree - I can see the merit of having multiple docking containers to accommodate monitors.
 
@IvenBach Your interview is in 7 minutes.
 
A toolwindow could do that if we used it as a container, right? ...the shitty part is that we'd need the ability to live-clone/spawn a toolwindow (e.g. to "duplicate" the work area and leave one in the mainwindow + have the other on a 2nd monitor)
 
do we want it as a TW?
it doesn't have to be, right?
 
IIRC that was ThunderFrame's vision of how it could work
 
4:57 PM
the only reason it should be one is if we want to dock it in VBE
yes, he argued for one TW to rule it all
 
@this ...or to escape the MDI parent
 
but I think he was talking in the context of hte VBIDE environment
e.g. making it SDI by making it have only one TW
and making other TW/windows a child of that TW
(I think)
 
now, in Max's scenario, we're talking about putting it on another screen
 
normal windows are MDI Child that can't be moved outside the mainwindow
 
4:59 PM
for that, we need another window.
that's not MDI'd, either.
 
sounds more complicated than just dragging a TW onto another monitor
 
and that TW can be re-docked back, too, using VBIDE's docking system
 
not if we make it undockable
 
which is the other issue ---do w want to keep using VBIDE's.... quirky docking system
if you make it undockable doesn't that mean it can't leave the mainwindow and thus be tear away?
 
Dang That's right
 
5:01 PM
if we used the one-TW-rules-all aproach, we would be able to implement it using docking system we want to use
 
we'd need to spawn a winforms dialog then
 
TBH I think that's a given. I would rather work with Winform docking container than WPF docking contianer.
it doesn't have to be fancy, though. it'll be just a dumb container
but would make it easier for us to mix both TWs & native VBIDE windows with WPF controls
(yes, I really wanna my Immediate tabbed with other windows....)
 
@Hosch250 Correction, in 22 minutes. It was rescheduled.
#Breathe
 
5:25 PM
DockPanelSuite looks pretty nice for WinForms, and it's MIT.
 
Visual Studio inspired docking library sounds very good.
no screenshots to see if it really backs up the claim it makes, though...
 
no, it's crying out for some animations in the md
 
the one main annoyance I have w/ VBIDE's docking system ist hat there's no visual indication to where it's going to be docked. Yes, it changes the border somehow but it's still a guesswork in figuring exactly how it'll be docked. VS's indication icons (don't know what to call those) is a godsend.
@mansellan very much so.
 
TSQLs PATINDEX takes a '%pattern%' which looks very RegEx like. What characters need to be escaped and what character do I use to escape them?
 
oh wait, I have it cloned. lemme grab a screenshot...
 
5:33 PM
it's documented here. It mentions wildcards, so you'll use LIKE documentation
 
hmmm... maybe it doesn't need any characters to be escaped. 'A-Za-z0-9@. seems to have worked for cleaning up email addresses of leading spaces _why, oh why, must you left pad every string with a gob of spaces that TRIM won't remove)
 
@FreeMan How does that handle this address? hosch_250@live.com?
 
with a trailing ? ? that's not a legal email address...
 
No.
The ? is outside the code ticks.
The _ character.
 
5:35 PM
ah, carp!
 
IKR?
 
@mansellan very VS-like but do you get those icons when you try to drag a window?
 
It's not as slick-looking as VS2019, but still covers what it needs to. And a quantum leap over the VBE's docking
 
runs down the rabbit hole of parsing email addresses. Runs for his life
 
The + is allowed. It drives me nuts when web sites don't allow it because my email has a + in it and so many sites don't allow it. — Dan Herbert Jan 12 '10 at 14:16
731
A: What characters are allowed in an email address?

Anton GogolevSee RFC 5322: Internet Message Format and, to a lesser extent, RFC 5321: Simple Mail Transfer Protocol. RFC 822 also covers email addresses, but it deals mostly with its structure: addr-spec = local-part "@" domain ; global address local-part = word *("." word) ; ...

> special characters !#$%&'*+-/=?^_`{|}~;
> dot ., provided that it is not the first or last character unless quoted, and provided also that it does not appear consecutively unless quoted
> space and "(),:;<>@[] characters are allowed with restrictions (they are only allowed inside a quoted string, as described in the paragraph below, and in addition, a backslash or double-quote must be preceded by a backslash)
 
5:37 PM
@this Yes, but doesn't look quite so extensive... Like in 2019, you get say middle, top, left, bottom, right but also "very left" "very right" etc. Not seeing those, but maybe that's just how they have the sample set up.
 
> comments are allowed with parentheses at either end of the local-part
 
that's all I want!
I'm fine with not having all the options
 
yeah, it looks sufficient.
 
but having the icons is very important
 
lemme see if I cab grab them
 
5:38 PM
none of that "gee, I hope it docks there, not over there"
 
Your regex is probably destroying valid email addresses, @FreeMan :D
Also, Iven is in the middle of his interview now.
 
IMO, email address RFC is a prank. Has to be.
why would they make it so fiendishly complicated?
 
I swear, one of these days I'm going to set up a private server with fiendish email addresses.
And then use them places and complain.
And it'll serve people right.
 
themeable too
 
yes I saw they have dark themes, too
and yes, those icons are exactly what I want in a docking system.
now we need a slave volunteer to make it happen
 
5:41 PM
a sucker :-)
 
:-D
like that poor guy who is chest-deep in a mocking framework and still has to do that Extract Method thing....
 
nah, he never finishes anything :-) almost as bad as that weirdo who added VB6...
 
LOL
 
Are you trying to shame me into volunteering? :P
I've not done anything since last October, and even that wasn't much.
 
I'm actually struggling for enthusiasm to write any C# atm, I keep thinking "Damn, I wanna write this in Core 3, but only when it goes GA"
Roll on next Monday...
 
5:43 PM
@this like that other guy basically writing an interpreter and should be busy with block completion?
 
@MathieuGuindon IKR?
 
@Hosch250 ugh... thanks for pointing that out. :/
 
@Hosch250 Nah, it's just fun to poke fun at oneself for never finishing an eternal project like RD.
 
@mansellan now might be a good time to start getting the ball rolling for RD to build in VS2019
 
But why oh why does LTRIM(emailAddress) not remove leading spaces??? (don't ask why they're included in the first place, I haven't figured that one out...
 
5:45 PM
@FreeMan &nbsp;
 
@MathieuGuindon Oh cool. I wanna wait till GA though in case the SDK changes at all
It's only 6 days away
 
Looking at the commit history, I basically do a bit each October :(
 
yet this works just fine when I pass in @MatchExpression = ' ' (with a single, regular keyboard entered space
CREATE   FUNCTION [dbo].[StripCharactersFromString]
(
    @String NVARCHAR(MAX),
    @MatchExpression VARCHAR(255)
)
RETURNS NVARCHAR(MAX)
AS
BEGIN
    SET @MatchExpression =  '%['+@MatchExpression+']%'

    WHILE PatIndex(@MatchExpression, @String) > 0
        SET @String = Stuff(@String, PatIndex(@MatchExpression, @String), 1, '')

    RETURN @String

END
GO
 
@Hosch250 Heh, about 5 PRs?
 
Something, yeah.
 
5:46 PM
#Hacktoberfest
 
the only problem with using that on an email address is "free man"@domain.com gets borked
@Hosch250 since you mentioned it...
;)
 
I've mentioned lots of other things. But then found I don't have VS 2017 installed :P
 
yes, I'm sure that'll be no longer a road blocker shortly
 
Yep.
 
5:50 PM
what I don't know if we can keep using 2017 once we update the build process.
 
And with the (hopefully) shorter drive at my new work (and maybe WFH), I may find the mental energy to work on it.
 
I think it went well. Hope to get called in tomorrow for in-person.
3
 
screw it. If anyone has " "@domain.com, they're not getting email from me - serves 'em right for being difficult!
 
may have to drag screaming'n'kicking Mat into it
:D
 
5 mins ago, by Mathieu Guindon
@mansellan now might be a good time to start getting the ball rolling for RD to build in VS2019
 
5:50 PM
@IvenBach Nice!
 
@this ^^
@IvenBach excellent!!
 
@FreeMan I think a large number of companies do something similar, as well.
 
well, it's now LargeNumberOfCompanies++
 
just because it's legal from RFC doesn't mean various companies play by the same rules, as evidenced by that linked SO.
13 mins ago, by this
IMO, email address RFC is a prank. Has to be.
 
@FreeMan Forewarned is fore-armed.
I can be very irate when my email doesn't work.
 

« first day (1929 days earlier)      last day (57 days later) »