« first day (1808 days earlier)      last day (32 days later) » 

12:01 AM
[bruglesco/FleetCommand] 2 commits. 61 additions. 26 deletions.
[rubberduck-vba/Rubberduck] 9 commits. 1 issue comment. 14 additions. 22 deletions.
[Zomis/minesweeper-server] 1 commit. 186 additions. 242 deletions.
[Minesweeper] Games Played: 95, Bombs Used: 74, Moves Performed: 14061, New Users: 9
2 hours later…
2:05 AM
still fighting with CSS
Are you winning or losing the fight?
tough question
the comment span does have the comment class
but not the comment formatting
> <span class="comment">' no reference to 'foo' anywhere...</span>
and yet, it's getting its color from the body style
all while <span class="keyword">Sub</span> works perfectly fine
ditto string-literal: the span has it, but color is from body
it's like the css rules don't exist at all
oh wait, I bet it's caching the css
omg that looks so awesome
2:31 AM
Nice job @MathieuGuindon !
A niggle - maybe give the image a bit more padding on the bottom. The text that follows the first image looks too much like a caption for the first image.
I love where you're going with this.
yeah, now that the code formats correctly (and parses correctly... sorry about the stupid commits & pre-release builds earlier), I'm moving on to layout fixes here & there
actually... I'm adding more css now... I want attributes to look a bit shaded
heck, and annotations can be bold
or whatever
and now I'm getting a sneak peek of what it's like to have full control over the VBE code pane
1 hour later…
3:41 AM
*syntax-highlighting wise anyway*
4:14 AM
pfftt. "Microsoft does not currently recommend, and does not support, Automation of Microsoft Office applications from any unattended, non-interactive client application or component (including ASP, ASP.NET, DCOM, and NT Services), because Office may exhibit unstable behavior and/or deadlock when Office is run in this environment."
^ just reading some information and I had a laugh about how far we went with it. :) ramblingcookiemonster.github.io/PSExcel-Intro
@MathieuGuindon ~flying saucer noises~ AvalonEdit
4:35 AM
myexcelmoments.wordpress.com/2019/05/15/… For anyone that wishes format painter could be applied more than once. :hint: It can.
10 hours later…
2:14 PM
1 hour later…
3:31 PM
so, I'm going to pull the xml-doc from 2 places - not just one
by comparing [master] with [next], I'll be able to mark the "pre-release" inspections
@MathieuGuindon hmm ... so attaching it to the releases themselves is really not an option?
because having it under version control feels wrong to me (and Max)
oh, it doesn't just feel wrong - it is wrong.... copying the file to /docs doesn't commit it there
but what do you mean with "attaching it to the releases themselves"?
we're shipping artifacts with the releases
3:37 PM
include the .xml along with the artifacts?
yeap, that was the idea
how do I pull it though?
I previously brought that up in the PR that you closed
@MathieuGuindon through the REST API?
needs to be built from the ground up - we're not currently hitting the API with anything
> "Since the website is checking GH releases anyways"
we're not
well, we will once I push
note to self: start freakin' branching the darn website repo
@MathieuGuindon RestEASE or maybe even octokit ftw?
^^ listing releases does give us access to their artifacts
3:41 PM
I started using restease Friday, redid my entire work week in <3 hours
You could take a look at the ReleaseCleaner repo :)
right now I'm still tweaking CSS and contents though
I'm not dealing with artifacts, but grabbing releases is literally three lines of code
That would also support the prerelease vs. stable release usecase pretty easily
3:42 PM
if we were a bit mad, we could make the website pull the latest rd binaries and reload them to update the smart indenter and inspection demo
but that's probably a terrible idea :D
"mad" indeed... the indenter assembly is referenced & loaded
so that'll be the layout
4:07 PM
@Vogel612 prompt user for creds?
@MathieuGuindon nah, releases are public, so we shouldn't need to supply creds
at work I'm storing the API key in a SQL Server db... do I ...oh
ReleaseCleaner needs the creds because deleting releases is something not just anybody can do :D
right, makes sense
dang, just hit an edge-case with the formatter, where only '@ gets the "annotation" class, not the rest of it
I think I'll just let it be
Ok, I'm sold on making the xml an artifact
and OctoKit looks nice
4:27 PM
I might be able to get to touching that in a few days, but no promises... stuff piled up while I was working on my paper ...
rd.deployment is generating the .xml under \bin, so I'm grabbing it from there in the .yml ..makes sense?
  - path: Rubberduck.Deployment\InnoSetup\Installers\Rubberduck.Setup.*.exe
    name: Rubberduck
  - path: Rubberduck.Deployment\bin\Rubberduck.CodeAnalysis.xml
    name: InspectionDocs
    artifact: Rubberduck
      branch: master
    artifact: InspectionDocs
      branch: master
      branch: next
