« first day (3144 days earlier)      last day (36 days later) » 

00:04
Hm, if we're all-.net then.. couldn't we use GitHub actions instead of AppVeyor?
REFRESH!
[Minesweeper] 87 Games Played. 39 Bombs Used. 9698 Moves Performed. 18 New Users
[rubberduck-vba/Rubberduck] 296 additions. 12 deletions. 4 commits. 1 issues closed. 1 issue comments
[Rubberduck] 3 Synchronizations
00:21
I'm adding a CorrelationId field to LSP notifications and requests; we can use it to track actions triggered by notifications then.
It doesn't break LSP to tack on a bit, does it?
> narrator: new in LSP 4.0: correlation ID for notifications and requests, making it easier to track downstream actions identifying the new frobnicator service.
01:01
So, this is very annoying. It seems that when I build from scratch, the Rubberduck.Deployment hangs in an infinite loop (that's happening inside MS' code). but after I tweak, it's working. Clean, then it fails again. It seems that if there's an error, it hangs. building w/ VS does not have that problem.
:(
feels so close
yes that's the frustrating part. It's all in place. The pieces are there. But Microsoft went and screwed up.
what's the tweak that makes it work?
> but after I tweak, it's working. Clean, then it fails again.
somewhere in their build engine, they have lot of WaitHandles and they keep on waiting for something. I think it's triggered whenever there's an error or an exception thrown and then it just ... wait.
so something would be failing somewhere
that would make sense
01:06
Honestly, I'm not sure. Each tweak I made has the same result -- it will build OK, but when I do a clean all & build from scratch, it's hanging.
the infuritating part is that attaching debugger makes this go away
so I'm pretty sure it's a problem with timing or async or something of that nature.
hm, I wouldn't know where to start looking
the sad part is that I really don't need this one step. (it's the MIDL compiling) but I wanted to do this incrementally, and refactor out the MIDL entirely in a later PR
screw increments then, come in with a hammer!
no?
01:09
for that, I need to do a PR against dSPACE
is it maintained?
well I opened an issue and a guy talked to me, so yes?
oh yeah it was that link!
in this case, I want to create new attributes that dSPACE's type library converter can consume
interesting
01:10
decorate our classes with those attributes and then have the dSPACE generate the type library directly without going through IDL editing & MIDL.
that would boot the olewoo and MIDL both to the curb
bye bye bye 100GB dependencies
...sounds ideal
yes that's what I want to get but this won't happen quickly. may be a couple of weeks before it all come together.
that's fine!
kicking out olewoo and MIDL makes it all worth it!
01:23
@M.Doerner agreed :) ...would be nice if there was a way to make the consoles valid log targets, too
01:38
it runs!
now let's wire it all up and start the socket listener
(and then eventually figure out how to get it to minimize to systray)
hm wait, systray's gone
ok no that was just me disabling all the annoying apps there
random thought: should server & dbserver have different icons?
perhaps just an overlay on top of the ducky will do
think that's a developer thing, but yeah could be just simple differenct --- light & dark icons or osmething
overlay works, too. don't make it too fancy. most users won't want to care. :)
02:08
For now what I want to see is just something in that console window :-)
02:18
RPC port range is 1024-5000, ... that can go in server settings, yeah? Or does it go in client settings, and passed by command-line?
#decisions
meh, have a Rubberduck.DataServer.Properties.Settings.Default.DefaultPort to fallback to, and accept a command-line --port
 
2 hours later…
04:11
bwahahaha now that's a good sign!
05:05
technically, it's up
I need to give a little more thought about exactly how I'm going to end up writing to that console
What, quacks ain't cutting it?
haha
I think I'm going to fire events from the JsonRpcBehavior, there's a callback that can be supplied when you call WebSocketServer.AddWebSocketService<TBehavior>, that I think could be used for this.
from there I can get to the viewmodel I think
I'm fried, bed time!
GN!
 
8 hours later…
14:05
> Came across this today. Is there any sort of convention/example for a guard clause that can be written for when a predeclared (factory) class is used as a variable? Particularly for when the factory creates the class as an interface and the variable is the same interface.

I was thinking like having a Boolean member variable in the class which is only true if the factory method is used?

Thanks!
14:50
@MathieuGuindon microsoft.github.io/language-server-protocol/specifications/lsp/… this is useful right at the end of the spec so you might have missed it. The Dev tool (client) is in charge of the server and launches with a port at the command line or however you launch it. If that's what you were getting at
 
