« first day (400 days earlier)      last day (2780 days later) » 
00:00 - 21:0021:00 - 00:00

12:00 AM
@Rossco Isn't that the main problem?
I mean, the deciding?
 
RELOAD!
 
yeah totally ;-P
 
[Cardshifter/Cardshifter] 2 opened issues. 2 issue comments.
[rubberduck-vba/Rubberduck] 14 commits. 3 opened issues. 1 closed issue. 6 issue comments. 3688 additions. 360 deletions.
[Zomis/Duga] 1 opened issue.
 
We are always deciding, and then implementing.
 
Complete uninstall is good because it should leave nothing behind but its a PITA to build/maintain all that code.
It would be easier to just install it (overwriting any previous files but potentially leaving orphaned files which are no longer required).
From what I've been reading, the simple configuration will allow installation with overwrite of any installed version. Including newer versions, which may not be desired.
 
12:04 AM
Oh, I see you voted.
 
Yeah, you got in ahead of Matt (because you were listed before him). :-)
 
Yup.
 
I'm surprised that you can see that, I would have thought it would be undemocratic...
 
You can see the award time for all badges.
 
ah, I see.
Well, I hope you get a shot at being moderator.
 
12:06 AM
I'm out, I'm sure.
But, I don't mind - it will more time for school.
 
Is there a way to see the current rankings?
 
No.
You could in the primaries, and I came in last.
Ethan and Quill got kicked.
Vogel and Donald came in a bit ahead of me, and Jamal and 200 led.
Mat came in 3rd, Simon 4th, Janos 5th.
 
You're all finished for the summer aye?
 
Yep. I start in the later end of August.
 
Have you decided on what you're doing next? Weren't you trying for an internship?
 
12:09 AM
I need to take an ITM internship next summer.
I'd like to take an SE (Software Engineering), but the degree calls for ITM.
 
ah, its a course requirement.
 
I need to write to my advisor about that, but I'm not holding my breath.
Yeah.
 
Ah well, give it a shot. Uni lecturers are a bit more realistic than what you get in secondary school.
I need to get a gift for one of my tutors who really helped me out this semester.
I wasn't going to be able to complete my course because my wife had to go overseas for a funeral.
And he gave me extensions and went out of his way to get things sorted out.
 
That's too bad, and that's nice.
 
My mum was in a similar situation a few years ago when my folks got divorced and was way behind on assignments.
I told her to give her lecturer a call and discuss the situation rather than give up.
And she ended up passing.
Yeah, well I didn't end up failing.
Got A+'s in the end.
 
12:15 AM
I've gotten 20 A's and 1 A-.
My U doesn't give A+.
 
nice, I assume that's over 4 semesters.
 
Of course.
 
Well done.
I'm sure that there will be a way to find a nice compromise between software eng. and ITM.
 
Well, I'm actually taking a communications minor too (I'm beginning to regret this, after my speech class), so I don't have any extra class room.
 
Well, you might not regret it in the long run.
Programmers have notoriously bad at social skills.
so if you can hold down a conversation, it may put you ahead of a lot of others.
 
12:23 AM
True.
 
I was talking to someone the other day and they asked me what I did and I said programming. They were a little stunned and said, 'but you seem normal...'
 
Lol.
I guess that is why I'm not normal - non programmers don't give you any room or time to think.
So, I kind of avoid them when I can.
 
Interesting perspective.
I read a Coding Horror article talking about how the best programmers often have autistic tendancies.
 
I'm not surprised.
 
It made me wonder if that meant that I was on the scale too.
 
12:27 AM
Autism isn't a bad thing - except when they start pouring drugs down your throat.
 
I mentioned that to a guy at uni the other day and he said that I might be surprised but that he had autistic tendancies.
I got to know him a bit better and I can see some of the obsessiveness.
 
I'm probably heavily autistic.
I was homeschooled, and at first I was a bit of a slacker.
I had to do my school, but I didn't care about my grades, and so on.
 
But when I was a kid, I used to drive my parents crazy because I couldn't make what seemed to be simple decisions.
So I can empathise with your previous comments.
 
Then, one day we were discussing the brain, and someone made a comment that the average person only uses 4% of their brain.
(Incorrect statement, BTW.)
So, I decided to not be average, and started really studying hard.
 