PR on the way
yaml love
it doesn't like that there are two artifact items...
@MathieuGuindon so they do get generated under Rubberduck.Deployment?
it did locally anyway
it should show up in the AV build webview then (as soon as the build passes)
so, you will delete the version controlled ones in that same PR then?
[rubberduck-vba/Rubberduck] build for commit 02cc3155 on unknown branch: AppVeyor build succeeded
[rubberduck-vba/Rubberduck] build for commit 02cc3155 on unknown branch: 64.36% (target 0%)
that looks good :)
5:04 PM
im alive
happy to hear that 😀 Welcome back @jcrizk
is there anything new i should know regarding:

just setting it back up
it should work out of the box...
sweet. i'll just follow the guide then
5:09 PM
make sure Rubberduck.Deployment is set as the startup project
[rubberduck-vba/Rubberduck] retailcoder pushed commit 88c5a5e9 to next: make xml-doc a build artifact
[rubberduck-vba/Rubberduck] retailcoder pushed commit 107a3136 to next: Merge branch 'docs' of github.com/retailcoder/Rubberduck into docs
[rubberduck-vba/Rubberduck] retailcoder pushed commit 02cc3155 to next: comma-separated list of artifacts
Merge pull request #4962 from retailcoder/docs

Makes inspection xml-docs a build artifact
my new internship has a bunch of development in c#, so i should be a bit more useful now haha
5:24 PM
awesome! :)
huh where the hell have my RD-Web commits gone
5:36 PM
@jcrizk I don't know if you saw, there's an up-for-grabs feature (01-duckling, with guidance) right here: github.com/rubberduck-vba/Rubberduck/issues/4959
thanks i'll check it out. just setting up and cooking at the moment
@Duga so.. the roslyn analyzers need to work now... bad xml code example means a new inspection doesn't get its page on the website
Ideally an analyzer would actually attempt to parse the code.... would that be overkill?
They can't have precompiler directives, for instance
might be that roslyn analyzers don't get to see precompiler directives
6:02 PM
@Vogel612 no, I mean the VBA ones in any inspection code examples - #if stuff isn't in the grammar and I'm not going to preprocess the code examples
ohhhh, okay
6:22 PM
@Vogel612 stupid question: how does releasecleaner know to look at rubberduck-vba/Rubberduck?
oh nm
GetLatest gets me the last release off master, right?
            var client = new GitHubClient(new ProductHeaderValue("rubberduck-vba_RubberduckWEB"));
            var master = await client.Repository.Release.GetLatest(GitHubOrg, RepositoryName);
            var next = (await client.Repository.Release.GetAll(GitHubOrg, RepositoryName)).FirstOrDefault(tag => tag.Prerelease);
@MathieuGuindon yeap, that should fix it...
now, my biggest challenge is figuring out a way to get the async/await stuff to work nicely with the Lazy<IDictionary<string,InspectionInfo>> initializer
I think I'll just ditch Lazy<T>
I guess I still need the HttpClient once I have the asset's BrowserDownloadUrl
or do I just work off the Url?
don't know, actually..
6:36 PM
try+see :)
I know how to do it in Java, but C# probably has an actually sensible approach to URLs that does not involve DNS queries on ctor invocation
I had this:
            //using (var client = new HttpClient())
            //    var uri = new Uri(XmlDocumentationUrl);
            //    var task = client.GetAsync(uri);
            //    task.Wait();
            //    var response = task.Result;
            //    var readTask = response.Content.ReadAsStreamAsync();
            //    readTask.Wait();
            //    var document = XDocument.Load(readTask.Result);
            //    var result = GetInspectionDocs(document)
            //        .ToDictionary(info => info.InspectionName, info => info);
