« first day (1529 days earlier)      last day (1651 days later) » 
00:00 - 16:0016:00 - 00:00

12:00 AM
RELOAD!
[rubberduck-vba/Rubberduck] 3 opened issues. 1 closed issue. 21 issue comments.
 
12:48 AM
from top-left, clockwise, it's Raleway, Bank Gothic, Montserrat and Syncopate
 
@this was thinking of making the extra class I had to insert for the indexed prop as just an inner class of Events. Didn't go well though.
 
@ThunderFrame I think small caps Bank Gothic works the best. Syncopate does not primarily because the line weight is too different. Montserrat has the right line weight but I prefer smallcaps still.
 
1:05 AM
@this you do know that Bank Gothic is the font used in "24" titles. So Jack Bauer is going to be happy when he next consults his Rubberduck. (btw Bauer definitely beats Norris)
 
Nope. #TIL.
But can Jack's tears cure cancer?
 
To be fair, Bank Gothic is used in a lot of places.
@this sure, but it's going to take 44 minutes to execute the plan, and there will be commerical breaks where nothing at all happens.
 
Lol
 
2:03 AM
@ThunderFrame :+1: nice!!
 
@MathieuGuindon which one of the four? ;)
 
I like syncopate
TBH they all look nice
I like the weight of bank gothic, but it's not clear what's a cap and what isn't
That said, of all the fonts I had I went with Showcard Gothic, so...
 
2:25 AM
I think this is BSD licensed now.
There is about zero documentation for Dragablz - AvalonDock has extensive documentation and looks like it might play nicer in an ExtendedHost.
 
2:56 AM
Uh, codeplex?
Oh they do have github. github.com/xceedsoftware/wpftoolkit
 
@this There are forks on github. Not sure if any of them have the latest GPL compatible version though. The author took it to a paid model after version 2.2
 
LOL, 591 commits and 501 issues.
 
I think 2.2 is the last BSD licensed version.
 
Hmmm.
 
It's what sharpDevelop uses.
 
2:59 AM
This Gh site says it is using microsoft public license
 
It would also mean that we wouldn't have to create VBA owned toolwindows at all - they could be completely managed.
I downloaded the source from that link and it's packaged with a BSD license.
 
How would you dock it though? With SetParent?
 
There are a couple forks on github that relicensed it to MS-PL.
 
I think this is tne "offical" fork
 
:shrug:
I could put up a project for the last BSD version and publish it on NuGet.
@this I'd take over the entire client area, then subclass the VBE's tool windows and put them in WPF wrappers.
 
3:03 AM
But the GH apparently has been fixing bugs and are on 3.x....
 
Isn't that one the 45 day gratis one with a paid license after that?
 
@Comintern hmmm. No more COM events. No more subclassing....
 
I could also fork it out of sharpdevelop.
@this Eh? Any custom code panes are going to require either event hooks or subclassing.
There's no other way to keep the environments in sync.
 
github.com/xceedsoftware/wpftoolkit/wiki/… Seems to imply we can make do with the free
 
Interesting. That would require a GPL compatible license though.
 
3:08 AM
@Comintern we spend too much time fighting the IDE if you ask me, i figure that if we implement all custom code panes and whatever, we can set whatever events we want, ans it would be pure .net, right?
 
@this Yes.
 
@Comintern and ms-pl isnt? (Technically, we are lgplv3)
 
The only events we would care about would be window management stuff like adding windows, closing them, and so forth.
 
Why?
We own it, so we do the hell we please?
 
@this MS-PL isn't even GPL compatible in binary linking form.
 
3:09 AM
Bummer
 
We need to know when the VBE creates a window so we can make a tab for it.
 
Hmmm in response to oenong a codeane..., yeah. We do.
 
And on the flip side, we need to know when it tries to destroy one so we can release it.
The subclasser already handles that - it's why I put in the lazy SCW evaluation.
 
So we still have to react to the vbe events anyway. I think it is good enough for that purpose.
 
The stuff that we need to react to is lower level than anything in the VBE object model. The only thing that really requires using SCWs is figuring out what windows belong to what.
Hell, if the VBE.Window wasn't busted we wouldn't even need to do that.
 