Nice.
 
12:31 AM
Went through Advanced (Chemistry/Physics) and Calc.
 
I remember cruising through school all the way until my final year at high school.
 
Scored 32 on my ACT, and started programming shortly before/after I graduated.
Applied to one U and was accepted.
And, that's where I am at now.
Programming obsessively in the summer and winter breaks, and school otherwise.
I've almost burned out a couple times, but I really just can't afford to, so...
 
study or programming?
 
Mostly study, but once programming too.
 
Do you find it hard to say 'no' to people?
Do you have to please them?
 
12:38 AM
No.
Why?
 
Lots of people have to please others at their own expense and end up puttting themselves under too much pressure.
 
Well, I can't really say no to my parents.
 
That's what I was like when I was younger.
 
But, that is a bit different.
 
You're probably a perfectionist then.
 
12:39 AM
Kind of.
 
That's still my problem...
Have you guys gotten anywhere with DI?
 
Not sure.
@FreeMan here has been reported bugs for us.
 
So you're busy with those then?
 
Yes.
 
Last time I was online, you were talking about putting a layer between the VBE and your code.
 
12:41 AM
I just implemented a bunch of unit tests.
We got unit testing working without that.
 
Cool.
I did try writing some code to work towards that, but it got a bit crazy. The VBE is everywhere.
This is what I had:
 
I had a few classes done, but I removed them.
 
public interface IProjectService : IEnumerable<VBProject>
{
VBProject ActiveVBProject { get; set; }

CodeModule ActiveCodeModule { get; }

// Not sure if this should be in this interface or not.
void SetSelection(VBProject project, Selection selection, string name);
}
 
That isn't what I as doing.
 
public interface IGuiService
{
Window CreateToolWindow(string progId, string caption, string classid, UserControl control);
}
 
12:44 AM
I was passing VBProject into the constructor, and just writing properties/methods to act as a basic go-between.
I've since deleted that since we don't appear to need it.
 
Did you give up because the VBE is already an interface?
 
No.
We got unit tests working without it.
 
Awesome.
 
The issue before was we were having trouble mocking it for unit tests, but @RubberDuck got it working.
 
@Hosch250 because the VBE is already an interface ;-)
 
12:46 AM
How many tests do you have now?
 
Then, @Mat'sMug changed it a bit to make it more powerful.
Lots.
We are 27% covered.
Reorder/Remove are pretty much covered, except for a few early returns that I'm not even sure we need anymore.
Presumably we do.
I don't remember why, though.
 
Hey @Mat'sMug
You'll find my comments earlier on up the chat log.
 
50 mins ago, by Rossco
@Mat'sMug I'm not 100% myself. But looking at this page seems to show we need to add a couple of lines to prevent users from being able to change install directories.
 
Saw that :-)
Back lurking, bbl
 
@Mat'sMug Fix All was removed.
It is trickier than it looks, for some reason.
 
12:50 AM
That Appveyor service is pretty cool huh?
 
Mainly, because the name of the inspection isn't available - just the description.
Yes.
 
I tried setting it up with my project but I have issues to work through getting it to work.
 
Talking about AppVeyor, it has been running too fast lately, and I just found it isn't even running the 250 lines or whatever it used to run. It appears to be just loading the project.
 
I may have to write a build script to get everything working.
That's weird. Is it reporting that all tests pass?
Or some other success result?
Or just hanging?
I wrote a unit test the other day which seems innocuous but it causes the test runner to hang.
But if you step through it manually it seems to pass.
 
Oh, I guess it isn't.
Must of been mixing things.
It has actually tripled the output from 581 lines to 16xx lines.
 
12:54 AM
Wow.
 
All the tests.
 
I gotta go and eat something now.
Hopefully I don't have to kill it first.
bbl
 
See you.
Doing the rename interface/event/presenter/factory tests now.
 
1:22 AM
@Mat'sMug Bug found.
            //Input
            const string inputCode1 =
@"Public Event Foo(ByVal arg1 As Integer, ByVal arg2 As String)";
            const string inputCode2 =
@"Private WithEvents abc As Class1

Private Sub abc_Foo(ByVal i As Integer, ByVal s As String)
End Sub";

            //Expectation
            const string expectedCode1 =
