« first day (1476 days earlier)      last day (1704 days later) » 

4:00 PM
you only need to check if the preceding character is non-whitespace character, issue tab, then check if a tab was provided (meaning no intellisense happened), remove it. Then proceed to AC
right?
 
Performance review today at 3:30.
 
if e.Key == Keys.Tab && e.CurrentCode.HasADotLeftOfCaret?
what about VBE's own autocompletion (Ctrl+Space)?
oh wait that doesn't pop a dropdown
 
i thought of that but when you have it open because of ambiguous selection
it won't select the current selection.
it will pop a dropdown but only when it's ambiguous
 
IMO it's much simpler if there's a WM message about some object getting created in the code pane
 
e.g. if you have a object has two methods, AOne, ATwo, and all you did was type A, you get the dropdown. You then have to use arrow keys to select either.
 
4:04 PM
if there isn't, we'll need to get creative, but go-to solution should be to reliably tell whether there's a dropdown in the code pane
 
Sure but then you need to know that the dropdown has a selection.
 
no
if there's a dropdown AC bails out, period, done
 
so i have to tab 2x myself
hmm that's better
 
now i see where you're going with that.
 
4:06 PM
What's the blue icon represent in VS?
 
Yes, I like that better.
 
@IvenBach the little earth icon?
probably "remote"?
 
and that's where you enter the Spy++....
 
Remote, I think.
Also, not sure that's an earth :)
 
mkay.
I thought it was a circle enclosing a > < greater than less than symbols
 
4:07 PM
right, it does look more like a baseball if you zoom enough
 
that's if one can figure out how to keep it open so you can get to spy++ to get it.
 
@this I was thinking of un-commenting the WM firehose and seeing what's there
pretty much like how I initially got the hook to work off caret messages
 
@MathieuGuindon Lots.
I've done it :)
 
i'm thinking that the WM might be just a normal WM message to create a window
and you need to know what window it's creating, or something like that.
it need not be special
 
yeah. I'm hoping to pick it up in the existing CodePaneSubclass hook
 
4:11 PM
though we have this WM...
WM_USER+3140 wParam:000000BF = Edit Menu/Code Context menu Quick Info pressed
that makes it easier for AC to show quick info in that case, I think.
 
nothing I can see about the intellisense, though.
no, don't you see? you don't need to futz w/ keypress for that?
just issue WM_USER+3140. Done.
 
I can't just alter the WM before returning?
 
you shouldn't, at least not the keypress.
 
hmm I see.. I return 0; to swallow the keypress, but I've no idea what to return to change the keypress
 
4:14 PM
ah, you need SendMessage
 
wouldn't SendKeys be kind of a thin wrapper around that?
 
so basically swallow the keypress and if you determine you need to show the quick info, issue a window message via the SendMessage
no
 
SendMessage feels cleaner anyway
 
ctrl + i would have several other side effects.
 
also... what if Ctrl+i was remapped to "indent procedure"?
 
4:16 PM
right, just get to the actual command to show that, without going through the UI plumbing
exactly, who knows.
they aint going to remap the WM_USER commands anytime soon. :)
too bad there's nothing for intellisense
 
there has to be a WM_CREATEWINDOW somewhere for it
 
definitely. I'm a bit disappointed there's no WM_USER message but the wiki article say it's incomplete. If you do find it, I think that'll be even better
 
if I do find it, Imma writa bloga bout it
 
:+1:
inching our way toward VBE domination. ;)
 
4:23 PM
@this Yes!
@Hosch250 What's rate-limiting? en.wikipedia.org/wiki/Rate_limiting stops extra information being set for a given period of time?
 
@IvenBach Rate-limit the updates.
So, basically, it stops the resolver from updating for a given period of time.
 
I'm not groking the concept.
 
@IvenBach try flooding the chat as quickly as you can
 
I know that at some point you get "calm your horses. We've revoked posting privileges for a bit" or something along those lines.
 
that's what rate-limiting does
or try flagging every comment a comment thread in less than 5 seconds per flag
or asking 200 questions in a day on any SE site
 
4:34 PM
@MathieuGuindon LOL!
 
You unlocked that achievement, I can tell.
 
How does this apply to intellisense though?
That's the part I've not connected.
 
I did almost get myself IP-blocked on SO once though (last fall IIRC), frantically hitting F5 every second to see if SO ads showed any community ads.
#DontDoThat
@RobertHarvey, It's not that I like Flash, but in 1999 it was widely said that Flash is deprecated and would soon be replaced by Dynamic HTML (and unless you are too young to remember DHTML, which is by now quite possible, you will remember how that turned out). If there is ever an atomic war the two things that will survive are the cockroaches and Flash, and I'm not sure about the cockroaches. — Eike Pierstorff Jul 13 '15 at 9:20
and VBA
 
