Delegates and I am so glad to leave MS behind
-
To be honest, I'm floating the idea of switching to Linux for personal use. I make my living with Microsoft technologies, but for personal use, I'm considering what would be involved in switching. I'll be interested to see how you make out.
The difficult we do right away... ...the impossible takes slightly longer.
Richard Andrew x64 wrote:
I'm floating the idea of switching to Linux for personal use. I make my living with Microsoft technologies
I'm in the same boat. Can't abandon MS because of work (I've always worked for full-on MS shops), but given where MS is clearly headed, I'd rather not follow. I like tinkering with Linux in a VM, and have an old laptop or two running it directly on the hardware, but dedicating myself to it would be a tough transition.
-
Jeremy Falcon wrote:
Oh, and IMO it's a bit easier to do multithreaded work in C on Linux than Windows.
I love thread handling in C#. I can go high level and just let the framework do what it thinks it's best, or I can go low level and take complete control. And threads (aka async tasks) with awaits, while it can be a bit of a hurdle to sometimes realize what I did wrong and to how to break the chain of, oh, this method is now async, so the parent has to be async, oh wait, the grandparent now has to be async..., yeah, how to do deal with that takes some finesse, but I still love how C# implements the whole mess. ;)
Latest Articles:
A Lightweight Thread Safe In-Memory Keyed Generic Cache Collection Service A Dynamic Where Implementation for Entity FrameworkMarc Clifton wrote:
this method is now async, so the parent has to be async, oh wait, the grandparent now has to be async...
So much this. One of these days I'll have to actually sit down and take the time to study this and try to understand, once and for all, how to avoid getting yourself in that situation. Because right now I find myself avoiding using async/await because I see it as having to "retroactively pollute the entire codebase". And that can't be right, that *has* to be just me misunderstanding and misusing it.
-
I think Micro$oft's Delegate system to be quite hokey. Just give me regular function pointers to work with!
swampwiz wrote:
Micro$oft's
How 1990's of you. Coming straight for Slashdot? (Sorry, it's just a pet peeve of mine. My perspective is, get over it, everybody does what they do for $ and if you're not, you're either lying or I don't know what part of the world you're from where everything is free).
-
Not sure how you can draw that conclusion based off an SGML example. While I do concur the "rise" of XML and .NET were around the same time, that example stands independent of .NET, so I'm not sure what I failed to notice given the concept has nothing to do with managed code in and of itself and more to do with junior programmers of any generation knowing little of the past.
Jeremy Falcon
We just happened to be scaling more in the time of .NET. I don't think anything will ever dethrone VB/Office dev as making dev simpler, save maybe new AI things that don't yet exist but harken back to those "design by wizard" but with way way better wizards.
-
I do have to admit man, while I've done very, very, very little multi-threading in C#, from what I've seen it does make it nice. More recent versions of C++ do as well.
Jeremy Falcon
-
charlieg wrote:
So, I read this devblog article, and though delegates are somewhat different than function pointers, its the same old bs from Microsoft renaming stuff.
That's the difference between a senior and a junior dev. Juniors think they discovered fire half the time, but most things are rehash and rebranded with a tiny bit of newness. But, it's really the same ol' thing with a new bell and whistle. I still use the example of XML and SGML. While XML was more strict with its DTDs, the concept of XML or a DTD was nothing new. About 10+ years ago during the XML craze, you'd hear a lot of peeps swear they discovered fire with it... even though SGML has been around for years prior. Just rehashed stuff with a bit of umph added.
charlieg wrote:
Starting next week, I'm moving to linux.
You'll love it man. I've only done C and web dev on Linux, but the c lib at least has a surprising amount of functionality to it. A Linux box really does make a great dev box.
Jeremy Falcon
My XML hype period started around 2002. When ajax (x is for XML!) actually used XML on the wire. Then JSON came along and the security analysts have not had a good night’s sleep since. I still appreciate how easy it is to write a quick XSLT to extract _anything_ from an XML file.
-
To be honest, I'm floating the idea of switching to Linux for personal use. I make my living with Microsoft technologies, but for personal use, I'm considering what would be involved in switching. I'll be interested to see how you make out.
The difficult we do right away... ...the impossible takes slightly longer.
There's one or two programs that won't work, but I switched a few years back (to Linux Mint) and never looked back. By one or two programs, just about everything mainstream has a native version, or will run in Wine. Even most games (some still limited by flakey DRM). Some even run faster. The things I've not been able to get working are Samsung phone backup software and that kind of thing. And it's so fast (comparatively). I needed 16GB ram for Windows, on Linux I could make do with 8GB. That said, I have a feeling that on a laptop it's not as frugal with battery use. I don't have a laptop, but people who I know that do are telling me battery use is not as good. . . those same people are not ones that will have optimised anything though. Hope that helps.
-
Marc Clifton wrote:
this method is now async, so the parent has to be async, oh wait, the grandparent now has to be async...
So much this. One of these days I'll have to actually sit down and take the time to study this and try to understand, once and for all, how to avoid getting yourself in that situation. Because right now I find myself avoiding using async/await because I see it as having to "retroactively pollute the entire codebase". And that can't be right, that *has* to be just me misunderstanding and misusing it.
-
So, I read this article: Easily navigate code delegates while debugging - Visual Studio Blog[^] and I am so glad, I just don't give a flying f*** anymore. I started doing serious Windows development in 2003. I inherited a project that used ActiveX controls. Just local, no downloads - all embedded system work. I have to plow through the changing terminology of COM, DCOM, COM++, ActiveX, etc. After 3 years, I declared it utter bull****. MS renaming things just to rename things for marketing purposes. So, I read this devblog article, and though delegates are somewhat different than function pointers, its the same old bs from Microsoft renaming stuff. Worse, I suspect it made it into the C++ standard. I don't know about that, nor do I care. Starting next week, I'm moving to linux.
Charlie Gilley “They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759 Has never been more appropriate.
By what you have said you must have started your career or at least invested some time of it to MS and MS technologies. So you are where you are today because of that experience. Something, I think, to be grateful for rather than just knocking MS. MS are not perfect by any means and have made mistakes. I'm a long term desktop dev and I am frustrated by how MS seems to be turning it's back on us desktop developers, but none of that would force me into abandoning a technology (that I make my living from) for another just because they don't do things the way I like. I too have thought about Linux, but only for fun and learning it's not a platform that I could make a living from as it's just not mainstream enough (do correct me if that's not the case). I'm pretty sure that using Linux and C++ is going to have it's issues too. The difference is that you are an intelligent guy and you will enjoy the intellectual load of learning something new, so you'll think it's better. To your point of changing terminology, specifically, of COM, DCOM, COM+ and ActiveX. Well that's not strictly speaking true, it's more than a change in terminology while they are all based on the original COM, DCOM is distributed (so COM over the network), COM+ added security and performance enhancements and ActiveX added OLE to COM I believe (to support ActiveX controls, but still have COM interfaces). So you could think of it as COMv1, COMv2, COMv3 and then ActiveX, (this in a time before MS versioning by year!) so more than just renaming.
-
Thanks for that, it's been bookmarked and I'll go over it closely. The very first response (upvoted 1096 times) starts with: "Asynchronous programming does "grow" through the code base. It has been compared to a zombie virus. The best solution is to allow it to grow" ...which is exactly what I'm complaining about. You start polluting your libraries with those keywords, and then suddenly you have to modify everything that requires it, going completely against the very concept of encapsulation.
-
I think you're not noticing that managed code, to the extent of .NET and maybe Java, (I don't know much about Java except that I hate eclipse,) was revolutionary. It dumbed down programming on a scale even greater than the effect Visual Basic had on Windows application programming.
The difficult we do right away... ...the impossible takes slightly longer.
-
By what you have said you must have started your career or at least invested some time of it to MS and MS technologies. So you are where you are today because of that experience. Something, I think, to be grateful for rather than just knocking MS. MS are not perfect by any means and have made mistakes. I'm a long term desktop dev and I am frustrated by how MS seems to be turning it's back on us desktop developers, but none of that would force me into abandoning a technology (that I make my living from) for another just because they don't do things the way I like. I too have thought about Linux, but only for fun and learning it's not a platform that I could make a living from as it's just not mainstream enough (do correct me if that's not the case). I'm pretty sure that using Linux and C++ is going to have it's issues too. The difference is that you are an intelligent guy and you will enjoy the intellectual load of learning something new, so you'll think it's better. To your point of changing terminology, specifically, of COM, DCOM, COM+ and ActiveX. Well that's not strictly speaking true, it's more than a change in terminology while they are all based on the original COM, DCOM is distributed (so COM over the network), COM+ added security and performance enhancements and ActiveX added OLE to COM I believe (to support ActiveX controls, but still have COM interfaces). So you could think of it as COMv1, COMv2, COMv3 and then ActiveX, (this in a time before MS versioning by year!) so more than just renaming.
Yes, I suffered. Yes, my customer paid. Yes, I came from a pristine Unix development environment where everything made sense. I also did VMS where there were no idiots allowed to f*** with the OS, and the documentation made sense. Do I appreciate what the developers have done at MS? Sure. But clearly, Microsoft is run by marketing idiots and have thrown developers under the bus for decades. Is MS perfect? I'm not, and they are not. But I don't make evil decisions to f&&* with their developer or user base. I happen to run my own consultancy. There are times when I need to run soak tests for MONTHS. I have a high end server running multiple machines. I need to talk to it over the network. Microsoft decides to force a reboot at 1am Sunday morning to install updates that I don't need. And I have to restart all of my tests. I run professional so I expect a bit less stupidity from MS. Do you know how old it gets when I have to say to a customer, "Sorry, Microsoft forced a reboot and killed the soak test." ? Vitriol is not directed at you, I just disagree mostly with what you posted. Have I made money? Sure. But I'm not giving Microsoft a pass. As for ActiveX, yes it was based on com whatever, but the entire thing was an abortion. Or a train wreck, or a "hey what are goats doing up here in a cloud?" look up the last reference. When I got into it a long time ago, MS had already abandoned activeX as web tech moved on, and they left us poor embedded developers to suck air. What I should have done is rip it all out, but I was never given permission.
Charlie Gilley “They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759 Has never been more appropriate.
-
Thanks for that, it's been bookmarked and I'll go over it closely. The very first response (upvoted 1096 times) starts with: "Asynchronous programming does "grow" through the code base. It has been compared to a zombie virus. The best solution is to allow it to grow" ...which is exactly what I'm complaining about. You start polluting your libraries with those keywords, and then suddenly you have to modify everything that requires it, going completely against the very concept of encapsulation.
Mainly it grows because every async method has a state machine created by the compiler. Yes, partial async is a contradiction and at best leads to the same thread-blocking as fully synchronous code, while the usually worst outcome is deadlock. The fact that async is an all-or-nothing commitment is IMO the main reason for developers not embracing it, but there's no excuse to not use it for greenfield projects. If you do it right, you also pass a CancellationToken with every call; increasingly, I'm also becoming convinced of passing IProgress, at least for certain public members. There was recent interest in replicating the Go concept of green threads, which I think would have been a game changer had it been used instead of async/await. Green Thread Experiment Results · Issue #2398 · dotnet/runtimelab · GitHub[^]
-
Yes, I suffered. Yes, my customer paid. Yes, I came from a pristine Unix development environment where everything made sense. I also did VMS where there were no idiots allowed to f*** with the OS, and the documentation made sense. Do I appreciate what the developers have done at MS? Sure. But clearly, Microsoft is run by marketing idiots and have thrown developers under the bus for decades. Is MS perfect? I'm not, and they are not. But I don't make evil decisions to f&&* with their developer or user base. I happen to run my own consultancy. There are times when I need to run soak tests for MONTHS. I have a high end server running multiple machines. I need to talk to it over the network. Microsoft decides to force a reboot at 1am Sunday morning to install updates that I don't need. And I have to restart all of my tests. I run professional so I expect a bit less stupidity from MS. Do you know how old it gets when I have to say to a customer, "Sorry, Microsoft forced a reboot and killed the soak test." ? Vitriol is not directed at you, I just disagree mostly with what you posted. Have I made money? Sure. But I'm not giving Microsoft a pass. As for ActiveX, yes it was based on com whatever, but the entire thing was an abortion. Or a train wreck, or a "hey what are goats doing up here in a cloud?" look up the last reference. When I got into it a long time ago, MS had already abandoned activeX as web tech moved on, and they left us poor embedded developers to suck air. What I should have done is rip it all out, but I was never given permission.
Charlie Gilley “They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759 Has never been more appropriate.
All big companies are run by marketing idiots. A certain fruit company being a great case in point as they treat all their customers as idiots by convincing them they're spending 2 * as much on the equivalent PC, just to get the fruit logo. I don't disagree with what you have said, I know MS can be a PITA but they do create mainstream OSs, so if there is a security vulnerability found, should they not patch it? (they'd certainly get serious backlash if they didn't), unfortunately that could mean a reboot. AFAIK servers don't automatically reboot, they just nag. If you have a Linux security issue first you have to know which one of the thousand or so distros that it affects. I'd like to use Linux but the sheer number of distros is bewildering. If I did use Linux for my development, I could give away my software or I could try and sell it to the 5 users that use Linux in a business environment (OK, I'm being flippant, but compared to a MS OS user base it's a no brainer really). Anyway, besides the point, I was merely pointing out your comments on COM, DCOM etc. were technically incorrect and that everything has it's flaws. I make my living, and have done for the past 25years, using MS products. I agree they're not perfect and yes they're frustrating and yes they f&*k up sometimes (well often). What mainstream alternative is better and flawless? FYI (not that you would be interested) but from memory there is (or was) a version of Windows called LTSB (Long Term Service Branch) or something like that, that didn't do updates (other than security updates I think) for 18 months. So no forced reboots. Never used it, I wanted to in a previous workplace but would have been a massive upheaval for their existing customers. That may help you if you're still stuck on some of your VMs.
-
All big companies are run by marketing idiots. A certain fruit company being a great case in point as they treat all their customers as idiots by convincing them they're spending 2 * as much on the equivalent PC, just to get the fruit logo. I don't disagree with what you have said, I know MS can be a PITA but they do create mainstream OSs, so if there is a security vulnerability found, should they not patch it? (they'd certainly get serious backlash if they didn't), unfortunately that could mean a reboot. AFAIK servers don't automatically reboot, they just nag. If you have a Linux security issue first you have to know which one of the thousand or so distros that it affects. I'd like to use Linux but the sheer number of distros is bewildering. If I did use Linux for my development, I could give away my software or I could try and sell it to the 5 users that use Linux in a business environment (OK, I'm being flippant, but compared to a MS OS user base it's a no brainer really). Anyway, besides the point, I was merely pointing out your comments on COM, DCOM etc. were technically incorrect and that everything has it's flaws. I make my living, and have done for the past 25years, using MS products. I agree they're not perfect and yes they're frustrating and yes they f&*k up sometimes (well often). What mainstream alternative is better and flawless? FYI (not that you would be interested) but from memory there is (or was) a version of Windows called LTSB (Long Term Service Branch) or something like that, that didn't do updates (other than security updates I think) for 18 months. So no forced reboots. Never used it, I wanted to in a previous workplace but would have been a massive upheaval for their existing customers. That may help you if you're still stuck on some of your VMs.
All big companies make mistakes. Microsoft triples down on them. I concur with your assessment of COM, DCOM, etc. I agree it was a natural development progression. But my anger and bitterness comes from the embedded world where NOTHING EVER DIES. Meanwhile, Microsoft routinely makes decisions that had huge consequences for customers, and they just don't care. I've lived through one - the abandonment of WinCE and .NET and associated development tools. Don't even get me started on their latest offering. The second is their anal retentive insistence on forced reboots. Sure, I want to fix security issues - AT MY DISCRETION. As a developer, nag me, but to reboot a test environment? That's criminal. I'll tell you a story from 20 years back. I was having an early morning discussion with the buildings IT manager. The issue of OS updates came up (we were on Windows 2000, so the current lunacy wasn't there). We mainly used our PCs to run an X-Windows client to access all of the Unix machines we supported. This manager happily explained that he could break into any of my team's Pcs. I said, please explain. He says, oh, we just cycle power.... I explained to him that was not business acceptable, he was going to get beaten and then fired after a trip to the VPs office. Power cycling on machines is what MS routinely does. This is not marketing (going back to my original grip of function pointers being relabeled by MS), this is sheer stupidity. I agree to disagree with some of your comments, but MS is another issue, and I won't give them a break.
Charlie Gilley “They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759 Has never been more appropriate.
-
All big companies make mistakes. Microsoft triples down on them. I concur with your assessment of COM, DCOM, etc. I agree it was a natural development progression. But my anger and bitterness comes from the embedded world where NOTHING EVER DIES. Meanwhile, Microsoft routinely makes decisions that had huge consequences for customers, and they just don't care. I've lived through one - the abandonment of WinCE and .NET and associated development tools. Don't even get me started on their latest offering. The second is their anal retentive insistence on forced reboots. Sure, I want to fix security issues - AT MY DISCRETION. As a developer, nag me, but to reboot a test environment? That's criminal. I'll tell you a story from 20 years back. I was having an early morning discussion with the buildings IT manager. The issue of OS updates came up (we were on Windows 2000, so the current lunacy wasn't there). We mainly used our PCs to run an X-Windows client to access all of the Unix machines we supported. This manager happily explained that he could break into any of my team's Pcs. I said, please explain. He says, oh, we just cycle power.... I explained to him that was not business acceptable, he was going to get beaten and then fired after a trip to the VPs office. Power cycling on machines is what MS routinely does. This is not marketing (going back to my original grip of function pointers being relabeled by MS), this is sheer stupidity. I agree to disagree with some of your comments, but MS is another issue, and I won't give them a break.
Charlie Gilley “They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759 Has never been more appropriate.
"Meanwhile, Microsoft routinely makes decisions that had huge consequences for customers, and they just don't care" - agreed.