but the XmlDocumentationUrl was the github.usercontent url
so I'm pulling that into its own method and giving it the asset url instead
@MathieuGuindon that looks like you want to do some ContinueWith there
yeah that was written without async because Lazy<T> didn't like an async initializer
var task = client.GetAsync(uri);
task.ContinueWith(response => reponse.Content.ReadAsStreamAsync());
or something like that..
6:40 PM
for (#4959)[https://github.com/rubberduck-vba/Rubberduck/issues/4959]

where should i put the new `ExcelHotKeyAnnotation` class? In AnnotationType.cs or just make a new file for it?
well i messed that formatting up lol
@jcrizk multiline formatting is bork
@jcrizk alongside the other XxxxAnnotation classes :)
gotcha thanks
    private static async Task<IDictionary<string, InspectionInfo>> DownloadXmlDocAssetAsync(string assetUrl)
        using (var client = new HttpClient())
            var uri = new Uri(assetUrl);
            var response = await client.GetAsync(uri);
            var xml = await response.Content.ReadAsStreamAsync();
            var document = XDocument.Load(xml);
            var result = GetInspectionDocs(document)
                .ToDictionary(info => info.InspectionName, info => info);
^ @Vogel612 better?
6:42 PM
the waiting still annoys me, though, but that's really nitpicky and performance-irrelevant
eh, pulling both next and master and working out what inspections are prereleased is much more expensive
            var masterDocs = await DownloadXmlDocAssetAsync(masterUrl);
            var nextDocs = await DownloadXmlDocAssetAsync(nextUrl);

            return masterDocs.AsEnumerable()
                .Concat(nextDocs.AsEnumerable().Where(kvp => !masterDocs.ContainsKey(kvp.Key)))
                .ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
oh shoot, forgot the IsPreRelease flag lol
            var masterDocs = await DownloadXmlDocAssetAsync(masterUrl, isPreRelease:false);
            var nextDocs = await DownloadXmlDocAssetAsync(nextUrl, isPreRelease:true);

            return masterDocs.AsEnumerable()
                .Concat(nextDocs.AsEnumerable().Where(kvp => !masterDocs.ContainsKey(kvp.Key)))
                .ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
and... that should be it
let's see what blows up
hehe.. NRE
so if i understand this correctly, those static funcs that i added basically just gives you an IEnumerable<string> of "%s\n14" for each excel hotkey, right?
and then this was the enum i added
` [FlexibleAttributeValueAnnotation("VB_ProcData.VB_Invoke_Func", 1)]
ExcelHotKey = 1 << 13 | Attribute | MemberAnnotation`
that's fine, right?
no other annotation has the << 13 offset, right?
6:55 PM
o, a few others do
should i just increment it until it's unique?
yea. .. you want that to be unique ...
yea, that works just fine :)
> InvalidOperationException: RunSynchronously may not be called on a task not bound to a delegate, such as the task returned from an asynchronous method.
        static RubberduckInspections()

        public static async Task InvalidateAsync()
            Inspections = await CacheValueFactory();
I'm kinda stupidly stumped with this
and then, does it need these flags Attribute | MemberAnnotation?
@jcrizk yes, that's how we know it's an Attribute annotation that belongs to a Member :)
oh gotcha. i wasn't entirely sure what that was doing haha
and why do we use the shift operators instead of just using ints for the enum?
not sure what the difference is
7:00 PM
we use bit-shifted values for flag enums
that way we don't have to compute the correct int values in our heads :)
        var invalidateTask = InvalidateAsync();
well that was easy
@jcrizk which one is easier to validate as being bitwise different:
> InvalidOperationException: Start may not be called on a promise-style task.
Member = 1
Attribute = 2
Module = 4
Bonk = 8
Rhel = 19
Barz = 38
// or alternatively
Rhel = 1 << 4 | Member | Attribute;
Barz = 1 << 5 | Attribute | Module;
ok, so is it because the difference between (1 << 1) and (1 << 2) is easier to determine the difference between than, for example, between 1 and 5?
It's easier to decompose in your head if it's written out decomposed.
also most humans are bad at binary arithmetic.
Comintern is one of the few chosen ones that reads jpeg images in binary :D
7:05 PM
no i mean, why not just use enum values like "1, 2, 3, 4, 5, 6, ..."?
@jcrizk HasFlag ftw
or rather: we need HasFlag for the Annotation Binding process
Feb 26 at 0:12, by Duga
> Refresh Todo Explorer to match other UI elements, refactor grouping to get rid of duplicated grid control. For those of us who have difficultly reading raw PNG data, it looks like this: !screenshot from 2019-02-25 18-06-15 Not much to it, just added the expand and collapse commands to match similar controls and changed the grouping to toggle buttons instead of a dropdown. Feel free to...
Also I really need to get back to writing this effing paper
soooo Toodles! :)
oh lol i get it now
    static RubberduckInspections()
        Task.Delay(TimeSpan.FromMilliseconds(15)).ContinueWith(async t => await InvalidateAsync());
