« first day (1017 days earlier)      last day (2163 days later) » 

12:00 AM
You might want to start on something slightly less complicated if you aren't understanding it.
I'd start by learning about the primary structures used by the language.
 
Where would I start? Or what should I start with?
 
Those structures usually apply to all languages working off that paradigm.
 
What are the primary structures?
 
Conditional expressions and loops, besides methods, classes, and interfaces.
 
RELOAD!
[Hosch250/Rubberduck] 10 commits. 355 additions. 615 deletions.
 
12:01 AM
Just do a search for that and read?
 
If you know those, you can generally figure out what code is doing by reading it.
 
[retailcoder/Rubberduck] 25 commits. 7453 additions. 6669 deletions.
 
One of my favorite starting projects is doing a number-guessing game.
 
[rubberduck-vba/Rubberduck] 10 commits. 7 opened issues. 14 issue comments. 412 additions. 762 deletions.
 
It uses loops, conditionals, input, and output.
 
12:01 AM
> This is commonly used for null coalescing:

```
Sub Foo()
Debug.Print IsNull(Null) '<-- True
Debug.Print IsNull(Null & vbNullString) '<-- False
End Sub
```
 
And methods/functions.
After you get used to simple programs, start adding custom types in, and so on.
 
@Duga Fine. That's the last time I'll try to do a merge commit of a resx file in the git web editor...
 
gah, found this in a Select Case strValue statement
 
@Comintern LOL.
 
` Case Empty, vbNull, "", vbNullString`
 
12:03 AM
UI is probably the last thing you should be worried about.
 
isFirstRowHeader ? "Yes" : "No"; is a conditional that uses the ternary operator?
 
Yep.
 
@IvenBach Sounds like you're tackling too many new paradigms at once.
 
@ThunderFrame Yeah, I think he needs to take a step back.
Start with easier code, get it to work, and post it on CR.
I have three years of experience and I started with one of the best programming books to get where I am, and I'm an unusually fast learner.
 
That's my main issue. I don't know where to begin or what to do to start.
 
12:06 AM
@IvenBach Start with commandline programs.
 
Is that with console.writeline?
 
It can be a little game (there are lots--you could even add ASCII art).
@IvenBach Well, that is output to the console...
 
What would then be the commandline? These are all the terms that I don't understand.
 
It could be a useful tool--like the one I created that replaces any hard-coded text with different text on all files in a directory.
@IvenBach The command line tool--you know, the console.
Create a console application with VS.
 
I've done several small console applications.
 
Great. Start doing more complex ones.
Almost everything can be done on the console.
 
I started reading amazon.com once. Way to long.
 
12:11 AM
@IvenBach Gosh, never touch that stuff.
 
I should probably read that...
 
Never, ever, ever touch anything that tries to teach you something in N hours or is for dummies, or whatever.
 
I'm going through the parts I don't understand and basically regurgitating what the book has as examples. That's why I'm trying to do something, I thought was simple, to help me learn.
 
@IvenBach Are you grasping what's being said in the first half?
 
Either get something like a college textbook or jump in and use SO to search your problems.
 
12:12 AM
I believe so.
 
It's probably better than hacking around in the editor to figure it out. Not even close to $28 better though.
 
@Comintern I'd disagree.
Start writing something, search your errors, rinse, and repeat.
That's how I taught myself C# and WPF, and everything else I know about programming.
 
Eh, in general I'd agree with your disagreement.
I taught myself pretty much everything except VB.NET (which I never use) by just jumping in and hacking away at it. It's good to have a starting point though.
 
directionless exploration is good learning, but directionless learning is dangerous. You need to back it up with some reading, or code review, or youtube, or whatever.
 
I started with this book based on a previous co-workers recommendation.
 
12:14 AM
@ThunderFrame Code review, yes.
 
@IvenBach I'd bet $10 that that coworker writes unmentionable code.
 
or you end up writing a VBA case statement like:
 
@Hosch250 His code is exceptional.
 
Case Empty, vbNull, "", vbNullString
 
12:15 AM
@IvenBach I'm not sure which way to take that statement.
 
He knows how to write really really good code.
 
How do you know? Because you can't understand it?
If it is smart code, then it is most likely bad code.
 
Code that is thoroughly tested and concise.
 
Oh, he golfs it?
 
^ That code works, but it shows the author had no idea what a String is, what Empty is for, why a VBA string is unlikely to vbNull, andd why "" and vbNullString are functionally identical
 