3:13 AM
Do we really need the subclass if we already can get vbe to tellus when a component is added,removed or changed?
I thought the subclass was for stuff like selection or keystroke, which we wouldnt need with wpf stuff
 
Those events aren't reliable for window handling.
It also means that we don't need to subscribe to the VBE's events.
We can get that information from the WinEvents hook.
 
Hmm AIUI, weare using COM events ATM.
 
We're using both. The COM events are subscribed to by the parser, and that's mainly to pick up renames and new modules\projects.
 
And the events only report the changes to projects or components, we dont need to track all windows once we go full wpf, do we?
 
The subclasses are primarily used for 2 thing - we need to raise events to track the focus changes so the hotkeys work, and we're getting a keyboard hook in for AC.
 
3:19 AM
But see, those are provided natively in wpf.
 
I know, but they were originally added for the RD_FOCUS events.
We can't switch hotkeys on and off without knowing trapping WM_SETFOCUS messages.
WPF doesn't have a "real" windows message pump.
 
Do we have to? If we are full WPF, we use its native hotkey support?
 
That code was originally written for this.
 
That may mean being greedy about the focus though.
 
@this Not if we want an immediate window.
 
3:23 AM
@Comintern Moi? ;)
 
Or a properties window. Or anything else that there isn't a native version of.
 
Ah, i was thinking we do it all because they all suck. ;)
 
Our hotkeys need to work when VBE owned toolwindows have focus.
 
Yes so really its still a mixed environment.
 
If we let them detach when a VBE window loses focus, we have to pick it up when an RD window gets focus and visa-versa.
 
3:25 AM
Need testing though, VBE may not like having its toolwindows ripped away amd landed in a foreign country.
 
Even if we offered our own implementation of everything, we would still need to know if the VBE decided to focus a code pane in the MDI, because we would need to take an equivalent action in WPF.
 
Agreed on the focus.
 
@this Meh, it shouldn't care where they are when they're undocked. Throwing it in a window as a child is no different than the desktop being its parent.
 
@Comintern it shouldn't. But my belts and suspenders says theory and practice doesnt always go hand in hand.
 
The subclassing is pretty rock solid at this point, as are the WinEvents. The only problem areas have been hanging on to SCWs or passing them around in events.
Oh, there will be testing.
 
3:30 AM
Personally, I would love to close off the pUnk project. It is a hard one.
 
The other nice thing about the subclassing is that it provides a good bridge between the managed and unmanaged world that doesn't go through COM. We bypass all that headache entirely. Need to know when a code module is renamed? Listen for the WM_SETTEXT. Much cleaner that subscribing to the VBE events though the RCW.
 
Maybe but isn't there also a difference in the timing. --- a COM event may be fired before a corresponding Window message is sent?
 
@Comintern I wonder if we could pull some strings...
 
@MathieuGuindon Might be possible. It's worked for us before.
 
MS could still give Rubberduck explicit permission to use it, no?
 
3:34 AM
It isn't MS owned - it's private using the MS open source license terms.
 
Although the developers have strong MS links AFAICT.
The BSD version is stable though.
If I tracked a branch against the sharpdevelop version I could pull their upstream bug fixes too.
@this I'm not sure we care. If we need to respond to the VBE destroying a window, why do we care if the COM server does that before or after the WM_DESTROY?
Native WinEvents and message pumps aren't on the COM interface surface. Anything that we do on that level decreases the contact area between the managed and unmanaged side. We want and need that. Given the choice between holding a COM events object and not holding one, or passing around IWindow wrappers and just listening in on its message pump...
 
Dont have the code in front of me, but it can mean a COM event may be fired, is cancelled, so no window message, likewise, if there are multiple window message but only one COM event, it would be an example where COM event might be preferred.
Whether that is actually the case, IDK. Just want to consider that.
I do agree taht if they are basically equivalent, we should prefer window message over COM events.
 
If a VBComponent raises an event that it's being closed and I don't see a WM_DESTROY, I'll trust the message pump any day.
 
Hmmm. That could mean bad things,
 
3:45 AM
@this I don't think they're equivalent. I would rather see what the OS sees than trust an application that can't even track its own freak'n hWnds.
 