fingers crossed
ok, so i made the change. how do i put my forked branch up for a PR in the original repo?
7:13 PM
ok, new approach
@jcrizk commit & push your changes to your fork
that's done
your fork's home page should have a "create pull request" button
or, you can make one from the main repo's PR page
oh, will the forked branch just magically appear there?
7:15 PM
you want the LHS dropdown to be rubberduck-vba/Rubberduck/next, and the RHS to be your fork
@jcrizk if you pushed it, it's there :)
yup, it's there I see it :)
@jcrizk I added a mention to the issue on the PR
o oh, i was about to do that haha thanks
7:20 PM
GitHub has "magic words" that, when present in a commit message or PR description, automatically close the associated issue when merged
that's pretty cool
i've realized now that sometimes you just need to accept some things as magic to just move forward lol
and how do i keep my fork up to date with the original repo?
i originally just decided to nuke my fork and fork again instead of updating
I do git pull upstream next to auto-merge remote changes before I start working on something
and then git checkout -b NewBranchName
Vogel would say git fetch first
ok, github client is throwing, that's why I keep getting a NRE
wow debugging async shit is #fun
7:36 PM
what are you doing that needs to be async?
is it web stuff?
prayin for ya lol
I'm updating the project's website after way too long
i had to do a bit of that in matlab and it's the complete opposite of fun
better late than never
so I wrote extensive xml-docs for every single inspection in RD
made the assembly generate the xml file on build
made the build process package it as an asset
and now trying to get the website to pull the asset
7:38 PM
i gotcha
that's pretty cool tho
if I get it to work then the website will automatically list any new inspection we merge
[rubberduck-vba/Rubberduck] build for commit 7f42db18 on unknown branch: AppVeyor build failed
> Expected string length 5 but was 1. Strings differ at index 1.
Expected: "A\\n14"
But was: "A"
yeah im lookin at that lol
maybe i typed something in wrong
wait, should "\"" be @"\""?
in ExcelHotKeyAnnotation.StripStringLiteralQuotes()
nah that would make the backslash part of the literal string, but it means to escape the double quotes
alternative to "\"" would be '"'
ugh. GH api is failing and I can't get the damned exception
and I need to stop now :(
got my sister over too, bbl after thrones
7:48 PM
have fun lol
isn't thrones in like 5 hours?
o wait, you're canadian lol what are time zones
Yeah in 5hrs
@jcrizk your journey to enlightenment has truly just begun. Welcome to the golden feathered path.
yeah, i wouldn't get anything done at work unless i did that lol
At some point I had to do the same. It’s been much simpler learning after that.
@jcrizk you going to help me work on the low hanging 01-duckling issues? Leave more time for the big ducks to do the hard stuff.
o yea
i should've locally ran that testcase i added before putting the PR up, but shipping it sounded too good
8:01 PM
F5 testing and unit tests for the win.
man, i gotta get our tests at work organized more like this lol
8:22 PM
wait a minute lol you can do this to output 2 things from a function?
private (type1, type2) MyFunc() ?
Actually, you should name the two components.
they're named. i've just never seen that notation before lol
private (type1 myFirstComponent, type2 mySecondComponent) MyFunc()
8:24 PM
I think that came in with C# 7.2.
@IvenBach yea that's what i've been using as the output if i needed more than 1 output
value tuples are really nice.
and they are structs
9:06 PM
i was getting super triggered that the coloring in the IDE wasn't showing up
and then i remembered the advice i give to people for any electronic device
> did you turn it off and then on?
3 hours later…
11:55 PM
i think i know why that test was failing
it's because the ctor for ExcelHotKeyAnnotation wasn't being called
i tested another test case, and the ctor for that one wasn't being called either
AFAIK, it should be called somewhere in AttributeAnnotationProvider.cs but im not exactly sure where it should be called though

« first day (1808 days earlier)      last day (32 days later) »