@"Public Event Goo(ByVal arg1 As Integer, ByVal arg2 As String)";
            const string expectedCode2 =
@"Private WithEvents abc As Class1

Private Sub abc_Goo(ByVal i As Integer, ByVal s As String)
That fails.
It doesn't rename abc_Foo at all.
 
1:53 AM
@Hosch250 same in actual Excel workbook, or just the unit test?
 
Same in actual workbook.
 
Nice catch!
Gonna be offline a bit, might be back later to write some resolver tests
 
OK.
Going to do dishes in a sec.
I'll PR, then - be sure to pull, cause I've changed a few minor things myself.
 
Ok
 
Just trying to fix a bug in one last test before I push.
Crap. Extension methods again :(
 
2:16 AM
 
@Mat'sMug There you go.
One of them fails because Rename doesn't work.
BBL.
 
[rubberduck-vba/Rubberduck] build for commit b297f899 on ???: AppVeyor build succeeded
[rubberduck-vba/Rubberduck] build for commit b297f899 on ???: AppVeyor build succeeded
 
2:50 AM
OK, instead of making a layer for RD so we aren't dealing with extension methods, I'm going to make Moq work with extension methods.
There, I've said it, so I can't turn back.
 
[Hosch250/moq] Ping: It's not fully shipped until it's fast.
[Hosch250/Rubberduck] Ping: Design for failure.
 
@Duga For a second, I thought you said "designed for failure."
 
3:41 AM
@Hosch250 Are you testing your grammar in any way?
 
Not as far as I know.
I'm just working on getting the refactorings under test.
Actually, I am working on Moq.
Now, how do I get the blooming thing to compile?
It can't find the Moq.sdk.dll.
 
3:58 AM
[Hosch250/moq4] Ping: Design for failure.
 
I don't know why it doesn't allow us to do this.
It blocks all static methods.
Moq is a mess.
It has just about everything in one file with R# so hyped up it is just about flipping somersaults.
 
4:19 AM
Ok, cool. (re grammar tests).
What's going wrong with static methods?
 
Don't know.
OK, it wasn't committed just 24 days ago.
 
4:37 AM
ok so you want to test the static method?
or is the static method called by something else you are wanting to test?
 
The static method is being called by something I want to test.
I would like to just .SetUp().Returns() it like the rest, but Moq throws an exception.
Night.
 
 
2 hours later…
6:15 AM
Because static methods and inheritance don't work. That's why static stuff is a PITA to unit-testable code. Moq isn't the only mocking framework that works by implementing the interface or inheriting the abstract class you give it to mock. That's just how mocking works!
 
 
4 hours later…
9:54 AM
Amen. Micheal Feather's book helped me get a grip on how Moq worked under the hood. Seeing how it's done by hand is an amazing learning experience.
@Hosch250 in order to get a static method under test, you have to provide the class calling it with everything it needs to actually run it. That's not always possible.
 
[Vogel612/TranslationHelper]‌​ Vogel612 pushed commit ce02678c to master: Exposed key in TranslationView Frame-Title, fixes #7
[Vogel612/TranslationHelper] build for commit ce02678c on master: The Travis CI build passed
 
10:26 AM
I think you were right about appveyor though. It doesn't look like it's running the tests anymore....
 
[Vogel612/TranslationHelper]‌​ Vogel612 pushed commit 638df124 to master: Added CellRenderer for translation Container, fixes #6
[Vogel612/TranslationHelper] build for commit 638df124 on master: The Travis CI build passed
[Vogel612/TranslationHelper]‌​ Vogel612 pushed commit 65281781 to master: Added Tests for tableCellRenderer
[Vogel612/TranslationHelper] build for commit 65281781 on master: The Travis CI build passed
 
11:15 AM
1
A: Excel macro to move data across workbooks using an ADO connection

ChipsLettenThe first thing is that you do not seem to be using Option Explicit because there are some variables (strQuery, cmd1 and cmd2) that are not declared. You should always use Option Explicit and this can be turned on in Tools -> Options, on the Editor tab check the "Require Variable Declaration" che...

New answer from Chip.
 
 
3 hours later…
2:26 PM
[Vogel612/TranslationHelper]‌​ Vogel612 pushed commit c964d07f to master: Update README.md
[Vogel612/TranslationHelper] build for commit c964d07f on master: The Travis CI build passed
 
 
2 hours later…
4:20 PM
Ah, that makes sense.
So, we don't need these to be static.
They are better as extension methods, but they don't need to be.
 
4:47 PM
Hey, @RubberDuck, just saw you show up in The 2nd Monitor.
What do you think ^?
Oh, @RubberDuck, you never voted!
 
5:08 PM
Yes I did. =;)-
 