4:49 PM
When using git the --dry-run flag (I think that's the proper term) is very helpful. Lets me see what will be done without actually doing it.
 
@IvenBach not every command actually has that one :)
 
is there a guide to know when it's - vs when it's --?
 
some have an equivalent with a slightly different name
 
@MathieuGuindon - is for short hand.
 
@MathieuGuindon standard posix commandline options
 
4:50 PM
e.g. -v == --verbose
 
*ding*
 
-xvf == -x -v -f
 
@this :click: ignoranceLevel--
 
-verbose or --v wouldn't be legal, I'm sure.
 
@this -verbose is legal, it just means something different
 
4:51 PM
@Vogel612 was that a subtle hint to get lost? ;)
 
@Vogel612 So any abbreviations can be chained together?
 
@this thought the same lol
 
@this uh. no. um...
 
We all did.
 
oh right it'll get all the flags -v -e -r -b -o -s -e which might not what we want
 
4:52 PM
that's just my most commonly used multi-option in git
 
@this Yep, LOL.
 
fixed that. ~blush
 
@Vogel612 Too late :P
 
I can fix it really heavily, too.
just saying
 
4:53 PM
@Vogel612 Can't erase it from our minds ;)
 
I can't figure out what the green arrow represents.
 
@IvenBach Remote.
Means it has a remote connected to it.
 
Oh! Testing.
 
Basically means you did a git push with a remote name set.
 
Cool. Figured out how to CLI unset it and reset it.
#TIL don't do git status -v
2
I feel like I'm in the matrix...
Lo and behold. The matrix is before me!
:wimper: How do I make it stop....
 
5:04 PM
Wait it out, LOL.
Actually, CTRL-C.
That'll kill it.
That'll kill any executing command in the cmd prompt.
 
WONKA! Stop this madness! :ding: We're here
 
@IvenBach wait that spews XML to your console??ß
 
2 mins ago, by IvenBach
#TIL don't do git status -v
 
alternatively, that little [X] button would also kill it, I think
 
Vogel. I think I'm going to need some help. I deleted the currently checked out branch via CLI and now I can't check out a branch because it has uncommitted changes.
 
5:06 PM
wat?
 
ABORT! ABORT!!
 
I had a test branch checked out to figure out what the icons meant. I deleted the branch locally, and then on my remote origin. Now I'm trying to checkout and it's prohibiting me from doing so.
 
so.. commit?
 
I don't feel as adventurous as I did 5 mins ago.
So you can commit to a non-existant branch?
 
@IvenBach It might create a new one :)
 
5:10 PM
That's what it just did.
 
git commit -m "fingers crossed"
 
5:26 PM
TIL. Raises are non-negotiable.
Also, review not today, but next week.
Also, one of my coworkers just got cost-of-living raise last year, so I doubt I'll do any better.
 
@Hosch250 welcome to the real world! :)
 
Thank you :)
 
@Hosch250 huh?
raises are always negotiable
 
@Vogel612 My boss said last year she was just informed of her raise, and got the review later because her boss didn't get to it on time.
 
@Vogel612 I never had an opportunity to negociate that in 14 years
 
5:30 PM
wow wtf, american workplace is effed up
 
my boss fought the battles for me though. once I got 29% increase.
<~ not american
 
@Vogel612 I've always heard raises were negotiable in US.
I was pretty surprised to hear this.
If it's a cost-of-living raise, I'm going to tell them to just keep it.
That'll send a pretty strong message, I think.
 
along with your resignation letter?
 
I'll see what she says.
 
@Hosch250 no, they wouldn't care, but they'll be happy to keep it
 
5:32 PM
@MathieuGuindon They might.
I'm one of the core IT people now.
In a way.
 
you're a number, like everyone else ;-)
 
At some levels.
I've heard that every time a client requests a feature, their internal rep asks if I can work on it.
 
I've got a reputation for pushing code out fast.
So, we'll see.
Of course, this is all on my work computer with a keylogger installed. It would be amusing if someone actually looked through it.
 
FWIW they're always going to say raises are e.g. "standard 4% for everyone that gets a raise"
behind closed doors is a different story
 
5:35 PM
I'm going to re-read my contract tomorrow.
 
@Hosch250 lemme get this straight... your work computer has a keylogger installed?
 
If it doesn't specify a time limit for my current salary, I think I have a strong case for insisting on a new one.
 
@Hosch250 erm, what?
 
@Vogel612 Yep. And a webpage/application logger.
We actually want to use BitLocker to save money and have more security than Dell's thing, but we can't because of the installed spyware.
 
@Hosch250 you might want to go ask for a title promotion.
 
5:37 PM
Of course, I have full admin rights to my machine. I could uninstall the spyware, disable DDPE, and start BitLocker ;)
@Vogel612 I could.
Of course, everyone there is a Senior :P
 
