« first day (199 days earlier)      last day (2981 days later) » 
00:00 - 15:0015:00 - 23:00

3:18 PM
What if someone forks it and then... runs with it? How much weight does "copyright 2014 Mathieu Guindon & Christopher McClellan" have in the event that the fork becomes a "thing"?
@RubberDuck ^
I'm new to open-source stuff... am I being paranoid?
 
Well... we used the MIT license, so there's nothing stopping them.
But the only time that really makes sense to do is if the original maintainers aren't actively working on the project.
And either way, the license requires attribution to us.
 
That's all that matters really
Anyway that user doesn't seem to be very active on github.. he forks and then nothing
 
Personally, I'm not in it for fame, glory, or $$. I sincerely want to make the IDE better for all the poor saps who are still using VBA.
Yeah. I noticed that too after the fact.
 
I'm thinking of adding a notice à la Paint.Net - if you paid for this software ask for a refund now, they ripped you off
And then add a "donate" button :)
 
@ticker That's actually a pretty interesting question!
 
3:26 PM
@Mat'sMug Not a bad idea so long as we never decide to charge for the installer.
 
@Phrancis missed it.. link?
I think we'll need a full-featured, stable version, and a website first :)
 
Oh yeah. I'm not arguing that. Just saying that that kind of thing is always an option. We're giving the code away. Nothing says we have to give the installer away.
Or documentation of any library code we expose for that matter.
 
1
Q: Outlook 2010 Macro display mail when reminders fire

user1955214i have several reminders set up and wanted difference emails to be shown and ready to be sent when the reminders fire. i know how to do one reminder but several has been giving me endless problems. please see code that i currently have below, i have tries the if else code as well but not gettin...

 
But the project would have to catch some traction long before I would ever consider those things.
And honestly, I wouldn't want to deal with the mess of a fact that we live in different countries. No. This is for my resume and personal satisfaction.
 
yeah
 
3:31 PM
There's just this business guy inside of me that nags at me.
 
^^ that
 
> You're doing this for free @ducky?
 
lol
 
LOL. Yeah. That.
303 commits by the way.
 
also I wouldn't want to put "Rubberduck VBE add-in" on my CV and then an employer looks at that and says "no way! you did that?" ..and all Excel/VBA users in the company have their Rubberduck install
 
3:32 PM
And I'm obviously not into the whole work thing right now...
Huh? You wouldn't want that?
 
@RubberDuck Work... what's that? ;)
 
@Phrancis THat thing I'm supposed to be doing right now...
 
@RubberDuck I mean yeah, ... IDK, would be awkward :)
 
Yeah, but a good kind of awkward if you ask me.
LOL. I just sent a group email out to about 30 people. So far I've gotten 15 out of office messages.
2
 
Sounds like that time of the year!
 
3:37 PM
@RubberDuck and we'll be at 500 by the end of 2014! ...maybe.
(if you keep "working" like that!)
 
I had to promise my wife I'd take a break once I get this feature done.
 
did you define "done"? ;)
eh, there's no rush - we're doing this because it's fun
 
Of course not!
 
LOL!
 
Not to her at least
I want to get the config stable and get a new version published. Then I'll probably take a few weeks off.
Pick my guitar back up or something.
 
3:41 PM
Didn't know you played guitar!
 
I should do that too!
 
And holy carp this computer is acting jacked up today.
 
@Phrancis Yeah. It's been a long time though. Picked it back up yesterday and it's like I've forgotten everything.
 
I tried playing bass guitar for a while. Never could really get the hang of it. Fingers are too clumsy :)
 
I'll try to get as much of the Code Inspections milestone done, at least all that can be completed with the current state of the parser. I'll keep the Expression parsing for 2015.
 
3:51 PM
Reading up on singleton pattern now. Probably some reflection research later. I don't completely grok that code.
But I have the general concept of what it's doing.
 
TBH I'd rather not use a singleton.. I'd like to end up refactoring everything toward proper DI/IoC eventually - and Singleton directly contradicts that. Actually I should be working on that instead of the code inspections..
The bigger the project, the more unlikely the refactor
The reflection code basically says "give me all types in this assembly. Good. Now give me all types that implement a given interface. Good. Now give me all the default constructors. Good. Now invoke them. Good. Now cast these objects to that interface type because I don't care about the specific implementations but I need more than just an Object here."
@RubberDuck is it the reflection or the LINQ that's more or less grokked?
 
