
Unapologetically build your startup technology in C# - sirchristian
http://www.sirchristian.net/blog/2014/06/21/unapologetically-build-your-startup-technology-in-c-net/
======
skrebbel
I strongly agree with the author's conclusion, but I strongly _disagree_ with
many of his points. Notably, with his recommendation to consciously go all the
way with the Microsoft vendor lock in.

Our startup's backend is made in C#, and we're very happy with the choice. We
use Postgres, we host it on Docker containers on Linux, and our devs are
equally spread over Windows, OSX and Linux. MonoDevelop is a remarkably great
IDE for something with so few users, for example, and great open source like
Dapper and ServiceStack.OrmLite make it super easy for us to interface with
Postgres and use all of Postgres's unique features (Json as a first class data
type, multiple-cursor result sets, stuff like that).

The author seems to propose "get all the free Microsoft goodies when you
start, and once you really need the paid versions you're probably successful
enough that the cost doesn't matter much". It is Microsoft's strategy that
companies do this, and it's a valid one, but it's really not what I would do.
Microsoft might've become a whole lot more open these days, but tying yourself
in so much with a single provider sounds, well, dangerous no matter what.

For example, if you develop your C# app for Azure, moving to a different
provider is a lot of work (much like if you want to move your Rails app away
from Heroku, but with less open source out there to ease the road). If you
develop your C# app to work platform-independent (or at least cloud-provider-
independent) from the outset, then you're free to move whenever you want.

~~~
sirchristian
I agree "get all the free Microsoft goodies when you start, and once you
really need the paid versions you're probably successful enough that the cost
doesn't matter much" is one fair conclusion to the article. However I don't
believe that's the only conclusion. Mostly I want .NET to be a consideration
as an option when building out the technology in a startup.

I'm concerned about vender lock-in as well, just less concerned then I used to
be. Microsoft's gone to great lengths to reduce some of my concerns. The fact
that you are using C# with Postgres demonstrates that there doesn't need to be
complete lock-in.

Do you mind sharing more about what your C#/Postgres app looks like? This
combination is one option I'll be looking at for my next venture.

~~~
jtseng
We've recently started down this C#/Postgres route. One of the main decisions
to use C# was static typing, so I wanted to keep this with the data access
layer as well. I've decided to use dotConnect for PostgreSQL so I can use EF.
I figure I can use dapper or another micro ORM after I get into performance
issues.

Our biggest problem with Postgres is actually the lack of a good GUI. I'm
using 0xDBE for the amazing auto complete and PgAdmin for everything else.

~~~
pbz
LINQ to DB (not LINQ2SQL; it's an OSS library) is also a good option to talk
to Postgres while keeping type safety and performance.

------
ryanmim
There are two people talking in my head while I read this post. One says :

Too many people obsess about backends. Yes, build your startup in C# and a
.NET stack if that's what your familiar with. The backend ultimately doesn't
matter, and the faster you can create and then iterate on your product, the
better off you'll be. The primary factor that will decide whether your startup
is successful or not is if people like your product and actually use it. None
of your users will know or care what you built it in, be it .NET, RoR, Django,
Yii, whatever.

The other person in my head is saying. "OH MY GOD NO". I've used the .NET
stack and various OSS stacks to build complicated web applications. From this
experience, I've concluded that the .NET stack sucks. Yes it works, but almost
any OSS Framework will provide a much better developer experience. Better
while developing the initial product, and better when maintaining and
extending it.

~~~
CmonDev
"but almost any OSS Framework" \- are there real choices that do not involve
the dynamic typing maintenance nightmare while giving you a C#-quality
language? Maybe just Scala + Play.

~~~
dkuntz2
You can also do Java + Play. And Go's out there now, and it comes with most of
the stuff you get from Play out of the box (and for the other stuff, getting
it is easy enough).

~~~
frowaway001
> And Go's out there now, and it comes with most of the stuff you get from
> Play out of the box (and for the other stuff, getting it is easy enough).

Any link? That seems to be pretty much wrong.

~~~
dkuntz2
Which part? The coming with most of what you get from Play? Look at Go's
template/html and net/http.

If you don't like those, pango2 aims to provide django-esque templates for go;
things like martini, gin-gonic, and negroki provide nicer routers; and Gorilla
aims to provide a good deal of web-server-y things.

------
steviee
Is your post about C# or the .NET stack? I can (somewhat) relate to using C#
over some other languages. However what I cannot relate to is being trapped
with the .NET stack.

And a trap it is. You need expensive Windows Servers to host your stuff and
Windows just disqualifies itself as a server platform (my subjective opinion).
Having to use a powerful latest-tech machine and very recent OS version
(2012?) with loads of patches, newest .NET framework just to host a super
simple REST service with the almighty IIS is OVERKILL in every sense of the
word.

Some people even use this approach when all they do is run an AngularJS
powered, single-page javascript web application.

And my bullshit-meter just spikes when I see this kind of ____(use your
imagination).

I agree that Visual Studio is a good choice for Windows software development
and that SQL Server is (maybe) a good choice, when you use VS.NET (or .NET at
all). But that's just a dependency when you opt for the Microsoft world. Stay
clear of it and save yourself some hair.

Just my 2 cents! ;)

