I'm sick and tired of hearing "what about unemployment" when every new piece of technology is developed. They will have to find something else to do, that's what. Do we need millions of blacksmiths making horseshoes today? Where are millions of unemployed blacksmiths? Do we need millions of cotton pickers? Do we need millions of farmers with scythes?
Long term, developing technology and improving efficiency and reducing labour is always beneficial.
There are slightly different problems. One is availability of said technology to people (only industrialists can afford robots, plus technology can be proprietary, patented and restricted). And another problem is that only few people (ones providing capital) often benefit from the fruits of technology. First can be mitigated with different legislation (although unlikely to happen since industry interests control most governments). The former? I don't know... I believe this is where cracks start showing in capitalism as a system...
I don't believe Oracle can kill off Java. Several reasons:
Oracle is dependent on Java ecosystem. They push enterprise apps now, not just databases. And those apps, at least quite a big number of them is written in Java.
Oracle is selling Java servers, like WebLogic or Coherence.
OpenJDK is GPL anyway, and they cannot really close it off.
Oracle database users often implement their software in Java. Screw up Java- your database sales go down.
Java is part of Oracle Database.
So for Oracle ruining Java would not make any financial sense, neither short term nor long term. If they have at least 2 brain cells working, they will not do it. Although big companies do not always act rationally.
I've seen plenty of bad Java code, but then again I've seen plenty of bad non-Java code.
It's not Java's fault that people are using it wrong. It's easy to do the right thing with Java, but it's also quite easy to do the wrong thing and get SOMETHING kinda working. In a way that can be a curse. Bad C/C++ apps will crash and burn immediately quite often, thus forcing people to fix things. Bad Java apps will creep along and be somewhat usable.
On the other hand, you can get something working quicker with Java, and you can get reasonably good results with good design and supervision and a team of mediocre developers. So Java software is quite cost-effective.
Unless you do your crypto on your own machine, and your machine is not compromised, any such service is insecure. As soon as your cloud storage provide has your crypto keys, you need to assume your encryption compromised. There are several ways to implement it:
1. Use GPG and ecrypt each file before storing it on-line.
2. Pay for a normal Linux hosting server with ample storage. Export the raw block device using NBD (network block device). Encrypt it on your device using dm-crypt or luks and mount it. This encrypts the entire disk.
3. Use some kind of cloud storage, but do encryption in javascript on the browser, in your machine, without sending encryption keys anywhere. Look at http://openpgpjs.org/ I don't know any cloud services that would allow doing that.
I do agree with a lot of points listed here. Rolling your own development team is not easy, nor cheap.
However, when you hire companies to do contracts this big, you end up with horrible horrible mess. First, you get to hide the bigest contractors available (because the project is big), like Accenture or similar. And they are the worst, and have the worst (cheapest) people available working for them. The only selling point they have is the headcount, not quality of developers. And they will assemble a new team for this project, from random guys, with flaky qualifications and skills, and often no prior experience.
And all those companies are for-profit. Which means they will find ways to overcharge you by A LOT. Like 10x-20x the cost of a good sized team for several years.
In the end, a project like this that has been outsourced to big IT companies is almost guaranteed to cost you a fortune, and end up a failure.
Now it's possible (and likely) to end up with a failed project with an in-house team, but choosing in-house development vs contracting is not as clear cut as you seem to suggest.
Maybe that 1% of time Oracle DB is the right solution, and then you need it and you need to pay DBAs and consultants to do the tuning.
But in other cases, Oracle is an overkill. And Postgres with minimal effort will Just Work, while just the effort to set up Oracle and keep it running is going to be expensive (DBAs, consultants) and horrible. Especially if you can spend all the money you saved on licences on proper hardware. And I have experienced more bugs in Oracle than in Postgres, both in weird query optimizer behaviour, and outright incorrect data handling. And there is no way to get them fixed, at least in timely manner, not even with most expensive support options.
And don't get me started on Oracle enterprise applications- they are horrible. And given the history of company of overcharging their customers and delivering crap, I wouldn't trust them with any project.
About the only thing produced by Oracle that I enjoy is Java. And I still shudder every time I think that it is owned by Oracle, although they seem to be doing a reasonably good job getting new versions out of the door.
Well, I've been running Debian Sid on my desktop (and now laptop) for last 10 years. Works well enough for me...
I know Debian doesn't spend that much time polishing the desktop experience, but installing vanilla XFCE and tweaking it a bit is all I need. And having all the power of Debian at the fingertips is very nice.
I do agree bootup times don't matter if you run a server. For a laptop, a tablet, a mobile, even a desktop that gets turned off startup times are important. For tablets, laptops and mobiles, they are VERY important.
I agree that complexity is evil. I have no experience with systemd nor with upstart, so I cannot comment on them. However, dependency graph and parallel execution should not be THAT difficult or complex:-/
You need to remember that most of the time Debian is not about developing new stuff, it's primarily about PACKAGING and DISTRIBUTING existing stuff.
From "package a bunch of software into an usable system" standpoint it is a smart decision to wait until the dust settles and things are tried and proven. Especially if you are producing system as stable as Debian Stable.
Sorry for incorrect moderation. I'm posting this so that my moderation is cancelled.
By the way, do you have any sources for the claims regarding connection between time estimates & funding? I'm not saying I don't believe you, but it would be interesting to see more details regarding this issue.
Model S is the only "long-range battery electric luxury car" out there. In that, there is no competition. All the hybrids still retain their internal combustion engines, and with them all the added weight and complexity and breakage and exhaust and dirt and oil. So you cannot compare hybrids with battery electric vehicles, as they are completely different thing. Hybrids, even plugin hybrids, are not "long-range battery electric cars". All other battery electric cars are not long-range, and are not big/luxury cars.
If you are comparing "luxury cars", then you need to add BMW, Mercedes, Audi, Jaguar into equation, and compare it on things like performance, interior, feeling, ride, design etc. I doubt Cadillac would fare well in this comparison.
It's the way of higher management. If it succeeds- it happened due to my leadership. If it fails- it failed due to incompetent workers, incompetent committees, incompetent scapegoats, sub-optimal company structure, etc. Incompetence is easier to forgive than greed-driven risk-taking or things designed to fail after they have enriched you.
They are called sea turtles. Or if not, then sharks, tunas & swordfish. Go breed more of these, or stop killing them off in such numbers and let their populations recover!
Ok, I'm a Java developer, working on Linux. 99% of benchmarks you see on-line are benchmarks of some stuff on Windows, which is immediately skewed towards intel because lots of Windows DLLs are built with Intel compiler which disables optimizations and advanced features on non-intel CPUs, even if those features are supported.
Also, most benchmarks are some synthetic benchmarks (compiled with Intel compiler), or some 3D games, or some video transcoding. I do none of that, and what I do I do not do it on Windows. I am yet to see a site that benchmarks Java compilers, Java IDEs, databases, application or Java web servers, etc. on Intel vs AMD vs ARM platforms on Linux. The only site that comes close is Phoronix. And if you look at their Linux benchmarks, difference between AMD and Intel CPUs is much less than on Anandtech or Toms Hardware. Intel is still making faster CPUs, but not that much faster.
All these ARM SOCs are nice but they all have weird closed up GPUs that have crap close sourced drivers that barely work.
There are projects to reverse engineer Adreno (Qualcomm) and Mali (ARM) GPUs and implement drivers for them, but these projects are nowhere near production ready. And as far as I know Qualcomm has other issues with openness- they are denying release of hackable Android for their devices because it contains some secret proprietary BLOBs, without which it won't work.
So when it comes to Linux hardware support on ARM, it feels like 90s all over again... I'd rather buy a small x86, it will be larger, more expensive, it will consume much more power, but at least open-source hardware support is going to be nice and I won't need any BLOBs.
I don't use Chrome much, but is there a master password that you can set?
If there is no master password, then no matter how the data is stored, it's as safe as plain text anyway. Even with master password, dictionary attacks will get you quite often.
And you can transfer/import/export the data encrypted with master password between different installations without decrypting it.
There is this thing called steganography, i.e. hiding stuff in plain sight. Using it you can exchange "legal" messages that have a hidden subchannel. Of course you need more bandwitdth. But given today's internet speeds, even using high strength steganography you would get enough bandwidth for things like email or chat, maybe even voice. Probay not enough for video.
So a dedicated person can find ways to exchange hidden data securely, even when internet is quite closely monitored. However, general public often lacks motivation or the skills to do so. And there are very few convenient tools available. I think we can improve this, we need CONVENTIENT and EASY TO USE secure distributed storage and communications tools.
I wonder about the legality of FBI's action here. Ok, I guess they have some kind of search order/wiretap order for "investigating pedophiles" against one specific site, but what about collateral damage? I mean they shut down an email service used by normal people as well. They did track and spy on activities on normal law abiding citizens. Did they effectively break into a big number of law abiding citizen's machines against whom no search or writetap orders were issued?
Or can FBI hack anyone at will without any legal oversight? I don't remember getting the memo where such behaviour from a government agency is legal.
Well I guess we can stop pretending we live in a law-abiding democratic world. It's an oligarchy run by the banks, the rich, lobyists and professional politicans, and scew everyone else...
Right, so Lenovo does have (unproven) backdoors. But Clevo, Foxconn, Quanta, Winstron, Pegatron who produce 90% of laptops in the world (including Dell, HP, Apple) somehow cannot have Chinese backdoors, even though their HQs are in Taiwan, and most factories probably in China?
Besides, what about spying by USA? I believe USA products, including Microsoft Windows have backdoors. _NSAKEY was found in 1999:
http://en.wikipedia.org/wiki/NSA_key
Given the climate today, I'd be as fearful of spying by USA government as China. Given the list of countries however, well, they are the closest buddies with USA and already share intelligence data. And spying on own citizens never mattered to any of them.
This and exactly this. I have worked on quite a few systems in my life, and not once I have though "only if this system was more complex". Most of the time what I found was duplication, unnecessary abstraction layers, no separation of concerns, too much unnecessary flexibility, very roundabout and complex solutions to very simple problems. Usually I am able to refactor it into something that is ~5x smaller, and easier to understand, and faster, and easier to change.
I hate it when people add flexibility and features in advance, and it ends up never used. And while Agile approaches seem a bit cowboyish sometimes, I agree with them on one point- implement the simple stupid solution first, make it more complex only when necessary.
Wow, coincidences.
I have worked for a place that used Apache Jackrabbit as a database. It was mostly done to work around a DBA who was an ass, because Jackrabbit didn't count as a real database and could be managed by the dev team. I spent 1 year in there porting that system to Microsoft SQL. Not my choice of database, I pushed for Postgres. But even MSSQL worked much better than Jackrabbit. That refactoring effort was very successful, but I got headhunted soon afterwards for a much better salary, and even crappier system to work on:)
Having entry level developers deliver features without destroying the entire system is a good thing, not a bad thing. You cannot always hire the best of the best, and you sometimes have to make things work with mediocre devs. While they would completely ruin everything in C/C++, with good team leadership and resasonable architecture they can get non-critical bits developed in Java/C#. This is speaking from experience- I had previously hired bright but inexperienced students, and they were quite successful in getting things done with Java.
And outsourcing is not always the issue. I'm looking right now at what is probably the worst system I've ever seen in my career, in London, that was entirely developed in house with higly paid developers (this is a financial institution). There are plenty of incompetent well paid developers, and even having a reasonably OK team won't save you if management is incompetent.
Let me say that it is easy to create GREAT systems in Java (and I assume in C#/.NET). However, in enterprise world, that seldom happens. That is not because of languages, but because of several management related issues:
1. Technical excelence is rarely seen as a goal, implementing features is.
2. Technical fixes do not drive development, satisfying business requirements does.
3. Things are rarely if ever refactored, consolidated or tidied up, as business does not see the benefit of doing that. And they do see the risk of regressions and breakage caused by refactoring.
4. There are few really good architects & developers, and because of lack of refactoring and technically driven changes, any problems in design or mistakes in code will stay there forever.
5. Management sometimes makes insane technical decisions, because of stupidity or corruption, or because they read an article that X is great and now everyone must use X, or whatever. Technical decisions must be made by technical people, otherwise bad things happen.
6. When system becomes unmaintainable and unusable, it gets rewritten, causing all "Version 2" problems. Everything and the kitchen sink gets included into Version 2, and it ends up worse than Version 1.
7. Hardware costs less than developer time, so throwing hardware at the performance problems is often easier and cheaper.
I'm sorry. C# being ahead in desktop might hold true if you run your clients on Windows. If you want cross-platform apps, (and I plain refuse to work on systems that won't run on Linux), then C# is completely useless.
I'm sick and tired of hearing "what about unemployment" when every new piece of technology is developed. They will have to find something else to do, that's what. Do we need millions of blacksmiths making horseshoes today? Where are millions of unemployed blacksmiths? Do we need millions of cotton pickers? Do we need millions of farmers with scythes?
Long term, developing technology and improving efficiency and reducing labour is always beneficial.
There are slightly different problems. One is availability of said technology to people (only industrialists can afford robots, plus technology can be proprietary, patented and restricted). And another problem is that only few people (ones providing capital) often benefit from the fruits of technology. First can be mitigated with different legislation (although unlikely to happen since industry interests control most governments). The former? I don't know... I believe this is where cracks start showing in capitalism as a system...
--Coder
So for Oracle ruining Java would not make any financial sense, neither short term nor long term. If they have at least 2 brain cells working, they will not do it. Although big companies do not always act rationally.
--Coder
I've seen plenty of bad Java code, but then again I've seen plenty of bad non-Java code.
It's not Java's fault that people are using it wrong. It's easy to do the right thing with Java, but it's also quite easy to do the wrong thing and get SOMETHING kinda working. In a way that can be a curse. Bad C/C++ apps will crash and burn immediately quite often, thus forcing people to fix things. Bad Java apps will creep along and be somewhat usable.
On the other hand, you can get something working quicker with Java, and you can get reasonably good results with good design and supervision and a team of mediocre developers. So Java software is quite cost-effective.
--Coder
Unless you do your crypto on your own machine, and your machine is not compromised, any such service is insecure. As soon as your cloud storage provide has your crypto keys, you need to assume your encryption compromised. There are several ways to implement it:
1. Use GPG and ecrypt each file before storing it on-line.
2. Pay for a normal Linux hosting server with ample storage. Export the raw block device using NBD (network block device). Encrypt it on your device using dm-crypt or luks and mount it. This encrypts the entire disk.
3. Use some kind of cloud storage, but do encryption in javascript on the browser, in your machine, without sending encryption keys anywhere. Look at http://openpgpjs.org/ I don't know any cloud services that would allow doing that.
--Coder
I do agree with a lot of points listed here. Rolling your own development team is not easy, nor cheap.
However, when you hire companies to do contracts this big, you end up with horrible horrible mess. First, you get to hide the bigest contractors available (because the project is big), like Accenture or similar. And they are the worst, and have the worst (cheapest) people available working for them. The only selling point they have is the headcount, not quality of developers. And they will assemble a new team for this project, from random guys, with flaky qualifications and skills, and often no prior experience.
And all those companies are for-profit. Which means they will find ways to overcharge you by A LOT. Like 10x-20x the cost of a good sized team for several years.
In the end, a project like this that has been outsourced to big IT companies is almost guaranteed to cost you a fortune, and end up a failure.
Now it's possible (and likely) to end up with a failed project with an in-house team, but choosing in-house development vs contracting is not as clear cut as you seem to suggest.
--Coder
Maybe that 1% of time Oracle DB is the right solution, and then you need it and you need to pay DBAs and consultants to do the tuning.
But in other cases, Oracle is an overkill. And Postgres with minimal effort will Just Work, while just the effort to set up Oracle and keep it running is going to be expensive (DBAs, consultants) and horrible. Especially if you can spend all the money you saved on licences on proper hardware. And I have experienced more bugs in Oracle than in Postgres, both in weird query optimizer behaviour, and outright incorrect data handling. And there is no way to get them fixed, at least in timely manner, not even with most expensive support options.
And don't get me started on Oracle enterprise applications- they are horrible. And given the history of company of overcharging their customers and delivering crap, I wouldn't trust them with any project.
About the only thing produced by Oracle that I enjoy is Java. And I still shudder every time I think that it is owned by Oracle, although they seem to be doing a reasonably good job getting new versions out of the door.
--Coder
Well, I've been running Debian Sid on my desktop (and now laptop) for last 10 years. Works well enough for me...
I know Debian doesn't spend that much time polishing the desktop experience, but installing vanilla XFCE and tweaking it a bit is all I need. And having all the power of Debian at the fingertips is very nice.
--Coder
I do agree bootup times don't matter if you run a server. For a laptop, a tablet, a mobile, even a desktop that gets turned off startup times are important. For tablets, laptops and mobiles, they are VERY important.
:-/
I agree that complexity is evil. I have no experience with systemd nor with upstart, so I cannot comment on them. However, dependency graph and parallel execution should not be THAT difficult or complex
--Coder
You need to remember that most of the time Debian is not about developing new stuff, it's primarily about PACKAGING and DISTRIBUTING existing stuff.
From "package a bunch of software into an usable system" standpoint it is a smart decision to wait until the dust settles and things are tried and proven. Especially if you are producing system as stable as Debian Stable.
--Coder
These things are not hard as in O(e^N) hard, and you won't learn about them in your CS class. But you have to deal with them every day in real world
Sorry for incorrect moderation. I'm posting this so that my moderation is cancelled.
By the way, do you have any sources for the claims regarding connection between time estimates & funding? I'm not saying I don't believe you, but it would be interesting to see more details regarding this issue.
--Coder
Model S is the only "long-range battery electric luxury car" out there. In that, there is no competition. All the hybrids still retain their internal combustion engines, and with them all the added weight and complexity and breakage and exhaust and dirt and oil. So you cannot compare hybrids with battery electric vehicles, as they are completely different thing. Hybrids, even plugin hybrids, are not "long-range battery electric cars". All other battery electric cars are not long-range, and are not big/luxury cars.
If you are comparing "luxury cars", then you need to add BMW, Mercedes, Audi, Jaguar into equation, and compare it on things like performance, interior, feeling, ride, design etc. I doubt Cadillac would fare well in this comparison.
I wish Tesla cars got to Europe sooner...
--Coder
It's the way of higher management. If it succeeds- it happened due to my leadership. If it fails- it failed due to incompetent workers, incompetent committees, incompetent scapegoats, sub-optimal company structure, etc. Incompetence is easier to forgive than greed-driven risk-taking or things designed to fail after they have enriched you.
--Coder
They are called sea turtles. Or if not, then sharks, tunas & swordfish. Go breed more of these, or stop killing them off in such numbers and let their populations recover!
--Coder
Ok, I'm a Java developer, working on Linux. 99% of benchmarks you see on-line are benchmarks of some stuff on Windows, which is immediately skewed towards intel because lots of Windows DLLs are built with Intel compiler which disables optimizations and advanced features on non-intel CPUs, even if those features are supported.
Also, most benchmarks are some synthetic benchmarks (compiled with Intel compiler), or some 3D games, or some video transcoding. I do none of that, and what I do I do not do it on Windows. I am yet to see a site that benchmarks Java compilers, Java IDEs, databases, application or Java web servers, etc. on Intel vs AMD vs ARM platforms on Linux. The only site that comes close is Phoronix. And if you look at their Linux benchmarks, difference between AMD and Intel CPUs is much less than on Anandtech or Toms Hardware. Intel is still making faster CPUs, but not that much faster.
--Coder
All these ARM SOCs are nice but they all have weird closed up GPUs that have crap close sourced drivers that barely work.
There are projects to reverse engineer Adreno (Qualcomm) and Mali (ARM) GPUs and implement drivers for them, but these projects are nowhere near production ready. And as far as I know Qualcomm has other issues with openness- they are denying release of hackable Android for their devices because it contains some secret proprietary BLOBs, without which it won't work.
So when it comes to Linux hardware support on ARM, it feels like 90s all over again... I'd rather buy a small x86, it will be larger, more expensive, it will consume much more power, but at least open-source hardware support is going to be nice and I won't need any BLOBs.
--Coder
I don't use Chrome much, but is there a master password that you can set?
If there is no master password, then no matter how the data is stored, it's as safe as plain text anyway. Even with master password, dictionary attacks will get you quite often.
And you can transfer/import/export the data encrypted with master password between different installations without decrypting it.
--Coder
There is this thing called steganography, i.e. hiding stuff in plain sight. Using it you can exchange "legal" messages that have a hidden subchannel. Of course you need more bandwitdth. But given today's internet speeds, even using high strength steganography you would get enough bandwidth for things like email or chat, maybe even voice. Probay not enough for video.
So a dedicated person can find ways to exchange hidden data securely, even when internet is quite closely monitored. However, general public often lacks motivation or the skills to do so. And there are very few convenient tools available. I think we can improve this, we need CONVENTIENT and EASY TO USE secure distributed storage and communications tools.
--Coder
I wonder about the legality of FBI's action here. Ok, I guess they have some kind of search order/wiretap order for "investigating pedophiles" against one specific site, but what about collateral damage? I mean they shut down an email service used by normal people as well. They did track and spy on activities on normal law abiding citizens. Did they effectively break into a big number of law abiding citizen's machines against whom no search or writetap orders were issued?
Or can FBI hack anyone at will without any legal oversight? I don't remember getting the memo where such behaviour from a government agency is legal.
Well I guess we can stop pretending we live in a law-abiding democratic world. It's an oligarchy run by the banks, the rich, lobyists and professional politicans, and scew everyone else...
--Coder
Right, so Lenovo does have (unproven) backdoors. But Clevo, Foxconn, Quanta, Winstron, Pegatron who produce 90% of laptops in the world (including Dell, HP, Apple) somehow cannot have Chinese backdoors, even though their HQs are in Taiwan, and most factories probably in China?
Besides, what about spying by USA? I believe USA products, including Microsoft Windows have backdoors. _NSAKEY was found in 1999: http://en.wikipedia.org/wiki/NSA_key
Given the climate today, I'd be as fearful of spying by USA government as China. Given the list of countries however, well, they are the closest buddies with USA and already share intelligence data. And spying on own citizens never mattered to any of them.
--Coder
This and exactly this. I have worked on quite a few systems in my life, and not once I have though "only if this system was more complex". Most of the time what I found was duplication, unnecessary abstraction layers, no separation of concerns, too much unnecessary flexibility, very roundabout and complex solutions to very simple problems. Usually I am able to refactor it into something that is ~5x smaller, and easier to understand, and faster, and easier to change.
I hate it when people add flexibility and features in advance, and it ends up never used. And while Agile approaches seem a bit cowboyish sometimes, I agree with them on one point- implement the simple stupid solution first, make it more complex only when necessary.
--Coder
Wow, coincidences. :)
:)
I have worked for a place that used Apache Jackrabbit as a database. It was mostly done to work around a DBA who was an ass, because Jackrabbit didn't count as a real database and could be managed by the dev team. I spent 1 year in there porting that system to Microsoft SQL. Not my choice of database, I pushed for Postgres. But even MSSQL worked much better than Jackrabbit. That refactoring effort was very successful, but I got headhunted soon afterwards for a much better salary, and even crappier system to work on
Anyway, best of luck
--Coder
Having entry level developers deliver features without destroying the entire system is a good thing, not a bad thing. You cannot always hire the best of the best, and you sometimes have to make things work with mediocre devs. While they would completely ruin everything in C/C++, with good team leadership and resasonable architecture they can get non-critical bits developed in Java/C#. This is speaking from experience- I had previously hired bright but inexperienced students, and they were quite successful in getting things done with Java.
And outsourcing is not always the issue. I'm looking right now at what is probably the worst system I've ever seen in my career, in London, that was entirely developed in house with higly paid developers (this is a financial institution). There are plenty of incompetent well paid developers, and even having a reasonably OK team won't save you if management is incompetent.
--Coder
... management is, at least most of the time.
Let me say that it is easy to create GREAT systems in Java (and I assume in C#/.NET). However, in enterprise world, that seldom happens. That is not because of languages, but because of several management related issues:
1. Technical excelence is rarely seen as a goal, implementing features is.
2. Technical fixes do not drive development, satisfying business requirements does.
3. Things are rarely if ever refactored, consolidated or tidied up, as business does not see the benefit of doing that. And they do see the risk of regressions and breakage caused by refactoring.
4. There are few really good architects & developers, and because of lack of refactoring and technically driven changes, any problems in design or mistakes in code will stay there forever.
5. Management sometimes makes insane technical decisions, because of stupidity or corruption, or because they read an article that X is great and now everyone must use X, or whatever. Technical decisions must be made by technical people, otherwise bad things happen.
6. When system becomes unmaintainable and unusable, it gets rewritten, causing all "Version 2" problems. Everything and the kitchen sink gets included into Version 2, and it ends up worse than Version 1.
7. Hardware costs less than developer time, so throwing hardware at the performance problems is often easier and cheaper.
--Coder
I'm sorry. C# being ahead in desktop might hold true if you run your clients on Windows. If you want cross-platform apps, (and I plain refuse to work on systems that won't run on Linux), then C# is completely useless.
--Coder