For example, if we use WM_DESTROY to release a component, ww might wnd up causing more AVs or leaks because they are not being released by us when the close event is fired (and ignored by us), resulting in no WM_DESTROY being sent.
 
BTW, our DockableWindowHosts were causing crashes before we bypassed the .NET Window wrapper and started using custom subclassing code.
 
Not exactly. We are aggregating COM interfaces there.
 
We don't inherit from Window. We handle that functionality ourselves.
The COM aggregation was a different issue. The VBE wasn't handling the toolwindow sizing correctly when it was tearing windows down on close.
 
Oh I see, i only knew about crashing fixed by aggregation, didnt know about crashing fixed by subclassing for focus.
Btw, I understood it was the .NET implementation of UserControl that was flawed.
 
3:57 AM
Not in that specific instance. UserControl has to inherit from Window because only windows have message pumps.
Window in the sense of having a window handle, that is.
 
Need to check archive but the root issue was that .NET impl was not handling the IOleObject::Close() correctly, causing AVs on shutdown. Thats why timing matters.
Oh, and IIRC, those AVs were occurring long after .NET had shutdown.
 
@this Agreed, but timing also matters in how the managed side processes the message pump. IIR, it was leaving its subclass in until the DockableWindowHost was disposed and not pulling it soon enough.
I also seem to remember that disposing a managed object in the middle of processing the WM_DESTROY message was bad.
 
IMPOV, the window messages and COM are almost two different worlds. Yes, COM may have to build upon window messages but it has additional contractual obligations that arent always wnforced with the window messages,
 
Why does it matter if you aren't even touching the COM surface?
 
Let's step back and look at the forest again. We've been talking about window management.
e.g. IWindow vs. window message pumps.
In this context, there's a happy overlap so we have the freedom to choose between two because, well it's window (in however sense of the word you want to use), right?
 
4:08 AM
All we care about is the winproc level for what we'd be doing. If we need to get the ICodePane, we ask the COM server for it. About the only thing we need the VBE for is keeping the code in sync before saves or compiles.
@this Except we don't. Because first, the VBE doesn't have events related to the windows, and second, because we can't ask the IWindow what its handle is and get a valid response.
 
Correct. I'm more concerned about IVBComponent or ICodeModule or ICodePane , which are usually connected to a given IWindow. I'm thinking that if we take any COM object, we have to start pay attention to the COM events whenever a IVBComponent is added/removed/changed because that's a signal to us to drop our references and get new one.
 
We can also safely multi-thread with the message pumps. We can't with the COM server.
 
and for that, I don't think we can rely on window messages to tell us to refresh our IVBComponent references.
 
We don't need to any more with Avalon though. What we do need is to know if the Window that we have associated with an IVBComponent is closing and what we're supposed to do with the code in the managed editor.
We shouldn't be using the VBE events in a multi-threaded environment to begin with.
 
ahh but that presumes it's still safe to keep holding a reference to the IVBComponent
if a ComponentRemoved event was raised and we didn't listen to it, that can have consequences?
 
4:14 AM
That's why I've been looking for better ways to find the code module from an hWnd.
That's the only reason we need the COM server at all.
 
and say that you find it. What about the ProjectsProvider, then?
 
What about it?
 
it basically holds onto the VBProjects, VBComponents collections and provide the child item without requiring the consumers to dispose of it.
 
@this Does that help us know what window is associated with which code pane?
I guess I'm confused by the seemingly contradictory assertions that we have to use COM and that COM is the bane of our existence.
 
@Comintern No, but it's indirectly listening to the COM events to know when it need to release the COM objects no longer being used.
@Comintern My concern is primarily that if we listen to window message in lieu of COM events, the timing won't be exactly correct, and we end up violating our contractual obligations, in similar fashion to what happen with the DockableWindowHost class before Wayne made it aggregate COM interfaces.
 
4:22 AM
I could care less about the COM events.
The COM events simply don't expose the events that we would need to provide our own code panes.
 
@Comintern No, it doesn't. We agree on that point.
I think the disconnect is in the fact that when we do get the handle to a code pane, we are going to want an actual COM object for that code pane to manipulate the code, right? As soon as we do that, we need to ensure that we are not going to be tinkering with a ghost.
 