that's usually mutually beneficial. You get to go job-hunt with a better title and they get to sell your work more expensively
 
Actually, I don't think that matters.
We don't make our clients pay for most changes, and what we do has a fixed rate/hour.
 
huh. that seems oddly generous
 
Yeah, most of IT is pissed about it.
We are losing money on IT.
We are treated more like a liability than an asset, and I can understand why considering the current system.
IT definitely was a liability at some point.
We as employees aren't, but the department in general is.
 
hang on: you're selling an IT product, but IT is considered a liability?
 
5:40 PM
Yep.
IT is new to the company.
We started out selling from a catalog.
And managing major travel events for companies.
We still do travel, but we are moving more and more IT.
And they don't know how to do IT, and it's uphill work getting there.
We've made two major strides since I joined: Git and (just the other week) CD.
The devs are really driving dev ops along. Dev ops tends to resist the changes, LOL.
 
@Hosch250 what CD system you using?
 
Just auto-deployments to our dev system from VSTS.
Stage and prod aren't on it.
 
ahh ... continous delivery and not compact disk
 
We are holding off on setting it up there because we are moving to Azure.
@Vogel612 Yes, LOL.
So, all in all, I think I've definitely been worth my salt so far.
I've proposed a couple new systems and enhancements that weren't approved too. One that was, but my boss mentioned it was something we needed, so she started that one.
 
@Hosch250 nobody could pay me enough to work keylogged
 
5:52 PM
I'm not worried about it.
What are they going to do about it?
 
Or somewhere all mails redirect to the owner/CEO
 
Heading out to the DVS to update my license plate tabs. TTYL.
 
6:28 PM
0
Q: Find select values on one worksheet and copy to a second

LShaverIn the Calculator worksheet of my spreadsheet, for any appliance type present in a building being studied, users enter a quantity. There are 18 different appliance types, and users can enter different quantities of any or all appliance types. On the Calculator sheet they can see a breakdown of e...

 
6:49 PM
-1
Q: VBA to run through column to check for repeat data, save in array to display in word

FalguniWhat I would like to accomplish is: 1. Loop through Column A (School), check for all the rows with same School Name 2. Save row info with the same School Name 3. In word display row info that belongs to same School Name School 1 Custodian 1 Corresponding School schedule Corrensponding Approved...

 
6:59 PM
Is there a term for accidentally missing an else and turning a conditional execution into an always? github.com/IvenBach/Rubberduck/blob/…
 
yup. "screwing up" ;-)
 
I'm guessing with this not being reported before that the PermissiveAssertClass isn't seeing a lot of use. I hope to fix that with these fixes.
 
@IvenBach the apple-bug, actually..
goto fail
 
That's how I spotted it.
 
sans missing braces :)
 
7:04 PM
I saw it and something didn't look right.
With {} for enclosing an else block, is that considered encapsulate?
 
depends on the language.
in some, it can be used to provide scoping for the variables
in others it's just to contain multiple set of statements for a compound statement.
 
@IvenBach might be I'm tired, but I don't see what the problem is here
 
not sure if i would call scoping == encapsulation, though.
 
it's somewhat related, but completly different under the hood
 
oh wait
oh wow
oh duh
need caffeine
 
7:07 PM
yeah, both adhere to the same idea of hiding the implementation details. I usually think of scoping as something that's within a class/object. Encapsulation is about deciding what to share between classes/object. More or less.
so strictly speaking, I wouldn't say {} provides encapsulation.
 
a scope is just a scope. a class defines a scope. a method defines a scope. an if defines a scope. { } in the middle of nowhere defines a scope.
 
depends on the language
(in C#'s case, yes)
 
the point is that scoping is a compiler thing and encapsulation is a compiler-y thing that the runtime can actually go and completely ignore if it feels like it
 
See: Reflection smashing open the private members of a class.
 
1
A: Are 1H 2018 OSS ads showing up?

stevvveOh, yeah. Those were off. Unfortunately, there's no getting that back. However, you caught it in time to get some delivery for the 1H ads, and we'll be all set for 2H. The ads should start seeing delivery soon, though it takes a little while for reporting on my end to populate. I'll keep an eye ...

 
7:19 PM
I just need more experience/confidence with C# to make changes. One step at a time.
I'd never gave caught it without belaboring the benefits of using {} for explicitness in scope.
 
7:37 PM
@MathieuGuindon It might be interesting for some paying companies to see that.
Or is it only for OSS ads?
 
where do the ads usually appear?
 
@this They don't if you configure your browser properly.
 
Hence my question. ;)
In my case, though, no browser configured. It's network wide.
 
Ad-block server-side! What a novel idea!
 