3 hours later…
I guess having to open firewall ports is going to have to put an end to no-admin installs
@Greedo ah, that makes sense - thanks!
17:41
I'm going to wire up the console before I start with the DB client / LSP server implementation. Nice thing about making two servers is that with the right abstractions I only have to do it once.
#StopStartingSartFinishing actually I should take the db server to the finish line first
18:01
@MathieuGuindon FWIW, no it shouldn't. tB once did that but not anymore. There's a way to do it, but not sure how Wayne did it to avoid requiring admin.
interesting!
does the byte traffic need to be encrypted? I'm giving exactly zero f's about this at the moment, ...hope it won't come back and bite later...
tbh I don't see why it would have to be
seems a waste of cycles.. for this purpose anyway
not sure what it buys. if it's all local via loopback, encrypting is silly thing to do because you can just look at memory dump, and oh, there's the data!
More important is whether you can ensure that you don't get hijacked by a malicious process talking to your bits.
oooh but then there's a scenario where RPC goes over TCP/IP to some remote server.. I guess
hm
I suppose so. But that's #later.
^^
the entire source code goes to the server, so it's probably not happening :)
#marketing RD3 needs emphasis on everything being local despite the client/server and sockets
transparency and all
 
1 hour later…
19:13
ok I think we have a winner here
hm, should actually be abstract
and poof, there's a JsonRpcConsole<Rubberduck.DataServer.Configuration.ServerOptions> and a JsonRpcConsole<Rubberduck.Server.Configuration.ServerOptions> on the table
    public abstract class JsonRpcConsole<TOptions> : JsonRpcConsole, IJsonRpcConsole<TOptions>
        where TOptions : class, new()
    {
        protected JsonRpcConsole(TOptions configuration)
        {
            Configuration = configuration;
        }

        public TOptions Configuration { get; }
    }
much better :)
narrator: moving the YAGNI into its own class was, indeed, much better. extracting these classes into their own files, too. much easier to delete, mwahaha.
19:54
        public void Start()
        {
            _console.Log(LogLevel.Info, $"Starting server...");
            var elapsed = TimedAction.Run(() =>
            {
                if (!_socketServer.IsListening)
                {
                    _socketServer.Start();
                    _console.Log(LogLevel.Trace, $"Socket server started.");

                    _uptimeStopwatch.Restart();
                    _console.Log(LogLevel.Trace, $"Uptime stopwatch started.");
                }
                else
I think it looks pretty good
20:12
@this IINM (and I'm highly likely to be) that was intended as a crutch to rewrite the assembly lookup behaviour for one of the assemblies that was missing...
looking at the original commit that introduced the file (which was overwritten by your force-push, it doesn't seem to be referenced anywhere
that implies I may have used it in a non-working state and removed it again without removing the task declaration
soo .... it's probably construction debris that shouldn't have been committed in the first place
@Vogel612 that was my stupidity - I pulled your PR into the next so it was backward and I already had made some progress so couldn't work out how to get it right. I did try using stash and switch then apply the stash but that didn't work out. Sorry about that.
no worries.
@Vogel612 OK. I wasn't sure if you wanted the git versioning behavior applied since that was the original purpose from the github you borrowed.
I was doing the whole "I don't understand what this does, but they use it and I've seen it in conjunction with an error message I'm seeing on my end, so let me try it"-thing
sooo ... yea no
re: the commits > that just means that now you're "it" when it comes to that part of the build ;)
Gotcha. Thanks for the background!
20:25
oh and re: using github actions ... I don't think we want to roll that into this particular PR, but I'm not opposed at all to ditching AV
Not sure whether GH actions will be that much better, though.
Can we, though? Can it handle building an InnoSetup installer?
why would it not?
I have no idea what GH action is.
and whether it's basically running a VM as AV does
from a cursory glance quite a while back and fuzzy memory I recall it's basically just linux docker containers
InnoSetup probably runs on windows only. So that'd be something we'd have to figure out if we want to keep building InnoSetup installers.
20:28
I recall seeing something about custom github action runners, so that might be a thing we can use
but ... I definitely cannot look at any of that before this summer
yeah, it looks like there's at least 2 github repos claiming that
of course, neither are documented very well soooo....
@this it also is a matter of the infrastructure support existing on GH's side
although if worst comes to worst, Duga is a working webhook ... we'd "just" need to set up "some" plumbing
if we do, that's where code-signing certificates would get into the process as well ...
alternatively we just strip AV down to just the bits that GHA can't do.
(more complexity, thou... yay?)
so ... building framework and installer?
that sounds like ... a good way to shoot ourselves in the foot
We want the build to be simpler in all aspects, right?
Yes, I think so.
definitely want to shoot this frankenstein monster down for good. It's not fun to maintain.
21:06
how's your day going :)
I wasn't too far off with 2000 attributes lol
I'm almost done with the data server, will be able to start the LSP server very soon, ...and reuse 80% of the data server plumbing :D
21:59
So, Rubberduck.DataServer.exe -p 3031 -i starts it in interactive mode listening on port 3031; drop the -i to run headless.
Rubberduck.Server.exe will start similarly
22:11
RE: GH Actions; at one point I had the website and API automatically deployed to Azure on push .. it's pretty flexible.
hm, I could also do msbuild tasks
The advantage would be that the CI would all be within GitHub
Not sure we wouldn't need the token anymore, but still nice to drop a dependency
In any case, definitely ok not to open that can until we're perhaps looking at releasing 3.0 I'd say
 
2 hours later…
23:53
[rubberduck-vba/Rubberduck] 1701 stars vs. [decalage2/oletools] 2307 stars

« first day (3144 days earlier)      last day (36 days later) »