12:16 AM
</joking>
 
It's not golfed.
 
OK, sounds reasonably OK.
 
He has a lot of experience (5+ years) and was helping me learn the basics of C# to get started.
 
Well, you know how I learned WPF? I made a simple program that displayed "Hello" and used code bindings to a selection of colors to determine the font color/background color.
I did it with radiobuttons, comboboxes, listsviews with converters, and lots of different ways.
 
12:18 AM
I learned WPF by hacking at RD's UI. Someone should probably take a look at that...
 
I vaguely get binding but don't know how to properly use it without following the books examples.
 
Well, start with something simple and practice and break things.
Look up the problem on SO, learn how and why, and keep going.
 
[rubberduck-vba/Rubberduck] build for commit fb4a8358 on unknown branch: AppVeyor build succeeded
 
That's what I thought I could do with accessing the CSV.
 
Usually working with collections of data is a little more difficult.
 
12:20 AM
Huh. Why would shouldUseEachRuleInRulesCollectionToCheckEachReference fail on my local but pass on AppVeyor?
 
You typically have to set up templates to get the display right, and stuff.
Work with a single item, or a small set of simple, unchanging items.
 
What would constitute a small set?
 
Like, maybe a set of 5 colors for the font color.
Red, blue, green, black, and yellow.
Then, you can practice converters to convert them to a display string, or you could set up a template to show the color in a little box beside the item, or whatever.
Just do something really small and don't worry about doing anything dynamic yet.
Odds are, you'd ruin your data playing around anyway.
I know I've ruined my data more than once when I was learning :/
 
That's why I always work on a backup whenever trying something new.
I tried to dl and check out your checkersUI but can't get it to work.
 
LOL, you need my Checkers library as well.
And it is a UWP app, so you need the latest update of Windows 10 and the tools for creating UWP apps installed to VS.
 
12:27 AM
I don't have that.
 
Oh, and you need F# installed to build the other thing.
And you need to build it in debug mode because F# isn't supported by .NET Native--the release-build compiler.
 
I'm trying to get off my Excel VBA island.
 
> meh, I don't like single line If statements in VBA.

You *could* take this inspection further and create inline `If Else` statements, but I like those even less.

- They make eyeballing the code more difficult, you have to check the entire `If` statement to check it is/isn't an inline `If`.

- Adding a second statement to the `If`, requires multiple operations, whereas a block `If` just requires a carriage return.
 
@Hosch250 Is this the kind of simple stuff you were saying I should practice?
using System;

