No, this article is very much in line with Toyota's roots.
Toyota's history is one of treating their workers as valuable participants who use their brains at least as much as their hands. They eschew all sorts of fancy technology, not just robots, because technology is relatively inflexible. This approach allowed them to kick the asses of the US car manufacturers in the post-WWII period, continuing to increase productivity per worker long after US manufacturers leveled out.
Their approach isn't to hire experts. It's to turn their workers into experts on their work, and on improving that work. This has been literally incomprehensible  to US car companies because it's of the dominant US paradigm, managerialism .
See, e.g., Toyota Kata for more on how Toyota approaches this.
Why can't Windows officially include standard versions of this library? You know, like Windows already does with .NET versions since Vista or every other OS does with libstc++ or libc++? Forcing every C/C++ program to bundle their own MSVCRTXX.dll is pretty silly.
the crt can be installed silently just like any other self-respecting installer out there, and normally the tool you use to create installers does support this as well. I mean, even something basic as WinRar allows you to create silent extract-install combos.
There's little paradoxical about it.. if you link against 20 DLLs, that turns into 20 directory lookups and then random paging potentially across the entire drive, whereas a .EXE is more likely to appear contiguously on the drive, and after the first page of it is loaded in, the OS readahead mechanism might opportunistically snarf something like the next 256kb worth of pages for free as part of the same IO.
Ignoring IO, and depending on the size of the app (particularly C++ apps though), the linker might be spending a huge amount of time on symbol fixups.
I don't think it's so much how you (as an active developer does it) -- granted having to redistribute your app everytime any of (say) 10 bundled dependencies need an update is an inconvenience -- the biggest problem is when you have some old software (without vendor support) that is statically built with some overflow "built in" from an old version of a library.
Granted, at some point patches probably won't be backported, but it is convenient to be able to upgrade libssl, restart a few services and be done.
Of course, if you bought that software under GPL, you might be able to fix the issue yourself...
Sometimes you do get multiple heaps, but it can be made to work if one is careful not to allocate on one heap and then free on the other heap. One example is a C/C++ COM addin for Excel say - instead of freeing the Excel allocated memory directly the addin DLL invokes addRef/Release appropriately on the IUnknown interfaces to the various objects it gets handed by Excel. That can be automated a bit with ATL and CComPtr. A similar factory / smart pointer API can be made to work for any DLL that wants to maintain its own heap.
Sometimes you do get multiple heaps, but it can be made to work if one is careful not to allocate on one heap and then free on the other heap
Agreed, and it's sad to think how much confusion and grief would have been saved if they'd just made this a mandatory policy from day 1.
Windows developers regularly jump through an entire maze of hoops -- and make their users do the same -- just so they can call free() on a pointer they got from some random DLL, or do other goofy things that they shouldn't be allowed to do.
I've used delhanty's example in a large codebase and it worked well.
Another approach is to create a static library that overloads global memory operators (new, delete, and their variations). Link this static library to every DLL that you make, and have the implementation of these overloaded global memory operators use the heap of a single DLL. There may still be multiple heaps, but only one will be used.
> You can do the same with WinSxS and manifests, but again too many lazy developers.
I'm surprised Microsoft hasn't put a feature in the "Customer Experience Improvement Program" that scans the applications installed on a system for what versions of DLLs they try to load, collates all that data together, and then automatically generates "default" manifests for those apps, locking them to the specific versions of DLLs they were already requesting+using anyway. It'd be like wrapping each installed app in a Docker container based on the current working system config.
Respecting the right of someone to have a belief does not mean ignoring that belief when deciding if you like them.
1. Eich is absolutely allowed to be against gay marriage.
2. The Mozilla community is absolutely allowed to be against Eich because of his position on gay marriage.
This is not a discrimination case where Eich is being excluded from a job because of beliefs unrelated to his job. This is a case where Eich is being elected to a job where his job is to represent the Mozilla community. But he doesn't obviously represent the community – potentially disqualifying him from the job.
> This is a case where Eich is being elected to a job where his job is to represent the Mozilla community.
Is the Mozilla community asking him to represent their views on marriage?
If he's making the donations as a private citizen, then it strikes me as odd that he's somehow unqualified to talk about software.
Is the next step asking people to step down because they voted for the losing candidate who represented slightly less than 51% of the voting public? (That's a serious questions & a logical next step in an increasingly partisan ideology that thinks in black & white rather than shades of grey).
Class inheritance should be about the data not the behavior. If you're looking for "IS-A" inheritance, you should look at: what parameters does the class require on construction. If your implementation isn't fundamentally based around the same construction parameters, then it shouldn't be a derived class.
For example: HTTPResponseHandler IS-A TCPResponseHandler because its primary role requires a TCP socket on construction. The only inherited methods should be management of the data from construction.
Problems with this only arise when people use subclass to gain the interface but not the data. You should never need to do this and it's a problem with using classes instead of interfaces for your parameter declarations – it's not a problem with class inheritance.
This graph of The Simpsons illustrates (for me at least) that IMDB is more reflective of the viewing community's weird quirks and biases.
Honestly: is "Homer the Smithers" the best episode of The Simpsons? I doubt anyone would truly put it on their "best ever" list. It's really more "solid" than great. Most importantly: it doesn't rub anyone the wrong way.
Is "Saddlesore Galactica" one of the worst episodes ever? No. It's extremely funny and the story is structured well. It gets lots of very low votes from viewers who favor realism over humor (the episode is implausible with the horse racing then gets silly/fantasy). The episode's score reflects a community desire rather than an objective opinion.
>Is "Saddlesore Galactica" one of the worst episodes ever?
No, and the graph in no way show that. From around season nine, episodes are mostly rated between 6.5-7.3, with a fair amount lying considerably lower than that and only a few outliers in the other direction.
But as a 6.5'er, "Saddlesore Galactica" is a solid "poor" episode, like many, many others. But there are a substantial amount of episodes well below that one, and they are also scoring considerably lower.
The clip shows are the truly "worst", despite having all the best punchlines. So one could argue that objectively they are the best. But that is also a poor argument.
People that disliked something are more likely to vote on that episode to voice their dislike.
For example if the episode makes fun of christians you may have a heavy amount of christians vote the episode down even though it was a good episode. The people that thought it was good aren't as motivated to vote as the people offended.
This is also common with service providers and internet reviews. If the service is good there is no need to go online and post a review. If it's bad you are much more likely to take the time.
Dear OP: why do you think the Win32 C APIs still exist? Microsoft have offered .NET for Windows since 2001. It does everything you're requesting but it hasn't replaced the completely hideous Win32 C APIs.
Bluntly: there is a class of programmers and programs that cannot be written without:
* C linkage
* Calling of and calling from C
And a further class of programs where:
* Garbage collection
* Significant runtime
* Safe code
Make acceptable performance impossible. This class of programs includes .NET itself which is entirely written on top of the Win32 C APIs.
If you want a runtime on top of Objective-C, you're welcome to write one yourself. It could offer everything you're requesting without needing to change anything about Objective-C.
Oh wait, there are literally dozens of runtimes on top of Objective-C. Not to mention official bindings to Python and other languages. Sure, none of them are very popular but if you want to write in something else: go ahead.
In the past I've given lots of information about requests to moderate or otherwise remove content from forums I run.
Then I was hit with a cease and desist, and again provided transparency of it. The very predictable Streisand effect kicked in, and then I was hit with a harassment case too (for disclosing the details even though I knew it would likely trigger Streisand).
It was all resolved quite peacefully, but one fire-fights these things reasonably over the years and get to learn that the other party is usually not being reasonable. You can either result in escalation, or you can calm things down.
It's a lot easier to pick the option that calms things down if it's available to you. And in case above, that was apocalyptic, to close the list without disclosing detail behind it.
The last straw really breaks the camels' back. Once broken, it's not getting up to fight on. Life is too short.
"I don't want to do this any more" is enough of an explanation to be honest.
Receiving legal threats (either real of vague promises of one), being accused of censorship and denying someone's right to freedom of speech (and having to explain that's not how free speech works), cleaning up spam and trying to sort out fights between users really wears you down after a while.
A lot of work goes on behind the scenes of running a 'community' and it can be stressful, draining and generally not fun.
You are free to try to step in to the gap created by the closure of this list and run a replacement service. I'm sure someone will.