« first day (1020 days earlier)      last day (2160 days later) » 
00:00 - 19:0019:00 - 00:00

12:02 AM
Or at least will be...
 
12:20 AM
That destroyer is for the duck teardown?
 
12:49 AM
@Comintern CommandButton1.Cancel = OK
cmdOK.Cancel = Not OK
 
Not OK
2
LOL
 
1:05 AM
It's kind of dead in here...
I guess some people have lives, afterall.
 
> I assumed that. so it's ok that it's in my log file? it's not referring to a file location it's looking for?
 
Nah, just busy cranking out IFake implementations. I wouldn't want to release the feature with only 2 things that could be faked.
 
Nice.
I suppose I should get to work on the refactorings, but I'm kind of lazy and I'm kind of having a tiredness relapse.
 
Writing the unit tests for these in VBA with RD unit tests is kind of weird...
 
This time of year is always a hard one, I don't know why; I'm guessing it has something to do with the fact that I can't get enough sunlight all winter, so something in me is at a yearly low.
@Comintern So, you did get it worked out to run the VBA tests from RD?
 
1:12 AM
IKR, daylight savings time doesn't help with the energy either. Helps with the sunlight though.
 
How'd you manage that one?
 
@Hosch250 Happy Equinox for Monday then
 
@Hosch250 Nothing special - it isn't part of the build. I just have a workbook hooked up to RD source control into this directory: github.com/rubberduck-vba/Rubberduck/tree/next/RubberduckTests/…
That way I can test for - Pass, Fail, Inconclusive, Access Violation.
 
OK, I just start working on RD, and someone else needs me to help them with their programming.
 
Have them fix the crash on exit.
 
1:17 AM
LOL, they don't know enough--they are just doing client-side JS.
 
just encountered a class with a nice looking SetParameter method.... Opened it up and it's: SetParameter = Replace(sqlcode, Chr(37) + CStr(ParamNumber) + Chr(37), ParamValue, , , vbTextCompare)
Little Bobby Tables must have so many job offers
2
 
WTH would you use Chr(37) instead of just typing "%"?
Obfuscation?
Nonfuscation?
 
@Comintern probably because the SQL injection is doing a wildcard LIKE prior to setting parameters?
 
Yeah, close - but so very, very far away.
 
1:43 AM
For codereview.stackexchange.com/questions/158247/… if I want to post my refactoring for more review do I create another question and link to my original?
 
@IvenBach Yep.
 
2:05 AM
> Before I blow away my log file, I just replicated this, and this is what logged:

```
2017-03-21 21:03:38.8850;DEBUG-2.0.13.37890;Rubberduck.Parsing.VBA.RubberduckParserState;Project '-766805486' was added.;
2017-03-21 21:03:38.8850;DEBUG-2.0.13.37890;Rubberduck.Parsing.VBA.ParseCoordinator;Parsing run started. (thread 5).;
2017-03-21 21:03:38.9879;ERROR-2.0.13.37890;Rubberduck.Parsing.VBA.ParseCoordinator;Unexpected exception thrown in parsing run. (thread 5).;System.Runtime.InteropServi
 
2:23 AM
 
2:35 AM
Looks significantly better.
 
@Duga How's your FAKE crash to Teardown crash ratio?
 
Really good, actually. The only hard part is figuring out how parameters and return types are being marshalled.
RD is probably going to turn out being the best public source of information about the internal VBA APIs that exists anywhere.
5
 
^ after this chat
 
3:04 AM
I've been trying to figure out how VBA handles Now(). There isn't anything like rtcNow or rtcGetDateAndTime - I'm betting it calls both rtcGetPresentDate and rtcGetTimer and adds them.
 
> Okay so I tried to narrow the error down by unloading some macro project from my IDE (most of it are downloaded macros), leaving only my projects open.
From my project I found some modules are causing trouble to the parser, those modules are snippets from the internet. I tried to remove those modules then refresh the parser, then it can complete its task successfully.

Here's the problematic modules:
JsonConverter: https://github.com/VBA-tools/VBA-JSON
CSVReader: http://www.freevbcode.com
 
That might be potentially problematic - it would mean you couldn't fake both Now and Timer at the same time.
 
but wouldn't a call to rtcGetPresentDate alert you that the current call was a Now() call, and then catch the rtcGetTimer accordingly?
 
> @pixelaminator - Did you import CSVReader, or did you copy and paste the code? Looks like these might be causing problems:

```
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
Persistable = 0 'NotPersistable
DataBindingBehavior = 0 'vbNone
DataSourceBehavior = 0 'vbNone
MTSTransactionMode = 0 'NotAnMTSObject
END
Attribute VB_Name = "CSVParse"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed =
 