@Hosch250 "Are 1H 2018 OSS ads showing up?"
tons of Microsoft Azure ads do show up
 
7:53 PM
@Hosch250 not really server but rather router.
 
8:49 PM
hmm. Interesting. R# uses a different template for implementing a IDisposable w/ unmanaged resources.
        private void ReleaseUnmanagedResources()
        {
            // TODO release unmanaged resources here
        }

        public void Dispose()
        {
            ReleaseUnmanagedResources();
            GC.SuppressFinalize(this);
        }

        ~MockDatabase()
        {
            ReleaseUnmanagedResources();
        }
 
cleaner than the standard dispose pattern, but doesn't account for a virtual void Dispose()
so, good for a sealed class
 
ah I did not check "I plan to derive from this" (or something like that) in the dialog
 
this explains that
 
confirmed. If I check both checkbox on the dialog, I do get the virtual method stub, too
#TIL
 
with the bool disposing parameter?
 
8:52 PM
would have liked if R# would have said, "hey, you don't have this class sealed if I had left it unchecked, though.
 
        private void ReleaseUnmanagedResources()
        {
            // TODO release unmanaged resources here
        }

        protected virtual void Dispose(bool disposing)
        {
            ReleaseUnmanagedResources();
            if (disposing)
            {
            }
        }

        public void Dispose()
        {
            Dispose(true);
            GC.SuppressFinalize(this);
        }

        ~MockDatabase()
        {
            Dispose(false);
        }
copy failure. :)
 
and this is why copy-pasta coding is evil, kids
 
TBH, I don't know about that part....
 
what part?
 
8:54 PM
protected virtual void Dispose(bool disposing)
{
    ReleaseUnmanagedResources();
    if (disposing)
    {
    }
}
I'd have thunk it'd be....
    protected virtual void Dispose(bool disposing)
    {
        if (disposing)
        {
            ReleaseUnmanagedResources();
        }
    }
oh wait, no that's fine
 
it's a virtual stub anyway
 
(was thinking disposing section should take care of unmanaged resources but that's backward. that's for managed resources)
 
the thing I don't like is that a good Dispose implementation should be invocable multiple times against the same instance, without causing issues
this doesn't promote that
 
yeah i'd have to code something within the stub for releasing unmanaged resources to check if they need to be cleaned up or something
 
needs a bool _disposed field I think
 
8:57 PM
yes. that's what we usually do in RD project
 
..which can then be used by members to throw new ObjectDisposedException();
 
well, in the case of unmanaged releases, just silently passed over
 
that's fine
as long as foo.Dispose(); foo.Dispose(); foo.Dispose(); doesn't result in some unmanaged refcount to end up at -2
 
:O
COM be all like "what the heck, man?!?"
 
COM would be like "SEND THE NUKES!!"
 
9:16 PM
@MathieuGuindon I'd argue not necessarily.
Dispose effectively disposes it. Nothing at all on the instance can be expected to work after it is disposed.
 
I'm fine with it throwing disposed expection.
I'm not fine with it re-disposing, however.
esp for unmanaged resources
 
That's a good decision. It basically removes an "undefined behavior" thing.
At least for one common path.
 
erm, exception, not expection....
apparently my brain is dying.
2
 
9:38 PM
To get the PermissiveAssertClass to behave like VBA when doing comparsons I added more tests github.com/IvenBach/Rubberduck/blob/…, all of which are using PermissiveObjectComparer.
Does it raise any warning flags having added github.com/IvenBach/Rubberduck/blob/… to simulate the way VBA compares numeric or apparent-numeric types like "10"?
 
Hmmm.
I'm wondering if this really need to run off the same expression engine
for one thing, this uses ulong, which VBA has no notion of
other thing is that it starts w/ double, which need not be the case.
 
I blatantly copied the AssertTests so I don't doubt that some of those test's aren't applicable.
 
that does not seem to me to conform to the VBA's rules for handling implicit casts.
That's why I'm thinking that when we implement a proper expression engine, the permissive assert class can use that engine to ensure that it conforms to what VBA might expect.
but if you don't want to implement it or wait for it to be implemented, you should test in VBA, then write unit test to conform to it
ideally, you should test the expessions using variants, then checking what the new type of the resulting variant is.
 
9:58 PM
Shouldn't I be declaring the types in my unit tests? I'm confused.
Public Sub TestMethod2() 'TODO Rename test
    On Error GoTo TestFail

    'Arrange:
    Dim foo As Long
    foo = 10

    'Act:

    'Assert:
    Assert.AreEqual 10, foo

TestExit:
    Exit Sub
TestFail:
    Assert.Fail "Test raised an error: #" & Err.Number & " - " & Err.Description
End Sub
Build with the changes I made now has this test pass.
 

« first day (1476 days earlier)      last day (1704 days later) »