Best regards and good look with all that you do, Steviee

~~~
darylteo
> You need expensive Windows Servers to host your stuff and Windows just
> disqualifies itself as a server platform (my subjective opinion). Having to
> use a powerful latest-tech machine and very recent OS version (2012?) with
> loads of patches, newest .NET framework just to host a super simple REST
> service with the almighty IIS is OVERKILL in every sense of the word.

This is true, I definitely agree.

I am , however, excited to know that they are taking steps to change this. ASP
VNext is the next generation of asp.net applications: standalone, framework
bundled, cross platform.

[http://www.asp.net/vnext](http://www.asp.net/vnext)

~~~
NicoJuicy
> newest .NET framework just to host a super simple REST service with the
> almighty IIS is OVERKILL in every sense of the word.

Then you are happy to read about Owin :-)

using (WebApplication.Start<Startup>(url)) { Console.WriteLine("Server running
on {0}", url); Console.ReadLine(); }

~~~
steviee
We'll see. Hopefully it is not as half-hearted as the other technologies
Microsoft tries to establish and then forgets about. They will need to put a
lot of effort into it to have something even remotely equal to Node (or other
micro servers). And when they deliver, the Node hype could be gone already! ;)

------
daigoba66
So here is my take:

I'm currently working on a SaaS product built on .NET running on Windows
Server, IIS, and SQL Server. We're not really a "startup" anymore, but we're
still very small. I wasn't here when the first version of the product was
built so I wasn't part of that decision.

If I were building this product from scratch today as a money-poor startup, I
would probably go with tech stack included Java or Python and PostgreSQL. The
primary motivation being cost (as in money).

Each developer is technically required to have an MSDN/VS Pro license (renews
for just under $1000 per year). This is not very expensive if you're
generating revenue, but if bootstrapping it is not cheap. You could cheat and
just share a single license; you definitely won't get caught.

Windows Server licenses, compared to other datacenter costs, are relatively
inexpensive. Windows Server has a few advantages; particularly in it's easy to
administer and there are plenty of sysadmins out there than know it well.

The elephant in the room, at least for a SaaS product, is SQL Server. The
features of Enterprise Edition are so compelling for SaaS (HADR, unlimited
RAM, online index operations, compression, and encryption) that it's
practically a requirement. But this will quickly become one of the most
expensive costs in your datacenter.

But in my experience, SQL Server has some real advantages that I haven't yet
discovered for PostgreSQL. The "community" around SQL Server is huge and has a
ton of great people who love to help (often for free!). For instance check out
[http://brentozar.com](http://brentozar.com) or
[http://sqlblog.com/blogs/adam_machanic/](http://sqlblog.com/blogs/adam_machanic/).

There are programs like Bizspark which can bring the initial software license
investment down to nearly $0. But if you're not generating significant revenue
after three years, the licensing costs could hurt.

So like everything in world, it depends. But the bottom line is that, in my
opinion, if you're bootstrapping then costs matter and Microsoft products (SQL
Server in particular) are a huge cost which have real viable alternatives.

~~~
omnibrain
If you have outgrown Bizspark but are still relatively small the Microsoft
Action Pack Subscription may be suitable for you.

~~~
narrowrail
Right. Eventually your business grows, you're doing $3M in revenue, and have 8
employees with a total burden of $1.5M. How much will it cost to run with per
core fees for various components? Was the ease of use and maintability worth
it (at this point, one can start to calculate but it gets murky)? Will it add
or subtract from the infratstructure costs? I don't know, but I'm not going to
go down a proprietary path to find out.

EDIT: Of course, it always depends on where you are coming from. If you are in
a large corp. with MS tech already entrenched or come from that environment,
it makes sense (as it seems many are that are weighing in). Or, if you are
building to flip, and are most productive in this ecosystem.

------
royjacobs
I work at a company where we have built one of our products (a large
distributed system that tracks television content worldwide) completely on
.NET. I love C#, it's a very decent blend between a whole lot of languages and
additions of LINQ and async/await kept it relevant. Visual Studio is the best
IDE I've worked with, not because it's such a good editor but because it has a
sane debugger that is actually helpful.

I still wouldn't run my startup on .NET though, for a number of reasons. Mono
simply isn't there yet. Code that works fine on Windows mysteriously stops
working on Mono due to threading or GC vagaries (yes, even in the latest
version). This isn't a dealbreaker, but it is pretty annoying especially since
debugging these kinds of problems are of precisely the kind that I don't want
to debug.

The ecosystem is really quite poor compared to, say, JVM or Node. For all the
faults of either, there is a LOT of stuff going on and there is a LOT of
innovation that is sorely lacking from the .NET world. .NET usually catches up
eventually but it's either late or half-hearted (just look at the progress of
NHibernate vs. Hibernate).

I think ASP.NET vNext is a step in a very good direction and I hope to be able
to change my opinion sometime next year.

~~~
darylteo
> NHibernate vs. Hibernate

As a counter argument to that (specifically), we don't really need NHibernate
when we have Entity Framework.

~~~
steviee
As a counter-counter point: You absolutely need NHibernate (or something else)
when you use EF.

Steviee

~~~
beauzero
The proof is in Orchard CMS.

------
alkonaut
It's important to remember that C# does not imply .NET

Xamarin has done some great stuff lately, for example you can use C# to make a
native 3-platform mobile app. This is still proprietary tech, but it isn't
Microsoft and it isn't .NET

In my eyes the best thing about the .NET ecosystem is the tools, if you like
me fancy a polished IDE like IDEA, then VS is definitely one of the best ones
around. In my eyes tools are more important than platforms, languages and
licenses. The productivity hit of poor tools is much more expensive than
anything else.

Also, if you are looking at C#, don't forget to consider F#.

Compare a minimalist service built on Node/AWS with one built on F#/Azure and
it's not too different in cost but a much nicer language and better tools.

~~~
mreiland
C# does imply .net, just as it implies windows.

Yes, other solutions exist, no those solutions aren't hugely popular in the
grand scheme of things.

~~~
alkonaut
This has changed a lot, especially over the last couple of years, a lot due to
the F# project.

You should look at self-hosted NancyFx or ServiceStack with F# as a good
alternative to Node.js

The fact that the "other solutions" aren't popular is probably just because C#
is the go to language in windows/.NET shops that already have knowledge and
infrastructure. It's not that they are technically inferior.

------
resca79
IMHO the problem in not a programming language choice, but the entire
ecosystem that you should support if you will use microsoft. Today for ex.
linode and digital ocean have a very cheap entry price around 5$, with the
power of entire open source lib, and the power of the community of every open
source project.

------
blibble
there's nothing in that post that gives C# a measurable advantage over say,
Java.

Visual Studio Express? still way behind JetBrains IntelliJ (the community
edition is FOSS). Visual Studio is unusable without JetBrains Resharper, which
isn't cheap.

Azure? AWS

Bizspark? not required for Java dev as everything's free and OSS anyway.

Popularity? most popular .net libraries/tools (NUnit, NAnt, NHibernate) are
all clones of popular Java projects

Scalability? those Windows licenses will cost you a fortune once you're out of
bizspark

Vendor lock-in? well it's still there with MS, just you're not paying them for
three years (Bizspark)

~~~
dtech
In my experience C# is just a better language than Java (which isn't
suprising, as C# was made just to be a better Java clone). Things like

    
    
      * value types (instead of boxing)
      * no type erasure
      * runtime exceptions
      * dynamic/duck typing
      * operator overloading (try working with arbitrary length decimals in Java)
    

just solve a lot of the small headaches of everyday programming.

That said, I still prefer Java because of the ecosystem and newer JVM
languages like Clojure and Scala might just make Java irrelevant.

~~~
facorreia
I've worked with C# and .NET for years. I agree that C# is a great language. I
prefer working with the JVM and Linux ecosystems, though. On my latest project
I decided to use Scala for the backend. I have access to a wealth of great
libraries and services, and I actually prefer working with Scala than with C#.

------
Htsthbjig
I always wondered why computer languages and economy becomes religion and
dogma.

We use multiple languages and multiple OS in my company.

When you have a company you have your own interest and your customers interest
in mind.

Some times those interest are not the same of Microsoft, Apple, Google, IBM or
Oracle.

Just developing on a single proprietary language from a single company on a
single OS (and yes I know Mono and I don't have a good opinion on it) is a
huge red flag for me.

We use whatever is necessary for solving our customers problems. Some times it
means using C#, most most of the times we use better alternatives.

~~~
steviee
I agree. My experience (and please tell me when I'm wrong) is that Windows
developers for the most part stick to their choice of framework while multi-OS
(Windows included) developers are more open to the wonders of the world.

So statistically the .NET guys may be more narrow-minded regarding development
stacks.

Steviee

~~~
darylteo
> So statistically the .NET guys may be more narrow-minded regarding
> development stacks.

While true, .net developers don't need to venture out very far, I don't
believe its solely because of narrow-mindedness (sure you'll find these
developers everywhere, I can argue that node developers are narrow minded with
node + express + mongo for example... hell people still write PHP =) ).

With .NET the reality is that there is no reason to consider anything else
within the stack. Everything is standard, and most companies have them as part
of MSDN. Majority of established .net enterprise environments use SQL Server
with either ASP.NET webforms or MVC.net running on IIS + Win Server. What open
source considers "vendor lock-in" is considered "standardised technology" in
enterprise environments. When considering client work the first question is:
"right what do you need to do?" and not "right, what stack are you using".

With Java, one client I have to learn Struts, another client I have to learn
Play, then another client I have to learn JEE. I know Gradle in and out, but
another contract requires me to know Maven, while another contract requires me
to know Ant. Standalone server? Or Tomcat / Apache / WebSphere?

With Node, everyone has their own templating language (Jade or Handlebars or
other). Some use CoffeeScript over plain Javascript. Some use SASS/LESS/ or
just plain CSS. Some forward proxy using Haproxy, others NginX.

The point is: while the .net stack is pretty narrow, we know it works in the
majority of use cases. And that's usually enough.

------
nikon
Man, 6 months ago I would have agreed with you. Hell I even have a year old
BizSpark membership.

I just couldn't get over the thought in the back of my head that I'm making
the wrong decision investing in Microsoft's development platform. C# is
literally my favorite language, but I felt trapped and missed open source...
Both the freedom it brings and the community. Maybe I spend too much time on
HN.

I even tried to go 'indie' .NET. I moved to RavenDB (fuck MSSQL and it's
overpricedness, and EF) and stuck with Azure, so really my only costs after my
3 years would be an MSDN license per developer. But in the end I just gave in
to my worries.

One weekend I just rewrote the damn thing in NodeJS and I'm pretty happy. No
need to boot up my Windows VM anymore either.

I think the talent pool is also what put me off. There seems to be - in London
at least - a lot of career developers who pick .NET.

------
zargath
running 30+ windows servers

Microsoft has become much better, but still not sexy. Don't ever think they
can fix everything for you, find out what they do well and what suxx and then
do workarounds. Still too much microsoft and too little webstandards.

They upgrade more and fix more bugs, but this also break more stuff. Asp.MVC
upgrades can be a pain..

.Net Core, C#, Linq, etc.. all very cool. Can make some stuff that performs
very well, but can be very tricky to scale.

Asp.net i still too slow and too heavy.. taking >1min to start a asp.mvc site?
It feels like some old grandpa compared to Node.js, Go and even PHP.

Powershell is still behind

Window Server administration can be very slow, .. how can it take 30seconds to
draw an Event log ? Really miss ssh or even telnet.

Windows Services and schedules can be a pain. How can "access denied let the
service run forever without notification??"

The license system is crap, they make their costumers feel stupid when they
cant figure out how to renew they Action Pack's, etc..

And their crappy sales ppl, trying to push Sharepoint because they hear the
word software and web.

So I really regret working with microsoft, althought I like some of .Net and
C#, but what does one do for a good project and a salery.

Next project will not be .net for sure..

~~~
CmonDev
>> "Node.js"

If you need an HTTP Reactor pattern implementation in .NET, there is one
coming soon. Patterns are not hot or old, they are just different for
different needs.

------
brandonhsiao
the article seems to be saying C# is cheap and fast because it has a really
good set of libraries. i have no problem believing this. the question in a
startup is, is it more important to have good libraries or a powerful
language? e.g. lisp is the most powerful language, but its library ecosystem
isn't reliable enough. whereas java is a weak language but has great
libraries. (that's why clojure's awesome!)

i'm not trying to start any kind of religious war here, but this is personally
why i (and i suspect many others) code their web apps in python. it's a
reasonably powerful language with an excellent set of libraries to go with it.

------
marvin
I did my Masters thesis in Computer Science in C# (data visualization). No
apologies. A couple of people around the Institute have looked at me funny,
but it's turned out to be a very good choice.

------
DonnyV
I'm currently working on my own startup. But didn't go the full Microsoft
stack route.

I use C# and Visual Studio for development. I think right now nothing beats VS
for pure production output. I do all development on a Windows box.

All frameworks work on Windows and Linux.

    
    
      Nancyfx - web framework   
      Cassette - asset optimization   
      Mongodb - database
    
      Production server uses Ubuntu + Mono + Nginx.  
      $20 VM on Digital Ocean.
    

Provides a nice balance of best of bread tooling and cheap production costs.

------
dexterchief
By all means, unapologetically build your startup with C#/.NET.

Every Linux/OSS based startup you will be competing with agrees with this
recommendation.

------
onion2k
When you're choosing a tech stack in a startup there's a _very_ important
factor to consider that this article neglects to mention. It's likely, if you
have any measure of success or you go down the investment route, that you'll
be expanding your technical team quite early. The availability and cost of
developers is critical at the beginning. Building in languages like PHP, JS,
Java, and to a lesser extend Perl and Python, means you have access to lots of
cheap devs. Especially in the case of PHP and JS. Those languages will scale
reasonably well to the tens of thousands of users, by which time you'll
probably be raising a Series A and you'll be able to afford to shift the
important bits of the code to a more appropriate language.

While it might be 'right' to build in C# or Erlang or Haskell or Brainfuck or
whatever, if you have to pay a premium to get your first engineer you'll be
shortening your runway, and that's pretty much the worst thing you can do.
It's _much_ better to build in the 'wrong' stack to start with and give your
startup time to get traction. At the end of the day, no one using your product
gives a damn what it was built in.

~~~
anko
man, I agree with your recommendation, but strongly disagree with your
reasoning.

Cheap devs don't pay off. Seriously, I have hired a lot of developers and one
good dev (at twice the rate of a cheap one) can easily do 10 times the work,
while minimizing technical debt.

If you're doing a prototype with the full intention of throwing it away,
that's one thing but please don't go cheap. Get less devs and pay them more.

As for languages, a startup wants to be cheap. Most of them are doing web
stuff. Unless you have a specific need, go ruby or python. People who are
interested in either generally are passing on php / javascript for a reason
i.e. they're not good languages. Maybe pick go if you want to do systems stuff
or performance is critical.

The reasons NOT to pick C# are 1) cost 2) lockin 3) flexibility

~~~
onion2k
In my experience, in the case of people wanting to work in a startup, cheap
usually means 'lots of competition for the job' rather than 'is bad at code'.

------
dnesteruk
Another equally potent idea is to build products which integrate with
Microsoft's own, popular products. For example, the popularity of Excel caused
me to build this: [http://activemesa.com/x2c](http://activemesa.com/x2c)

------
wdr1
I had a hard time getting past:

> In reality Microsoft doesn’t want your money until you can afford to give it
> to them.

Building your business on that premise seems very dubious at best.

------
perltricks
I use C# for work and it is a nice language to work with. However mono runs
dog-slow compared to C# and is practically unusable. So you are locked in.

~~~
knocte
> However mono runs dog-slow compared to C# and is practically unusable

Did you file a bug about this? What version of Mono were you using?

------
billpg
I'm getting a 404 error. Is there a cached copy out there?

EDIT: The blog's front page has a full copy of the article at the top. (As I
write this at least.)

~~~
dtech
But it still being DoS'ed by HN traffic. Google cache:
[http://webcache.googleusercontent.com/search?q=cache:http://...](http://webcache.googleusercontent.com/search?q=cache:http://www.sirchristian.net/blog/2014/06/21/unapologetically-
build-your-startup-technology-in-c-net/)

------
raphinou
Not saying it is the case here, but blogs praising ms tech always raise some
flags with me, as with [http://www.pcworld.com/article/2365060/microsoft-
caught-astr...](http://www.pcworld.com/article/2365060/microsoft-caught-
astroturfing-bloggers-again-to-promote-internet-explorer.html)

------
DanielBMarkham
The throwaway comment is this: who cares about backends? Go make something
people want. Every second you spend chatting tech is wasting your time. Make
something people want _even if you have to do it with a pencil and paper_.
Worry about the tech when you've figured out step one. 99% of startups don't
do this.

So for all of the armchair startup warriors out there, the guys eager to hear
if Facebook is really running MongoDB or what their sharding plan looks like,
let's look at the tech.

I'm a MS hound from way back. I made a bet -- a very good one -- back in the
90s that MS was going to own the PC market. And it did. And life was good.
Microsoft sold tools and apps, I came in and programmed using those tools and
apps. Many times I came in after the local yokels had already screwed things
up. This meant a higher bill rate. Life was nice.

But I started noticing something: there was a certain arrogant-jerk-inbred-
echo-chamber feeling to the MS community. MS pimped tools to the developers.
Developers ate it up. MS pimped new servers to their MVPs. The MVPs sold them
to corporations, consultants came in and collected. It was all fine and dandy,
but over time there just got to be more and more tools and apps, and more and
more servers and experts. Any small reasonable thing you'd like to do, like
set up an email server, involved books, certifications, special servers,
learning the acquisition history of all these small companies, and so on. It
was ludicrous that any one person could be an expert enough to maintain the
small set of tools that most folks would need. Microsoft was adding complexity
-- unneeded complexity -- into everything it touched.

More troubling, once I started learning more about startups, I saw developers
obsess over new Microsoft tools or third-party components instead of making
things people wanted. Microsoft's interests was in creating and maintaining
this ecosystem of selling servers and tools, not in helping people make things
other people want. So I'd see these projects that were supposed to be solving
a simple problem. They'd use all kinds of fat, bloated, feature-laden _junk_
strung together in a huge pile of tech. Then somebody would start down the
"happy path" of making a "hello world " app work. Very soon, however,
developers ventured off the happy path, and then they had to learn javascript,
html, SMTP, SQL, and so on.

So development consisted of salivating over new stuff, eagerly installing it,
and then wandering around in the weeds trying to hook all the pieces together.
And oh, by the way, the user was supposed to like it. But, let's face it,
screw the user. We're here for the tech, right?

I still love the CLR and several other things Microsoft has created. But I'm
not part of the ecosystem any more, and I won't spend any time at all learning
whatever new version of Silverlight they'll have out next year. I'll also
stick to my command line and bash, thank you very much. I've been burned too
many times, and I've seen too many development teams destroy their
productivity by getting lost in the Microsoft ecosystem.

------
againBlahbl4h
Its weird that the HN crowd just seems to assume that the advice to use linux
and mono just has to be a better idea than using windows.

If you haven't looked at windows since 2003 you really need to take a look at
server 2012 R2. The default installation mode is server core. It requires
dramatically fewer patches. Management with PowerShell is incredibly powerful.
IIS has seen many, many improvements.

Also, "developing your app for azure" is a weird statement. If you develop for
Azure Websites you are literally just writing an asp.net web app or api. it
runs in IIS in a VM. It just has some management wrapped around it so that you
don't have to take care of the VM(s). It has autscale, monitoring, and all the
stuff you would expect from a cloud provider. Writing your app to use SQL
Azure, or Azure storage, or something like that is just like using the
comparable services from Amazon. It's like anything else...you should
implement its usage as an interface so you can swap it out if need be.

Some people on HN have accused me of working for MS just because I use their
stuff. I'm not, nor have I ever been, a MS employee. I'll admit that I started
looking into windows a couple of years ago because I was bored with Linux and
Unix. I've found that if you put the time in to understand how it works its
incredibly productive and thorough. If you try to make it work like unix it
will suck. If you learn PowerShell and stay away from the "clickety-clickety"
thing it's awesome.

From a development standpoint I actually like the total stack approach...but
that's me. If you need to use best of breed components you can still do that
with .Net. For me though, my interests shifted to C++ a while ago, so .Net
stuff for web api's get's the work done when I have to do it. I would like to
see more stuff like openstack in the .net world, but system center is fine.
The stuff that I do ends up being important enough for enterprises that
getting funds for that kind of thing is just part of the package.

That's another thing. I'm completely uninterested in startups. I've worked at
startups in various roles in the past and I'm just over it. Any startup that I
built would have to be something that I could run by myself that immediately
made money that I would keep. Investment funding is shit. It's a hassle that
is super crazy. Dealing with "business" types that aren't technical enough to
understand the challenges is also completely off the table. If you did choose
to work with a VC then it's much better to be making money and talking about
selling out totally instead of implanting them in your life. Shudder.

The one thing that I think Windows needs is a container style app deployment
model. The coolest thing going in large scale app building is CoreOS. Its the
future of how a large scale app will be built and deployed.

The new, and much loathed, metro applications are actually a good starting
place for building a container system. They use feature called "app
containers" that was first introduced in Vista. Add to that an app package
that installs and uninstalls as a unit, called APPX. They haven't made any
noise about using the new app model for servers, but it would be a great idea.
It uses an API monitor that stops calls to things like LoadLibrary or
GetProcAddress and all the other API's that let you bootstrap malware. Anyway,
like I said, they haven't made any noise about it...it would be cool though.

~~~
pjmlp
I was also enamored with UNIX and later on GNU/Linux as a cheapest way to get
UNIX at home. After already some years experience with *-DOS, Netware, Windows
and Amiga systems.

But from the point of view of technology stack, innovation seems to be
standing still on the UNIX side of things.

Microsoft seems to innovate more in terms of how modern OS stack should look
like, in terms of full stack, whereas UNIX clones hardly offer more than
"portable" POSIX cli and daemon model APIs.

~~~
againBlahbl4h
I agree completely. I would add however that CoreOS or NetBSD rump kernels are
really very innovative.

~~~
pjmlp
I agree somewhat, as I meant the whole stack.

------
dkyc
Interesting how the post completely ignores the _quality of the language_.
Most people I know don't use C# for the same reason they don't use Java:
Because it's often feels bloated, over-engineered and too verbose for building
stuff fast. It has nothing to do with Microsoft, Azure or scaling, they just
prefer whatever dynamic language they're comfortable with.

~~~
leorocky
I've only ever heard good things about C#. I believe C# has first class
anonymous functions, makes async operations easy, and a combination of
VisualStudio and JetBrains resharper you have a pretty amazing development
environment. I haven't programmed much with C#, but like I said I've only
heard good things.

~~~
JackMorgan
C# is a fine option if your choices are C# or Java. On the other hand, F# is
safer and 3 times more concise language that can do everything C# can It
interops perfectly with any C#/VB.NET libraries. I'd think long and hard when
writing any new C# code, and defend why you need to reduce your possible
solutions to only those C# supports, when you could have the ability to do
everything C# does and more with F#.

~~~
_random_
For me personally, conciseness of F#, it's tendency to use short words, cram
things together and overload operators actually make it less readable. I like
many of the features F# has and am happy to see how they are slowly migrating
to C#.

