« first day (3164 days earlier)      last day (16 days later) » 

12:08 AM
REFRESH!
[Minesweeper] 83 Games Played. 58 Bombs Used. 10360 Moves Performed. 14 New Users
 
@MathieuGuindon Well done!
 
Needs to print an ASCII art ducky now 😂
3
 
12:57 AM
hm, not sure about this
narrator: naaaah
 
1:44 AM
Ok, got the client proxies covered. Moving as much as possible out of Server LocalDb into Rubberduck.RPC so that Server.LSP pretty much only needs to implement the server commands
Also Server.Telemetry has a number of shared abstractions with Server.LocalDb given the need for a database.
 
 
1 hour later…
2:57 AM
@MathieuGuindon I definitely prefer the second one :)
2
 
 
3 hours later…
5:32 AM
hm, not sure how to surface the generated client proxies at all.
I thought I could register them with the service provider, but I'd need a builder for that, and it's too late at that point, it's built.
The client proxies are tied/scoped to a single outgoing message, basically
 
 
7 hours later…
12:28 PM
@MathieuGuindon Oooh... Get this man his cowboy hat, he's developing in production!!! :D
Great work Mug!
 
 
10 hours later…
10:13 PM
quack
 
10:25 PM
@mansellan oh thank goodness! I now know to not ask you for medical advice! That'll be a big help.
 
Uhm, wut?
Feel like I missed a memo...
 
@mansellan sorry. the joke's that fake doctors are called quacks
 
haha woosh!
 