I think it's a combination of the two. I'm starting to grok Linq better.
I even used it someplace or other to do something... Can't remember where.
I'm not a fan of the singleton either @Mat'sMug.
Maybe I just need to take a look at how we implemented somethings to see if there's an opportunity to inject a ConfigurationLoader instead of a Configuration.
 
4:26 PM
> Huh? What is object[] o = { }; ??
 
an empty array
I'd have written it as var o = new object[] { };
actually... o is not part of my variable-naming vocabulary..
 
> Publisher doesn't support Application.Run. Unit testing may not be possible. I'm uncomfortable with an implementation of HostApp that does nothing on Run. Removing this class entirely may be a sensible option.
 
there has to be another way to run VBA code from COM interop
perhaps via Visual Studio Tools for Office (VSTO)?
 
> > The string can contain the following: a loaded presentation or add-in file name followed by an exclamation point (!), a valid module name followed by a period (.), and the procedure name. For example, the following is a valid MacroName value: "MyPres.ppt!Module1.Test."

http://msdn.microsoft.com/en-us/library/office/ff744221(v=office.15).aspx

A more proper implementation would be

return string.Concat(projectName, "!", moduleName, ".", methodName);
 
@Duga will have a pretty nice summary for us tonight!
 
4:38 PM
@Mat'sMug Interesting...
 
very
 
4:56 PM
Hi! If your code is working as intended and is just "ugly", make sure you take a look at Code Review. — retailcoder 10 secs ago
 
5:23 PM
> When an instruction contains a string literal that contains a colon (":"), it is incorrectly taken as an instruction separator and the string literal is split into two [broken] instructions.
 
5:34 PM
<lunch>
 
Hi.
 
@Hosch250 Hey @Hosch250!
 
@RubberDuck Do you know of any webpages (preferably MSDN) that I can read about this on: base._application.Run(target);?
If you don't, I'll look it up myself.
That is in the ProgramApp() methods.
What I was working on last night.
 
@Hosch250 You wouldn't exactly find a MSDN on that. I wrote the HostApplicaiton base class.
 
I want the documentation on the _application.Run() method.
The one that isn't in Outlook or Publisher.
 
5:49 PM
But all it really does is gets a handle on the host application (excel, word, etc.) and passes the call along to it via the Application.Run method. Each office app has it's own version, but here is Excel's.
 
Making unit tests work in Outlook will require some serious gymnastics...
 
OK.
Thanks, @RubberDuck.
Just what I was looking for.
 
@Mat'sMug Maybe... We'll see. The trouble will be getting a handle on the host app I think.
An implementation's Run method doesn't have to call the base Run method.
 
I couldn't find anything on Publisher.
 
5:53 PM
It's probably similar to outlook, but I've no idea because I don't have publisher. Might have to hijack my wife's laptop....
She has a student license of Office, so she has it all.
I just can't imagine that fight....
> You want my laptop so you can do what?!
 
@RubberDuck I have Publisher.
It is the same as Outlook.
I don't have Visio, though.
 
Nobody has Visio.....
Not for their own personal use at least.
 
Visio... yuck. Clunky program.
 
I know someone with Visio.
Over the web, that is.
We can't support Visio unless we have it installed because we need to add the references and everything.
 
@Hosch250 Nonsense. You just need the PIAs to compile the project. There's a PIA for Visio. msdn.microsoft.com/en-us/library/15s06t57.aspx
Just can't test it without an install.
 
6:06 PM
OK.
 
6:21 PM
@Phrancis less clunky than shapes in Excel or Word!
 
True. I do prefer something like LucidChart better.
2
 
Publisher can't be the same as Outlook. Outlook will require Rubberduck to write code in a Session object.. I don't even know what Publisher does!
 
Publisher is for publishing things, such as newsletters, banners, cards...
 
6:47 PM
</lunch>
@Phrancis NASA uses LucidChart!
 
Nice!
 
7:03 PM
Really? That's cool.
I like Lucidchart and Nasa.
 
7:17 PM
Well, now what should I do?
Should I read about Access and do the test cases?
 
@Hosch250 if you have some spare time, issue #56 has been lingering for a while - if you could take a look at the Parser class and see how it could be DRY'd up... or should I just post it on CR?
> Seriously. Stop this madness. Refactor. ASAP.
 
DRY?
 
> Don't repeat yourself
 
the Parse method was literally copy+pasted 3 times
 
Oh, OK.
 
7:42 PM
I'm totally the one to blame for this crap
 
OK.
 
@Mat'sMug Ehhh You've not looked at my code appearantly.
 