@ThunderFrame Possibly - the problem is if the test is set up to track invocations of both. There currently isn't any separation of state between the hooks at all, and there really can't be - they either get intercepted or don't.
 
^ That reminds me - ObjPtr and StrPtr might be difficult - they're both overloads of rtcVarPtr.
 
> Both the As Any parameter declarations and the illogical, reversed order of the arguments makes these functions extremely error-prone, though one could argue this holds for the module as a whole.
 
> I copy pasted it, but I leave that declaration part because my project wouldn't run with it. So those declaration part is not in my code
 
don't follow the links in the footnotes - time has made at least one NSFW
 
Eh, not at work.
 
3:23 AM
the MS one is long gone - but archived here web.archive.org/web/20030422173639/http://msdn.microsoft.com/…
 
3:42 AM
I wonder what SendKeys "{break}" would do in a unit test.
2
Or Stop or Debug.Assert for that matter... End probably isn't good.
 
4:22 AM
> Rubber Duck Team,

_I'm well aware this is probably 100% outside of the scope of Rubberduck, but..._

Would it be worthwhile to split Rubberduck into separate libraries/projects? For example:

- a simple library dedicated for parsing VBA Code with no dependencies on VBIDE,
- a library for analyzing the results and returning metrics / evaluating rules (Linq?),
- and Rubberduck proper that implements the Addin, UI, Refactoring, Unit Tests, etc.

This would help others who are intereste
> They say great minds think alike... Splitting RD into a plugin architecture has actually been on the books since before 2.0 was released, and is currently slatted for 3.0--expect it to be released in ~~~6-8 weeks~~~ maybe a year or two. Meanwhile, you could just contribute to the project as it is; come visit us in our chat room.
> They say great minds think alike... Splitting RD into a plugin architecture has actually been on the books since before 2.0 was released, and is currently slatted for 3.0--expect it to be released in ~~~6-8 weeks~~~ maybe a year or two. Meanwhile, you could just contribute to the project as it is; come visit us in our chat room.
> +1

I was interested in .NET 4.0 support 2 years ago #277 and still am.
 
 
6 hours later…
10:17 AM
> @robodude666 IMO this is a very rare edge case. Sure there's possibly quite a number of companies that still are on XP / .NET <= 4.0, but they *sooner or later* will upgrade to .NET 4.5.

The codebase relies incredibly much on `async` and the TPL, as such "backporting" to .NET 4.0 is an effort that benefits too little users for the cost it has. Especially since "manually" multithreading code is **really** hard, and the chance of bugs is high. If you can find people willing to do this with yo
> Note: this is basically covered in CodeNameCucumber, but I think it's good to have this in the project to remind us:+1:
 
 
1 hour later…
11:42 AM
The documentation says otherwise, but I don't seem to be able to read the BoundValue property of a MultiPage control, nor that of a TabStrip control, without getting error 450 - Wrong number of arguments or invalid property assignment.
 
@Comintern You may have a better answer already, but off the top of my head I think some VBA functions are pseudofunctions that get compiled into something else. I might guess that Thunderframe knows some of those if he can decompile the compiled code ??
@PeterMTaylor link? I'm discovering more about VBA than I need to know but wth
 
@sysmod Microsoft makes the p-code details available under an NDA, but there have been efforts to reverse it. I'm only looking to unpack the VBA binary file (which contains the execode, p-code and the plaintext source-code - all encoded using RLE and compound document), and process the plaintext code. Maybe one day, Rubberduck will parse the p-code...
 