5:39 PM
@RubberDuck wait do we have ... too many tests???
 
6:16 PM
Hmm? What do you mean @Mat'sMug? No such thing.
That's like having too much fun.
2
 
lol
2
 
7:01 PM
Hmm, @RubberDuck says he's voted, but he doesn't have the Constituent badge.
 
7:23 PM
Oh! Are the final elections underway?
Been busy with the kids today. The rain finally stopped.
Feels weird voting for 3 when there are 4 positions open.
 
What do you guys think? Decent intro to embedded programming or too high level? arduino.cc/en/Main/ArduinoBoardUno
 
[rubberduck-vba/Rubberduck] build for commit 38ac4350 on next: AppVeyor build succeeded
 
@RubberDuck probably.. no idea. I'd need a decent intro to embedded programming to tell :)
 
[rubberduck-vba/Rubberduck] build for commit 38ac4350 on next: AppVeyor build succeeded
[rubberduck-vba/Rubberduck] Hosch250 pushed commit b5900f81 to next: Closes issue #698
[rubberduck-vba/Rubberduck] Hosch250 pushed commit a1235b77 to next: Prevent flicker when refreshing grid views
[rubberduck-vba/Rubberduck] Hosch250 pushed commit b297f899 to next: Rename tests (one fails because of buggy code)
Merge pull request #705 from Hosch250/next

Closes issue #698
[rubberduck-vba/Rubberduck] build for commit c976b25a on next: AppVeyor build succeeded
[rubberduck-vba/Rubberduck] build for commit c976b25a on next: AppVeyor build succeeded
[rubberduck-vba/Rubberduck] build for commit c976b25a on next: AppVeyor build succeeded
 
7:35 PM
@RubberDuck so, I'm refactoring the test base class into the MockFactory.
yikes, 224 tests
 
@Mat'sMug What do you think about making our extension methods not be extension methods?
 
which one(s)?
 
The specific one I'm having an issue with is CodePane.GetSelection().
 
public static QualifiedSelection GetSelection(this CodePane code)
any ideas on how to not do that with an extension method?
then there's this one:
public static void SetSelection(this CodePane codePane, Selection selection)
 
7:51 PM
public QualifiedSelection GetSelection(CodePane code)
 
ok, and where would that be?
 
Same place it is now.
It would basically be an extension that isn't an actual extension.
 
won't compile
public static class CodePaneExtensions
 
Oh, I see.
 
The only way for it to not be an extension is to make it a member of our own interface that wraps CodePane.
 
7:52 PM
public static QualifiedSelection GetSelection(CodePane code)
 
@Hosch250 then you still have a static method
 
@Mat'sMug Thing is, we won't need to mock it.
We can just call it then.
 
you still need a way to set and get the selection
 
Bother.
 
@RubberDuck that wrapper isn't written, is it?
 
7:54 PM
I wish I hadn't deleted my branch creating that wrapper.
I had a couple of them done.
I wish Moq supported extension methods - at least to call v.Setup(v => v.Extension()).Returns(value);
 
the only way I see is by DI-intercepting calls to CodePane.. and it's not exactly simple.
 
AFAIK, that wouldn't cause an issue because it doesn't even call the extension...
 
@Hosch250 static + inheritance == IncompatibleParadigmException
DI interception would work
 
So, should I go back to creating the VBE interface?
 
no
 
7:59 PM
OK.
 
we need a class to wrap a CodePane, just for selection get/set purposes
no need to wrap the entire IDE for that
 
There are more extensions than just for CodePane.
 
I know
but one thing at a time
 
But, I'll write a CodePane interface/class quick.
 