namespace CallMethodsWithinSameClass
{
    class Program
    {
        static void Main()
        {
            bool I_Has_Energy = true;
            OtherClass TestClass = new OtherClass();
            I_Has_Energy = TestClass.NoIDont;
            Console.WriteLine("Do I have energy? " + I_Has_Energy);
            Console.WriteLine("Getting a public method " + TestClass.GiveMeAString());
            Console.WriteLine("Grabbing the privates " + TestClass.GrabThemPrivates());
            Console.ReadKey();
 
Umm, that is pretty awful code.
But, if that is what you know, then start working off that.
 
12:32 AM
That was one of my first examples I tried myself.
 
Hopefully you learned something since then.
 
That is about what I know, maybe a little more.
 
you know about string formatters?
 
Well, if you want me to tell you what to do, then I'd say go write a number guessing game or a bulls and cows game and put it up for review on CR.
You'll get positively shredded, but you'll learn.
 
Console.WriteLine("Do I have energy? {0}", TestClass.NoIDont);
 
12:34 AM
@ThunderFrame I wrote this before I knew about that.
 
OK, so that framework makes it really easy to add new fakes. I kicked out InputBox in like 3 minutes.
 
12:52 AM
Thanks for the continued instructions. I'll try and come up with another example that has a little more to it.
 
> I've come across code where the author seemingly didn't know that you can use a `Not` operator, and so wrote code like:

```vb
If IsNumeric(slChr) Then
Else
slNewString = slChr & slNewString
End If
```

RD should have an inspection that introduces the `Not` operator and removes the `Else`
```vb
If Not IsNumeric(slChr) Then
slNewString = slChr & slNewString
End If
```

Of course, the condition might already *have* a Not operator, or use an inappropriate equalit
 
@Duga I've stopped adding examples - there are too many
 
There seems to be an exception somewhere.
Well, those exceptions are in the call stmt one and the missing annotation arg one.
 
2017-03-19 12:32:34.6803;DEBUG-2.0.13.36418;Rubberduck.Parsing.VBA.ParseCoordinator;Parsing run finished after 6s. (thread 9).;
2017-03-19 12:32:34.7123;ERROR-2.0.13.36418;Rubberduck.Inspections.Concrete.Rubberduck.Inspections.Inspector+<FindIssuesAsync>d__6;Rubberduck.Root.InterceptedException: Unable to cast object of type 'Rubberduck.Parsing.QualifiedContext`1[Rubberduck.Parsing.Grammar.VBAParser+OptionBaseStmtContext]' to type 'Rubberduck.Parsing.QualifiedContext`1[Rubberduck.Parsing.Grammar.VBAParser+AnnotationContext]'. ---> Rubberduck.Root.InterceptedException: Unable to cast object 
^ something like that?
 
I see the problem...
So, we walk the tree and pass all the results to each inspection...
The inspection is only expecting its results, so it fires an inspection for all the results...
 
> **Proposal 10:**
The RD COM interfaces need to be designed specifically with "VBA friendliness" in mind. That means that no `ComVisible` interface should return a type that that isn't natively supported in VBA (i.e. any unsigned types other than `Byte`). For a general reference of types that can be used by VBA, [see the VarEnum lookup in the ComVariant class](https://github.com/rubberduck-vba/Rubberduck/blob/next/Rubberduck.Parsing/ComReflection/ComVariant.cs#L9-L40). If in doubt, cast to
[Hosch250/Rubberduck] Hosch250 pushed commit 703db936 to Issue2884: Close #2898
Merge pull request #2902 from Hosch250/Issue2884

Make Implement Interface use the rewriter
 
2:05 AM
@Mat'sMug will murder me if I merge that, but he probably won't be ready by the next release anyway.
On the other hand, why do the inspections have access to other inspections' results?
2
 
[rubberduck-vba/Rubberduck] build for commit 703db936 on unknown branch: AppVeyor build succeeded
[rubberduck-vba/Rubberduck] build for commit 933e96ff on unknown branch: AppVeyor build succeeded
 
hi
@ThunderFrame
 
All good points except #3. If you have to write a comment so you know what your code does, then rewrite your code so your code tells you what it does. Writing a comment to understand your code == Fail. — Hosch250 3 mins ago
 
do you know of any good custom controls for winforms?
all the ones online are $$$
 
Umm, I try not to use WinForms, so I don't.
I take it writing your own doesn't work in this instance.
 
2:14 AM
time
 
Figured as much.
 
this isn't bad but it's little buggy
 
If it's just a little buggy, maybe you could use it as a starting point.
 
i guess
 
@Jelly - vbaccelerator.com what what I used all the time back in the day.
Most of them were written by hard-core VB6 devs, so for the most part they're pretty solid.
 
2:17 AM
thanks intern
this looks like 2003
ribbon didn't exist back then
 
@Jelly hi
 
hi thunder
 
@Comintern just be careful modifying those enums. I don't care if you do, but they're basically mapped to libgit2sharp's enums. chat.stackexchange.com/transcript/message/36095147#36095147
Actually, I take it back. I'm going to be grumpy and say that breaking an existing Com interface isn't a good idea.
 
@RubberDuck Yeah, I was going to avoid the Source Control enums. I'm mainly after the ones in the Rubberduck library.
LOL
 
Lol
I do wished I had the forethought to name them differently though.
 
2:31 AM
One thing that we'd considered was seeing if we could do an "update inspection" that would attempt to locate uses of the old identifiers and show them as inspection results.
Then maybe have a quick-fix that would update them to the new usage. Basically deprecate the old interfaces first, issue inspection results for them, then remove the old interfaces in 4-6 releases.
 
@RubberDuck Hey, it doesn't even work anyway, AFAIK.
Anyway, it was always labeled "experimental".
@Comintern AFAIK, everyone who's tried to use the exposed COM library has had bugs with it.
 
Yeah. The unit testing interfaces are the main one.
 
That was always planned to be stabilized in 3.0 anyway.
At least, since mid 2.0...
 
> I'd like to hear more of the why behind #9. Is there an issue with exposing structs?

Also, thank you for bringing this up. It's an important conversation to have & I'd love to see the results moved into the wiki.
 
@Duga LOL - I clicked through the link to issue #9 and was like, WTF does this have to do with anything. Then... Oh yeah - github.
 
2:36 AM
LOL
@Hosch250 yeah. I wish I had time to research that. The COM lib did work when I started roughing out the first GUI.
 
Hmm.
 
I never got the GUI working right though.
 
Maybe I don't know how to use it.
@RubberDuck It works right for me, but nobody else seems to use it right.
2
AFAIK, though, it doesn't crash--it just gives cryptic error messages.
Like, they try to check out a blank repo from GitHub, and it can't because there are no branches to checkout.
Basically, most people don't know how to use Git, and I don't consider myself an expert...
 
So that's likely what we need to figure out. What are people trying to do with it that we're not. And how do we make it easy to use it the "right" way?
 
Yeah, Mat has an issue about that.
At least it does work at the point it does--you should check it out some time.
That was one hard UI to get right--partially because I didn't know Git and there were a few bugs in the library.
 
2:40 AM
No office install. );
 
:O
What can you do without Office?
 
I know. Blasphemy.
 
LOL.
 
@Hosch250 develop embedded devices and highly distributed computing clusters??
 
And you don't have Office at home either?
 
2:43 AM
Let's just say no.
 
> @rubberduck203 - Marshalling. IIR the build process auto-wraps them with an interface (I could be mistaken about that) because they can't be marshalled cleanly into a Variant. The root of it is similar to the reason that VB throws compile errors if you try to expose a public Type in a class module. When structures get coerced into a Variant, they wind up as a VT_USERDEFINED or a pointer. There isn't a way for VB to late bind to them because the information as to the memory layout is
 
Oh well, you can see a lot of the stuff on the website.
Dishes time for me. TTYL.
 
See ya buddy. Good catching up.
 
Hey @RubberDuck! Seen the YT interview yet?
 
> To go along with Proposal 2, all members of Com visible interfaces should explicitly declare their `[DispId()]` [like was done here](https://github.com/rubberduck-vba/Rubberduck/blob/1434ad2ee71577d4997bd6483ebbfe0f4ce4b0c5/Rubberduck.SourceControl/Interop/ISourceControlProvider.cs).

It gives us the freedom of rearranging the members in the C# code without breaking the COM interface. Without it, reordering the members is a breaking change.
 
2:50 AM
2-hour (!) Interview with @Xipooo on Rubberduck, OOP, where the project is headed, etc.. Thanks Steve! https://www.youtube.com/watch?v=sKUYfiWSFLY
(next time I'll do it a bit earlier so I'm not half asleep by the end of it lol)
(also... I hate cameras...)
 
> 5, 6, & 7 are all breaking changes, but they're good changes to be making. I need to get some sleep, but let's talk about how these could be done gracefully. Let's make these standards for any new development and figure out how to make the transition.
 
Looks like two big ships 🚢 missing each other in a fog? Be interested in feedback from @RubberDuck
There will be good times coming to be prepared @Mat'sMug don't worry 😉
 
@Mat'sMug not yet!
@PeterMTaylor feedback on what?
 
On how Matt went with his interview with Steve I mean on what is RD and where it's heading
 
3:06 AM
:-)
 
> Re 5: CAFED0CC or D0CCBABE or BAB1D0C1, or BA51CD0C?
 
Does assigning a DispId of 0 in a COM visible C# interface mean that VBA will use it as the default member?
Ie...
Sub foo()
    Dim bar As ISourceControlProvider
    Debug.Print bar '<-- implicitly calls bar.CurrentRepository.Id
End Sub
 
@Mat'sMug you're completely right. @Comintern is a wizard. Will watch it tomorrow. I also need to reschedule with Steve.
 
@RubberDuck @Mat'sMug Thanks!
 
@Comintern not sure if it's 0, but yes. Whichever DispId you'd use in an attribute to make it the default member.
 
3:12 AM
@Comintern hear! Hear! 👏
 
Sorry for that double ping - I realized I'd forgotten to thank Mat too.
@RubberDuck Yeah, it's 0. We have a proposed inspection that would be flagging that on our own interfaces. That's a long chain of implicit dereference action.
 
Oh man. I never thought of that.
 
I didn't either until just now.
 
same for -4?
 
... can we just put big "THAR BE DRAGONS" comments in all the interop dirs?
 
3:17 AM
That does make me wonder if you could make DispId -5 (DISPID_EVALUATE) work from managed code...
Rubberduck!Anything or Rubberduck.[Here be dragons]
@RubberDuck I think just issuing inspections should be sufficient. If for no other reason than pointing out that it's better coding style to implicitly put the default member access in your code.
 
@ThunderFrame yes. It's actually required for an IEnumerator to work properly. github.com/rubberduck-vba/Rubberduck/blob/…
Yeah... I did it because I thought it was neat at the time.
What is -5 btw? Never ran across that before.
Oh snap! So that's how Access does that!! msdn.microsoft.com/en-us/library/ms886967.aspx
 
@RubberDuck I knew it was on the VBA side... codereview.stackexchange.com/questions/156070/…
 
> Completely agree with @rubberduck203's observation that [DispId()] should be specified for all ComVisible members. In addition, and mainly to document from chat, DispId(0) should not be used. In general, RD should be discouraging the implicit use of default members in user VBA code. Offering a default member on our interfaces does little to discourage the practice.
 
@RubberDuck IIRC, it's Actually Excel that makes greater use of that.
 
^
Yep. That's how [A1] works.
I tried to set it up on a VBA class once, but it was ignored. :-(
 
3:28 AM
and
  Dim x
  x = [{1,2,3;4,5,6;7,8,9}]
^But only in Excel
 
Access uses it heavily for table access.
Awkward sentence is awkward.
 
Didn't they extend that to ADODB too?
I never use it.
Bang notation, not ADODB - use that all the time.
 
@RubberDuck ? Are you sure you don't mean the ! accessor?
^
Bang notation is just VBA feature for passing the identifier after the bang, as a string, to the default member
 
Maybe I'm rusty....
But yes. That ^^
 
@RubberDuck Works in Excel too
you just need a default member that accepts a string as the 1 and only argument
Set x = Sheets!Sheet1
most Access users assume bang notation is a shortcut for accessing a collection member, but the member needn't be a collection.
 
3:40 AM
Sub foo()
    Dim x As New Scripting.Dictionary
    x!bar = 42
    Debug.Print x.Item("bar")
End Sub
^ Works.
 
Sub foo()
    Dim x As New Scripting.Dictionary
    Debug.Print x.Exists("bar")
    Debug.Print x!bar
    Debug.Print x.Exists("bar")
End Sub
False

True
 
Maybe the reason I avoid that notation is because it always looks like x Not bar...
 
A getter that adds a member. how many people has that caught?
 
@ThunderFrame Not enough :/
 
3:48 AM
10 reasons to hate VBA: 1. It's VBA. ... 10. It's VBA.
That ^ sums it up.
 
WorksheetFunction.Sum(reasonToHateVBA)?
 
Sub ()

    , ,   ,    ,

    , () , , ()( , )

End Sub
^ What exactly isn't clear about that?
 
@ThunderFrame What exactly is clear about that?
 
</sarcasm>
forget about all of the constructs, they couldn't even impose a spec on the identifier names.
2
 
4:04 AM
[rubberduck-vba/Rubberduck] build for commit e88704be on unknown branch: AppVeyor build succeeded
 
@ThunderFrame Unicode spaces?
 
4:21 AM
NBSPs
 
4:38 AM
The Beep Fake needs an Easter egg. I propose that when any assert on the Beep function fails, the message should be "Needs more cow-bell!".
 
> @ThunderFrame - What about a separate `Proxies` namespace? The use would be something like:

`Proxies.Excel.Workbooks("Foo.xlsx").Returns("C:\Test\Bar.xlsx")`

That would allow using "non-production" files to run integration tests on.
 
Extending the IFake interface to allow more configuration flexibilitly:
public virtual void ReturnsWhen(string parameter, object argument, object value, int invocation = FakesProvider.AllInvocations)
Fakes.InputBox.ReturnsWhen "Title", "Foo", "Response to InputBox with title of Foo"
.ReturnsIf would also be nice.
 
6:04 AM
> I'm confused by the usage of the term "Proxies" in this context @comintern which theoretically sounds good to enumerate what @ThunderFrame is at.

In business, another party can act for another person in a nutshell, are we generalising here that it may imply represented from another host (within Office, of course) / application (whatever it is) / network (another PC/Server/Mobile?) on our behalf for inner VBA usage?

Thus, "C:\Test\Bar.xlsx" exists across an (assumed) approved shared netw
> @PeterMTaylor - Might not be the best identifier to use, but "another party can act for another person" is a great description. What a `Proxy` would do is allow substitution one object for another one. So the line of sample code above...

`Proxies.Excel.Workbooks("Foo.xlsx").Returns("C:\Test\Bar.xlsx")`

...would basically mean "If you get a request to open and return "Foo.xlsx", open and return "C:\Test\Bar.xlsx" instead. It would still be using the Excel object model to open the file,
> @PeterMTaylor - Might not be the best identifier to use, but "another party can act for another person" is a great description. What a `Proxy` would do is allow substitution one object for another one. So the line of sample code above...

`Proxies.Excel.Workbooks("Foo.xlsx").Returns("C:\Test\Bar.xlsx")`

...would basically mean "If you get a request to open and return "Foo.xlsx", open and return "C:\Test\Bar.xlsx" instead. It would still be using the Excel object model to open the file,
 
 
7 hours later…
12:55 PM
> Isn't this also applicable to any Print statement? i.e. can consecutive semicolons in a Print# statement be "collapsed" into a single one without affecting the output? If that's the case then this could be part of the "redundant tokens" inspections, along the lines of "redundant parebtheses".
[rubberduck-vba/Rubberduck] build for commit 886aff1b on unknown branch: AppVeyor build succeeded
[rubberduck-vba/Rubberduck] Hosch250 pushed commit 703db936 to next: Close #2898
[rubberduck-vba/Rubberduck] web-flow pushed commit 933e96ff to next: Merge branch 'next' into Issue2884
[rubberduck-vba/Rubberduck] build for commit 5a43c25a on next: AppVeyor build succeeded
> We need a wiki page to document what the conventions are and how to extend the current functionality.
[rubberduck-vba/Rubberduck] build for commit 2fc8fc91 on unknown branch: AppVeyor build succeeded
> @comintern only missing a commit on README.MD and the about dialog, to sing the praise of EasyHook :-)
> BTW the internal API looks beautiful - feels like extending this is going to be a charm!
 
 
8 hours later…
10:06 PM
@Comintern Where is the code that extends the Control members to UserForm controls? I can't seem to find it.
 
@ThunderFrame - That's still open\uncoded. I hadn't decided if it would be easier to special case them in ComInterface or give them completely separate handling.
So I'm probably going to add another interface returned by IFakesProvider for VBA calls that don't return anything. Is IStub a good name for that, or would something else sound more intuitive?
 
IVoid?
ISub?
Not sure.
 
IStub works.. or wait does that mean the user needs to use different interfaces for functions and subs? How about just throwing NotSupportedException in .Returns instead?
 
@Comintern Ah, OK - I'm still working on the matrix of controls/members - we should be able to special case them once it's done.
 
No, IFake would implement IStub and add the .Returns features. Right now the interface requires an overloaded return value even if you're only using .Verify.
We also should have an option that allows verifying invocations without interfering with the original call.
 
10:19 PM
(or AssertInconclusive/ "Invalid test setup: Member 'foo' returns no value")
 
That was my initial thought, but I'm thinking that the internal implementation might be easier if it just doesn't allow a bad setup.
The only access to the IFakes or ISubs interfaces would be through IFakesProvider, so it would just return the appropriate interface depending on what you called:
IFake MsgBox { get; }
IStub Beep { get; }
 
10:42 PM
@Comintern oh, that works then! =)
 
Just updated to allow setting different return values for different input parameters and different invocations. Also, if there isn't a matching return value setup it should now pass the call through to the native method.
Dim userInput As String
With Fakes.InputBox
    .Returns vbNullString, 1
    .ReturnsWhen "Prompt", "Second", "User entry 2", 2
    userInput = InputBox("First")    '<-- returns vbNullString
    Assert.IsTrue userInput = vbNullString
    userInput = InputBox("Second")   '<-- returns "User entry 2"
    Assert.IsTrue userInput = "User entry 2"
End With
 
I may have recruited a new contributor - getting him set up with GitHub and CodeReview. @Mat'sMug I'll get you to add him to chat once I have his username.
 
@Comintern hmm imo there shouldn't be any way to setup a fake and end up with a msgbox actually displayed
 
10:59 PM
I was just thinking that myself.
 
@ThunderFrame great! Just ping me with his chat profile url when you're ready.. I'm not on my desktop for another couple hours though.
 
The dialogs don't display correctly when PInvoked from managed code anyway - the weird thing is that they return though. No clue what. :-D
 
@Mat'sMug he's UK based - might take him a few days to get up and running.
 
11:47 PM
@Mat'sMug Finished your video finally and I understand some more stuff about RD.
 
Cool!
 
Wish I knew how to contribute more. I'm trying.
 
Like myself @IvenBach it takes time...
 

« first day (1017 days earlier)      last day (2163 days later) »