If the VBE sends a WM_DESTROY and we have it subclassed, the underlying object can't destroy itself until we're done with whatever we need to do.
Processing in the message pump is blocking on the VBE.
We obviously can't just eat things like that, but we can get our ducks in a row first.
Speaking of which, that would be an awesome project name. "Getting our Ducks in a row".
 
@Comintern but you said earlier that disposing a managed object in middle of WM_DESTROY was bad. What's to stop you from saying that releasing a COM object in middle of a WM_DESTROY isn't equally bad?
@Comintern Agreed!
 
@this Disposing of that object in its own message pump is bad.
 
Ah, gotcha.
 
4:30 AM
I'm not sure the .NET Window implementation was thought through that well. At one point I read all the source code to figure out WTH it wasn't pulling out its subclass and it seemed like it wasn't written with interop in mind at all.
 
I'm sure they were made by some hapless interns with only half grasp on COM
it doesn't help that COM has like a bajillion interfaces you need to know about, especially for UI stuff.
which means many more ways to get it wrong.
Hence why working with COM requires belts'n'suspenders. Overalls recommended for that extra coverage.
 
It certainly wasn't written with WPF hosts in mind.
 
hm. Did WPF exist back then?
 
Nope.
 
Well, they did update the InteropServices in the .NET 4, though.
 
4:35 AM
I'm pretty sure that the compositor is blissfully ignorant of all things WM.
 
I guess they were all, "meh, nobody wants to do COM + WPF"
then we came along.
 
I thought the .NET 4 update was mainly focused around the RCW.
 
Yes, that's correct; hence the lack of update around WPF + COM
 
That's why I want to minimize the WPF\COM interaction as much as possible.
 
or even just plain old WinForm + COM which seems still a bit iffy.
 
4:37 AM
At least with WinForms you own your window.
 
For the record, I absolutely agree on the minimizing the contact. We just have to do this in a way without losing our contractual obligations (e.g. listening to the COM events to ensure that we are not holding what we shouldn't be holding).
 
As an addin we don't. I'd like to reverse that dynamic as much as possible.
@this Agreed. That's why I was looking into memory mapping the text in our code panes.
 
you know if you get the WPF parent going, you could basically do the hell you want with the VBE codepane - nobody'll get to see it anyway.
 
That way the VBE could crash completely and all the code would be sitting in a file (possibly with detached file handle), but it would be a backstop against loss of work due to COM glitches.
 
hm. but if it crashed, it takes us down with it.
 
4:40 AM
That's where the detached file handle comes from. :-D
 
ok, something new for me, then.
 
The file will be current as of the point of the last flush.
 
that woudl be an awesome feature, though -- "Recover your work",just like in SSMS/VS.
 
That may be what NP++ does.
 
alright. gtg. Night!
good talk!
 
4:41 AM
Yeah, TTGTB here too. Night.
 
 
1 hour later…
5:58 AM
> This PR introduces an "IsEnabled" autocompletion setting that prevents wiring up NativeVBEEvents when the feature is disabled. It also brings in the changes to self-closing pairs, which is unfortunately still WIP although a big improvement on the current [next] implementation, at least in terms of testability. Although the code for block completions is still in place, the AutoCompleteService effectively ignores them, so the block completion settings are effectively no-op. Clearly this...
leaves AC in a pretty ugly state, so I'm slapping a [WIP] on this PR for now.
 
6:12 AM
[rubberduck-vba/Rubberduck] build for commit 6ae4d254 on unknown branch: AppVeyor build failed
BUILD FAILURE!
 
oh, great
fml
ttgtb
 
 
1 hour later…
 
Hello people. I took the liberty to fix the OS requirements in the Wiki, as it now requires .NET 4.6, which requires Windows 7 SP1 (Was specified as 4.5 and Vista)
 
Thanks 😀 That's what the wiki is publicly editable for
 
 
2 hours later…
9:41 AM
@Comintern As far as I remember, the problem was not that we pulled down the dockable windows too late, but that we pulled them down too early. The windows were not expecting that the managed side of their windows did no longer exist when they got the WM_CLOSE, which is sent after the add-in shutdown.
Btw, thank you VBE for closing windows created by an add-in only after unloading the add-in.
 
 
1 hour later…
10:48 AM
 
@Duga added Office 2000/2003 to the list of "unofficially reported to work in" section.
 
> Early on in the project, Carlos helped us through some show stopping issues around plug-in development. He’s absolutely a subject matter expert here and I’d highly encourage the community to take his advice on this.
> I'd be happy to look into this, although I would have to start learning C++ at the same time.
 
@Duga Been looking for an excuse to pick up c++
 
> I know a bit of C++ and can be available via email if you need a hand. (Just remember that I don’t know squat about COM shims and might have to set up a Windows VM!)
 
11:07 AM
@mansellan I think the first thing you will have to do is to download VS2010 Express.
That is basically the point after which I stopped looking into building a shim at the start of this year in favor of more pressing things.
 
downloading
will install after work
 
Since the shim wizard will do most of the work for you, I guess you will not have to be too proficient in c++.
 
that's what I'm hoping :-) at least for an intial PoC - I'm sure there's stuff we'll want to add along the way.
from the discussion, Carlos said it took him 3 months to get to the final version
 