good
there's 3 methods there.
QualifiedSelection GetSelection();
void SetSelection(Selection selection);
void ForceFocus();
then whoever is currently using these extension methods, needs to be constructor-injected with that interface
and the extension method calls replaced with these ^^
it creates a new problem though
@Hosch250 you see what that new problem is?
 
8:06 PM
Not at the moment.
I'm not even sure what DI interception is.
 
nevermind the interception thing, I was wrong. but interception is really really cool :)
you know the decorator pattern?
 
No.
 
another day then ;-)
 
Reading about it.
 
anyway the problem is that you're going to need a CodePane instance to wrap
 
8:11 PM
Yup.
public RubberduckCodePane(CodePane codePane)
{
    _codePane = codePane;
}
Got that problem taken care of.
 
lol
 
BTW, ForceFocus() uses internal constructers in VBEditor.
So, I can't stick that in there unless I change those constructors to public.
 
that codepane wrapper needs to live in the VBEditor assembly
anyway what I was getting at, is that you're going to need to tightly-couple everything currently using the extension method to that wrapper
take ParseErrorEventArgs for example
    public void Navigate()
    {
        var selection = new Selection(_exception.LineNumber, _exception.Position, _exception.LineNumber, _exception.Position + _exception.OffendingSymbol.Text.Length - 1);
        _component.CodeModule.CodePane.SetSelection(selection);
    }
var wrapper = new RubberduckCodePane(_component.CodeModule.CodePane);
wrapper.SetSelection(selection);
^^ you don't want to new it up all over the place
take RefactorMenu as another example:
        private void view_Navigate(object sender, NavigateCodeEventArgs e)
        {
            if (e.QualifiedName.Component == null)
            {
                return;
            }

            try
            {
                e.QualifiedName.Component.CodeModule.CodePane.SetSelection(e.Selection);
            }
            catch (COMException)
            {
            }
        }
var wrapper = new RubberduckCodePane(e.QualifiedName.Component.CodeModule.CodePane);
wrapper.SetSelection(e.Selection);
 
Yes.
I've got the wrapper done.
 
ok. now make an abstract factory for it
you want to avoid doing new RubberduckCodePane(...)
so instead you'll have
var wrapper = _factory.Create(someCodePane);
wrapper.SetSelection(...);
see the gain?
 
8:20 PM
Not really. Do we need to new the factory up every time instead then?
 
you ctor-inject the factory!
 
Oh.
 
Actually..
@Hosch250 make the wrapper expose a property instead of the method combo!
 
[Hosch250/Rubberduck] Hosch250 pushed commit 6218931a to next: Implement IRubberduckCodePane
 
Huh?
Good thing you pulled my changes.
 
8:28 PM
lol
 
That is what I've done so far.
 
we have get/set logic implemented in methods right?
with the CodePane as an instance field..
we could have something like this
 
public Selection Selection { get { get-logic } set { set-logic } }
 
But, what about parameters?
Oh, OK.
 
8:31 PM
you already have a CodePane, and your value is a Selection
 
Selection doesn't need any.
Yeah, get it.
 
then the mock can be setup like a regular property
when you mock the factory, you set up the Create method to return a mock wrapper with that property set up like any other regular property. should just work
make sure the getter can't throw
 
[Hosch250/Rubberduck] Hosch250 pushed commit 7352d3ed to next: Merge methods into property.
 
Like that?
 
no. can't be an auto-property
 
8:36 PM
It isn't.
 
oh lol I was looking at the interface
 
@Hosch250 exactly. except wrap the getter in a try-catch - getters shouldn't throw under any circumstance
 
Catch, what?
 
there could be a COMException
hmm
 
8:40 PM
Would catching a COMException be good enough?
I don't like doing catch-alls anymore.
 
yes
 
[Hosch250/Rubberduck] Hosch250 pushed commit 69c98ab0 to next: Add try/catch
 
now, that's a lot of code for a property. how about extracting that into private methods?
so they were part of the public interface, and now get demoted into implementation details, encapsulated with a property
beautiful, isn't it?
 
[Hosch250/Rubberduck] Hosch250 pushed commit bee89e5a to next: Add private methods
 
I'm going to take my dog on a walk.
BBL.
 
8:45 PM
cool
 
00:00 - 21:0021:00 - 00:00

« first day (400 days earlier)      last day (2780 days later) »