lol
but it works!
2
 
in The 2nd Monitor, 15 mins ago, by rolfl
Alright, how active are the folk in here at the moment.... what odds on a pizza question for ,, and
 
8:01 PM
all right, I stepped on my pride here, and put it up on the main site:
0
Q: My recursive parser is wet behind the ears (well, it's not DRY at least)

Mat's MugYes, I've written this ........crap. I'm guilty of Ctrl+C/Ctrl+V coding here, of which I'm very unproud, but I'm not sure if it's because I messed up or because it's just the way it has to be (please, no!). [ComVisible(false)] public class Parser { private readonly IEnumerable<ISyntax> _gram...

 
That's a lot of code... Sometimes I forget how common it is to post that much code here.
 
Sorry, I was delivering someone's pizza hat.
2
Looking at that now.
 
@Hosch250 earn some CR rep along the way! :)
 
OK.
 
8:10 PM
@Mat'sMug Hmmmmm..... functional programming....
I'm looking at it in KDiff. It's not the code that's duplicated. It's the structure.
    var instructions = line.SplitInstructions();
    foreach (var instruction in instructions)
That loop happens in both.
 
indeed
 
Perhaps something like
Ugh. I don't know how to write it in C#
 
of course you can!
 
I think I know how to do it the hard way.
Which doesn't make me happy.
It's a damn good question.
 
It is just not similar enough that you can split it into different methods.
At least, not easily.
 
8:14 PM
it's a mess!
 
The hardest part is you can't see it all at once.
At least, I can't.
 
copy/duplicate the tab, and move it to your 2nd monitor if you have one
 
I don't.
 
Win + -> & Win + <-
 
I split VS and my browser, and I'm using your question and the real code to compare them.
@Mat'sMug What does this do?
??
 
8:19 PM
@RubberDuck didn't know about these - I just drag the window to the sides..
 
It's parses code into a syntax tree.
@Mat'sMug you might want to add sample input/output.
LOL. Yeah. I didn't know it either. Bonus part is that you can dock a window in the middle of a dual monitor setup.
 
@RubberDuck No, it is the null-coalescing operator.
 
LOL. Oh. That.....
I kinda lost it on someone for abusing it the other day.
 
Oh.
 
2
A: Conversion helper with support for enumerations and Nullable<T>

RubberDuckDoc Comments Well done! I rarely see a single method so thoroughly documented with XML doc comments. There's a catch though. Be careful about just how much you do this. It can really obstruct the readability of the actual code. I count roughly 20 lines of documentations here. Is all of that real...

> if ((underlyingNullableType ?? type).IsEnum) {
Quick! Under what conditions do we enter that loop?
Times up.
 
8:22 PM
lol
 
Talking about XML doc comments, I have so many warnings about missing ones, I can hardly find my error messages.
 
remove the warnings?
 
Yeah.
 
(or add XML doc)
:)
 
I've been trying to do better about that before merging.
I'm afraid of this project getting unwieldly.
 
8:26 PM
in The 2nd Monitor, 12 mins ago, by janos
but first, @Mat'sMug are you going for pizza with that?
 
You guys program like me.
No comments anywhere.
 
The code should document itself.
I try to write code that documents itself...
 
comments are usually clutter
 
Yeah, but it is a bit tricky when you don't know everything that is going on.
 
that's why the warnings on missing XML documentation!
 
8:29 PM
It looks like my code too, but I need to trace what is happening.
 
did you read the wiki?
 
In this, I mean, to get exactly what is happening.
 
I'm hoping the wiki / "code overview" does a good job at summarizing that
 
You did a good job on that. I probably need to do something similar for the Configuration.
 
OK, getting ideas now.
Leaving chatrooms to prevent interruption.
 
8:35 PM
cool!
I just realized "_" looks like a spooked out smiley
2
 