Yes, it's in a dummy Print binary or suchlike. I was hoping security by obscurity would still work a little longer :-O
BTW I'm reading this thread backwards as I only have spare time to pop in and either learn or contribute so you can ignore my answer if something has already been answered.
 
The VBE, in most cases, ignores the source code in a VBA file, and instead converts the p-code back to source-code in the editor.
@sysmod @PeterMTaylor was referring to this comment exchange
 
12:01 PM
@Duga @Vogel612 The TPL is actually .NET 4.0 and there is a package to get async in 4.0. However, I fully agree that the effort to find the 4.5 things we use and the port to the package for async would not be worth it.
 
12:11 PM
@ThunderFrame Thanks for the pcodedmp link Thunderframe. I once used the olevba tool to extract VBA from files that Excel barfed at. github.com/decalage2/oletools/wiki/olevba
How do I insert links rather than having to paste the whole thing in? I would have liked to link "once" in my reply to [link] sysmod.wordpress.com/2015/08/05/… [/link]
 
Ah thanks Mr @ThunderFrame for sort me and that out. Reeeelax @sysmod. All in jolly good time we shall have answers. :)
 
@sysmod The markdown for a URL is [text to display](Full URL)
 
Thanks! I'll break off now - this stuff is too interesting, and some work needs to be done ... but what's life without spice
 
if anyone gets a chance to try reading the BoundValue of a MultiPage or TabStrip control, and gets it to work, please let me know what I'm doing wrong.
 
Kaz
12:28 PM
Just an update on the latest version for you guys. 2.0.13. It doesn't catastrophically crash on exit anymore. And sometimes will exit just fine. But will sometimes throw errors and/or freeze and/or other crash-like things on exit. And can throw problems when just closing (one of) the open workbooks. Excel 2016 (16.0.7329.1045) 32-bit.
 
@Kaz Yep, I've been saving my work more often. I still get crashes on Exit, but I'm also getting sporadic issues when closing projects.
 
 
2 hours later…
Kaz
2:15 PM
@ThunderFrame Experience has taught me to reflexively hit Ctrl + s every few seconds.
 
@ThunderFrame Let me know if you want me to make an On_Kaz_Save for your projects :P
 
Kaz
Sometimes, when thinking about my spreadsheet, I'll find myself hitting Ctrl + s several times in a row before I notice.
 
@Kaz I've watched people do this before.
 
> > - a simple library dedicated for parsing VBA Code with no dependencies on VBIDE

"Parsing VBA code" is hardly *simple*. Precompiler directives can use constants that only exist at project level, that even the VBIDE API doesn't expose. And then suppose you can get a parse tree and even a symbol table - you still need to resolve identifier references if you're going to want to be able to analyze anything! And in order to *know* (reliably) that `MyAwesomeClass.Create(42, "foo", "bar")` is cal
> I might have misread something.

By working with Rubberduck's [future] plug-in API, RD plug-ins will definitely be able to use ALL of Rubberduck's analytical power and code-rewriting capabilities, without a *direct* dependency on the VBIDE API.
 
2:57 PM
> A few days ago I indicated (in the war room) a fairly persistent exception immediately following the initial parse. That was still the case for me this morning (I believe I have all the latest updates as of 3/22/2017).
So, based on the debug trace output, I ended up stubbing out the return values for GetInspectionResults() for two classes: MissingAnnotationArguementInspection and ObsoleteCallStatementInspection.

