Multithreading in modern C++ - <AUTHOR> http://www.modernescpp.com/index.php/multithreading-in-modern-c <comment><USER2> Am I missing something, or is this article virtually content-free?

<comment><USER3> Wait, the domain is called "modernescpp.com", that's Modern _s_ Cpp... not Modern Cpp.

Wow, that's not good....

<comment><USER4> Assuming in German C++ is neuter, and referred to with the _das_ article, _Modernes Cpp_ is correct and singular.

<comment><USER5> > German C++ is neuter

neuter, was that intentional?

<comment> iso-8859-1 Hover over the n here: [https://en.wiktionary.org/wiki/Plus#German](https://en.wiktionary.org/wiki/Plus#German)

</comment></comment></comment></comment></comment><comment><USER6> It's been five years (and two standard revisions). Can we stop calling C++11 a new standard?

<comment><USER7> Standards are not adopted overnight. C++11 is still, effectively, a "new" standard.

<comment><USER6> I realize that many projects haven't made the switch, and in some cases they have good reasons to be cautious. And I realize that many programmers aren't familiar with the various changes, even after five (or more) years to catch up.

But that doesn't change the age of the standard, or the fact that C++14 was published, and the Committee is finishing up C++17. At some point it's silly to call C++11 "new." "Unfamiliar," sure, but not "new." It reminds me of Larry Wall's talk ( [http://www.wall.org/~larry/pm.html](http://www.wall.org/~larry/pm.html) ) "Do you know when New College was founded. Any guesses? New College was new in 1379."

</comment></comment></comment><comment><USER8> So I had been looking at threading for an embedded system recently.

I found Intel's Thread Building Blocks [1] which looked exactly like what I wanted.

Unfortunately, there are some long-standing issues with the ARM port, to the point that the included unit tests take a long time and/or crash on ARM (in this case it was on a Nvidia Jetson TK1).

If I had more time and expertise, I'd have tried to debug that further.

So is there anything else in that direction I should be looking at?

[1] [https://software.intel.com/en-us/intel- tbb/](https://software.intel.com/en-us/intel-tbb/)

<comment><USER9> 1: Which ARM? (Designing for a Cortex M0+ is entirely different from an M3 is from ...)

2: What are your design contraints? (Do you have hard-real time requirements? If so, you're probably going to want to use the primitives that come with the RTOS (QNX/Green Hills Integrity/all-the-major-players have their own method of "IPC/threading/whatever you want to call it" and it's usually an Erlang-esque message passing component.)

3: I'm presuming you're going for automotives, in which case lol, TBB rules but you'll never get ISO 26262 certification using it. If it's for an entertainment thinger just use QNX like everyone else.

4: "Unit tests take a long time and/or crash.." I'm sure the TK1 has ETM (which is _better than bondout chips, seriously_ ).

Just look at this[1] (then get your manager to bring me in as a consultant - it pains me to hear you have "long-standing issues with an ARM port" and the way your team-lead thinks he can solve it is with unit tests). "Long time to load which sometimes fails entirely" is a race condition. Insure++ is the "Coverity" for embedded (just as expensive, just as wonderful).

[1] [http://i.imgur.com/wcqlon7.png](http://i.imgur.com/wcqlon7.png) \-- how your team lead should be actually debugging embedded components. If you give me more details re: your system/functional/integration requirements, I can likely tell you in which direction to move though.

<comment><USER8> It was a ARM Cortex-A15 SoC. And we're going to have to use regular threads.

 _Just look at this[1] (then get your manager to bring me in as a consultant - it pains me to hear you have "long-standing issues with an ARM port" and the way your team-lead thinks he can solve it is with unit tests). "Long time to load which sometimes fails entirely" is a race condition. Insure++ is the "Coverity" for embedded (just as expensive, just as wonderful)._

I think you misunderstand.

The platform already shipped with TBB. However, when I recompiled TBB from source, the unit tests that came with TBB (which are just peachy on my desktop) took either a long time to run, or crashed. I didn't have to write any unit tests myself.

Before doing any hardcore debugging, I looked around a little and found this:

[https://software.intel.com/en-us/forums/intel-threading- buil...](https://software.intel.com/en-us/forums/intel-threading-building- blocks/topic/495003)

Which still doesn't seem to be fixed correctly in the latest release. That's from 2013, hence the 'long standing issues'. I gave up on TBB before spending much time on it.

<comment><USER9> Got you - inherited a codebase from someone else - worked fine on your x86(-64/whatever), tried it against your ARM, intermittent failures.

Seems compiling with the -O0 flag fixed some issues for a few chaps, worth a shot I'd imagine, though you've seemed to completed your alternate implementation for the ARM platform.

Alternatively, the TBB errors seem to be when using a gcc deriv that depends on GNU as. Now VS can build ARM binaries (at least, ARM LE bins). It'd be interesting to see if that solves the problem.

What did you end up using instead of TBB? Stock Pthreads/pth? Or did you go with something lighter? Regardless, next time you have to write for embedded stuff hopefully you have a new tool in your belt that'll save you from frustration :)

</comment></comment></comment></comment><comment><USER10> Shoot, I have been working on an article describing the C11/C++11 memory model for many months, but it looks like he's going to beat me to it! Oh well, there can be 2 (or 3, or 4... :)

</comment><comment><USER11> Is algorithmen the plural for algorithm?

<comment><USER12> I think this is a translation error. The article is possibly an English translation of an article that was originally written in German. Algorithmen is the plural for algorithm in German.

<comment><USER2> Apparently you can become famous by proof-reading this guy's articles: [http://www.modernescpp.com/index.php/for-the-proofreaders- an...](http://www.modernescpp.com/index.php/for-the-proofreaders-and-the- curious-people)

oO

<comment><USER13> German Humor.

</comment></comment></comment></comment><comment><USER14> Probably more interesting is to read cppreference's examples on std::thread: [http://en.cppreference.com/w/cpp/thread/thread](http://en.cppreference.com/w/cpp/thread/thread)

Also, the technical specification for parallel STL algorithms might make interesting reading: [https://isocpp.org/files/papers/P0024R2.html](https://isocpp.org/files/papers/P0024R2.html)

</comment><comment><USER15> C++ was supposed to be portable. When you add a layer of threading, networking, etc. you are starting to commit to specifics of operating systems.

It's fine to keep this at a library level, and promote that library to be an standard on specific platforms. But C++ should not get tainted with OS specifics.

<comment><USER16> On the contrary having a big runtime is what makes a language portable by abstracting it from OS specific APIs.

I only care about OS specific code when using C or C++, not any other language with richer runtimes.

Actually, C's runtime is called UNIX and is packaged as POSIX for non-UNIX OSes.

Any C or C++ developer that wants "portable" code needs to litter their code with #ifdefs, for any dependency not on the standard library.

</comment></comment><comment><USER17> The next article should be interesting!

<comment><USER18> Is this a joke about unending C++ standards with each one promising more and more cool features people patiently wait for and then when it's finalized it turns out that the coolest/most useful stuff got delayed again?

This is what sprung to mind anyway.

<comment><USER19> Herb Sutter addresses this issue in his latest post: [https://herbsutter.com/2016/03/11/trip-report-winter-iso- c-s...](https://herbsutter.com/2016/03/11/trip-report-winter-iso-c-standards- meeting/)

I agree, it feels like not a lot, but when you look at the standardization process I think it's safe to say that healthy progress has been made on most if not all the promises made.

</comment></comment></comment><comment><USER20> Why is this on the front page? Completely void of meaningful content. It just throws around some cpp standards :/

</comment><comment><USER21> Wow</comment>


Modernizing AbiWord code - <AUTHOR> https://www.figuiere.net/hub/blog/?2016/04/15/860-modernizing-abiword-code <comment><USER2> AbiWord is my favorite word processor. It was so much less bloated than any other graphical option. I wrote pretty much all of my papers in college with it. It reminded me of my previous favorite from my youth: Claris Word.

Glad to see it's still alive. Updating to C++11 should make it a lot more appealing for new contributors.

<comment><USER3> I used AbiWord years ago, and do recall it being pretty lean.

I get sort of the same _feeling_ , these days, from Apple's Pages, though I'm not sure whether that's true. (Looking at the copy of it I have sitting around, the application bundle is 418MB, with 344MB of that being taken up by the Resources (icons, UI elements, translation strings) and SharedSupport (themes, templates) folders, leaving the app itself sitting at ~75MB. Not _too_ bad, I suppose.)

One thing I think more people should consider, though, is how much of what they use a word processor for that could really just be accomplished using a _rich text editor_ such as WordPad or TextEdit. Now _those_ are light programs!

(And honestly, limiting yourself to unstructured rich text for the _composition_ stage of a document is probably for the best. It keeps you on task, for one thing. But beyond that, anyone who has only used word-processors is missing out on the extremely _natural_ workflow of separately doing your composition (in a rich text editor) and your document layout (in a desktop publishing program, like Publisher or InDesign) and then taking the finalized rich text and _linking_ it to a text-region-chain on the layout document. It's so much easier to make your document look good when your text isn't changing any more.

<comment><USER4> Apple Pages is a toy. It's missing some pretty basic features like even/odd page margins, and becomes annoyingly slow once you do stuff like tables inside multiple columns. I recently prepared a pretty complex but not very long document using it and the experience was pretty unpleasant.

<comment><USER5> I wish they'd open source Pages, Numbers and Keynote. They really are decent programs that deserve better than Apple abandoning them.

Of course, Word 5 is still the gold standard, as far as I'm concerned. :)

<comment><USER6> Yep! Considering Keynote is the best presentation tool-- but it just sits there. I'd kill for the iWork platform to go open source.

</comment></comment></comment></comment></comment><comment><USER7> I really loved AbiWord in the early 2000s. However, the fact that they refused to default to ODF meant I switched away. Who's going to store important documents in a format that only AbiWord can read. Still though, it's got many advantages over the LibreOffice bloat.

<comment><USER8> Very nice to see activity on Abiword. The enthusiasm of the author is evident.

Abiword does have support for ODF, but it could be better. Abiword 3 uses ODF 1.1. At the last ODF plugfest quite some issues were found [1, end of page].

There are now automatic tests than can be run to improve ODF support. The tests can be run from the command-line and give output as HTML [2].

Currently, there is a project underway that makes it possible to run the tests on a public test server which will show live results.

hub asks for tests in his blog post. For loading, saving and rending ODF files, the ODF community can help.

[1] [http://odfplugfest.org/2015-thehague/report.html](http://odfplugfest.org/2015-thehague/report.html) [2] [http://autotests.opendocumentformat.org/](http://autotests.opendocumentformat.org/)

<comment><USER9> There is definitely lots of improvement to do in that area for AbiWord.

There is a long list of bugs from every side.

</comment></comment></comment><comment><USER10> I liked AbiWord. It was very lean and GTK+ friendly. But I always had little gotchas with the formatting and problems with ODF occurring between word processors that didn't occur _as often_ when originating from LibreOffice. It had the clean/snappy interface that LibreOffice should have had, but definitely not the document feature support it needed.

These days, I'm not sure why anyone would bother trying to revive AbiWord. Not that I don't have my fair share of software engineering projects that are specific to my interests, but I personally wouldn't go back to using it or LibreOffice. If I really need a full-blown word processor, Google Docs does everything I need, and their Chrome app works for offline use. Most of the time, I can get away with writing stuff in Markdown. Then again, I'm a developer so that appeals to me. Microsoft Word online also works well cross- platform. With either one, you may not get the best multi-format support, but they're both _very_ dependable IMO. I couldn't depend on AbiWord most of the time unless I knew the same doc would be opened in another AbiWord instance.

Web-based technology really is, I think, the best way forward in cross- platform development for things like word processing which are not CPU intensive. People can and should use whatever tools they want to get the job done but, if I was to start a new Linux/CP word processor today, I'd be using Node.js with Babel and make it "Web Native". For some things you'll want C++ but, for me, not this. But best of luck to them for sure.

<comment><USER8> Microsoft Office and Google Docs are examples of applications that require internet access and report information about the user to the software provider. That provider in turn can share that information with advertisers. That is a trade-off that not everybody is willing to make.

There are applications like Etherpad, WebODF (supplied with packages like ownCloud) that make it possible to work from the browser but on a server that you can choose. Even desktop applications can be used in this way via LibreOffice Online or open365.io.

</comment></comment><comment><USER11> If you think cross platform development is bad now, go back to the late 90s or early 2000s... this brought back some painful memories. Look at the old Mozilla C++ guidelines for more cringe-worthy stuff.

<comment><USER12> Cross-platform development _is_ bad now.

I mean yes, I totally agree that the late 90s were really bad for portable C++ development. You couldn't trust the compilers, you had limited faith in the libraries, rewriting the container classes yourself and falling back on C idioms were commonplace. Man, we really had no idea who owned which pointer back then.

But there was a sweet spot around 2006, when with C++ and Qt4 you could reach every major desktop platform with a single codebase with essentially identical UIs bar the detailed widget rendering, and you could do it using code that was still largely acceptable to work with. I did a fair bit of successful work that way.

Then the iPhone came along, and a platform explosion, incompatible managed- code platforms, many different input and output devices to support, more variety in UI design styles, the world of walled gardens and having to recreate the UI layer again and again for each company's devices. Now that's settled down a bit, and instead we have the paralysis of choice among piles of UI/back-end languages and frameworks all with their own tradeoffs.

Still, at least C++ is a nicer language now.

<comment><USER11> There are _more_ platforms today, but the tools are much better. Maybe it's a wash.

In terms of platform sprawl I feel like we're back to the 1980s when there was Apple II, Mac, IBM PC, IBM clones (not always compatible), TRS-80, Commodore 64, etc.

</comment></comment></comment><comment><USER13> Happy to see AbiWord, the first open-source project I was part of, continuing to do things the right way. The cross-platform approach in AbiWord has always been committed to quality over convenience, and I'm glad that's continuing.

<comment><USER9> I'm not sure this will go the way one would want. There is nobody to do Windows and the Mac port has also fallen behind. I'd rather continue the bootstrapped Qt port in parallel to Gtk and use that.

</comment></comment><comment><USER14> I wonder how clang-tidy [1] could help in this task

[1] [http://clang.llvm.org/extra/clang- tidy/](http://clang.llvm.org/extra/clang-tidy/)

<comment><USER15> It helps okay. I recently used it to slowly and mostly automatically introduce more and more C++11 across a bigger code base. For example it does a great job introducing nullptr [0] and an okay job turning classic for loops into range based for loops [1] where possible.

[0] [https://github.com/swift/swift/commit/eddd92ed76ae68cb1e2026...](https://github.com/swift/swift/commit/eddd92ed76ae68cb1e202602fd3ebd11b69191a2) [1] [https://github.com/swift/swift/commit/3c560e31b0f168da917e8d...](https://github.com/swift/swift/commit/3c560e31b0f168da917e8d566db01fd1cd997d86)

</comment></comment><comment><USER16> This is something I think about a lot. No matter how much time we spend on software design and doing things "right", in 5 years it's all going to get thrown out by someone who thinks the codebase needs "modernizing".

It's actually a bit reassuring to me. Things only having a 5 year lifespan means you shouldn't spend a lot of time worrying about them. Code is meant to be disposable, and the less we treat it so, the more we hold ourselves back.

<comment><USER17> If we treat software as permanent, we hold ourselves back from making risky changes that wreck it.

If we treat software as temporary, we hold ourselves back from worthwhile improvements that will have enduring value, especially if they are fairly difficult.

</comment></comment><comment><USER18> Interesting - looks like AbiWord were having similar issues that LibreOffice were...

</comment><comment><USER19> Uh, Eyeball Mark II? Where do I get my upgrade...

<comment><USER20> Probably had laser eye surgery. Doesn't seem like he uses glasses.

<comment><USER9> nope. Never had eye surgery and I have normal vision without glasses.

It was just a nod a reading stuff with a second set of eyes (ie code I didn't write).</comment></comment></comment>


Microsoft risks security reputation ruin by retiring XP - <AUTHOR> http://www.computerworld.com/s/article/9246837/Perspective_Microsoft_risks_security_reputation_ruin_by_retiring_XP <comment><USER2> I will not blame MS from moving on. If people don't want to upgrade, that's their problem. I am a little concerned, however, that so many POS systems still use XP. I just saw one yesterday at the hardware store I went to. When will they upgrade?

I don't know how much this will hurt MS with its core users. XP is largely kept alive by users in the East, not the West, and by businesses. The businesses will either pay for additional security or upgrade, and many of the users in Eastern countries don't pay for XP as it is, so what exactly is MS risking here?

MS needs to move on. There is no money in continuing to support a 13-year-old OS. You could argue that MS should make available paid support and security updates, but even OSes like Redhat aren't kept going for 13 years. I just don't get the outrage here.

<comment><USER3> I wouldn't worry much about POS systems, they have a very small attack surface, given their limited exposure to the Internet.

<comment><USER4> Target found that "very small attack surface" isn't the same as "secure".

<comment><USER3> Target was hacked because they were flagrantly ignoring basic security procedures, like "making your POS systems available on the same network you use for everything else." [1]

Blaming the Target break-in on the OS security is like having unprotected sex in the back of a Buick, and blaming GM for the STD you contracted because it would've happened if the car hadn't had such a roomy backseat.

[1] [http://www.computerworld.com/s/article/9246074/Target_breach...](http://www.computerworld.com/s/article/9246074/Target_breach_happened_because_of_a_basic_network_segmentation_error)

</comment></comment></comment></comment><comment><USER5> The PC industry would sell a ton more computers if Microsoft solved the upgrade problem. Why do you keep a computer for 5 years? Only because it hurts too much to upgrade, and no way is this solely about the cost.

XP was able to upgrade to Vista, but nobody did.

XP could not upgrade to Windows 7, so nobody did. Microsoft advertises third- party migration tools, rather than owning this problem and building out of it. They've had years to get it right.

And yes, the cost in reality is not just an OS upgrade. It's sometimes a new machine, and also $300 for Office and peripherals without updated drivers.

But it is _mostly_ convenience: preserving apps, preferences, and licenses is important to regular people. It also isn't that hard, because they did the work for migrating XP to 32-bit Vista.

I've been consistently amazed that my Mac has updated from version to version perfectly, even 32-to-64. Windows has been a disaster every time.

Preserve people's state, preserve their data, and they will buy your software.

<comment><USER6> Another reason for people keeping their computer & OS for five or more years is that it might have just worked for them. So there was no pressing need to upgrade.

<comment><USER7> Yes there was a pressing need to upgrade, they just didn't see it. There is a reason that competent computer support departments don't let software installs get old/stale. Eventually, that software that you depend on is going to become obsolete and you are going to wish that you had kept up with the updates.

Just because you _can_ run your business on a DEC Vax from 1986 doesn't mean that you _should_!

</comment></comment></comment><comment><USER3> The article hints at a big reason for retiring XP support, but doesn't get right at it:

"After April [2014], when we release monthly security updates for supported versions of Windows, attackers will try and reverse engineer them to identify any vulnerabilities that also exist in Windows XP," said Tim Rains, director of Microsoft's Trustworthy Computing group. "If they succeed, attackers will have the capability to develop exploit code to take advantage of them."

Right now, the cadence of security updates to Vista/7/8/Windows Server 2003/Windows Server 2008/Windows Server 2012 is tied to how quickly those updates can be backported and tested for Windows XP, because as soon as those patches are released for any Windows operating system, attackers can use them to create exploits for those vulnerabilities and backport those exploits to XP (which they can do faster and with fewer resources than Microsoft can backport patches, because exploits have a much smaller test suite to ensure they don't break systems, ie they don't have such a test suite at all).

Continuing to support XP degrades the ability to support newer operating systems that haven't gotten an extension on their end of life, and at this point it's pretty clear that people still using XP aren't taking advantage of postponing its EOL to do anything but keep using XP. Something's got to give.

</comment><comment><USER8> I call bs. I'm certain there will be a large scale problem with XP. However, that won't run in the reputation of MS, but rather the company still using it.

<comment><USER9> Right? I don't get the mindset of Microsoft having to support an antiquated product line over a decade past its expiration date because a few business IT customers are incompetent at writing client software and keeping their systems up to date. It's not like all of this is coming out from nowhere.

</comment></comment><comment><USER10> There's some conjecture — well-founded, I assume — that a trove of zero-day exploit have been saved up for years in anticipation of the day Microsoft retires XP. Considering its install base in government, military and business institutions, the day that XP gets retired there will be a flood of attacks using these exploits. So we'll either face a sustained onslaught of cyberterrorism and/or cyber-counterterrorism (the NSA's interest in zero-days is well-known) or Microsoft will have to reverse its policy. Should be interesting in either case.

<comment><USER11> > So we'll either face a sustained onslaught of cyberterrorism or Microsoft > will have to reverse its policy

... or the people who are still using XP could upgrade?

(Also I want a pony)

<comment><USER12> They should upgrade, you are perfectly correct.

But suppose that you are the manager of an organisation with just over 1 million PCs running XP, and those PCs are used to access _hundreds_ of applications that are only guaranteed/certified to work with XP[1]. What do you do?

At present, you pay at least $200 for _each one_ of those PCs. And the associated servers. Let us just say some in Whitehall do not like having to pay that kind of money for updates that Microsoft is _already committed_ to provide for XP Embedded customers. The result[2] _may_ be an interesting change in attitude towards Microsoft in government circles.

[1] [http://www.bcs.org/content/conWebDoc/51393](http://www.bcs.org/content/conWebDoc/51393)

[2] [http://www.theguardian.com/technology/2014/jan/29/uk- governm...](http://www.theguardian.com/technology/2014/jan/29/uk-government- plans-switch-to-open-source-from-microsoft-office-suite)

That could be some pony :-)

<comment><USER13> >But suppose that you are the manager of an organisation with just over 1 million PCs running XP, and those PCs are used to access hundreds of applications that are only guaranteed/certified to work with XP.

Then you've had years to figure out a solution to this. It's not like there haven't been 3 OS releases since then (Vista came out 7 years ago). Microsoft has offered extended (paid) support for their end of life products in the past, so this is nothing new.

<comment><USER12> Agreed it is nothing new, and agreed the situation _should_ have been managed better. Never the less, here we are, and the need to pay £200,000,000 to Microsoft for updates that they have to provide for XP embedded anyway is going to have a negative effect shall we say. As the OA was explaining, this is all about perceptions.

</comment></comment></comment></comment></comment><comment><USER14> I hear the frustration and "just move on" attitude among the crowd here. But I'm in a position of supporting over 100k PCs, about 20% of which are on XP.

I place blame squarely on Microsoft here. This a problem of their making, and they are dumping customers out in the cold at a time where it is really dumb for them to do so.

First, consider the train wreck that has been Microsoft's strategy over the last decade. Many of my customers were well funded and eager to keep modern equipment out in the field. Problem is, the internet happened, and Microsoft decided at one point to stop developing IE and party like it was 1989 with client/server apps. So when Vista came around, we couldn't upgrade because IE6 wouldn't run in a supported configuration. Microsoft's bungling of 64-bit support even breaks older printers!

Then the financial crisis came around, followed by the iPad revolution. That dried up budgets (my PC replacement budget dropped 85%) and drove early adopter users to tablets.

Microsoft followed up with lots of fail: IE version weirdness, divergence from the old polices re: app compatibility, etc. We have a couple of small legacy apps written for windows 3.1.1 that work great on Windows 7, but MANY applications written for XP don't work due to a myriad of reasons. It's a real problem, and my employer has invested 3 years and millions of dollars to resolve.

And guess what? We are for the first time at a crossroads where we have choices re:end user computing. And in many cases, we're choosing non-Microsoft platforms, since we need to rewrite apps anyway. I can deliver and run an iPad for mobile users for 1/3-1/2 the cost of a laptop -- and the users LOVE them. We'll be buying thousands of iPads and galaxy tabs!

So I hope Microsoft saves a lot of money by cutting off XP. They will certainly see a lot less revenue from us in the future.

<comment><USER15> A long time ago some crazy open source guys said stuff like "Be wary of building your entire infrastructure on Microsofts solutions". You shouldn't have given them so much money back then!

The chickens have finally come home to roost it seems.

Your problems are not Microsofts fault. Your problems are that your business did not have any foresight. At the time computers were changing drastically every few years, and yet you thought you'd be able to run them and the software on them forever. You bought crappy printers with no demands that the manufactures support future operating systems on them. Your businesses problems are they gave the CEO's 50 million dollar golden parachutes and did not keep infrastructure up to date. Your businesses problems are bad software design paradigms.

<comment><USER14> It's easy to give people grief and say "I told you so" without any context.

What are the alternatives? Who would have made the call to sole-source all computers and buy Macs in 2002? Other than Munich, who is operating broad- scale Linux desktop environments?

I'm not whining about it, my organization is dealing with it just fine. But Microsoft should be handling it in a way that is less painful, because they are going to lose a lot of business. They are forgetting that 2014 isn't 2004.

</comment></comment></comment><comment><USER4> As someone itching to use SNI for SSL certificates, I'm all for discontinuing a thirteen year old consumer operating system.

Anyone who hasn't updated yet isn't going to update until they get cut off from patches. Time to do so.

<comment><USER16> Even then, there's still Android 2.x, currently 1/4 of the Android population. Though it's a safe bet that WinXP will be the more tenacious of the two.

<comment><USER4> Yeah, I figure the short lifespan of mobile devices works in our favour there.

</comment></comment></comment><comment><USER17> Derrrr. The headline would be "Microsoft risks security reputation ruin by failing to retire XP" if they didn't.

<comment><USER18> How exactly? They've already kept it for 13 years. What's the argument for not continuing to fix its bugs for another 5 years, from a security point of view, and not a "Microsoft's profits" point of view? It's not about keeping selling it, but about supporting the people who already use it.

<comment><USER19> You could argue the same about any old piece of software. The thing is that people working on xp cost money, they cost time. Both of those could be spent doing something that makes Microsoft money or at least advances a product that is not 3 OS releases back. This is a pretty simple choice for Microsoft's side.

Supporting people who run at 13 year old 32 bit desktop OS is a money losing proposition all the way around from Microsoft at this point, both in lost time and in lost sales of later version of windows.

The thing is that Microsoft's profits is what matters here. IT is their product.

As a developer, I actually loathe XP, simply because It's another platform I should test things on before I can consider it working. Generally, the users running it are doing so because of 2 things: lock in by a different vendor or a total lack of IT budget. Either of those things is just asking for trouble, So, when a client starts to ask about XP support I start to get worried about the bigger picture.

To put it another way, Would you want to write extra code and run extra tests to support windows 98 today? What about windows 95? 3.1?

I really don't.

<comment><USER12> _" The thing is that people working on xp cost money, they cost time. Both of those could be spent doing something that makes Microsoft money or at least advances a product that is not 3 OS releases back."_

True, but those people are needed to continue to support XP Embedded. So _some_ of the work is being done...

Note: I'm not hankering after running XP, but I am realistic about the effect of the $200 per screen annual tax on mega-corp computers. That _isn 't_ going to win friends and influence decision makers lets just say.

</comment></comment></comment></comment><comment><USER20> How does 30% of 488 million = 278 million?

In any case XP is way past it's lifetime. I can only imagine how the developers must feel working on a code base that is 13 years old.

<comment><USER21> 488-300+300*.3

<comment><USER20> Ah that makes sense now. Had to reread it a few times to get it

</comment></comment></comment><comment><USER22> More like companies still running XP risk security reputation. How long should MS be expected to support that OS? They've already postponed the retirement at least once to give people more time to upgrade.

</comment><comment><USER23> There must be a nice niche finding the software that prevents people from upgrading and then providing data liberation tools or better new software.

Because that is the only rational reason to not upgrade, right?

<comment><USER15> On an individual basis, it doesn't make sense for a single user to upgrade until the point that the old computer needs totally replaced. The cost of upgrading is higher then the value of the computer.

In business the cost of the applications and data is many hundreds if not thousands of times more expensive then the computer systems.

A recent example of my own is a vet clinic with a older digital x-ray machine. I asked what it would take to upgrade the machine to Windows 7. Around $50,000 was there answer. They had to replace all the hardware and software. There was no 'upgrade' path.

<comment><USER23> Yes, there's no official upgrade path.

That's where the niche is. The xray machine (I assume) still works well. "All" they need is Win 7 software to run it, and to display the xrays, and to display the existing xrays.

For xray machines the niche is too risky and expensive to exploit but there's a bunch of similar industrial equipment that could have simpler software re- writes.

</comment></comment></comment><comment><USER2> I wonder how much Apple's decision to make OS X upgrades free will put additional pressure on Microsoft. I consider OS X less enterprise ready, but Apple has made huge strides there. Apple clearly has less interest in keeping OSes updated long term (10.6 is being EOL soon), but the free upgrades solve part of that issue.

So, will companies be willing to trade Apple's lack of commitment to maintaining a version of the OS long term like MS for free upgrades? Keep in mind that OS X upgrades tend to work fairly smoothly, and some of the OS upgrade issues that Windows faces have not impacted OS X.

Add in the increasing pressure from Linux distros that work well for specific uses, and MS is in a bind with trying to sell expensive OS upgrades. I wonder if this will cause MS to move more into the hardware business, where you can make money off of the whole package.

Of course, if you really like Windows, maybe you'll need to pay for the OS more than once a decade.

</comment><comment><USER24> I doubt people would really blame getting hit by security flaws exploits on Microsoft. Many people are already getting hit by malwares, and they couldn't tell the difference between a malware that they installed themselves and one that exploited a security flaw.

<comment><USER18> You're kidding. Microsoft has always been blamed for Windows being an insecure operating system that "gets viruses". The fact that there's a multi-billion dollar anti-virus industry for Windows, because people pay for it because they _know_ they are vulnerable on Windows, should confirm that.

</comment></comment><comment><USER25> It has to happen sometime, so I won't quibble about now versus two years from now or whatever. I appreciate that web developers are happy about the end of Ie8 support.

However, the various SMBs with which I'm familiar seem unlikely to replace their dusty collections of antique XP boxes with brand-new 8.1s. I predict they'll buy used win7 machines where they must for BSS compatibility, but in general will move to chromebooks and web apps. I don't know that Ms could have stopped this transition, but they may have hastened it with actions like this. Then again, how much money did they ever really make from a business running 15 XP boxes in 2014?

</comment><comment><USER25> _The company could bolster its position by revealing the percentage of PCs running XP that access Windows Update, a telemetric mark it has declined to disclose, to show how prevalent XP really is, rather than make the media and customers rely on estimates from the likes of Net Applications._

Why is this metric secret? Do Ms want to conceal this from competitors, blackhats, consumers, or some other party?

</comment><comment><USER26> Maybe they should open source XP? Of course that would probably never happen, but would be quite 'philantropic' of Sire Gates ....

<comment><USER27> That would find the hacks faster.

<comment><USER6> Not necessarily.

But it would definitely make patching and improving the thing easier.

</comment></comment></comment><comment><USER28> This thing is a weight on the entire technology world. Stop bitching and move on.

<comment><USER29> If it were that simple, it would have happened already.

There are still a lot of businesses that, unfortunately, depend very heavily on Windows XP for their ongoing operation. The cost associated with switching may far, far exceed any benefit it could bring.

We aren't talking about a couple of Ruby on Rails developers sitting in a cafe using MacBooks. We're talking about global organizations with tens of thousands, if not hundreds of thousands, of computers. We're talking about applications that will only run properly on Windows XP. We're talking about astronomical costs that will bring only comparatively minor gain. That's the kind of situation that does not lead to change.

<comment><USER4> They've had a decade to plan an implement upgrades.

<comment><USER29> It's the ratio between the costs and the benefits that matters, not how long people have had the option of moving away from Windows XP.

</comment></comment></comment></comment><comment><USER30> Microsoft had a security reputation to ruin? Ruining it would be a bad thing?

<comment><USER4> Microsoft has made a lot of headway in the security realm, and deserves some credit there.

<comment><USER26> True dat</comment></comment></comment>


India's Reusable Launch Vehicle Demonstrator Successfully Flight Tested - <AUTHOR> http://www.isro.gov.in/update/23-may-2016/india%E2%80%99s-reusable-launch-vehicle-technology-demonstrator-rlv-td-successfully <comment><USER3> Very impressive, but It's not a fully reusable rocket (in the SpaceX sense), but it looks more like a reusable ship, like the columbia space shuttle.

> May 23, 2016 ISRO successfully flight tested India's first winged body > aerospace vehicle operating in hypersonic flight regime.

> In this experimental mission, the HS9 solid rocket booster carrying RLV-TD > lifted off from the First Launch Pad at Satish Dhawan Space Centre, > Sriharikota at 07:00hr IST. After a successful flight of 91.1second, HS9 > burn out occurred, following which both HS9 and RLV-TD mounted on its top > coasted to a height of about 56 km. At that height, RLV-TD separated from > HS9 booster and further ascended to a height of about 65km

So the solid rocket booster, HS9, wasn't reusable.

What looks more interesting to me is:

> The vehicle's Navigation, Guidance and Control system accurately steered the > vehicle during this phase for safe descent

Was it unmanned? On Autopilot?

Pictures and details: [http://www.isro.gov.in/launchers/rlv- td](http://www.isro.gov.in/launchers/rlv-td)

EDIT: according to Wikipedia, the ultimate goal seems to be a fully reusable setup:

> The demonstration trials will pave the way for a two-stage-to-orbit (TSTO) > fully re-usable launch vehicle

[https://en.m.wikipedia.org/wiki/Hypersonic_Flight_Experiment](https://en.m.wikipedia.org/wiki/Hypersonic_Flight_Experiment)

<comment><USER4> > Was it unmanned? On Autopilot?

Note that the US Air Force has a re-usable winged unmanned spacecraft that plays a somewhat analogous role to the now-defunct Space Shuttle.

[https://en.wikipedia.org/wiki/Boeing_X-37](https://en.wikipedia.org/wiki/Boeing_X-37)

[http://www.bloomberg.com/news/articles/2014-10-14/a-supersec...](http://www.bloomberg.com/news/articles/2014-10-14/a-supersecret- spacecraft-comes-back-to-earth-after-two-years)

<comment><USER5> In fact, on July 19, 1963, Joseph Albert Walker flew an X-15 rocket plane to an altitude of 105,900m, or more than 100km, past the Kárman line, i.e. into outer space. Compare that to the Indian flight mentioned in this article, which reached an altitude of 65km. In other words, the US had a reuseable space-capable launch vehicle 50 years ago.

<comment><USER6> Yeah, but India as a nation was formed and became independent only in 1947.

</comment></comment></comment></comment><comment><USER7> This test is a part of ISRO's next gen "two stage to orbit" (TSTO) launch vehicle.

First stage of TSTO will have delta wings and scramjet engine for landing. Second stage will have parachutes for landing[0].

The winged body that was tested two months ago will be the first stage of TSTO. In this experiment, ISRO tested aerodynamics and flight control systems of this delta-winged body at hypersonic speeds.

In the next experiment (scheduled on July), ISRO will be testing the scramjet engine.

[0] [http://i.imgur.com/p2CUxE1.png](http://i.imgur.com/p2CUxE1.png)

</comment><comment><USER8> No, they demonstrated the capability of developing one at some point in the future. The test article isn't even capable of reaching orbit, or returning from orbit, or landing yet.

This is the easy step – comparable to the American X-15, X-23, ASSET, and SpaceShipOne projects, the Russian BOR-1 to -6 or ESA's IXV demonstrator –, turning this into a Space Shuttle / Buran / X-37b style actual space plane will be a long, expensive undertaking.

And, as the Space Shuttle demonstrated, "recoverable" and "reusable" are two different beasts: The Shuttle's engines returned to Earth, but were so burned out from each launch that they required a refurbishment 80% as expensive as a whole new engine, and only managed an average of 5 launches even with that – planned were 55 flights without major refurbishments.

It's also different from reusable _boosters_ as developed by SpaceX, in case anyone is wondering: This is the upper stage portion that goes into orbit, and needs a booster to get into (or close to) orbit first. Those can be more expensive than the actual plane, depending on the design:

• The X-37b launches atop an Atlas rocket, and its expensive stages are completely lost.

• ESA's Hermes was supposed to launch on the similarly fully expendable Ariane 5.

For regular satellite launches, you don't save much money with these designs – since you don't need to return the orbital part anyway, you can just launch the Atlas/Ariane _without_ the expensive plane on top and still come out cheaper. It's mainly relevant for manned programmes, which is why the Hermes was cancelled (since ESA's manned programme never got the necessary funding) and Ariane 5 just launched without, and why the X-37b is restricted to classified launches that probably involve returning _things_ back to Earth (which is where space planes really shine!).

And even for manned programs, space planes don't necessarily lead to cost savings:

• The Space Shuttle put all expensive parts – engines, avionics, and so on – into the orbiter, and only the big external tank burned up. The solid boosters were also recovered, but since they were just steel tubes, they didn't require much refurbishment (unlike the main engines). If the engines and heat shield hadn't been such massive failures, it might have worked out to be reasonably cheap in the long run. Alas. The way it turned out, it was a ridiculous money sink.

• The Russians, as always, decided to out-crazy everyone and put engines on the Buran orbiter, even more and even bigger engines on the external tank, oh and let's use four boosters instead of two. And make those liquid-fueled, so that each side booster is as complex as a smaller rocket on its own (and can be used as such). _To everyone 's surprise_, this bankrupted the Buran program. There were plans to put foldable wings on the side boosters and orbiter-style delta wings and heat shields on the external tanks and turn everything into UAVs that automatically land on runways after detaching, but the Soviet Union preferred dissolution over funding any of that.

<comment><USER9> > And even for manned programs, space planes don't necessarily lead to cost > savings

Mitchell Burnside Clapp had a somewhat innovative idea in that rather than deal with all those expensive expendable boosters you could add a little more mass to the actual launch vehicle and then use high altitude in-flight refueling.

[http://www.risacher.org/bh/bh-paper1.html](http://www.risacher.org/bh/bh- paper1.html)

<comment><USER10> I'm not keen on any sort of space plane or similar idea.

The main issue is the forces acting on the vehicle along multiple axes.

For a VTVL rocket like the Falcon 9, there is just one main axis along which acceleration and load-bearing is going through: straight up and down.

For a space plane, you have at least two. One along the thrust line, and another when it is supporting itself on the ground and in flight. So now you have to reinforce the structure more, which adds a lot of weight.

And that's disregarding the thermal protection system which is more complicated too.

</comment></comment></comment><comment><USER11> Why is it trending now? It happened almost two months back, if i remember..

<comment><USER12> Dunno, the previous post didn't have a discussion though: [https://news.ycombinator.com/item?id=11757324](https://news.ycombinator.com/item?id=11757324)

</comment></comment><comment><USER13> It looks very similar to European Mini-Space Shuttle program.

Source : [http://www.space.com/28520-europe-launches-mini-shuttle- ixv....](http://www.space.com/28520-europe-launches-mini-shuttle-ixv.html)

</comment><comment><USER14> Has anyone noticed how everything of value out of India is only in English (the other lang link is blank) ? This sort of thing would be anathema in China; what with all the 'millenium of humiliation' and things. Odd, considering the general indignance showed towards @pmarca (from @a16z) some months back.

Edit: @a16z -> @pmarca

<comment><USER14> Okay folk. I understand HN crowd (and apparently the Indian subset too) don't like hearing ill of the British empire. I concede that everything was/is well and that English is the only "rational" choice for every affair in India. Naipaul was right after all; I didn't think this nostalgia was this great, though.

The spiritual center of my culture is apparently long dead; I don't really care about what they do over there anymore.

Spare a poor soul some up votes.

<comment><USER14> Okay. I can't spend so much time explaining the virtues of "freedom". I also can't spend time trying to reason with "rational" people who like all the post-modernists basically believe in narratives, and not truth (philosophically speaking).

\- My contention is not about speaking English, "rational" people (I speak English!). It is about how economically dominant a language is; in East Asia/Europe getting a good job without knowing the local language is extraordinarily difficult. Speaking English (without other awesome skills) often lands one a position teaching high schoolers.

\- This power/economic structure is inverted in formerly colonized African nations as noted by the Kenyan writer Ngũgĩ wa Thiong'o. He was kicked out for raising such questions (so much for Kenyan Independence).

\- It's very apparent that this is the case in India too.

Why?

\- It doesn't look like one can get a Tech job at ISRO (imaginably also Flipkart) having a Engineering degree in one of the native languages. What appears to be Hindi is barely to be found on the menus on its front page.

A "lingua franca" is one to which everyone makes a translation from the original, for the world to read. It appears that the original itself is in English, here!

\- This being the case, I'm not even sure if you can get a degree in anything useful in any of the native languages.

\- Punching in "India English" threw up the following in the first few results, [http://www.nytimes.com/2015/03/22/opinion/sunday/how- english...](http://www.nytimes.com/2015/03/22/opinion/sunday/how-english- ruined-indian-literature.html?_r=0)

\- There seems to be lots of chatter in the search results on an as yet unnamed invisible hand disenfranchising people linguistically (people are taught in English ??!).

\- According to Wiki, only 10% of India speaks English.

This is the classic workings of a feudal - ironically a pre-enlightenment - state, if not one practicing outright apartheid.

It's almost as if India stepped into medieval Europe's shoes where the rich sent their kids to Latin grammar schools; or Tsarist Russia where French was the langue de l'élite (atleast Tolstoy wrote in Russian as noted by the NyT article!).

If you want to invalidate my understanding, either show one of the above to false, or show why it's alright by making statements about their benignity (vis a vis a linguistically diverse EU, for instance). Otherwise, please spare me the downvotes and the verbiage.

I don't think such political HN threads help anyone (although, they do reveal colors).

<comment><USER12> Local language is required for government jobs (IAS, engineering in PSU etc.). In engineering companies such as Flipkart, inMobi etc. you will end up speaking local languages when you form your friend circle and if your team speaks a common language. Even if the job doesn't ask for it, you're going to have a tough time fitting in if you don't speak the common language (Hindi, Tamil, Kannada etc).

And be logical, English will always be needed. Which company in the world would be able to deal with 28 official languages internally? Also, there are start-ups moving to address the local market (e-commerce in Tamil, Hindi etc.

All of what you've said btw is mere opinion. None of what you say us objective fact. Speaking the language of your former colonizer doesn't mean the people lack self-respect nor does it have anything to do with any of the "virtues of freedom" as you've pointed out.

<comment><USER14> Uhh. I wish you could atleast understand this lingua franca you constantly speak of (see disclaimer above). If not please don't bring this moralizing non-sense. Narratives don't make for either logic or reason.

I'm not even sure you understand philosophy or the epistemological meanings of the words you are so desperate to bolster these stupid narratives.

See, the thing is, you don't invalidate any of what I said.

\- 90% of India's population does not speak English. This is not "mere opinion".

\- EU uses 24 official languages; companies work in the language of the state. East-Asian companies work and do engineering in their respective languages. Unless you claim Indian languages are somehow intrinsically "useless", your narrative is full of BS.

\- It's not about "speaking" as was mentioned earlier. It was obvious I was talking about technical/commercial usage. I'm glad it's required in the Govt; it appears this is only the case for low-level jobs. It looks like the country's laws etc. (apparently even the courts ?) function in English. Countries in East-Asia do engineering/business etc. in their own respective languages, some borrowing terms from English, and others (like CN) going out of their way to avoid them.

I don't mean language usage in the Kitchen; I'm not even sure how this can be "economically useful".

\- You invalidate nothing written in the NyT article.

Your "argument" is essentially one saying, "ah it's too much work to keep our own identities, so let's just adopt one of the old colonizer". What a pathetic country, and what a fall.

Noam Chomsky notes somewhere the corruption these idiots in post-modernism have on the third world, where intellectuals are desperately needed. I can see what he meant.

<comment><USER12> You haven't answered my question, which is which company/country deals with 28 languages ? The EU isn't a country. Maybe you don't understand English.

And which company works in multiple languages within it's own home country?

Your wiki source relies on 2001 data (and only considers English speakers [0] and you used as logic that 90% of India doesn't speak English, so it is in fact, mere opinion - yours). When counting both users and speakers, the value was 350M which is ~30% of the population.

It is about speaking. On a single team does it make sense that one does the docs in Hindi, and the non-Hindi speakers do what exactly with this doc? Or does he/she do one in each language? Will every college teach subjects in 28 different languages? Does any European university teach each subject in 28 languages? Do any of the countries in East Asia?

Your NYT article is an opinion piece, it's not admissible or inadmissible. If you're relying on opinion pieces, your logic is already flawed.

Most of what you say is a misrepresentation of facts.

[0]- "Wikipedia's old estimate of 350 million includes two categories – "English Speakers" and "English Users". The distinction between the Speakers and Users is that Users only know how to read English words while Speakers know how to read English, understand spoken English as well as form their own sentences to converse in English.

<comment><USER14> There is nothing new that you say other than,

\- some unqualified pedantry about the data being from 2001. "Oh yeah, we used to oppress people for eons; they've adapted in the past decade."

\- The number of fluent English speakers is apparently in the low single digits. Fairly obvious there is a nauseous class system in India, from the NyT article (speaking English gets you a good job ? What kind of society is that ? India is Anglo-Saxon ?).

\- I don't think India is "country" in the same way as European states are. To be fair to Europe, Belgium today does work today with both Dutch and French. As a cohort of people, EU, is much closer to India, in terms of diversity etc (yes, I looked up the demographics).

\- If you wish to use the epistemological grounding of a European, you're essentially vindicating my position: you have no understanding of the language/concepts you speak.

\- Finally, I really don't want to continue this exercise in shallowness (even the narratives are so shallow!). Asking me to answer rhetorical questions hardly amounts to reason.

Good luck being a (medieval) WASP clone, and trampling on people's tongues (see, now, that is an interesting narrative).

<comment><USER12> You've answered nothing I've asked (350M speakers which is 30% of the pop, Belgium uses 2 languages and somehow India isn't a country) and then end with what is at best a racial insult. You're free to have your opinions, but I don't see the point in arguing with you. You clearly can't or won't read or nor argue coherently and hurl pathetic insults.

<comment><USER14> For the sake of posterity, the parent here is not contending that exclusion exists, but is claiming that it is "inevitable" like "manifest destiny".

More resources on this ghastly society,

\- A book which basically arrives at the same conclusion: India is a linguistic apartheid state , [https://books.google.com/books?id=QJpjhC6BuM4C&pg=PA124&lpg=...](https://books.google.com/books?id=QJpjhC6BuM4C&pg=PA124&lpg=PA122&dq=india+linguistic+apartheid&source=bl&ots=cU2vNuorrW&sig=XfLzzwwIWKbx- iXNTaFez6Dsp50&hl=kn&sa=X&ved=0ahUKEwj3rPna_4LOAhVIyGMKHRrADZ8Q6AEIQjAG#v=onepage&q=india%20linguistic%20apartheid&f=false)

\- India ranks in the bottom 73-74 in PISA (while China/Japan/S.Korea are in the top 10; Vietnam in the top-20s).

\- India's literacy is < 80%, probably because there's no real opportunity even if you're educated (and have the misfortune of not speaking English).

\- [http://thediplomat.com/2014/07/why-india-must-move-beyond- en...](http://thediplomat.com/2014/07/why-india-must-move-beyond-english/)

I'm surprised there hasn't been a rerun of French revolution by the proletariat; or may be India just doesn't care - that'd explain the colonization.

<comment><USER15> Nothing is manifest, things change, but what is the optimal strategy for the present ?

A question - how many east asian programmers write C/C++/Java programs in Korean, Japanese or Chinese ? And if they do, do they have resources such as stackoverflow and forums in their languages ? What about Spanish, German and French programmers ?

Another question - what percentage of a population in any country is engineers ? Is it closer to 90% or 10% in above countries ?

Your points about equal access to opportunity are valid, but the assumption that this is responsible for the GDP being low is not in my opinion - <USER2> more complex factors.

In any case since you are feel this is important (there are relatively few who do), please try to improve the situation in some way, rather than just complain. It is hard.

In the first link you sent, read a couple pages down and it explains why even half knowledge of english is critical to capture opportunities as they exist in the present.

<comment><USER14> I have no stake in the matter; it's fairly obvious I'm speaking to people of the parasitical colonial class (bourgeoisie ?).

Your argument is no different from that "rational" @kartD. It's fairly obvious, you don't even know the definition of a "language" is. If you needed an answer, a google search would have done you good ("yes"); asking me to answer rhetorical devices like "ah, but oppression is our only way towards progress!" is stupid. Somehow no Indian has the comprehension to understand why.

Considering the same thing repeated ad nauseum, I also sense strong doses of brainwashing, or the Indian state employing a 50-cent army like Mao's men. I hope for India's sake that it is the latter.

<comment><USER15> Well, since answer to the first question I asked is 0% and the second is less than 10%, your so called arguments stand on wafer thin ice, which explains the resort to name calling and 'fairly obvious' arguments.

Instead of worrying about India, I suggest you take care of your own (serious lack of) sanity. There is a hindi saying which comes to mind - adhajal gagri chhalakat jaaye - or, empty vessels make the most noise, which based on your "long dead spiritual center", applies to you.</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment>


Why The Valley Wants Designers That Can Code - <AUTHOR> http://konigi.com/notebook/why-valley-wants-designers-can-code

<comment><USER2> It's all about cost versus benefit.

Of course every startup wants designers who can code. And architect. And grill a perfect panini. And work for minimum wage. And, and, and.

The list of wants is miles long.

But finding someone with the exact specialties you want, for the price you can pay, is hard.

Finding someone with a single specialty for your price is a lot easier. Especially if they are relatively inexperienced so far.

If you find a jack-of-all-trades willing to work cheap, of course you should take them. But don't start thinking you -need- that. Work with what you can get.

</comment><comment><USER3> Along with perfect visual and coding skills, "The Valley" wants designers in- house and under control. If companies want to hire talent, they need to be more willing to hire remotely. What's holding them back is the irrational fear of losing control. "How can I make sure he's working a full eight hours a day?" "What if he drops off the face the earth?"

Interface design can be done from anywhere on the globe. It's silly to restrict your hires only to locals or those desperate enough to relocate.

The anachronism that is <http://hoveringartdirectors.tumblr.com> offers a glimpse at the absurdity (and unintentional hilarity) of working in-house. How is hovering more efficient than viewing the design on your own monitor? Which is a more realistic use-case of your application? Actually using the app yourself, or standing by someone and having them show you?

<comment><USER4> > _Along with perfect visual and coding skills, "The Valley" wants designers > in-house and under control. If companies want to hire talent, they need to > be more willing to hire remotely._

This is a brash condemnation. In my experience startups are just as willing to hire remote as any other business, with the possible exception of those who have no local talent at all.

> _Interface design can be done from anywhere on the globe. It's silly to > restrict your hires only to locals or those desperate enough to relocate._

For the past 3 years, I've worked for possibly the most distributed startup in history. At one point I think we were averaging something like 1.8 people per country, with the largest time zone gap being 8 hours between Sydney and Palo Alto. I've telecommuted for several other jobs and a ton of contract work as well.

I know how to be effective remotely, and certainly running a startup this way gives you a hiring advantage, but it's not without significant downsides. The idea that it's about hovering or butts-in-seats is a strawman to the extreme; that type of attitude is a sign of failing before you started anyway.

The reason to all be together is that the collaboration is better. You will share ideas better, iterate faster, experience less friction in communication, and feed directly off the communal energy. You can take steps to narrow the gap with technology, but even a full-time video conference link is not the same as physical presence. I don't blame any founder for keeping everyone in one place.

</comment></comment><comment><USER5> From a web development perspective... I like designers who can code because they're going to know how difficult it is to make the thing they design. They'll also likely know what the tradeoffs that can be made for support in different browsers are.

Designers who can't code can still understand all these things, of course. But in my experience they're less likely to.

</comment><comment><USER6> Well, 37signals talked about that some years ago.. I am a front-end developer with some UI skills but no design skill at all so I maybe a bit flawed but..

It all comes down to what you are looking for, I never saw a designer as good as a front-end developer doing html/css + js _in real life_ (of course there are a couple of rockstars on the web).

They always have more a trial/error style than good code by design. Plus with web apps going more and more front-end side, you need people that do great html/css/js if you want a great working app.

<comment><USER7> Some UI skills, but not design? I'm not sure if I understand here. If you are making up UI, you are designing.

</comment></comment><comment><USER8> As a designer, there is definitely a great benefit being able to take your ideas and build them. What's more is that you have full control over your ideas and how they're implemented. That being said, though, there's a lot of back and forth. At one point your design may be top notch, but your code may suffer and vice versa. It's just how it is. However in a startup environment, the goal is quick and functional as opposed to being perfect. It really depends on your priority, but knowing how to code as well as design is extremely liberating.

</comment><comment><USER9> I keep hearing that companies are looking for these kind of hybrid designers/developers, but I'm one of those people and struggle to find a job that allows that freedom. In fact, I recently moved to SF thinking it would be easier to find that kind of role at startups. I happen to be in the job market right now, so shoot me a message if you need someone that can wear many hats.

<comment><USER10> You should post a link to portfolio/resume/github account to better market yourself on this thread

</comment></comment><comment><USER11> _one of the highest priorities, especially for bootstrapped startups, is to ship while lean on resources._

In other words, exploit the human resource as much as possible while paying them as little as possible? Makes sound business sense to me.

</comment><comment><USER10> "If you can't do some kind of code, at least learn HTML5, CSS and a little Javascript, and maybe some other server-side scripting languages"

But take 5 years of solid work/practice with this to actually know what your doing...

</comment><comment><USER12> Aside from myself, most of my friends are creatives and through that I have found it EXTREMELY rare to find stellar designers who can also code just as quickly and proficiently as front-end developers who have dedicated themselves to the craft.

</comment><comment><USER13> Another explanation that I derive from the last time I saw flashy UI take a front seat in tech (1999-2002): we are in Yet Another Bubble, and Sizzle Sells (overvalued companies to sucker VCs.)

_ducks_

</comment><comment><USER14> I am a coder that can design. Maybe I should move to the valley

</comment><comment><USER15> This seems like a no-brainer to me. As the integration between back and front end vision becomes tighter, the better the product will be.</comment>


Not So Fast: Analyzing the Performance of WebAssembly vs. Native Code - <AUTHOR> https://www.usenix.org/conference/atc19/presentation/jangda <comment><USER3> So many comments here missing the point. As a developer, I can use wasm to ship a single binary that works on Windows, Mac, Linux, Android, and iOS. I can use the language that I want. I don't need to have Xcode, visual studio, android studio, or any other set of tools: you can reasonably build an app with your text editor and LLVM.

And then, you can use my app by typing its address into your address bar. No installation needed. No polluting your home directory. No registry entries. It's sandboxed, you're never giving the app permissions that you don't intend. A service worker can be used to make the app available offline. My dear grandmother could use this without confusion. My dad can use these apps and feel confident he's not not infesting himself with malware or bundled software.

The complaints about "the web doesn't feel native!" and "it's less secure!" and "it's just as easy to ship a native app [for my platform of choice]!" are tired arguments. We've finally got a simple way to distribute apps fully cross platform in a way that CAN respect privacy and guarantees a reasonable level of security. And, it's pretty darn fast.

<comment><USER4> > So many comments here missing the point. As a developer, I can use wasm to > ship a single binary that works on Windows, Mac, Linux, Android, and iOS.

But we've accomplished that by effectively turning web browsers into VM's that have a complexity on par with a full operating system. I have a sneaking suspicion that we're going to end up deciding that was a huge mistake.

<comment><USER5> You'd have to go back farther than the intro of WASM to see a time that wasn't the case.

</comment></comment></comment><comment><USER6> FWIW: in my 8-bit emulators I'm closer to the 10% performance difference for code compiled in clang with -O3 (the native version uses latest Xcode's clang, the WASM the latest LLVM WASM backend via emscripten):

[https://floooh.github.io/tiny8bit/cpc- ui.html](https://floooh.github.io/tiny8bit/cpc-ui.html)

The time in the top-right is the time spent per frame in the emulator, in the WASM version that's somewhere around 2.5 to 2.8ms on my laptop.

The native version is somewhere between 2.0 and 2.2ms.

From my experiments, it's quite easy to accidentally hit a "slow path" on the WASM side, for instance registers are spilling earlier (AFAIK because WASM has one or two registers set aside). Things are getting better though. About a year ago, the same emulator code seemed to have triggered some specific slow- path and the WASM version was nearly 4x slower.

Of course it's always possible to put more time into optimizing the native version of a piece of code when targeting a specific compiler version, compiler-specific intrinsics and a specific CPU model. This is where WASM will always lag behind, with a portable ISA you'll always hit a wall where further optimization simply isn't possible.

So from my experience: somewhere between 10% slower and 3x slower is all within the "expected" range, the more important part is that performance is _predictable_ for a given piece of code compiled with a given compiler version (e.g. you won't have the GC come in and do its thing for a few hundred milliseconds). And at least the emscripten team is very responsive and interested in such pathological cases.

<comment><USER7> But 10% is something I can easily sell to my boss. I only need one or two compensating qualities for that argument to succeed.

If I'm getting work done faster, prioritizing a couple more perf stories is a reasonable tax to pay.

<comment><USER8> It depends on what you are trying to do... you can only spend so much CPU time on a blinking cursor waiting for a user to click/type something.

</comment></comment></comment><comment><USER9> Ok. At some point in the future the browser/wasm will have won. So instead of Linux/Windows/OSX we will have Firefox/Safari/Chrome/Whatever all with their own implementation gotchas, missing features and performance loss. All for the sake of browser vendors trying to displace the existing native deployment platforms. They sure have nice financial incentive. Why do we - <USER2> fall into this trap? We've been there quite a few times already, with cross platform standards. No matter what vendors will fsck'em up with proprietary things.

<comment><USER6> But it's the other way around. Can you distribute a native application on macOS without Apple's blessing? No, you can't (not when Catalina will be out anyway). And Windows is closing the "gap" really fast too. Try distributing a native installer without the browser or SmartScreen bringing up a scare- dialog-box.

Until OS vendors are willing to provide a safe sandbox to run untrusted code in, and untangled from a non-technical curating mechanism which has all sorts of conflicts-of-interests of what's morally acceptable and what's not, WASM is the next best thing to an open, yet secure, platform.

Desktop Linux aside, the web is currently the only open platform for distributing software outside of the interests of a single "platform owner". Google may close this "loop hole" soon, so I'm not too optimistic for the future, but today, that's what it is.

<comment><USER10> _But it 's the other way around. Can you distribute a native application on macOS without Apple's blessing? No, you can't (not when Catalina will be out anyway)._

Yes you can:

[https://forums.macrumors.com/threads/unsigned-apps- catalyst-...](https://forums.macrumors.com/threads/unsigned-apps-catalyst-app- signing.2183873/#post-27437170)

 _WASM is the next best thing to an open, yet secure, platform._

So, instead of walled gardens with signed and checked applications (bad). We have to run untrusted and unchecked code of vendors who run code to track your movements around the web and in their applications? (Even worse)

 _Desktop Linux aside_

Maybe we should make Linux an acceptable platform for more people rather than optimizing for proprietary web applications that you don't even own a copy of anymore.

<comment><USER11> > Maybe we should make Linux an acceptable platform for more people rather > than optimizing for proprietary web applications that you don't even own a > copy of anymore.

Won't ever happen for two reasons: 1) The Linux Desktop community would have to admit that there are better ways to do things, and 2) They'd have to agree on what those things are. 20 years of Linux Desktop history show these things to be impossible.

Theoretically, a new community could spring up and put a new userland on top of the Linux kernel, like Android did, but it would seem like the people who have the interest in doing such a thing (like myself) lack enough time, talent, and/or ability to organize sufficiently to pull it off. Not to mention that we'd all have to agree too.

<comment><USER12> I lack the talent, but I'm definitely interested.

Have you taken a look around Casey Muratori's handmade.network? Or interacted much with the guys who watch Jonathan Blow's livestreams? They make much the same point you do about taking the linux kernel and creating a new userland around it.

Anyone who's interested in working on something like this, email firstname.lastname@example.com. The least we could all do is keep in touch, right?

<comment><USER11> Yes, I've hung out on Johns and Casey's streams. I don't bother much with handmade.network because very little there interests me. Essence is kinda neat, but it is a long way from practicality and I'm not sure how much my ideals and Nakst's align.

I also think a forum or IRC channel would be more appropriate, but email is a start and I appreciate you taking the initiative.

See also Probono's Hello[0], but I'm not sure he hasn't decided that Haiku already fits for him.

[0] [https://github.com/probonopd/hello](https://github.com/probonopd/hello)

</comment></comment></comment></comment></comment></comment><comment><USER10> Slower at an average of 50% looks acceptable to me for many applications.

However, for me personally I wonder: what's the point? I would go from Linux -> glibc -> native application to Linux -> glibc -> Web Browser -> WebAssembly application. Yet another layer of abstraction.

Sure, WebAssembly can be run directly on any platform. But precompiling an application is not a problem (my Linux distribution provides binary builds). So, this seems to be interesting to (primarily) web applications. However, I try to avoid web apps, because they are typically proprietary, a moving target, the owner can randomly decide to charge me for things, or (ab)use my data, and they feel non-native.

(I do see the benefit for people who use web apps, since WebAssembly is typically faster than Javascript and opens up web app programming to more languages.)

<comment><USER13> People might start baking chips that can natively run web assembly at some point. If that happens we have found a very expensive path from running native binaries to running native binaries for the purpose of making this independent of the platform.

<comment><USER14> Lol. Well, I mean nothing is outside of the realm of possibility, but remember those native Java chips! Some thought those were going to be a big win. And then you had companies like Transmeta trying to do the exact opposite - interpretively optimize all the things....or something like that.

<comment><USER15> Transmeta JIT'd x86 into VLIW.

That was right before the Power Wall became an obstacle and CPUs were already burning up. Transmeta in a sense invented low power computing but then Intel said _thank you very much; we 'll take it from here._ It wasn't that they didn't deliver. It's just that they were competing against Intel in the x86 space. A lot of the Transmeta team moved to nVidia and work on Denver but that's different and they got an architecture license from ARM to do that.

</comment></comment></comment></comment><comment><USER16> Please actually read the paper. As usual, the mean is a poor approximation of a distribution. This paper states repeatedly that it was able to reproduce the experimental results from the 2017 PLDI paper, which primarily used PolyBenchC as the suite. My team wrote that paper. We didn't cherry pick.

The issue is mostly that we suck more on Spec2k6 than we realized. Since publishing that paper we do track Spec2k6 internally but we don't spend time tuning for it.

/v8 wasm runtime TL

<comment><USER17> Thank you for the clarification. Some questions related to V8 perf:

1\. WASM <\--> JS/Host calls seem to have a higher cost on chrome than FF [1][2]. Is that in your optimization roadmap?

2\. Wasmer tracks V8 perf against other backbends, and the LLVM backend consistently outperforms V8 [3]. Can anything be done to address this, especially for node, where the compile time cost of a super optimizing compiler might be beneficial in certain applications?

[1]: [https://bnjbvr.github.io/perf-wasm- calls/](https://bnjbvr.github.io/perf-wasm-calls/)

[2]: [https://hacks.mozilla.org/2018/10/calls-between- javascript-a...](https://hacks.mozilla.org/2018/10/calls-between-javascript- and-webassembly-are-finally-fast-/)

[3]: [http://speed.wasmer.io/comparison/](http://speed.wasmer.io/comparison/)

</comment></comment><comment><USER18> How much of this performance gap is due to the inherent limitations of the WebAssembly technology, and how much is due to it being relatively new?

I.e., do we expect to see performance improvements similar to what we've seen in JavaScript over the last two decades? Or are we going to need better hardware to realize better performance?

<comment> Paul-ish Section 6.4 tries to answer this question.

> It is worth asking if the performance issues identified hereare fundamental. > We believe that two of the identified issues are not: that is, they could be > ameliorated by improved implementations. WebAssembly implementations today > useregister allocators (§6.1.2) and code generators (§6.2.1) thatperform > worse than Clang's counterparts. However, an offlinecompiler like Clang can > spend considerably more time togenerate better code, whereas WebAssembly > compilers mustbe fast enough to run online. Therefore, solutions adoptedby > other JITs, such as further optimizing hot code, are likely applicable here.

> The four other issues that we have identified appear to arise from the > design constraints of WebAssembly: the stackoverflow checks (§6.2.2), > indirect call checks (§6.2.3), andreserved registers (§6.1.1) have a runtime > cost and lead to in-creased code size (§6.3). Unfortunately, these checks > are nec-essary for WebAssembly's safety guarantees. A redesigned > WebAssembly, with richer types for memory and function pointers [23], might > be able to perform some of these checksat compile time, but that could > complicate the implementation of compilers that produce WebAssembly. > Finally, a Web-Assembly implementation in a browser must interoperate witha > high-performance JavaScript implementation, which mayimpose its own > constraints. For example, current JavaScript implementations reserve a few > registers for their own use,which increases register pressure on > WebAssembly.

<comment><USER18> > A redesigned WebAssembly, with richer types for memory and function pointers > [23], might be able to perform some of these checks at compile time, but > that could complicate the implementation of compilers that produce > WebAssembly.

Great info, thanks for sharing! So, to summarize:

Performance will get a bit better for WebAssembly 1.0, but we'll need a WebAssembly 2.0 (for lack of a better term) to realize major performance improvements. And/Or we'll need advancements in JIT technology.

Beyond that, there will always be some limitations because of the Javascript interop requirements.

And, as other threads here have pointed out... maybe who cares? It's still pretty fast!

</comment></comment></comment><comment><USER19> > an offline compiler like Clang can spend considerably more time to generate > better code, whereas WebAssembly compilers must be fast enough to run online

> [security] checks are necessary for WebAssembly's safety

> current JavaScript implementations reserve a few registers for their own > use, which increases register pressure on WebAssembly

<comment><USER20> > > an offline compiler like Clang can spend considerably more time to > generate better code, whereas WebAssembly compilers must be fast enough to > run online

[https://hacks.mozilla.org/2018/01/making-webassembly-even- fa...](https://hacks.mozilla.org/2018/01/making-webassembly-even-faster- firefoxs-new-streaming-and-tiering-compiler/)

> One of these speedups is streaming compilation, where the browser compiles > the code while the code is still being downloaded. Up until now, this was > just a potential future speedup. But with the release of Firefox 58 next > week, it becomes a reality.

> Firefox 58 also includes a new 2-tiered compiler. The new baseline compiler > compiles code 10–15 times faster than the optimizing compiler.

Seems to deal with the "whereas WebAssembly compilers must be fast enough to run online"

<comment><USER21> Streaming and tiering do help, and I believe all browsers do that. Still, the article's point is valid that offline compilers can spend more time compiling, because even if you have a faster tier before you, running a slower compiler eats up battery and increases the time before the code runs at full speed.

</comment></comment></comment><comment><USER22> So... don't completely discard native desktop apps just yet? That said, I suspect we'll soon see something akin to Eelctron for WebAssembly: a toolkit for making UIs that acts as a permissions context/bridge to making calls into the host operating system's API. Or maybe WebAssembly won't be the revolutionary tidal wave of change that many of its proponents hope it will be?

<comment><USER23> Won't that be a security nightmare?

<comment><USER24> Electron apps can already access the host OS, spawn child processes:

[https://github.com/martinjackson/electron-run-shell- example](https://github.com/martinjackson/electron-run-shell-example)

</comment></comment></comment><comment><USER25> If anything this paper is unfair to the native compiler; they compare V8 and SpiderMonkey from April 2019 to a clang release from March 2017, and they turn off autovectorization. That being said, most of the slowdowns they identify seem to be deficiencies in the WASM engines rather than fundamental problems with WASM itself.

</comment><comment><USER26> Can someone explain a concrete use case for web assembly? Are there projects out there using web assembly in production? What kind of application needs more performance than Javascript can offer, but doesn't need full native performance?

<comment><USER27> Figma ([https://www.figma.com/](https://www.figma.com/)) is a design tool that runs in the browser and makes heavy use of WASM. It's definitely slower than using a native app like Sketch, but not slow enough to be completely impractical. A few design people I work with here in India have switched to Figma from Sketch, and they seem very pleased with the results.

I can see WASM becoming useful for enabling apps that do real-time audio/video/image processing in the browser. Games are another obvious use case.

Maybe one day I'll be able to run an Ableton-lite right in the browser.

<comment><USER28> Everyone likes Figma because of its real time collaboration. The performance is terrible but you put up with it because of the features.

</comment></comment></comment><comment><USER29> It's early days. Calm down. It will speed up.

<comment><USER30> The reserved registers may always be a problem. It reminds me of the people who complained about massive slowdown in games when Vista released. The games were so optimized to fit in a single page that the few new pieces of state in the window manager caused page thrashing.

<comment><USER16> For single-instance scenarios with a single memory, I think using a 0-based memory will be a lot more efficient than reserving a register for the memory base. That doesn't fly when a Wasm engine is embedded into an arbitrary C++ program, but for standalone scenarios this may be feasible.

</comment></comment></comment><comment><USER31> Tl;dr: 2x slower in FF, 2.5x slower in chrome. Depending on the application, that doesn't seem to be a huge tradeoff. Certainly many developers are comfortable writing things in python, which is likely hundreds of times slower than C++ in many problem spaces.

TBH though my big hope for web assembly has nothing to do with the web at all, but as a distribution format for drivers that can be installed on any cpu arch/kernel. Finally, my dream of BSD on risc-v is achieved! ....or more likely, just running linux on arm.

<comment><USER32> You don't mind drivers being half as performant as they were before, with the only benefit being they're easier to distribute? Why? How is that beneficial to anyone except the person packaging the driver?

<comment><USER33> The browser is a really good sandbox. The security of browsers is also what makes web apps easy to distribute.

That said I don't see the point of writing drivers in webassembly. If you want better security for drivers, there are better endeavors like microkernel architectures which Linux still isn't using.

</comment></comment></comment><comment><USER34> 10% slower is actually not that bad, when compared to the safety and portability not given by C/C++. Past 10% performance parity is the stuff of performance optimization challenges; we may have to accept that.

We're all putting up with regular 10% drops in our CPU performance because intel was stupid about alot of things; maybe we could give 10% up for common applications (let's face it, most aren't CPU-bound) having more safety.

Of course, I don't know if wasm is the answer. Jury's still out for whether it's great in native or not; honestly, GUI is still the issue.

</comment><comment><USER35> I would say even 50% slow down is a fair trade-off for very many applications, for the benefit or running almost anywhere, without installation etc.

That was java's claim (but not the reality), what's the slowdown there?

<comment><USER36> In a lot of cases Java is faster than what average developers would write in C.

That is except startup time.

</comment></comment><comment><USER37> The article claims that this is a revelation, but I've been hearing for at least one year already that webassembly comes at best around half the speed of native.

</comment><comment><USER38> Relevant: benchmarking WebAssembly using libsodium: [https://00f.net/2019/04/09/benchmarking-webassembly-using- li...](https://00f.net/2019/04/09/benchmarking-webassembly-using-libsodium/)

</comment><comment><USER39> It looks like there's another issue that is not quite mentioned: the Chrome code generator is using %rbx to point to the start of the WebAssembly memory, which means that the available addressing modes are severely reduced and a register is used up.

It seems like that it could use a %fs or %gs segment override instead (one of which can be programmed arbitrarily at least on Linux), which should be cost- free on all x86-64 processors and would solve the issue.

Once this is changed, the only remaining fundamental unfixable differences would be reduced cache efficiency from the extra bytes for the segment override, and the need to reserve an extra register for the wasm stack pointer.

However, running WebAssembly code in a separate address space would allow to run arbitrary code, although this would have the drawback of higher memory usage and IPC slowdown.

Is there any article discussing the rationale between Firefox and Chrome's current approach and whether they plan to use either segment overrides or process isolation?

<comment><USER16> > the Chrome code generator is using %rbx

The memory base is actually loaded from the instance pointer, and neither of these are pinned to specific registers. They're both allocatable by the register allocator.

> %fs or %gs segment override instead

This is tricky to do for all platforms that V8 supports. I'm not sure it's free; it's still at the very least another prefix.

<comment><USER39> > This is tricky to do for all platforms that V8 supports

It can be done only where supported. Ivy Bridge and later have instructions to set them in user space (WRFSBASE/WRGSBASE), and although it needs the OS to enable it, I would expect it can be done on all significant x86-64 OSes.

> I'm not sure it's free; it's still at the very least another prefix.

There are benchmarks that show TLS is as fast as global variable, so it's probably free (aside from the impact on the I-cache due to increased code size, but using a general purpose register is probably much worse due to additional instructions and extra SIB bytes).

</comment></comment></comment><comment><USER40> Watching wasm fans realize they've reinvented java is priceless

</comment><comment><USER41> I didn't watch the video, does it say how much of the perf gap is due to the unix API's they tried to replicate and how much is due to wasm actually being 'slower'?

50% the speed of native is really not bad, it's not like wasm is done being worked on. That's a very promising start.

<comment><USER42> (I'm one of the paper authors.) The paper points out that the overhead of Browsix-WASM is under 1% across all benchmarks.

</comment></comment><comment><USER43> Coming form a win32 desktop background, how would I do a UI in web assembly?

<comment><USER12> Have you seen Blazor?

[https://dotnet.microsoft.com/apps/aspnet/web- apps/client](https://dotnet.microsoft.com/apps/aspnet/web-apps/client)

[https://www.youtube.com/watch?v=uW- Kk7Qpv5U](https://www.youtube.com/watch?v=uW-Kk7Qpv5U)

It packages the entire .NET framework into a single wasm app, so it's a little bloated, but it works.

</comment></comment><comment><USER44> Not So Fast... yet... (implement first, optimize later)</comment>


A Formula for Success: The Power of Implementation Intentions - <AUTHOR> http://www.artofmanliness.com/2012/01/22/a-formula-for-success-the-power-of-implementation-intentions/

<comment><AUTHOR> In looking for specific strategies to overcome procrastination this one jumped out. A more detailed description of the simple technique can be found in a paper by gollwitzer, [http://www.psych.nyu.edu/gollwitzer/99Goll_ImpInt.pdf](http://www.psych.nyu.edu/gollwitzer/99Goll_ImpInt.pdf)</comment>