The articles about the wizard itself are linked in Carlos' blog.
 
ok cool
 
11:13 AM
When I googled for it, the blog was one of the first results.
Unfortunately, the articles are concerned with a lot of stuff irrelevant to our situation.
As Carlos mentioned, most of his problems were connected to allowing the shim to work with CLR2 and CLR4.
From the articles I understood that the assembly loading mechanism changed between those.
We require CLR4 anyway.
 
 
2 hours later…
12:50 PM
 
@Duga technically, it can be run on Vista but it has to be SP2. Also, since our requirement is primarily determined by the .NET framework, I made it first.
 
@Duga @MathieuGuindon What's the lifespan of the AutoCompleteService?
 
Rubberduck's
 
@Comintern FWIW, a bit of history in regards to why Wayne set it up that way WRT toolwindows.
@MathieuGuindon I want to ask you - I saw you adding some new stuff to Rubberduck.Common within the Rubberduck.Core project. Do we want to do that, given that Rubberduck.Core should end up being the Rubberduck.UI? Would Rubberduck.Resources be a better home to house shared code?
(sorry to bring that up. I know Resources is .... uh, interesting topic).
 
that's probably right. I'll move it.
TBH I wasn't sure where to put that CodeString at all
it started in ...RubberduckTests
 
Yeah, and we really should have only one junk drawer, not two.
ah
 
2:11 PM
Good deal - Probably want to make sure that Detachwon't be called before VBNativeServices goes away on shutdown - it explicitly clears its delegate list now.
 
@this sometimes you collect so much junk it just spills into another drawer. Of course, that's probably a hint that you've got too much junk...
 
@this Yep - I was seeing that under the native debugger when I was investigating it.
 
@FreeMan Exactly. It's a big code smell if you have more than one junk drawer. We want to try and keep everything sanely organized.... but with "shared" code, it's a big PITA.
 
CodeString probably belongs in VBEditor
 
@this It's a pretty big house smell, too.
 
2:15 PM
Speaking of which, I really want to get all the pinvoke stuff in one place. That isn't even in drawers - its strewn all over the floor.
 
@Comintern there's already an issue for that. and a checklist, too.
 
Yep, I saw that.
 
there's also a nuget package. That would make it more convenient, possibly.
 
Depends on how they define them. It would still be a PITA to go through and make sure things are using the right enums, etc.
 
Yeah. I was not sure if we were customizing our pinvokes.
 
2:19 PM
We have at least couple places where we define the signatures differently.
 
Hmm.
 
Likely not intentionally or for any reason other than having them declared in multiple places.
 
At least those could be housed in the Rubberduck.Resources - it's our official junk drawer, I suppose. Stick it in Rubberduck.PInvoke namespace or something.
The only major restriction on the Resources project is that it can't be referencing other Rubberduck.* projects because it is itself referenced by most, if not all of them.
(which IMO, is a good restriction - that should be the only place the truly globally shared freestanding code should go)
 
morning gentlemen
 
morning!
 