OK, a couple questions.
In ParseModuleMember, you have this:
if (syntax.Type.HasFlag(SyntaxType.HasChildNodes))
{
  var codeBlockNode = node as CodeBlockNode;
  if (codeBlockNode != null)
  {
    if (node is ProcedureNode)
    {
      currentLocalScope = localScope + "." + (node as ProcedureNode).Identifier.Name;
      yield return ParseProcedure(publicScope, localScope + "." + (node as ProcedureNode).Identifier.Name, node as ProcedureNode, lines, ref index);
      currentLocalScope = localScope;
      parsed = true;
      break;
    }

    yield return ParseCodeBlock(publicScope, currentLocalScope, codeBlockNode, lines, ref index);
 
yep
 
@Mat'sMug Pinned. Why? Because. That's why.
 
There, that looks better.
 
so, what's up?
 
8:42 PM
Hold, on, I'm want to ask about a couple changes, and I ran into a bit of trouble.
OK, so you have this:
if (syntax.Type.HasFlag(SyntaxType.HasChildNodes))
{
  var codeBlockNode = node as CodeBlockNode;
  if (codeBlockNode != null)
  {
    if (node is ProcedureNode)
    {
      currentLocalScope = localScope + "." + (node as ProcedureNode).Identifier.Name;
      yield return ParseProcedure(publicScope, currentLocalScope, lines, ref index);
      currentLocalScope = localScope;
      parsed = true;
      break;
    }

    yield return ParseCodeBlock(publicScope, currentLocalScope, codeBlockNode, lines, ref index);
(I'd made a mistake in the previous copy.
Could that come down to this?
if (syntax.Type.HasFlag(SyntaxType.HasChildNodes))
{
  var codeBlockNode = node as CodeBlockNode;
  if (codeBlockNode != null)
  {
    if (node is ProcedureNode)
    {
      yield return ParseProcedure(publicScope, localScope + "." + (node as ProcedureNode).Identifier.Name, lines, ref index);
      parsed = true;
      break;
    }

    yield return ParseCodeBlock(publicScope, currentLocalScope, codeBlockNode, lines, ref index);
    parsed = true;
    break;
  }
}
 
what happens to the currentLocalScope?
 
You don't need it.
 
a CodeBlock doesn't define a scope, a Procedure does
and yes, I do need it
well the code inspections and refactorings do
 
Instead of changing it like in the top version, I just passed the value directly.
So this:
currentLocalScope = localScope + "." + (node as ProcedureNode).Identifier.Name;
yield return ParseProcedure(publicScope, currentLocalScope, lines, ref index);
currentLocalScope = localScope;
Becomes this:
yield return ParseProcedure(publicScope, localScope + "." + (node as ProcedureNode).Identifier.Name, lines, ref index);
 
oh
 
8:46 PM
And this isn't needed because currentLocalScope wasn't changed.
yield return ParseCodeBlock(publicScope, currentLocalScope, codeBlockNode, lines, ref index);
currentLocalScope = localScope;
Or am I missing something?
 
it's highly possible I fucked up here
 
It's okay. You wrote tests to validate the behavior. It can be changed.
 
what matters is that a procedure is scoped at the module, and that code blocks inside a procedure are scoped to the procedure
(I don't think I have tests for scoping ...yet)
 
So how would I test if my changes broke it?
 
1 min ago, by Mat's Mug
what matters is that a procedure is scoped at the module, and that code blocks inside a procedure are scoped to the procedure
 
8:49 PM
Not sure I get that.
Sorry.
 
the scope of a module is the name of the project it's under; the scope of a procedure (and anything in the declarations section of a module) is the name of the module it's written in; the scope of the code inside a procedure is the name of the procedure
 
OK, I see.
 
look at the Identifier equality override
if two identifiers have the same name and scope, they're the same
 
Are there any tests I could run in the IDE to test it?
Yes, I get code scope.
 
I'm not sure I've written them
 
8:52 PM
OK.
I just don't want to break anything.
 
well, if it ain't tested, it's ain't broken right? :)
 
I guess.
OK, here goes.
 
I mean, if DRYing up the parser still makes all parser tests pass, I'll deal with scoping later
 
OK.
 
I'm not even sure my scoping logic is sound
like, an identifier called foo with "Module1" scope and an identifier called foo with "Module1.Procedure1" scope, ...should be the same
I just know I'll need a way to scope things, and that the parser code has a role to play in this
 
8:56 PM
Is it that important to pass an int as ref?
ParseCodeBlock(publicScope, currentLocalScope, codeBlockNode, lines, ref index);
 
yes, because when ParseCodeBlock returns, you don't want to re-scan the rows that were processed in that call
 
Oh, I see.
 
it's a meaty piece of code isn't it :)
 
Yeah.
 
sometimes I look at it and I'm kinda surprised it works
2
 
9:00 PM
It might not, once I'm done.
 
lol
feel free to check out a branch and play!
 
Well, everything I know seems to work still.
The Assert tests and Code Inspections.
 
9:19 PM
I'm not seeing anything else.
 
There's the Code Explorer @Hosch250.
 
It doesn't look too bad to me - while very similar, I see little outright duplication that can be split into sub-methods.
OK, thanks.
 
I think a delegate function might help... not sure yet.
It's hard to find a spot where it would be reasonable...
 
I need to Bing what a delegate function is.
 
@Hosch250 yet at the beginning, code was outright copied and pasted :)
 
9:29 PM
Particularly because I'm not 100% on the implication of using one in the Enumerable vs. not...
 
Yeah, usually when I do that, I need the same structure, different data types.
 
whenever I do that I feel dirty inside
 
That is why I can't split it down - a lot of it is different datatypes.
@RubberDuck What needs to be done there?
 
I don't know. That's the problem.
 
OK, what is going wrong?
Which problem number is it?
 
9:34 PM
Ummmm the fact that I've only been writing C# for 6 months?
 
So you don't know anything except it needs fixing?
Are there any symptoms about it?
 
what is it?
 
The code we've been talking about all afternoon....
 
I'm lost.
I can't even find the code for the code explorer.
 
9:37 PM
Oh, I thought that was just the UI.
 
Why are we talking about the Code Explorer. I'm confused.
 
I saw that.
@RubberDuck You brought it up!
@RubberDuck See
 
31 mins ago, by Hosch250
Well, everything I know seems to work still.
31 mins ago, by Hosch250
The Assert tests and Code Inspections.
10 mins ago, by RubberDuck
There's the Code Explorer @Hosch250.
 
I'm not getting it.
I thought you said there was a bug there.
 
I was just saying that changes to the parser could have affected the Code Explorer.
 
9:39 PM
Oh, I see.
 
No. Sorry about that.
 
OK, checking that.
 
FWIW I added a bit of context to my post
(including a screenshot of the Code Explorer ;)
 
Hey guys, I found something cool!
 
in The 2nd Monitor, 2 mins ago, by skiwi
> Site Stats
20,001 questions
 
9:41 PM
Okay. So, some Rubberducking here.
    var instructions = line.SplitInstructions();
    foreach (var instruction in instructions)
    {
        var parsed = false;
        foreach (var syntax in _grammar.Where(s => !s.IsChildNodeSyntax))
        {
 
Put your cursor in the typing box and press CTRL-Z a bunch.
 
> That would be consistent with how the VBA solution explorer displays them - sorted alphabetically, and bold.
 
That is the duplication that happens all over the place.
So, in reality, that should get passed a delegate and an IEnumerable<Syntax>
 
true. no matter what, instructions in the current line must be iterated, and for each line, the grammar needs to be iterated as well
 
Does that make any sense @Mat'sMug?
I'm not sure how I would go about implementing it though.
 
9:43 PM
not sure either
 
Not quite there yet.
Hi @Phrancis!
What's that?
 
@RubberDuck O HAI DUCKY
 
CR got its 20K'th question asked today
 
Oh! That's awesome!
 
@RubberDuck The Code Explorer is still working.
Should I submit my slight change?
 
9:48 PM
Nice!
 
Anyone have time for a quick review one of our Wiki pages? I updated it today and I want to make sure it reads good for someone who would be new to the game
 
The output was exactly the same as before the change.
 
@Phrancis Sure. I've checked out and have 10 minutes left.
 
9:50 PM
> Each player has access to the same array of 25 cards
s/array/deck
 
^^
 
> Upon starting a game with a player or AI, the player is prompted to build a deck.
s/deck/library
It's standard card game lingo.
This needs it's own header.
> The goal of the game is reduce the other players health to zero. Each player starts with 10 health. Damage is caused to the other player by attacking them directly with units or by spillover damage. (spells are not currently in the game yet)
I don't see anything else of note.
I'm gone guys. Might be working on Rubberduck later. Not sure yet. Gotta feel out the vibe.
 
OK, see you.
 
later!
 
9:55 PM
@Mat'sMug I submitted a slight change that I think improves ParseModuleMembers.
You might want to check it out.
I'm going now too.
See you.
 
@Hosch250 I'll want to write at least one unit test for scoping to make sure it doesn't change the behavior
later!
 
@RubberDuck Thanks Ducky for the review!
 
10:21 PM
@Mat'sMug I have done some things to your Delegate module
? list.Create(1,2,3).reduce(lambda.FromShortHand("_ & _"))
123
exciting times.
 
No problem@Phrancis.
Hi @cheezsteak!
 
10:39 PM
@cheezsteak that's pretty cool!
 
00:00 - 15:0015:00 - 23:00

« first day (199 days earlier)      last day (2981 days later) »