I suck at editing:
s/due to Microsoft producing APIs that look like like 'plain vanilla' C++/due to Microsoft producing not APIs that look like like 'plain vanilla' C++/
... and the other howlers (too lazy [and at too busy at work]) to fix those. Apologies.
I think you are missing the point. While it is good the output is 'bog standard' Javascript what really matters is that the source is not 'bog standard Javascript'. Once you start writing in TypeScript you are forever bound to Microsoft. Now there may be compatible implementations but you may get a situation like C# where Microsoft's implementation is not only the foremost, but also the only complete one.
They did a similar trick in years past with C++, where they had so many extensions that you pretty much needed for Windows development that once you started down their C++ path, forever would it dominate your project's destiny. These days their compiler will accept 'bog standard' C++, however to get real stuff done you still have to start using Windows constructs and interfaces (due to Microsoft producing APIs that look like like 'plain vanilla' C++; as many other APIs try to do).
As others have pointed out, "All the roads lead to Microsoft, but none lead out".
Now Microsofties could complain that the open source proponents are whining unfairly about this and it is resticting their, "Freedom to innovate". To that I say simply this, "How about you instead spend the effort on making your browser work like everyone else's?". The amount of workarounds and hacks required to compensate for the borked and agonizingly slow way that Internet Explorer handles (what should be) cross-platform Javascript is 'criminal'. The wastage in businesses and the entire IT industry caused by handling Internet Explorer's brokenness should make them blush. Sure, innovate and make the Javascript experience the best on Microsoft tools and platforms, but don't do it by creating more 'islands' than you have already.
As others have pointed out, TypeScript may be tech flavor-du-jour for Microsoft at the moment (since they're trying to push their mobile solutions), but just like all their other tech it will have a limited shelf-life. You are better choosing truly cross-platform and long lasting tech for building solutions on. Historical examples: C#.NET (still used widely but not getting the Microsoft focus it once did), Visual Basic, COM/DCOM, OLE, C/C++ Win32 etc etc Yes you can still develop with these, but once upon-a-time they were the shizzle promoted by Microsoft and now people have to spend their time maintaining them with old and outdated tools. Meanwhile solutions developed with Standard C/C++, Java, etc get better tools and there are code changes required to maintain them are far more minor.
Bet your solution on the long-lived tech stacks (and increase your long-term profits!).
Unfortunately I don't know of a non-proprietary tech writing methodology that I know anyone can pick up and be effective with, part from Info Mapping. Do you know of such a methodology? It is hard enough to convince many developers on the need for a logical structure of their documentation and manuals that works for readers. Unfortunately the Free Software movement hasn't yet gone the extra step and written a manual on how to write manuals. Yes, they have documentation standards and systems, but not really a methodology that is focused on the needs of the end user. Hence, I agree with the premise of this thread. We Free Software proponents may rail about 'proprietary bs' but we don't really provide an alternative.
The funny thing about the 'proprietary bs', as you call, it is that it needs to be kept proprietary. It is so simple, once explained, that you'd never be able to send trainers around otherwise - and it would die out. The proprietary nature is not to keep you 'locked in' or 'coming back to them', it is to fund the transmission and training of the technique by experienced practitioners. I don't see this as any different to a university or technical course. So the 'proprietary' in this case seems better than the current Free Software alternative - which is nothing at all (AFAIK, perhaps I'm wrong).
Actually, please read again. I didn't actually give writing advise to anyone. I suggested that Information Mapping is excellent for *tech writing*. However, construe what you wish from my *casual Slashdot post* (not the same thing!). Fortunately my very-rushed Slashdot reading comprehension is not always accurate enough I wouldn't dare make suggestions to others in that department.
Sorry if it was soporific for you. I judged most Slashdot readers as able to handle bullet points with some longer prose around it (since Slashdot has a distribution of reading abilities, with a mean value higher than the general population).
nb: my post was just casual chat, not Info Mapped since it isn't worth doing on this forum). Anyway, I hope you squirrel that nugget of information away for some future time. It's a good style for *tech writing* (the subject of the thread).
And if you were trying an 'ad-hominem' based on my Slashdot 'style' then all I can say is, "whuteverz".
Most developers hate writing technical documentation, and when they do they organize it poorly. I was trained in the "Information Mapping" school of tech writing that is based on the psychological aspects of learning and human working memory. The Information Mapping style has numerous benefits:
* the information you want to convey can be broken into seven types
* information 'chunked' into parts that are easy for the reader to digest
* documentation is designed that you can skip to the part you need without having read much of the rest of the documentation
* it is easy for the writer as they simply follow the information mapping process, you don't have to think too hard to start writing, unlike when you try to write without any structure, and
* the documentation that is produced has little prose, so is quick to relatively produce.
Once you have the basics of Information Mapping then as you grow you get better at quickly structuring everything as well as writing examples and unambiguous sentences that can help your learners to avoid many pitfalls.
So, I believe the premise of this thread is correct, many manuals either don't exist or are poor from a learning perspective. The most surprising thing I found when I learned Information Mapping (only takes a day to go through, since it is far easier than learning a programming language, and from then on it is just putting it in to practice) was how easy and effective it is. nb: I don't get kickbacks or anything from Info Mapping, it just happens to be the best and most time-efficient tech writing technique I've seen, so I hope me mentioning it helps someone else who wants to learn to be a great developer (which involves being a great communicator too).
ps: info mapping is about structure and content selection, unfortunately it doesn't help with my typing or (lazy) proof-reading:)
The problem was not the aircraft and was not the oxygen flow. The solution was found to be overinflation of the pilots upper G-suit ("Combat Edge") that had been occuring for years and in aircraft such as the F-16 and F-15 but no on noticed it then.
As a secondary precaution the F-22 is also having a particle filter removed from the air supply (the topic of this Slashdot article) but this is not the primary fix.
The "Raptor cough" which (nugget?) pilots got spooked about is actually common for pilots flying all high-performance jets after performing high-G manuevers. It just happens that the performance of the F-22 is good enough that a lot of these maneuvers can be performed before energy bleeds off enough you can pull them (that is, the Raptor can use them to end nearly all Within Visual Range training encounters - although lesser aircraft occasionally beat less experienced Raptor pilots from time-to-time, which opponents of the Raptor love to crow about). The medical name of this acceleration-induced coughing is.
acceleration atelectasis
Please refer to: http://www.flightglobal.com/news/articles/combat-edge-anti-g-ensemble-might-be-causing-raptors-oxygen-woes-372642/
So please could everyone stop with the media-included scaremongering and stop blaming the F-22 or invoke spooky and mysterious illnessed that pilots of that aircraft are afflicted with (ignoring that fact that the G-suit issue and acceleration atelectatis occurs on other aircraft, just less often because the F-15 and F-16 are relatively lower performance [lol, never thought I'd say that] compared to the F-22).
> Of course, porting the engines is no mean feat...
There are plenty of cross platform engines out there. All it really requires is a commitment to testing on more than one platform by the platform licensee. Hopefully with Valve and Apple pushing the envelope of what is possible (on all sorts of platforms, eg. gaming on your iPad/Android tablet etc) then developers will see that is more profitable to write a cross-platform (including Windows) game than a Windows-only game as they've been suckered in to in the past.
The other big factor is OpenGL support and usage. OpenGL was ahead of DirectX for a long time, then slipped behind in features, and is now pretty much ahead (more platforms, almost all features work on all platforms provided the graphics hardware supports it, unlike DirectX's strategy of requiring OS upgrades to get new features [probably designed that way as a revenue spinner]). Now it is DirectX platforms that are the minority and OpenGL is *everywhere*: its on Windows, Apple, Linux, iOS, Android, commercial embedded devices [eg. avionics], the PS/3. There is only one place that OpenGL isn't, and that is the XBox 360 [this is my design from Microsoft]. Kinda makes you think, why bother with DirectX when the only exclusive platform for that is the XBox 360 when by choosing OpenGL I can run my shaders everywhere else [which is exactly the conclusion I came to when designing my game - which is cross-platform and OpenGL shader based].
Well, I'd prefer a dullard at a company party - who you can always liven up by coaxing them out of their shell - than someone with seemingly closed minded arrogance (and still stuck in a high school "popularity matters more than character" mindset).
Hopefully my reading of your post was wrong and it wasn't snarky, just some attempt at levity.
You are right, I made a mistake - look I'll put it here right where people can see it. I won't sit on it for a week and post a tiny retraction on "page 8" as the newspapers do. Incidentally, my mistake was made in haste, rather than in ignorance (I was multi-tasking while typing from work). It turns out that she's the Duchess of Cambridge (Duchess of Cornwall is Camilla) - so if you are gonna point the finger you might wanna check the facts yourself. As I said, anyone can make a mistake (clearly this includes you and I), the important thing is to correct your view in light of the better data:)
Apologies for the bad etiquette in replying to my own post. Here's an interesting article covering some of the points of my discussion (I'll leave you to draw your own conclusions from the article):
"Reporting Science: Journalistic Deficit Disorder" http://www.economist.com/node/21563275
The real problem (IMHO) is not in identifying bad data, it is weighting it down so that other people don't see it first. There is a danger of censorship here, of course. But sensationalist posts/news spread and a duplicated widely and the factual information is lost in the debate. For example, look up "moon landing hoax" or "9/11 conspiracy" and you'll see a vast spread of bullshit articles overgrowing the best information that is known today. Now it is true that Google does put ok information first with example topics I've just given, but Google doesn't condense pages so that you get 29 links to pages of verifiably good stuff and 1 link to the zillions of pages of crank theories; since a page's interest only affects the order you see them in, not the number of links you see - and there is no way (that I know of) for users you flag a page as bullshit (would be good if there was, but just imagine the amount of abuse/censorship that could lead to; not to mention spawning an entire cottage industry about conspiracy theories of why Google "censored the 'Truth'" [was it because they are sock puppets of: the US, Zionists, Al Qaeda, Martians, the Illuminati, the Mahdi, God's Plan ????]).
Also, there is a lot of data out there, but people would rather watch locats all day and watch fiction rather than find out about the real world around them (mostly it is more mundane and not resolved in two hours like watching a fictional movie, but sometimes reality is stranger, more varied and more exciting than fictional creators can come up with).
PR folks usually have a pretty tenuous grasp on the subject matter. Hence, to appeal to those concerned about defence they probably just used Google Image to find "warships", look for some cool looking ones (with lots of sticky-out bits) and slapped 'em in their Powerpoint presentation. Note: US warships look less menacing these days, their radars are the slab sided SPY-1 for the Aegis and the missile launches are build into the deck as the rapid-fire Mk 41 Vertical Launch System and similar. So they look less mean, but they are actually more effective that way.
If only this basic incompetence and lack of fact checking was limited to PR people. The bulk of journalists these days are also woeful in their fact checking. For example, in Syria they keep talking about "MiG fighters bombing the rebels" all the while showing videos of the L-39 Albatross trainer (nb: not a MiG). A small detail, but lets get the facts we know straight, yeah? What really worries me about modern reporters is that they get the facts I know about so wrong, so I figure that they are probably getting a lot of the other stuff wrong too.
The City News Bureau of Chicago was famous for their high standards of making the journalists check their facts. They had classic watchwords, like, "If your mother tells you she loves you, check it out with two independent sources.". It is a shame that proper journalism isn't practiced, is probably not that profitable, and doesn't really interest the general public (who'd rather follow a nude prince's private romp in Vegas, and the Duchess of Windor's poolside habits than any of the other things happening on the planet, both good and ill).
However, these people are not alone in their bad habits. For example, both climate change advocates and climate change deniers seem to cling to dogma rather than continuously checking their assumptions against old and new data. It's always ok to be wrong, you just have to be prepared to change your mind in the face of better information.
ps. I won't even start a rant on how badly informed most politicians appear to be. Clearly the skills required to enter office are not the same as those required to make informed and sensible decisions once you are there.
Why? they are hardly defenseless, especially when accompanied by their Strike Group, so what is the reason for making this statement (unless you are making a play on your sig, erroneous).
Please re-read my post, it contained the following, "the corporate exploiters vs militant unions situation is borked and misses much of point of the contract between employers and employees".
What I said there is that many corporates are trying to exploit their workers. On the other hand many unions are so busy fighting power-struggles that they miss the point of defending their workers and giving reasonable concessions so business can operate.
> And you says it's because Teachers, Firemen, and Policemen are being greedy? I think not.
Actually, I didn't call anyone greedy. What I said is that the US Government cannot sustain the current level of entitlements it has promised (and these financial liabilities are causing it financial stress and potential future catastrophe - far more so than merely extravagant defense spending as the original poster asserted). Yes, this sucks for the Teachers, Firemen and Policemen who have worked hard all their lives (and note: I'm not saying their wages/salaries should be reduced; unlike the corporates who would live to pay their employees less than the current minimum wage if they could). However, just because it sucks doesn't mean the US and global economies can give these people more. Witness the meltdown of the Greek economy where the government kept borrowing far beyond its means to pay entitlements it couldn't afford. The same will happen in the US if it doesn't get real about what I can and can't provide for its citizens (especially with the ongoing change in demographics and fortunate people living longer). It's not about greed, its about what society and an economy is able to provide now and in the future vs. the current set of political promises and public expectations.
Now you have looked at the numbers please re-read my statement, it is based on facts:
> the US defense budget is huge, but that isn't the reason the US economy is ailing.
The money being wasted on a lot of things, not just defense. The US healthcare entitlements are far greater than the taxes a person paid in during their working life, you would expect an absolute increase due to inflation but the medical entitlements exceed what the US government can afford. Then there are all sorts of pension liabilities, education etc.
With regard to defence spending, the bulk is not devoted to new hardware. A large fraction is devoted to salaries, what is essentially a "jobs program" for many. Without this spending then unemployment would be pretty bad in some sectors of US society (the young men that the military hoovers up, keeps them out of trouble, and does useful stuff with; like disaster relief, engineering projects etc).
So I agree that US defence spending ought to be reduced, but the current spending is not the reason the US economy is failing (like I said, corporate tax evasion is huge), not the bulk of US government spending, and not high by historical levels (as a proportion of GDP or government spending). As I say, look at the numbers.
The CIWS system software was recently upgraded to deal with this scenario (famously covered in a USN-run "wargame" years ago). A swarm of little boats used to be a problem, now they present nothing more than a (short) system test of computerized hardware.
Actually, the US Navy is currently *trialling* laser weapons for point defense against missiles. All future US warships are being designed with lots of excess power for these and railguns (or something else if these prove not to be that practical). Also remember that the US bought Soviet supersonic missiles for a time and used them for testing their defences (until Putin put a stop to the sales).
Torpedoes are indeed more powerful than in WW2, but then so are countermeasures. There are lots of ways torpedoes may be defeated. Of course this does not get talked about that much - although plenty of information is in the public eye (although most commentators don't know about them). Here's a hint, look up the word "Nixie" and go from there.
Why would you need a draft? The standard US military composed of *volunteers* can take all but the largest nations down. Plus they can do it quickly, efficiently and economically. Yes, wars are more expensive these days in absolute terms but most commentators are so innumerate (or willfully ignorant) they can't even work out that the cost of war relative to economic output has been plummeting, along with casualty rates.
nb: the US defense budget is huge, but that isn't the reason the US economy is ailing. Here's a couple of hints: people need to work hard (plenty of people do, but in the US plenty don't either); lots of US citizens demand large entitlements that are not granted in other parts of the world (since other governments understand they cannot afford them); the corporate exploiters vs militant unions situation is borked and misses much of point of the contract between employers and employees; US politicians will promise to spend irresponsibly to get votes, the US citizens will not elect anyone who doesn't do this (austerity is for everyone else in the World, but not the US) - somehow the politicians get to be the sole source of blame for this and not the electorate; US lawmaking is so corrupt ('lobbying' and electoral fund raising is so pervasive and corrupt the citizens don't even question it anymore) that those with money essentially dictate the laws, this results in all sorts of economic inefficiency and distortions protected by laws; as a result of bad tax codes (intended to create jobs and spur growth) many corporations and wealthy people pay a disproportionately low share of the tax burden [you run out of money if you don't get the revenue, yeah?]. So focussing on the US defence budget is a start, but it is not the source of the US economic woes.
You forget, 90% of the fleet's firepower comes from carriers (in the USN at least). The four squadrons of SuperHornets plus helos and EA-6 (or Hornet G) on each carrier can perform all sorts of missions (land/naval strike, interdiction, recon, CAS, BARCAP, sweep, SEAD/DEAD. elint, ew, SAR, anti-sub, etc etc) and they can do it thousands of kilometers from the fleet.
As far back as the 60s the US thought that perhaps carriers were obsolete and too expensive and should be gotten rid of. However, the various wars and skirmishes (eg El Dorado Canyon/Libya) have shown the US time and again that the carrier strike group is still unparalleled in mission range, variety, striking power and capability. Hence, the US has 12/13 (depending on the rate of building) and lots of other countries want them too. The UK also though of getting rid of its carriers but fortunately they were around when the Argentinians occupied the Falkland Islands. Without a carrier the UK would have had zero chance of restoring sovereignty to the Falkland Islanders (who govern themselves but cannot defend themselves).
However, on Slashdot the uninformed start with purile "penis" comparisons as if US defense policy was based on this (prestige follies happen in banana republics like Chavez's Venezuala or Qadaffi's Libya - but not in the US; the US follies are based on the economic benefits of the military-industrial complex in each State, but not braggadoccio as the posters suggest).
Aircraft carriers are an important part of global power projection. Without a carrier you simply cannot enforce your will around the World (unopposed aircraft can defeat all ships and submarines; if you don't have a carrier to counter this then your Navy is useless - which is why the Russian and Chinese Navies have carriers mostly tasked with protecting their fleets).
nb: with regard to carrier killing missiles. The US purchased advanced hypersonic Russian missiles and tested/developed defenses against them. Work is ongoing on improved versions of the Standard Missile against ballistic missiles like the DongFeng 'carrier killers' and lasers are being tested against Brahmos and other hypersonic sea skimming missiles. As a result the greatest threat to carriers is not missiles, it is submarines (especially those with Air-Independent-Propulsion, that are very difficult to detect). A torpedo from a submarine also contains a far greater payload than missiles (this includes nuclear tipped torpedoes, Soviet attack subs were issued with two nuke as carriers are so valuable [because they are so powerful] that bagging one was worth the risk of escalation).
So, the manhood insults about navies may be cheap lurlz but show considerable ignorance about modern military affairs and why there is so much activity around developing both naval aviation and counter-carrier capabilities.
> Do you have any source for that claim?
I haven't looked at it for a while but I believe it was Steve McConnel's Code Complete ("Microsoft Press") - although it was a long time ago so I could well be wrong and it was from a rag such as Dr Dobbs or similar. I looked at this long ago (when we all had to worry about such junk).
The classics were screeds of code and code examples that went something like this:
HWND hwndHwnd;
I'm sure you also saw a lot of that too. After wading through that kind of stuff for years I have a kind of intolerance for it now - hence I still see the vestiges of it as an issue.
> Why would you refactor between classes and interfaces? Interface is a contract, class is an implementation. Not to mention that, generally speaking, there are a lot of things that classes can do and not interfaces, and vice versa.
Oh, I nearly forgot to address this. Library implementers must think differently from application writers. In a library you want to present interfaces since the implementation is likely to change. Unfortunately many application developers see this and think they also need to do it. You end up with projects where half of the code is pointless interfaces (I know, I'm working on a customer's 3000 source file project where there are a lot of pointless interfaces). An interface defines a contract that allows different implementation. An abstract base class provides a similar contract where the implementation is mostly the same with some differences (usually this suits more complicated classes where a lot of behaviour must remain the same, even if some details are likely to change). And of course you have concrete classes where there it is very unlikely that you'll need an alternate implementation. Now using the Agile principle of YAGNI ("You ain't gonna need it") I start creating 'classes' in preference of concrete, abstract and interface. Whichever I start with depends on the likelihood that an alternative implementation may need to be provided, and importantly I don't automatically start with interfaces in all cases (learning from Steve Jobs: simplify, simplify, simplify). As I progress through development I discover that where I put interfaces they sometimes serve no purpose and can be removed, or the reverse, have an interface that I really should make an abstract implementation (to assist getting consistent behaviour). So it is entirely possible to change between interfaces and classes, especially when you are doing application development and you seek to make the code base as simple as possible (design ain't done until everything that can be removed has been; otherwise you end up with cruft you accumulated/tried during development).
So, if we accept that unless one is particularly dogmatic/inflexible there is sometimes a case to change between interfaces and classes. So this means the.NET convention (hangover from Hungarian Notation days that the team could not free their mind from) of having I in front of interfaces is as problematic as prefixing type information to variables when the type can change. Sure, refactoring tools can cope but the reality is that having such prefixes is completely unnecessary, unhelpful to developers (since they can have a prefix left over from refactoring that actually references a class, or no prefix on an interface) and the compiler and tooltips give more support to help the developer to help ensure that interfaces can't be instantiated anyway. It turns out that when developing Java the creators did have the ability to lose the Hungarian Notation mindset and billions of lines have successfully been written by developers without having to use ugly and anachronistic prefixes.
I often quote, "You are able to write bad FORTRAN in any language". While the.NET guys are writing much better code than that quote suggests they are still doing FORTRAN by putting "I" in front of their interfaces nb: although the 'style' [misnomer] is called "Hungarian Notation" it wasn't an invention by Charles Simonyi, it was an adaptation of a FORTRAN convention because the Microsoft C compiler lacked the strong type checking of its competitors, and the notation was adopted to help prevent errors - it is time for this 'style' to die, and should have disappeared with.NET but hasn't yet because the.NET creators couldn't completely free their minds from the practices they'd been doing for the last 20 years. Hence, I laugh at the backwardness whenever I see that small thing in.NET code, and also wonder at those that defend the practice of using it - time to let the
Wow, excellent and very interesting post. Thank you for writing so extensively (your informed opinions, don't worry, you made it clear it is not the Party-line... yet:) ). Incidentally, I do make a mental distinction between the good people inside the belly of a corporate and the behemoth itself. Not that you care what I think:), but at least I hope that if Slashdotters are slinging arrows that they are not meant personally at you, and we expect you to defend work you are justifiably proud of and we can debate it.
> personally, I hope that the entirety of.NET would be FOSS one day - though don't take it to mean that there's some official plan to that effect
If.NET ever gets that way, as Free Software (strictly Open Source terms are less useful) to the same extent as OpenJDK (right to make *compatible* implementations, patent grant etc) then I think it'd be a real winner. I'd stop harping on about Java and get busy with C#.NET if it (and, most importantly, all the standardized libraries for it) were truly cross platform (meaning, compile once, test everywhere, run everywhere) and relatively platform agnostic.
What about "partial", "ref" and "^" that are specific to Microsoft C++. If you use them then your code not work elsewhere, and you probably do need to use them when developing using Windows libraries, yeah?
> If you are referring to _VARIADIC_MAX, then that's not an optimization. It's a hack to work around the lack of support of variadic templates in the compiler while still wanting to provide the corresponding library facilities. In other words, it's the case of not supporting the standard well enough (yet), not deliberately straying from it to break your code.
I say I don't think this is a deliberate ploy, but the end result is the same - you are still tied to the Microsoft technology. If using Visual Studio and the MS C++ compiler creates this situation then perhaps using tools that don't force that in your code is a better choice (the argument the troll posts Slashdot has been getting is the VS is the 'bees knees' and you really has to haz it - this is not your fault, I know, but that is the troll messages we're getting, which I'm choosing to point out why I think those statements are wrong). In the case of _VARIADIC_MAX why not make the more-standard behaviour the default?
> This is indeed the legacy of old ways of doing Windows. Keep in mind that most of those typedefs hearken back to the days when Windows was a 16-bit OS, and there were such (inherently non-portable) concepts as "near" and "far" pointers in that memory model (LP in LPSTR means "long pointer", a synonym for "far"). And there was also a time when 16-bit and 32-bit Windows were widespread side by side, so you had to contend with the fact that e.g. int could be 16-bit on one platform and 32-bit on another.
Yeah, I used to do a *lot* of Windows programming back in the day. I remember these well (and the sz and hwnd warts in front of every string and window handle). However, the Unix guys had worked out a better solution ahead of this (since they had made the transition much earlier, just like Linux was used in 64-bit mode for years before it became common for Window users). short was always 16-bits and long was always 32-bits, and int was for when you didn't need to care. Pointers were whatever the platform said they were (and you had a simpler 'flat' memory model than the segmented/thunked stuff Windows kinda exposed you to at the time).
> The declarations of Win32 functions use all that ULONG and DWORD crap, but so what?
Cool, so we agree. The problem is that there is a mass of this junk around - including a lot of the official APIs from Microsoft (and sometimes you have to use legacy APIS, including those from 3rd parties written in the style Microsoft wanted them to). It is good that times have changed, but the stink still remains.
> Of course, if you're writing modern C++ for Windows, using something as low-level as Win32 is fraught with peril to begin with. Do yourself a favor and stick to some well-written high-level framework such as Qt (and get portability as well).
Yes, writing for Qt is a good idea for C++ users, but the benefits of Visual Studio are less (the point of this thread) of you go that route. Might as well save the money (big bucks across a team) and use Eclipse and g++ if you are going Qt, yeah?
Finally, thanks for taking the time to make an informative and patient post. I know we're a tough crowd to 'sell' to. Personally, as you will know, I'm very wary of Microsoft tech mostly due to long experience in the past. I appreciate you correcting me with more up-to-date information. I also appreciate Microsoft making the effort to correct some of the missteps of the past - so I am trying to keep a sufficiently open mind that when moving between their platform and everybody else becomes effortless then I may end up investing in the MS tech again (at the moment I use an MSDN subscription make available by a client, which I use to periodically look at the tech, but I can a little behind sometimes since at the moment Java [and ecosystem] is currently meeting my cross-platform needs on desktop, web and server).
I suck at editing:
s/due to Microsoft producing APIs that look like like 'plain vanilla' C++/due to Microsoft producing not APIs that look like like 'plain vanilla' C++/
I think you are missing the point. While it is good the output is 'bog standard' Javascript what really matters is that the source is not 'bog standard Javascript'. Once you start writing in TypeScript you are forever bound to Microsoft. Now there may be compatible implementations but you may get a situation like C# where Microsoft's implementation is not only the foremost, but also the only complete one.
They did a similar trick in years past with C++, where they had so many extensions that you pretty much needed for Windows development that once you started down their C++ path, forever would it dominate your project's destiny. These days their compiler will accept 'bog standard' C++, however to get real stuff done you still have to start using Windows constructs and interfaces (due to Microsoft producing APIs that look like like 'plain vanilla' C++; as many other APIs try to do).
As others have pointed out, "All the roads lead to Microsoft, but none lead out".
Now Microsofties could complain that the open source proponents are whining unfairly about this and it is resticting their, "Freedom to innovate". To that I say simply this, "How about you instead spend the effort on making your browser work like everyone else's?". The amount of workarounds and hacks required to compensate for the borked and agonizingly slow way that Internet Explorer handles (what should be) cross-platform Javascript is 'criminal'. The wastage in businesses and the entire IT industry caused by handling Internet Explorer's brokenness should make them blush. Sure, innovate and make the Javascript experience the best on Microsoft tools and platforms, but don't do it by creating more 'islands' than you have already.
As others have pointed out, TypeScript may be tech flavor-du-jour for Microsoft at the moment (since they're trying to push their mobile solutions), but just like all their other tech it will have a limited shelf-life. You are better choosing truly cross-platform and long lasting tech for building solutions on. Historical examples: C#.NET (still used widely but not getting the Microsoft focus it once did), Visual Basic, COM/DCOM, OLE, C/C++ Win32 etc etc Yes you can still develop with these, but once upon-a-time they were the shizzle promoted by Microsoft and now people have to spend their time maintaining them with old and outdated tools. Meanwhile solutions developed with Standard C/C++, Java, etc get better tools and there are code changes required to maintain them are far more minor.
Bet your solution on the long-lived tech stacks (and increase your long-term profits!).
Unfortunately I don't know of a non-proprietary tech writing methodology that I know anyone can pick up and be effective with, part from Info Mapping. Do you know of such a methodology? It is hard enough to convince many developers on the need for a logical structure of their documentation and manuals that works for readers. Unfortunately the Free Software movement hasn't yet gone the extra step and written a manual on how to write manuals. Yes, they have documentation standards and systems, but not really a methodology that is focused on the needs of the end user. Hence, I agree with the premise of this thread. We Free Software proponents may rail about 'proprietary bs' but we don't really provide an alternative.
The funny thing about the 'proprietary bs', as you call, it is that it needs to be kept proprietary. It is so simple, once explained, that you'd never be able to send trainers around otherwise - and it would die out. The proprietary nature is not to keep you 'locked in' or 'coming back to them', it is to fund the transmission and training of the technique by experienced practitioners. I don't see this as any different to a university or technical course. So the 'proprietary' in this case seems better than the current Free Software alternative - which is nothing at all (AFAIK, perhaps I'm wrong).
Actually, please read again. I didn't actually give writing advise to anyone. I suggested that Information Mapping is excellent for *tech writing*. However, construe what you wish from my *casual Slashdot post* (not the same thing!). Fortunately my very-rushed Slashdot reading comprehension is not always accurate enough I wouldn't dare make suggestions to others in that department.
Sorry if it was soporific for you. I judged most Slashdot readers as able to handle bullet points with some longer prose around it (since Slashdot has a distribution of reading abilities, with a mean value higher than the general population).
nb: my post was just casual chat, not Info Mapped since it isn't worth doing on this forum). Anyway, I hope you squirrel that nugget of information away for some future time. It's a good style for *tech writing* (the subject of the thread).
And if you were trying an 'ad-hominem' based on my Slashdot 'style' then all I can say is, "whuteverz".
Most developers hate writing technical documentation, and when they do they organize it poorly. I was trained in the "Information Mapping" school of tech writing that is based on the psychological aspects of learning and human working memory. The Information Mapping style has numerous benefits:
Once you have the basics of Information Mapping then as you grow you get better at quickly structuring everything as well as writing examples and unambiguous sentences that can help your learners to avoid many pitfalls.
So, I believe the premise of this thread is correct, many manuals either don't exist or are poor from a learning perspective. The most surprising thing I found when I learned Information Mapping (only takes a day to go through, since it is far easier than learning a programming language, and from then on it is just putting it in to practice) was how easy and effective it is. nb: I don't get kickbacks or anything from Info Mapping, it just happens to be the best and most time-efficient tech writing technique I've seen, so I hope me mentioning it helps someone else who wants to learn to be a great developer (which involves being a great communicator too).
ps: info mapping is about structure and content selection, unfortunately it doesn't help with my typing or (lazy) proof-reading :)
The problem was not the aircraft and was not the oxygen flow. The solution was found to be overinflation of the pilots upper G-suit ("Combat Edge") that had been occuring for years and in aircraft such as the F-16 and F-15 but no on noticed it then.
Here is a link to the USAF describing the problem and fix:
http://www.bloomberg.com/news/2012-07-24/oxygen-problem-with-f-22-now-solved-pentagon-s-little-says.html
As a secondary precaution the F-22 is also having a particle filter removed from the air supply (the topic of this Slashdot article) but this is not the primary fix.
The "Raptor cough" which (nugget?) pilots got spooked about is actually common for pilots flying all high-performance jets after performing high-G manuevers. It just happens that the performance of the F-22 is good enough that a lot of these maneuvers can be performed before energy bleeds off enough you can pull them (that is, the Raptor can use them to end nearly all Within Visual Range training encounters - although lesser aircraft occasionally beat less experienced Raptor pilots from time-to-time, which opponents of the Raptor love to crow about). The medical name of this acceleration-induced coughing is.
acceleration atelectasis
Please refer to: http://www.flightglobal.com/news/articles/combat-edge-anti-g-ensemble-might-be-causing-raptors-oxygen-woes-372642/
So please could everyone stop with the media-included scaremongering and stop blaming the F-22 or invoke spooky and mysterious illnessed that pilots of that aircraft are afflicted with (ignoring that fact that the G-suit issue and acceleration atelectatis occurs on other aircraft, just less often because the F-15 and F-16 are relatively lower performance [lol, never thought I'd say that] compared to the F-22).
Now you whippersnappers get off my flight deck!
> Of course, porting the engines is no mean feat...
There are plenty of cross platform engines out there. All it really requires is a commitment to testing on more than one platform by the platform licensee. Hopefully with Valve and Apple pushing the envelope of what is possible (on all sorts of platforms, eg. gaming on your iPad/Android tablet etc) then developers will see that is more profitable to write a cross-platform (including Windows) game than a Windows-only game as they've been suckered in to in the past.
The other big factor is OpenGL support and usage. OpenGL was ahead of DirectX for a long time, then slipped behind in features, and is now pretty much ahead (more platforms, almost all features work on all platforms provided the graphics hardware supports it, unlike DirectX's strategy of requiring OS upgrades to get new features [probably designed that way as a revenue spinner]). Now it is DirectX platforms that are the minority and OpenGL is *everywhere*: its on Windows, Apple, Linux, iOS, Android, commercial embedded devices [eg. avionics], the PS/3. There is only one place that OpenGL isn't, and that is the XBox 360 [this is my design from Microsoft]. Kinda makes you think, why bother with DirectX when the only exclusive platform for that is the XBox 360 when by choosing OpenGL I can run my shaders everywhere else [which is exactly the conclusion I came to when designing my game - which is cross-platform and OpenGL shader based].
Well, I'd prefer a dullard at a company party - who you can always liven up by coaxing them out of their shell - than someone with seemingly closed minded arrogance (and still stuck in a high school "popularity matters more than character" mindset).
Hopefully my reading of your post was wrong and it wasn't snarky, just some attempt at levity.
You are right, I made a mistake - look I'll put it here right where people can see it. I won't sit on it for a week and post a tiny retraction on "page 8" as the newspapers do. Incidentally, my mistake was made in haste, rather than in ignorance (I was multi-tasking while typing from work). It turns out that she's the Duchess of Cambridge (Duchess of Cornwall is Camilla) - so if you are gonna point the finger you might wanna check the facts yourself. As I said, anyone can make a mistake (clearly this includes you and I), the important thing is to correct your view in light of the better data :)
Apologies for the bad etiquette in replying to my own post. Here's an interesting article covering some of the points of my discussion (I'll leave you to draw your own conclusions from the article):
"Reporting Science: Journalistic Deficit Disorder" http://www.economist.com/node/21563275
The real problem (IMHO) is not in identifying bad data, it is weighting it down so that other people don't see it first. There is a danger of censorship here, of course. But sensationalist posts/news spread and a duplicated widely and the factual information is lost in the debate. For example, look up "moon landing hoax" or "9/11 conspiracy" and you'll see a vast spread of bullshit articles overgrowing the best information that is known today. Now it is true that Google does put ok information first with example topics I've just given, but Google doesn't condense pages so that you get 29 links to pages of verifiably good stuff and 1 link to the zillions of pages of crank theories; since a page's interest only affects the order you see them in, not the number of links you see - and there is no way (that I know of) for users you flag a page as bullshit (would be good if there was, but just imagine the amount of abuse/censorship that could lead to; not to mention spawning an entire cottage industry about conspiracy theories of why Google "censored the 'Truth'" [was it because they are sock puppets of: the US, Zionists, Al Qaeda, Martians, the Illuminati, the Mahdi, God's Plan ????]).
Also, there is a lot of data out there, but people would rather watch locats all day and watch fiction rather than find out about the real world around them (mostly it is more mundane and not resolved in two hours like watching a fictional movie, but sometimes reality is stranger, more varied and more exciting than fictional creators can come up with).
PR folks usually have a pretty tenuous grasp on the subject matter. Hence, to appeal to those concerned about defence they probably just used Google Image to find "warships", look for some cool looking ones (with lots of sticky-out bits) and slapped 'em in their Powerpoint presentation. Note: US warships look less menacing these days, their radars are the slab sided SPY-1 for the Aegis and the missile launches are build into the deck as the rapid-fire Mk 41 Vertical Launch System and similar. So they look less mean, but they are actually more effective that way.
If only this basic incompetence and lack of fact checking was limited to PR people. The bulk of journalists these days are also woeful in their fact checking. For example, in Syria they keep talking about "MiG fighters bombing the rebels" all the while showing videos of the L-39 Albatross trainer (nb: not a MiG). A small detail, but lets get the facts we know straight, yeah? What really worries me about modern reporters is that they get the facts I know about so wrong, so I figure that they are probably getting a lot of the other stuff wrong too.
The City News Bureau of Chicago was famous for their high standards of making the journalists check their facts. They had classic watchwords, like, "If your mother tells you she loves you, check it out with two independent sources.". It is a shame that proper journalism isn't practiced, is probably not that profitable, and doesn't really interest the general public (who'd rather follow a nude prince's private romp in Vegas, and the Duchess of Windor's poolside habits than any of the other things happening on the planet, both good and ill).
However, these people are not alone in their bad habits. For example, both climate change advocates and climate change deniers seem to cling to dogma rather than continuously checking their assumptions against old and new data. It's always ok to be wrong, you just have to be prepared to change your mind in the face of better information.
ps. I won't even start a rant on how badly informed most politicians appear to be. Clearly the skills required to enter office are not the same as those required to make informed and sensible decisions once you are there.
Why? they are hardly defenseless, especially when accompanied by their Strike Group, so what is the reason for making this statement (unless you are making a play on your sig, erroneous).
Please re-read my post, it contained the following, "the corporate exploiters vs militant unions situation is borked and misses much of point of the contract between employers and employees".
What I said there is that many corporates are trying to exploit their workers. On the other hand many unions are so busy fighting power-struggles that they miss the point of defending their workers and giving reasonable concessions so business can operate.
> And you says it's because Teachers, Firemen, and Policemen are being greedy? I think not.
Actually, I didn't call anyone greedy. What I said is that the US Government cannot sustain the current level of entitlements it has promised (and these financial liabilities are causing it financial stress and potential future catastrophe - far more so than merely extravagant defense spending as the original poster asserted). Yes, this sucks for the Teachers, Firemen and Policemen who have worked hard all their lives (and note: I'm not saying their wages/salaries should be reduced; unlike the corporates who would live to pay their employees less than the current minimum wage if they could). However, just because it sucks doesn't mean the US and global economies can give these people more. Witness the meltdown of the Greek economy where the government kept borrowing far beyond its means to pay entitlements it couldn't afford. The same will happen in the US if it doesn't get real about what I can and can't provide for its citizens (especially with the ongoing change in demographics and fortunate people living longer). It's not about greed, its about what society and an economy is able to provide now and in the future vs. the current set of political promises and public expectations.
Don't make emotional pleas, you are making a common mistake (just because it is common, doesn't mean it is correct) look at the numbers please:
http://en.wikipedia.org/wiki/Military_budget_of_the_United_States
Look at the current spending. It is not exception, and much much less than in the 1950's, yet the US was booming in the 50s.
http://en.wikipedia.org/wiki/File:U.S._Defense_Spending_-_percent_to_Outlays.png
Now you have looked at the numbers please re-read my statement, it is based on facts:
> the US defense budget is huge, but that isn't the reason the US economy is ailing.
The money being wasted on a lot of things, not just defense. The US healthcare entitlements are far greater than the taxes a person paid in during their working life, you would expect an absolute increase due to inflation but the medical entitlements exceed what the US government can afford. Then there are all sorts of pension liabilities, education etc.
With regard to defence spending, the bulk is not devoted to new hardware. A large fraction is devoted to salaries, what is essentially a "jobs program" for many. Without this spending then unemployment would be pretty bad in some sectors of US society (the young men that the military hoovers up, keeps them out of trouble, and does useful stuff with; like disaster relief, engineering projects etc).
So I agree that US defence spending ought to be reduced, but the current spending is not the reason the US economy is failing (like I said, corporate tax evasion is huge), not the bulk of US government spending, and not high by historical levels (as a proportion of GDP or government spending). As I say, look at the numbers.
The CIWS system software was recently upgraded to deal with this scenario (famously covered in a USN-run "wargame" years ago). A swarm of little boats used to be a problem, now they present nothing more than a (short) system test of computerized hardware.
Actually, the US Navy is currently *trialling* laser weapons for point defense against missiles. All future US warships are being designed with lots of excess power for these and railguns (or something else if these prove not to be that practical). Also remember that the US bought Soviet supersonic missiles for a time and used them for testing their defences (until Putin put a stop to the sales).
Torpedoes are indeed more powerful than in WW2, but then so are countermeasures. There are lots of ways torpedoes may be defeated. Of course this does not get talked about that much - although plenty of information is in the public eye (although most commentators don't know about them). Here's a hint, look up the word "Nixie" and go from there.
Why would you need a draft? The standard US military composed of *volunteers* can take all but the largest nations down. Plus they can do it quickly, efficiently and economically. Yes, wars are more expensive these days in absolute terms but most commentators are so innumerate (or willfully ignorant) they can't even work out that the cost of war relative to economic output has been plummeting, along with casualty rates.
nb: the US defense budget is huge, but that isn't the reason the US economy is ailing. Here's a couple of hints: people need to work hard (plenty of people do, but in the US plenty don't either); lots of US citizens demand large entitlements that are not granted in other parts of the world (since other governments understand they cannot afford them); the corporate exploiters vs militant unions situation is borked and misses much of point of the contract between employers and employees; US politicians will promise to spend irresponsibly to get votes, the US citizens will not elect anyone who doesn't do this (austerity is for everyone else in the World, but not the US) - somehow the politicians get to be the sole source of blame for this and not the electorate; US lawmaking is so corrupt ('lobbying' and electoral fund raising is so pervasive and corrupt the citizens don't even question it anymore) that those with money essentially dictate the laws, this results in all sorts of economic inefficiency and distortions protected by laws; as a result of bad tax codes (intended to create jobs and spur growth) many corporations and wealthy people pay a disproportionately low share of the tax burden [you run out of money if you don't get the revenue, yeah?]. So focussing on the US defence budget is a start, but it is not the source of the US economic woes.
You forget, 90% of the fleet's firepower comes from carriers (in the USN at least). The four squadrons of SuperHornets plus helos and EA-6 (or Hornet G) on each carrier can perform all sorts of missions (land/naval strike, interdiction, recon, CAS, BARCAP, sweep, SEAD/DEAD. elint, ew, SAR, anti-sub, etc etc) and they can do it thousands of kilometers from the fleet.
As far back as the 60s the US thought that perhaps carriers were obsolete and too expensive and should be gotten rid of. However, the various wars and skirmishes (eg El Dorado Canyon/Libya) have shown the US time and again that the carrier strike group is still unparalleled in mission range, variety, striking power and capability. Hence, the US has 12/13 (depending on the rate of building) and lots of other countries want them too. The UK also though of getting rid of its carriers but fortunately they were around when the Argentinians occupied the Falkland Islands. Without a carrier the UK would have had zero chance of restoring sovereignty to the Falkland Islanders (who govern themselves but cannot defend themselves).
However, on Slashdot the uninformed start with purile "penis" comparisons as if US defense policy was based on this (prestige follies happen in banana republics like Chavez's Venezuala or Qadaffi's Libya - but not in the US; the US follies are based on the economic benefits of the military-industrial complex in each State, but not braggadoccio as the posters suggest).
Aircraft carriers are an important part of global power projection. Without a carrier you simply cannot enforce your will around the World (unopposed aircraft can defeat all ships and submarines; if you don't have a carrier to counter this then your Navy is useless - which is why the Russian and Chinese Navies have carriers mostly tasked with protecting their fleets).
nb: with regard to carrier killing missiles. The US purchased advanced hypersonic Russian missiles and tested/developed defenses against them. Work is ongoing on improved versions of the Standard Missile against ballistic missiles like the DongFeng 'carrier killers' and lasers are being tested against Brahmos and other hypersonic sea skimming missiles. As a result the greatest threat to carriers is not missiles, it is submarines (especially those with Air-Independent-Propulsion, that are very difficult to detect). A torpedo from a submarine also contains a far greater payload than missiles (this includes nuclear tipped torpedoes, Soviet attack subs were issued with two nuke as carriers are so valuable [because they are so powerful] that bagging one was worth the risk of escalation).
So, the manhood insults about navies may be cheap lurlz but show considerable ignorance about modern military affairs and why there is so much activity around developing both naval aviation and counter-carrier capabilities.
> Do you have any source for that claim?
I haven't looked at it for a while but I believe it was Steve McConnel's Code Complete ("Microsoft Press") - although it was a long time ago so I could well be wrong and it was from a rag such as Dr Dobbs or similar. I looked at this long ago (when we all had to worry about such junk).
The classics were screeds of code and code examples that went something like this:
HWND hwndHwnd;
I'm sure you also saw a lot of that too. After wading through that kind of stuff for years I have a kind of intolerance for it now - hence I still see the vestiges of it as an issue.
> Why would you refactor between classes and interfaces? Interface is a contract, class is an implementation. Not to mention that, generally speaking, there are a lot of things that classes can do and not interfaces, and vice versa.
Oh, I nearly forgot to address this. Library implementers must think differently from application writers. In a library you want to present interfaces since the implementation is likely to change. Unfortunately many application developers see this and think they also need to do it. You end up with projects where half of the code is pointless interfaces (I know, I'm working on a customer's 3000 source file project where there are a lot of pointless interfaces). An interface defines a contract that allows different implementation. An abstract base class provides a similar contract where the implementation is mostly the same with some differences (usually this suits more complicated classes where a lot of behaviour must remain the same, even if some details are likely to change). And of course you have concrete classes where there it is very unlikely that you'll need an alternate implementation. Now using the Agile principle of YAGNI ("You ain't gonna need it") I start creating 'classes' in preference of concrete, abstract and interface. Whichever I start with depends on the likelihood that an alternative implementation may need to be provided, and importantly I don't automatically start with interfaces in all cases (learning from Steve Jobs: simplify, simplify, simplify). As I progress through development I discover that where I put interfaces they sometimes serve no purpose and can be removed, or the reverse, have an interface that I really should make an abstract implementation (to assist getting consistent behaviour). So it is entirely possible to change between interfaces and classes, especially when you are doing application development and you seek to make the code base as simple as possible (design ain't done until everything that can be removed has been; otherwise you end up with cruft you accumulated/tried during development).
So, if we accept that unless one is particularly dogmatic/inflexible there is sometimes a case to change between interfaces and classes. So this means the .NET convention (hangover from Hungarian Notation days that the team could not free their mind from) of having I in front of interfaces is as problematic as prefixing type information to variables when the type can change. Sure, refactoring tools can cope but the reality is that having such prefixes is completely unnecessary, unhelpful to developers (since they can have a prefix left over from refactoring that actually references a class, or no prefix on an interface) and the compiler and tooltips give more support to help the developer to help ensure that interfaces can't be instantiated anyway. It turns out that when developing Java the creators did have the ability to lose the Hungarian Notation mindset and billions of lines have successfully been written by developers without having to use ugly and anachronistic prefixes.
I often quote, "You are able to write bad FORTRAN in any language". While the .NET guys are writing much better code than that quote suggests they are still doing FORTRAN by putting "I" in front of their interfaces nb: although the 'style' [misnomer] is called "Hungarian Notation" it wasn't an invention by Charles Simonyi, it was an adaptation of a FORTRAN convention because the Microsoft C compiler lacked the strong type checking of its competitors, and the notation was adopted to help prevent errors - it is time for this 'style' to die, and should have disappeared with .NET but hasn't yet because the .NET creators couldn't completely free their minds from the practices they'd been doing for the last 20 years. Hence, I laugh at the backwardness whenever I see that small thing in .NET code, and also wonder at those that defend the practice of using it - time to let the
Wow, excellent and very interesting post. Thank you for writing so extensively (your informed opinions, don't worry, you made it clear it is not the Party-line ... yet :) ). Incidentally, I do make a mental distinction between the good people inside the belly of a corporate and the behemoth itself. Not that you care what I think :), but at least I hope that if Slashdotters are slinging arrows that they are not meant personally at you, and we expect you to defend work you are justifiably proud of and we can debate it.
> personally, I hope that the entirety of .NET would be FOSS one day - though don't take it to mean that there's some official plan to that effect .NET ever gets that way, as Free Software (strictly Open Source terms are less useful) to the same extent as OpenJDK (right to make *compatible* implementations, patent grant etc) then I think it'd be a real winner. I'd stop harping on about Java and get busy with C#.NET if it (and, most importantly, all the standardized libraries for it) were truly cross platform (meaning, compile once, test everywhere, run everywhere) and relatively platform agnostic.
If
What about "partial", "ref" and "^" that are specific to Microsoft C++. If you use them then your code not work elsewhere, and you probably do need to use them when developing using Windows libraries, yeah?
> If you are referring to _VARIADIC_MAX, then that's not an optimization. It's a hack to work around the lack of support of variadic templates in the compiler while still wanting to provide the corresponding library facilities. In other words, it's the case of not supporting the standard well enough (yet), not deliberately straying from it to break your code.
I say I don't think this is a deliberate ploy, but the end result is the same - you are still tied to the Microsoft technology. If using Visual Studio and the MS C++ compiler creates this situation then perhaps using tools that don't force that in your code is a better choice (the argument the troll posts Slashdot has been getting is the VS is the 'bees knees' and you really has to haz it - this is not your fault, I know, but that is the troll messages we're getting, which I'm choosing to point out why I think those statements are wrong). In the case of _VARIADIC_MAX why not make the more-standard behaviour the default?
> This is indeed the legacy of old ways of doing Windows. Keep in mind that most of those typedefs hearken back to the days when Windows was a 16-bit OS, and there were such (inherently non-portable) concepts as "near" and "far" pointers in that memory model (LP in LPSTR means "long pointer", a synonym for "far"). And there was also a time when 16-bit and 32-bit Windows were widespread side by side, so you had to contend with the fact that e.g. int could be 16-bit on one platform and 32-bit on another.
Yeah, I used to do a *lot* of Windows programming back in the day. I remember these well (and the sz and hwnd warts in front of every string and window handle). However, the Unix guys had worked out a better solution ahead of this (since they had made the transition much earlier, just like Linux was used in 64-bit mode for years before it became common for Window users). short was always 16-bits and long was always 32-bits, and int was for when you didn't need to care. Pointers were whatever the platform said they were (and you had a simpler 'flat' memory model than the segmented/thunked stuff Windows kinda exposed you to at the time).
> The declarations of Win32 functions use all that ULONG and DWORD crap, but so what?
Cool, so we agree. The problem is that there is a mass of this junk around - including a lot of the official APIs from Microsoft (and sometimes you have to use legacy APIS, including those from 3rd parties written in the style Microsoft wanted them to). It is good that times have changed, but the stink still remains.
> Of course, if you're writing modern C++ for Windows, using something as low-level as Win32 is fraught with peril to begin with. Do yourself a favor and stick to some well-written high-level framework such as Qt (and get portability as well).
Yes, writing for Qt is a good idea for C++ users, but the benefits of Visual Studio are less (the point of this thread) of you go that route. Might as well save the money (big bucks across a team) and use Eclipse and g++ if you are going Qt, yeah?
Finally, thanks for taking the time to make an informative and patient post. I know we're a tough crowd to 'sell' to. Personally, as you will know, I'm very wary of Microsoft tech mostly due to long experience in the past. I appreciate you correcting me with more up-to-date information. I also appreciate Microsoft making the effort to correct some of the missteps of the past - so I am trying to keep a sufficiently open mind that when moving between their platform and everybody else becomes effortless then I may end up investing in the MS tech again (at the moment I use an MSDN subscription make available by a client, which I use to periodically look at the tech, but I can a little behind sometimes since at the moment Java [and ecosystem] is currently meeting my cross-platform needs on desktop, web and server).