MissingAnnotationArgumentInspection exception was: `Unable to cast object o
 
> Where are these casts occurring? Do you have a stack trace for them?
> Attempted to use the AssignedByValParameterMakeLocalCopyVariableQuickFix within Excel. Essentially, the only quickfix that would modify the VBE code was the IgnoreQuickFix option. The first two QuickFix options use the TSR and the IgnoreQuickFix still uses the ICodeModule approach. All my unit tests pass (because the Mock VBE code fragments are successfully modified)...but in working with the real VBE, the rewriter seems unable to modify the code. I did step through to ensure the TSR code
> Can you share the code content? It looks like these two inspections could be passing the wrong ParserRuleContext somewhere, e.g. the called code expects an ArgListContext but we give it the CallStmtContext; this could be because there's an extra .Parent call somewhere... stack traces would be very helpful here.
 
@Duga working on it
 
cool :)
 
> Please pardon the formatting:

Call stack: best reference is Inspector.cs line 79:
```
var inspections = _inspections.Where(inspection => inspection.Severity != CodeInspectionSeverity.DoNotShow)
.Select(inspection =>
Task.Run(() =>
{
token.ThrowIfCancellationRequested();
var inspectionResults = inspection.GetInspectionResults();
> Please pardon the formatting:

Call stack: best reference is Inspector.cs line 79:
```
var inspections = _inspections.Where(inspection => inspection.Severity != CodeInspectionSeverity.DoNotShow)
.Select(inspection =>
Task.Run(() =>
{
token.ThrowIfCancellationRequested();
var inspectionResults = inspection.GetInspectionResults();
> Please pardon the formatting:

Call stack: best reference is Inspector.cs line 79 - the exception is line with GetInspectionResults()
```
var inspections = _inspections.Where(inspection => inspection.Severity != CodeInspectionSeverity.DoNotShow)
.Select(inspection =>
Task.Run(() =>
{
token.ThrowIfCancellationRequested();
var inspectionResults = in
> The example is for MissingAnnotationArguementInspection. The RD code (including my commented-out work-around:

```
public override IEnumerable<IInspectionResult> GetInspectionResults()
{
//return new InspectionResultBase[] { };
if (_parseTreeResults == null)
{
return new InspectionResultBase[] { };
}

return (from result in _parseTreeResults.Cast<QualifiedContext<VBAParser.AnnotationContext>
> @retailcoder By simple I mean easy-to-use APIs.

My statement regarding VBIDE was more along the lines of, "The parsing and analysis should be capable without a physical instance of Visual Basic for Applications running." i.e. if I have a bunch of files bas and cls files on disk, I should be able to tell Rubberduck API to analyze them and tell me how maintainable my code is, etc, ala VBDepend.

As it currently stands, from my understanding, `Rubberduck.VBEditor` is a COM Wrapper for VBIDE.
> Seems all `IParseTreeInspection` implementations have somehow come to work off the same inspection results:

![image](https://cloud.githubusercontent.com/assets/5751684/24205426/c3eec40e-0ef1-11e7-8e12-b0b0e1594c67.png)

@Hosch250 did you have a fix for this already?

The fix would be simply to replace `_parseTreeResults.Cast<QualifiedContext<VBAParser.AnnotationContext>>()` with `_parseTreeResults.OfType<QualifiedContext<VBAParser.AnnotationContext>>()`.
> @Vogel612 I understand a backport will likely not happen; was merely pointing out there still are users interested in it. If I had to pick, I'd rather get #2923 :stuck_out_tongue:
> Similar Debug trace content for ObsoleteCallStatementInspection:

2017-03-22 08:25:59.3211;DEBUG;Rubberduck.Parsing.VBA.RubberduckParserState;Module 'modOne' state is changing to 'Ready' (thread 18);
2017-03-22 08:26:01.2683;DEBUG;Rubberduck.Parsing.VBA.RubberduckParserState;RubberduckParserState raised StateChanged (Ready);
Exception thrown: 'System.MissingMethodException' in mscorlib.dll
Exception thrown: 'System.MissingMethodException' in mscorlib.dll
Exception thrown: 'System.Missing
> @robodude666 that looks *very* much like the `MockVbeBuilder` API we [ab]use in RubberduckTests.dll - replace `IRule` with `IInspection` and you pretty much have what Rubberduck-WEB is already doing - [running RD inspections outside the VBE, out of a textbox on a web page](http://rubberduckvba.com/inspections/list):

````csharp
[HttpPost]
public Task<PartialViewResult> GetInspectionResults(string code)
{
//Arrange
var builder = new MockVbeBuilder();

// ensure line endings are \r\n
 
3:47 PM
> Same problem. Line 55 in `ObsoleteCallStatementInspection` is casting parse tree inspection results to a specific type that isn't valid for everything in that list.

The fix would be on [line 38](https://github.com/rubberduck-vba/Rubberduck/blob/next/RetailCoder.VBE/Inspections/ObsoleteCallStatementInspection.cs#L38):

foreach (var context in _parseTreeResults.Where(context => !IsIgnoringInspectionResultFor(context.ModuleName.Component, context.Context.Start.Line)))

Adding a `.OfTyp
 
Quick advice request:
If I have
lngThingBeingCounted = Function_DoSomething1 as Long
DoSomething2
DoSomething3
DoSomething4
DoSomething5
Msgbox lngThingBeingCounted
 
> So, Retailcoder beat me to the punch, but his response does bring another question to mind. Should those mocks be moved and renamed "InMemory..."?
 
That should be reworked somehow, right?
 
I don't see how it can compile
 
That's grossly oversimplified, but what should I do if I need to determine a number at the beginning and use it again at the end? Should I just make it a global variable instead of a return of Function_DoSomething1?
 
3:54 PM
the answer to "should I just make it a global variable" is invariably going to be "nope"
2
 
I thought so :P
What lines should I be thinking along instead?
 
what's the "as long" for?
 
Oh sorry, it was unnecessary, I was trying to communicate more than write accurate pseudocode
You all would recommend that a function/sub be self-contained, right?
 
not sure what you mean
function returns a value, you grab that value and store it locally, then do stuff and then msgbox that value - what's not working?
 
So if lngThingBeingCounted is determined in the middle of Function DoSomething1, should I instead change it to FunctionDoSomething1A, lngThingBeingCounted = (count), FunctionDoSomething1B?
Oh, nothing's not working, it just seemed messier than what you all would recommend
If that's clean/professional enough then I will stick with it
 
3:58 PM
> @rubberduck203 maybe - but wrapping the mock API without taking away any functionality would be quite a feat.
> Tried the web-based inspection and got the following exception:

```
System.InvalidOperationException was unhandled by user code
HResult=-2146233079
Message=Sequence contains more than one matching element
Source=System.Core
StackTrace:
at Rubberduck.Inspections.UnassignedVariableUsageInspection.GetInspectionResults()
at RubberduckWeb.Mocks.Rubberduck.Inspections.DefaultInspector.<>c__DisplayClass2_0.<Inspect>b__3() in C:\Dev\RubberduckWeb-master\RubberduckWeb\Ru
 
Kaz
Hey @Mat'sMug Long time no see ^^
 
It's basically been my impression that everything should be as short and self-contained as possible
 
hey @Kaz! I see you flipped your name again :)
 
So I was worried about saving a variable and then coming back to it after a ton of DoSomethings, and I was worried about determining the variable inside of DoSomething1, away from the TopLevelProcedure/GodMacro where it's actually being used
 
@puzzlepiece87 that's getting way too abstract for me to review in any way
 
4:00 PM
Sounds fine, thanks for the advice :)
 
Kaz
@puzzlepiece87 Best advice is to write your function then post it as a normal CR question.
 
Kaz
@Mat'sMug How's CR doing these days?
 
ok, I guess
 
@Mat'sMug - I also submitted another issue (#2925 re: TSR) that might have gotten lost amongst all the comments on the Inspection exception. Wanted to make sure you saw it.
 
4:04 PM
> @retailcoder Well, what the working ones seem to be doing is defining a ParseResults that returns the limited set and using that everywhere. However, I'm still not sure why any inspection has access to other inspections' results.
 
Kaz
@Mat'sMug Have you managed to get that gold VBA badge yet :p
 
on SO, yes. not on CR yet
 
Kaz
@Mat'sMug I would imply that I'll find a way to get there before you, but even using all the concentration I used to spend on CR on work, my pile of stuff that needs doing just keeps getting bigger ^^
 
=)
 
Kaz
On which note, I'm off now. See you around :)
 
4:07 PM
@puzzlepiece87 That's quite an interesting article.
 
> Tried the web-based inspection and got the following exception:

```
System.InvalidOperationException was unhandled by user code
HResult=-2146233079
Message=Sequence contains more than one matching element
Source=System.Core
StackTrace:
at Rubberduck.Inspections.UnassignedVariableUsageInspection.GetInspectionResults()
at RubberduckWeb.Mocks.Rubberduck.Inspections.DefaultInspector.<>c__DisplayClass2_0.<Inspect>b__3() in C:\Dev\RubberduckWeb-master\RubberduckWeb\Ru
> Oh great. Are you running the 2.0.13 release build (that's the build running on the website)?

If you could repro in the actual VBE and open up a new issue with the log details (the stack trace will include more precise information), would be awesome!
> @Hosch250 only IParseTreeInspection implementations do, and only because of how parse tree results are being assigned to the inspections with the CombinedParseTreeListener, but I can't seem to find a specific commit that broke it. :confused:
> Well, just fix it when you rearrange the inspections, will you?
 
@Duga sure
 
4:31 PM
> I'm using whatever was in master as of 35 minutes ago.
 
4:45 PM
> @robodude666 that would be the 2.0.13 code base as-released, which should repro the exception.

...interestingly, there are two lines that could possibly throw that exception in `UnassignedVariableUsageInspection`:

````chsarp
//The parameter scoping was apparently incorrect before - need to filter for the actual function.
var lenFunction = BuiltInDeclarations.SingleOrDefault(s => s.DeclarationType == DeclarationType.Function && s.Scope.Equals("VBE7.DLL;VBA.Strings.Len"));
var lenbFunct
> That's interesting. Didn't know about MockVbeBuilder or RubberduckWeb's online inspector.
> Gah, just noticed that's the RD-WEB repo :man_facepalming:
 
Is there any taboo against Dim someRange as range: set someRange = sheet1.range("B4")?
 
MS recommends it as a way to "get used to the VB.NET syntax" which would be Dim someRange As Range = sheet1.Range("B4") so IMO has nothing to do with it... IMO any instruction separator (that's the colon) is just a way to cram multiple instructions into a single line of code... which is never needed, easily abused, and quickly makes code harder to follow.
 
@Mat'sMug I had the same idea which is why I've avoided using it. :sigh: Declaration & Assigning will stay on 2 lines then.
I'd rather have code a bit longer and easier to follow that shorter and possibly confusing.
 
thing is, Dim isn't an executable statement; putting it on the same line as a statement that is executable makes things confusing IMO
 
^
 
4:56 PM
@IvenBach It's more natural for most people to read code statements from top down.
 
^ and that
 
@Mat'sMug When I first saw that in VBA I was thoroughly confused.
VBA, again, makes me question everything.
 
it's great for code-golfing though. problem is, VBA is a terrible code-golfing language.
 
Practical reasons too. Consider that the ':' token is overloaded in VBA: github.com/rubberduck-vba/Rubberduck/issues/2636
 
oh, that's right
Beep: Beep
^ how many beeps actually beeped?
 
4:59 PM
Trick question. It's none. I hooked the library function
 
LOL
A: it actually prints "Quack!" once, in the immediate pane
bwahahaha
 
LOL
 
With a range object if i have Debug.Print someRange it defaults to Debug.Print someRange.value. It's best practice to always explicitly show, right?
 
We could Easter egg an embedded .wav for when it's passed through...
 
oooh
 
5:01 PM
You should have a quack sound file for when RD loads.
 
Duck don't beep, fool!
 
@IvenBach in the case of a Debug.Print statement it's pretty clear that you're not outputting the object itself. things get messier when assigning a Variant though
Dim foo
[Let] foo = Range("A1") 'foo is a double? a string? a worksheet error value?
Set foo = Range("A1") 'foo is now an object reference
 
@IvenBach Best practice would also be to make sure you're not trying to Debug.Print an array...
 
But if I'm passing an object to a function that's taking a string it's implied by the functions 'signature' (is that the correct term?)
 
5:04 PM
yes
and it might blow up at runtime with a type mismatch, too
 
if VBA can't coerce the value into a String
 
So to avoid ambiguity it's better practice to Function someFunction(someString as string) as string and to use it via anothersString = someFunction(someRange.value2) where the .value2 is explicitly shown?
 
Or it might do something completely unexpected. If VBA needs a value type, it will repeatedly dereference the default member until it hits one or errors.
It's default members all the way down.
 
@Comintern Nope, It's ducks all the way down.
 
5:06 PM
@IvenBach assuming someRange.Count = 1, then yes
 
@Mat'sMug Sorry. I forget to state that I'm usually using a single cell range object.
Thanks for helping me develop better practices.
 
5:18 PM
> Even though the `MockVbeBuilder` and its pears can be used to run RD without an actual instance of the VBEIDE, I think we should decouple the parser/resolver more. I anyway plan to pay some technical debt there.

Although the parser ultimatively needs the code modules (in memory) to parse them, we could provide them via some `IModuleCodeProvider`. Something similar could be done for the precompiler directives.

Actually, I think extracting the parser itself and removing all COM references
 
The reference navigation feature is so nice... Many thanks be to the RD team!
 
5:35 PM
@Kaz @Mat'sMug I would but I am still implementing the advice from my last CR question. I want there to be demonstrable progress so people don't get tired of answering me.
 
5:48 PM
Oh, absolutely!! ...except if your boss is non-technical and the app is business-critical and you're just not authorized to check in non-functional changes that "don't bring any business value or fix any actual problem" =) — Mat's Mug ♦ 2 mins ago
^ any similarity with real-life events is purely fortuitous.
 
@Hosch250 Glad you liked it. Ars does good deep dives from time to time.
 
0
Q: Structured Set of Dictionaries for Table Lookups

Brandon BarneySomewhat recently I encountered an issue where my projects were simply taking to long to run. A lot of my macro work comes down to taking multiple tables (generally formatted in the same way) and joining together these tables based on specific users. This led to instances of loops that would loop...

 
6:05 PM
@Mat'sMug Always seem to learn something from you or @Comintern
 
@IvenBach "Don't break the build" is a good one to internalize.
 
@Comintern By adding new features?
 
> It would be fantastic to natively support a 100% in-memory analysis without having to Mock stuff, as it does appear to be fairly slow to execute.

Rubberduck already has interfaces for all of the VBEditor dependencies, as well as `SafeComWrappers` implementations. It should certainly be possible to add another set of implementations intended for "in memory" use that has no dependency on the COM objects.

If Rubberduck is launched in a COM environment, it will use the `SafeComWrappers` but
 
@IvenBach By doing anything that breaks it. :-D
Nobody wants to pull the current repository to test something and have to fix your code so it compiles.
 
I am trying to do that. It's hard when there aren't any tests to make sure you don't break it.
 
6:09 PM
@IvenBach LOL, tests don't always work.
Fact is, I broke the RD build the other day by just relying on the tests.
I fixed it within a few minutes, but still...
 
> @robodude666 oh, it runs in a few milliseconds in our test suite - I've no idea what's taking so long on the website really.
 
You can't rely on them solely, but I can imagine they provide more assurance.
 
Oh, sure.
I never want to write a design doc in this format again.
I prefer the format I used last semester.
 
@IvenBach The compiler almost always does - Debug->Compile in the VBE. By break the build I mean put it in an uncompilable state. One of the first projects I worked on had 3 people who consistently committed changes that wouldn't compile.
 
@Comintern At least mine was a runtime Ninject error, then.
 
6:12 PM
0
Q: Excel 'Big' Data Processing Followup

Emily AldenPrevious Question (Initial Level Optimization) : Excel 'big' data processing with vlookups Code Purpose: Recalculate 25 columns of 500,000 rows each based on new information (provided by a different macro). Before the previous thread it took 28 hours to run, now it takes 8, my goal is under 3. ...

 
@Hosch250 There's an excuse for that. :-)
 
@Comintern Alt+D,L is an amazing little diddy!
 
Yeah, but you can't dance to it.
 
I'm glad I'm no longer working on files that had that problem.
 
Oh gosh, I have just 5 more weeks of college.
 
6:14 PM
@Hosch250 Keep with it. It ends at some point. Stay focused.
 
I just found earlier that I already earned a B- in one of my classes, and I'm not even 3/4 of the way done.
Why, oh why do I have to include full class diagrams in this paper...
I have dozens of classes with several public members each...
And as it is, I'm cutting things down to the very basics.
 
lol, IIRC with VS Ultimate you can generate the class diagrams from the code
 
Yeah, I don't need the full diagrams...
I'm just showing the view and vm for my UI module.
And I'm showing the facade as a single unit, instead of a zillion subclasses.
 
Diagramming classes is something I'm interested in. Could you point me to some examples?
 
I guess the facade would be my model, but it is just a wrapper over the core logic I wrote in F#.
@IvenBach Wiki.
UML.
 
Sure.
 
FWIW I never needed UML in RL
it's good to know and useful to understand though
 
I don't know what RL is, but I sure need it in U-life.
 
The only UML I've "written" was automatically generated from source code. I can "write UML" faster by stubbing out classes than I can by banging around in Visio or something like that.
 
I hope my professor doesn't check my diagram against my code, because I'm leaving out logic that is strictly UI details.
Oh wait, this is the UI module, maybe I shouldn't.
 
6:27 PM
What's done in University vs Real world is vastly different, in my experience.
 
@Comintern that
@IvenBach and that
best example is how teachers relate to code comments
 
LOL.
No wonder nobody will even contact me about my job applications.
 
@Mat'sMug Document your code with comments?
 
teachers have that tendency of requiring comments for every statement, to say what rather than why - and they downgrade you for omitting a comment, too.
i++; // increment i
^ leads to stupidities like this
"Good comments say why, not what" - this is why. https://twitter.com/rvagg/status/842928726597812224
 
6:43 PM
@Mat'sMug B-. That should be i++; // Postfix increment i
 
and that would be me storming out of the class
 
@Mat'sMug And that would be you not getting your degree.
 
and that's quite exactly what happened
 
I'd settle for the C.
 
C++?
 
6:44 PM
In my class, I had to write pseudocode and comments.
 
LOL
 
I just wrote the code, then added the comments, then removed the code :/
I think my professor thought I was writing the pseudocode, then turning them into comments and adding the code.
 
> If you can't do something well and get paid for it, teach it instead.
 
I had to submit the code and the pseudocode in separate documents. One document had the code with the comments, the other had the comments without the code.
@Mat'sMug No wonder you have a job. You didn't have any UL to ruin you.
 
lol
I was actually very, very lucky
 
6:50 PM
I think I'm going to have to go work as a checkout clerk for Target until I can move.
And of course I will never, ever be able to get a programming job then.
 
@Hosch250 That's exactly what I do when I have to write pseduo-code. I can port code to it, but can't write in it from scratch.
 
@Comintern I wonder if anyone doesn't do that?
 
Coding profs?
 
I guess I could join the military--my family has a history of doing that. Or become a pipefitter, like my father's side of the family, except he kind of got a name for himself. Or an insurance broker/manager, like my mother's side.
 
@Hosch250 I started as a shipper/receiver guy working in a shopping mall store's backstore. Got the chain's country-wide best inventory control (shrinkage%) award for the year, applied for a job at the head office, learned merchandise allocation, then merchandise planning - that's when I learned my VBA btw - and eventually built a whole reporting system that pulled data overnight from the system.
 
6:56 PM
@Mat'sMug So, go work at Fedex? They have a location just down the road, and I'm certainly strong enough.
 
then the company closed down and I changed jobs and did the same thing for another company, where the DBA guy went "dude, drop Access will ya? here, have a SQL Server database" - and from there I went to IT as a junior web dev - that's when I learned C# and .net
 
So, how'd you get your web dev experience?
 
it was an internal move
 
That's what I'm trying to get into, because it is pretty much the only thing available in MN.
Except, I have maybe 1-2 months of web dev experience to the "required" 3-7 years.
 
from there I stepped out of IT and back into retail because I got a +$20K offer elsewhere
 
6:58 PM
@Hosch250 That shouldn't stop you from sending resumes.
 
but they were outright nuts so a year or so later I took a $10K drop to go into actual IT doing VB6 dev
the rest is history
 
@Comintern I've been sending them resumes. They've not been contacting me (although, the two first ones did have the wrong phone number because my mom changed our phone number, and I forgot to change my resume).
So, I suppose I'm definitely out of the pool if they tried to call.
 
00:00 - 19:0019:00 - 00:00

« first day (1020 days earlier)      last day (2160 days later) »