2:24 PM
I think I prefer the namespace Rubberduck.WindowsApi, but yes.
 
That works.
 
And, we could enforce its use with an analyzer.
 
hmm. How?
 
by failing the build given a [DllImport] that isn't in the correct namespace?
 
2:27 PM
Oh, you mean for the Pinvokes declarations? Yes, that should be easy to enforce.
I was thinking of shared code which is a bit more.... ephemeral.
 
Ah yes - like string extensions.
 
Yes, I have hopes of seeing them in that but.... that will be very hard to enforce and might not be possible at all times.
esp if it has to reference one of those projects, since Rubberduck.Resource is at the bottom of the totem pole.
 
FWIW, I can read/write basic C++.
Don't know too much about things, but I suspect I could get by to a certain extent, between my C++ book and the internet.
If you guys do this, I'll be happy to be a duck for you.
 
Thanks! Better than me; I can read and write broken and leaky C++.
 
I can probably get by in broken and leaky C++ too.
 
2:35 PM
Don't worry, my C++ would probably leak too.
 
2:49 PM
nvm, I had the wrong end of the stick
not enough coffee
 
Lord help me. company acquired a supplier, and their stuff is on... FoxPro.
 
I'm looking forward to not being the only RD member with VFP installed.
 
Does VFP use VBA? Can't remember.
 
No, it uses FoxPro.
 
that means I'm potentially getting a VS 6.0 install..
 
2:58 PM
Ah, it's both a product and a programming language. Gotcha.
 
Do you need to develop in it, or just connect to the data?
 
The sensible thing would to migrate out of VFP ASAP.
 
change the company logo on some invoices, given a certain specific company id
 
feature-request: Add grammar for Visual FoxPro
 
I have only heard horror stories about fox pro...
 
3:00 PM
status-declined :-)
 
@MathieuGuindon Bwhahahahaha!!!
 
colleague goes "looks like Microsoft recommends something called lightswitch to replace it. ever heard of that?"
> Yeah. Dead & burried for a decade....
 
@MathieuGuindon Simply replace the image file that it pulls in? Could it be that simple?
 
Microsoft has a marked propensity to start up many things, then wander off in search of new shiny new things.
 
@FreeMan no
 
3:04 PM
@MathieuGuindon Are you sure colleague didn't mean "turn it off like a light switch"?
 
VFP was for devs that couldn't grok VB6 iiuc
 
^^
 
positive.. cries
 
@mansellan it's worse. It's not relational, either.
 
@MathieuGuindon worth a shot....
 
3:04 PM
@this eesh
 
@this I misread that as "rational". It's probably not that, either...
 
you know, flat hierarchical databases? Like Paradox? DBase III?
 
Btrieve
 
Break out the 8 track tapes for Mat!
 
3:06 PM
we're here for you, @MathieuGuindon. We've got your back! i.e. spears in it
 
Yeah. So old skool that even old skools be all "yer too old to be old skool"
 
FWIW, the ODBC drivers are pretty performant.
 
seems like whatever I do and wherever I end up, VS 6.0 lurks in the shadows, quietly laughing until one day it steps out and goes "BOOH! REMEMBER ME?!"
4
 
@MathieuGuindon Think about how those COBOL guys feel....
 
Old?
 
3:07 PM
More like, "I just want to stay retired, dammit, not get suckered into 300K job to fix this POS that nobody should be using anymore"
hmm i wonder if VBA will be the next COBOL.
Maybe not.
LOL
 
:46183648 I looked up at just the right time! :)
 
it all depends on whether you have mutli-billion firms still running xlsm or accdes 20 years later.
COBOL was tied to the hardware, so it had that going.
 
is your gov still running XP? gives you a clue ;-)
 
given how prevalent it is, do you really think they won't be?
 
well...
we have some windows 98se machines
 
3:12 PM
@KySoto hole in the ground, usually filled with water.
 
running a custom piece of test equipment
sad thing is
 
<tangent>Would you say that on average, any given COBOL program has more quality than any given VBA program?</tangent>
 
the labview application designed to replace it requires win7/win10
 
@this no
 
@KySoto so what's stopping you from replacing it?
 
3:14 PM
maybe not worse, but def not more
 