don't worry. that's customary for my.... phrases (can't really call them jokes if it keeps making woosh sounds)
 
I have to apologise to the pond... I've been far too busy with life /work / twinBASIC. What did I miss?
 
10:36 PM
Mug is back in his castle and it's going to be a stormy night. Apparently he'll be creating life.
 
v3? (hopes...)
 
yes
not sure if you saw updates from blog
 
nice!!!
no, been a bad duck
 
FWIW, you aren't the only one. I've been gone for awhile myself.
 
holy shit... just read the first page. LSP IS HAPPENING!!!
 
10:43 PM
yeah, no other way to get past the present limitations in v2
 
So... my immediate question would be... Should we write the front-end in twinBASIC? Not having to deal with COM interop could save a bajillion memory leaks...
But, is it ready? And what about licensing for x64?
 
well, that's why I looked at this. Not sure if you saw the net hosting project
 
I saw you mention it, not sure what you had planned lol
 
this basically allow twinBASIC to bootstrap .NET Core and use it directly. That eliminates the WinForms entirely, hosting the WPF directly on the tB window.
 
woah... that's nice.
 
10:54 PM
but honestly, .NET Core can probably just use the usual COM stuff. dscom can be used to provide the type library registration (there's a PR pending). That would then enable RD to run on .NET core and as bonus chuck the olewoo + deployment projects
 
I'm mostly a .Net developer, and mostly services within that. Which means console apps using GenericHostBuilder. So I'm used to shortcuts like app.AddWPF(). I think you need to get to the point where tB integration is just app.AddTwinBasic()
 
hmm that's backward to what the project does.
 
oh sorry, you're looking to host WPF in tB?
I think it would also be nice to go the other way.
Although I guess that should already be accommodated by COM interop. Still, I can see opportunities for closer integration.
 
well, yeah but to do this, I have to start .NET Core, then call into a COM object from the assembly, and then give it the tB window, which is loaded into WPF's hWndSource class and presto, a WPF page displays on tB window.
but it's all driven by tB, rather than by .NET.
 
Very impressive
 
11:05 PM
the other advantage is that tB can be made into an effective shim for the addin & VBE addin, allowing us to control the shutdown.
not that .NET Core needs it because it's already a standalone --- the shim thing was necessary with .NET FX due to the fact that you had to load the mscoree which basically was global to all .NET FX stuff.
 
Uhm, I know what those words mean. But I don't know what they mean in the sequence you used them? Could you explain it like I'm 6?
Hey Mug!
 
Ok. Let's start all over.
In order to load a COM object you gonna to know where the DLL is, right?
 
ofc
 
and that DLL has to be able to self-describe everything about itself and the COM object.
 
yep
 
11:10 PM
in .NET FX they made a design decision that to activate an COM-visible .NET object, they would route that through the mscoree.dll
which is true for ALL .NET FX assemblies
 
@mansellan hello! yes, LSP is happening, and telemetry, and everything we ever dreamed of. It's just a matter of... well, kind of rewriting/porting RD piece by piece to the RD3 paradigm
 
ooh, ok
 
so no matter what process you're using, you are always going through the mscoree.dll to do the initial setup and it handles the location of the .NET FX assembly, loading it and returning the COM representation from that.
 
ok, makes sense
 
so if you have 2 plugins and both are written in .NET FX, the consequence is that you are technically loading both using same mscoree.dll twice
 
11:12 PM
oh. yeah.
 
and if something goes wrong in one plugin, it's in the same "space" as the other plugin and it's buh-bye, baby.
Now, with .NET Core, they changed the fundamentals of how this worked.
 
net core solves this?
 
instead of having a mscoree.dll that does the work of setup and returning a COM representation, they now generate a .comhost.dll which has all the code generated to handle all that. In effect, it's now just a normal DLL
no more regasm.exe; you just use regsvr32.exe just like you used to do
 
and AppDomain is obsolete
 
heh ok, so it's all separate?
 
11:14 PM
but if you look at the .NET core hosting project above, that assembly I used does not have a .comhost.dll at all; it's not even exposing for COM.
@mansellan yes, it's now contained to each assembly.
@MathieuGuindon partially, yes. The recent versions bought back some aspects of it. LOL
 
nice. overdue.
there's an AppContext now. Not sure of the details.
 
anyway back in that project, there's no COM exposure because I don't have to go through that COM activation since I've already bootstrapped the .NET Core so I got a delegate that returns a COM interface.
and tB gets that COM object out, all without any COM registrations at all.
 
nice
 
if you look, I also defined the same COM interfaces twice, in tB and again in .NET. They aren't sharing the same definition, proving that tB can use "private" COM interfaces as long it has the correct definitions.
 
well, that's as it should be. COM is an ABI, after all.
But nice work
 
11:18 PM
yep.
 
@MathieuGuindon how goes v3?
 
the biggest downside is that RD would require both C# and tB knowledge if we use tB as the host. Still out on the merits.
 
@this and then .net can consume the tB COM library and presto we have a Rubberduck.VBEditor written in tB, and all the VBE interfacing remains in COM land
 
But RD is made for VB programmers. Would be great to get them involved. tB is a short hop-step away from VB.
2
 
@MathieuGuindon Yes, that's certainly one way to do it. If we do go down that road, tB can start out as a simple shim, handing out the COM interface to the VBEditor and we can slowly transfer the responibility down to only the managed COM objects.
@mansellan Yes true. will need the license, though to avoid the splash penalty for 64-bit builds. Still not sure how to handle it on AV.
 
11:21 PM
@mansellan got the server-side bits working, moving on to client-side comms before I implement the actual database server.
then telemetry server will write itself
 
chatGPI, make me a telemetry server
 
and LSP is a client for both of those
 
I'm so looking forward to the tB IDE going up onto GitHub. I'm itching to make a retro version that looks just like the VS6 IDE.
Because I'm insane.
 
Haha nice
lol
 
will it come with cascading error messages, too? :-p
 
11:23 PM
@MathieuGuindon do you need troops to help make v3?
 
Haha of course I do!
 
OK, will try to get back into the pond soon.
 
I need to make an actual plan I think
 
Do you have an idea of features / timelines?
 
I did some work on the editor itself, so there's something done here
 
11:26 PM
A "Definition of Done" lol
 
lol yeah
The rubberduck editor still needs to integrate the tear-tabs and docking manager stuff
 
I do worry though, that RD could spend a bunch of time to make v3, then Wayne just hijacks Alt-F11 t load the twinBASIC IDE...
 
lol
different audience, I think
 
It's just a COM call IIUC...
 
well, there's definitely an intersection
@mansellan seen this? test.rubberduckvba.com
 
11:30 PM
main, or prerelease?
 
> 26,907 downloads (main)
 
downloading
 
@mansellan no reason why RD can't be made to work with tB as well as VBx
and with LSP processes, it'll be easier to work w/ tB IDE (which I believe is still LSP-based)
 
another reason to stick to LSP as much as possible
 
11:34 PM
@this I agree - I just worry that tb might replace RD
 
the only thing is that we don't have code generators for ANTLR. More likely, Wayne may made compiler API available in future.
 
someone could wake up one day and feel like making a client for VSCode, who knows
 
and in this case, RD's inspections would just migrate over to tB.
yeah
Gonna step out. TTYL!
 
later!
@mansellan same, a little bit. at the same time, I think a tB user would still find out and learn about VBA first
...and soon come across Rubberduck
 
Yep, agreed. I'm also sure that Wayne wouldn't intentionally eat our lunch. He's a friendly.
 
11:38 PM
and then as they gain in experience and knowledge and progress as developers, find out about tB, and hopefully move on from VBA
Oh, I'm sure eternal September will keep delivering
 
heh lol
Are there v3 issues I could pick up?
 
I'm very unlikely to touch the add-in client anytime soon, so...
 
Hmm, ok. interesting...
 
feel free to do anything!
Actually, I think I'll merge my PR first
 
So I could write an LSP client in Altair BASIC?
 
11:42 PM
that way the big structural changes are in
@mansellan from what I understand if you can read a JsonRpc stream, you're in a good shape
named pipes is the transport here
 
Heh, ok... I can work with that.
 
(last article says sockets)
 
Would love to contribute to v3
 
IntelliSense and completion dropdowns don't exist yet ;-)
 
I need to clone, haven't cloned in forever.
 
11:53 PM
[rubberduck-vba/Rubberduck] 1709 stars vs. [decalage2/oletools] 2321 stars
 
Are you good @MathieuGuindon? The last time I was here, you were changing jobs. Everything OK with that?
 

« first day (3164 days earlier)      last day (16 days later) »