im not an engineer xD
 
@FreeMan Really? I figured that because they were sooo stupid expensive, they'd pay a team of engineers to peer review and make it actually work, etc.
 
yeah they are actually building new testing equipment
it just takes like 6 months
and our demand has been skyrocketing
just like holy crap 30%+ growth type stuff
 
When I was writing COBOL shudder, we did have code review by our managers. They did manage to find some things, but they also made mistakes. I drew out the truth table for my boss on his white-board to prove to him I had the AND/OR combos right, and he still made me change it to broken code...
 
so instead of retiring the old bastards we have to keep them on to keep up with demand
ouchy
 
3:18 PM
@FreeMan what I don't get is if mistakes made their way in, that'd been a opportunity for those multi-billion firms to upgrade their software and fix the bugs and.... stop using COBOL....
AIUI, the only reason they kept on using COBOL was because it has been working for decades and aint nobody going to touch that!
 
You have any idea how many millions billions of lines of COBOL exist? It takes time and a lot of money to replace all that "perfectly good" code for no valid reason other than to replace it. Don't forget, us IT types are an expense, not revenue generators.
 
i just found a funny comic
 
There's a xkcd for everything
 
oh man, thats beautiful
it expanded it out AND kept the hover text
 
@FreeMan No, I didn't, actually. Goes to show how little I know. I figured back in 70s, they were probably only hundred of thousands since there had to be so few people and so few computer back then.
(relative to today, I mean)
 
3:23 PM
Yeah, but new code was being written in COBOL shops at least into the mid- to late-90s. You've got these guys who know the language, it's cheaper to have them code in what they know than to retrain them and/or hire people who know new languages. You can't get rid of them because there's all the legacy code that has to be maintained...
 
Oh wow. That's a different story. I thought COBOL was dead by time we got in 80s.
But if it's been actively developed up to mid 90s.... well, massive pile of tech debts nobody'll want to pay, I guess. Thus, we get millionaire old bastards.
 
Pfft! I took a college class in it in '91! First job outta college was coding COBOL in '92. Worked there 3 years, finally escaped, then got sucked in by a customer of the old company that wanted some people who knew the software to help support it at their end. Worked there until '01!
That monstrosity probably still lives on to this day. Running on PCs!
 
The insurance company I worked for back in the early 2000s was actively developing in COBOL, Easytrieve, and FORTRAN.
 
FWIW, I think every Java kid wish they studied COBOL after they graduated.
 
3:27 PM
^
 
Yup. Old code never dies - it's just too bloody expensive to replace that which works.
 
It may not be sexy, but it likely pays the bill much more better.
 
@this I think the correct term is "Jarhead".
4
 
I hate you all! Now you've got me thinking about contacting some former coworkers to see if they're still using COBOL and if they're hiring... It would be soul sucking, but it would sure pay the bills!
 
You do need Wally's mentality to embrace the job, though....
 
3:29 PM
Dilbert's Wally?
 
Yes
Who else?
 
just checkin'
 
> @mansellan @rubberduck203. IIRC, the approach that I used was:

1. Run the [COM Shim Wizard 2.0 for VS 2005](https://msdn.microsoft.com/en-us/library/aa537166.aspx). Note: you don't need VS 2005, it's a wizard that generates VS 2005 projects that you can convert to VS 2017. You need a non high-DPI display, though. At this point, if you register the COM Shim as VBA add-in, you can test the Very High or High macros security settings to ensure that not using code signing is not a problem.

2
> That's awesome, thanks so much for the roadmap!
 
@Comintern so there's this folder with a bunch of .frx files... no apparent project.. any idea how do I know what version of FP I need to use?
(this already feels like a nightmare)
 
3:49 PM
> For interest, this suggests a single C++ project can be used to compile both 32-bit and 64-bit output from a single project. Not sure if that's practical but something worth checking.
 
@FreeMan :whispers: Do it.... Do it.
How bad could it be?
 
@MathieuGuindon I think there's a way to do that by looking at the header with a hex editor, gimme a sec and I'll see if I have any notes on it.
 
00:00 - 16:0016:00 - 00:00

« first day (1529 days earlier)      last day (1651 days later) »