At Tachyus (http://tachyus.com) we have made a huge bet on F#, and it has paid off in spades. The back end of our SaaS product is 99%+ F#, and so far we have had a great experience using Azure for hosting. Our iOS apps are also built using 99%+ F# (using Xamarin, on Mono rather than .Net). The language allows us to write highly expressive code, and fewer lines of code overall.
Using a Microsoft language has given us huge productivity benefits (most notably Visual Studio and Azure support). There is a fantastic F# community (http://fsharp.org) which is untethered to Microsoft, and it's exciting to see the language grow as an open-source and cross-platform tool.
How does this compare to OCaml or Haskell? Most of the "benefits" you've mentioned here aren't actually benefits, but par the course for a programming language no matter what stack you choose.
Visual Studio seems to be the only real benefit I'm seeing (and I agree, it's a very major benefit).
Might be worth checking out bizspark [2], as I know it lists lots of startups that are using a .net stack.
Also probably worth mentioning what you're compiling the list for if you want more responses from HN users...
More info: We actually don't host on Azure (Web Sites not flexible enough for us), but use a mixture of AppHarbor [3] (awesome product and team), and various Amazon web services.
We (msgooroo.com) use the .Net stack on Azure and have found it to be quite good. We have even been experimenting with the new vNext / OWIN stack which appears even better and will give us the flexibility to run on Linux.
Azure is a bit hit and miss. Its brilliant for getting something up an running quickly (using websites / SQL Server), but is a little flaky at scale.
Key problems include connection issues with SQL Server, connection issues with their hosted Redis service, pricing of SQL Server when using advanced features like geo-replication.
All in all though, its a pretty good development experience once you get your head around the fact that in the cloud services fail and there is nothing you can do about it except plan for it.
Oh and the Bizspark program they have gives you $100 worth of free hosting on Azure which is always nice.
> Key problems include connection issues with SQL Server,
What sort? If it's intermediate connection problems .NET 4.5.1 added Connection Resiliency to ADO.NET [1]. If you're using a recent enough version of Entity Framework it goes even further [2].
We're a start up using using .NET/C# MVC4 SQL Server etc etc. (Sorry can't give names Just call us "Medical Software").
There are a lot more .NET start-ups than one is lead to believe, but you don't hear so much about them because they're too busy making money to give interviews to TechCrunch ;) Seriously though, they tend to be from developers branching out of existing enterprises & "non-cool" fields and have existing customers or bootstrap funding.
With Azure, AWS, Bizspark & MAPSDD cost implications of being on the .NET stack are negligible comparing to the long term savings in maintainability.
At Lelala (https://www.lelala.de), the MS stack with the typical layers is used:
- IIS + ASP MVC
- MSSQL (via ORM layer)
- bunch of .NET/C# tools & stuff to support the main system
Since it was asked what happens if the BizSpark period is over, let me state on detail about the model:
In BizSpark, its true that you go vendor lock in as long as you are building strict dependency on their platform, lets say if you use EF for accessing SQL, you may have a problem in the long run.
But:
Even if you've left BizSpark, a MS Server License is to be paid once? (not per year, not every two years etc.)
I do not understand where the myth comes from that one has to pay every year or continuously to use MS licenses?
The math is simple:
A W2K12 Standard server license costs around 850 USD (~ 700 EUR) - once - even if Opensource would is cheaper in term of license costs, a software running 24/7 for a one-time payment of 700 EUR isn't that expensive.
Now, it comes down to scale up or scale out:
- in the one scenario, because of no costs you can scale massivley out, going from one machine to n machines
- but if you ever tried to administrate your machine park lonely(!!) if it counts 5+ machines (while you have to develop/maintain & run the app itself, too!), some may consider to hire a network admin (which is a fixed salary per year which usually outweighs the costs of your MS Server license)
The reason why C# is used, is simple (and was stated above):
- C# and .NET are very convenient and mature environments to write apps in
- C# is considered by me as a beautiful language, i really like it (coming from x years of "C-styled-syntax-languages" could make me somehwat biased ;-)
Instead of the licensing costs of MS products, i see much more important difficulties in the mid- to long-run future if someone built on it:
MS maybe not survive the upcoming decade because of huge market shifts; then, in 10 years, it may be a problem if you will not get any support because the company maybe no more existing.
God thanks, the next version of ASP MVC has a VM for *nix-derivatives, so you could solve this issue by running your app on a Linux-box.
(And if you then have built your app additionally on a top of an ORM, you won't have any issues)
> Even if you've left BizSpark, a MS Server License is to be paid once?
Microsoft has a 3-year release cycle for their products. You'll end up paying every three years. For every single product. Microsoft's biggest cash cows are it's OS and Office products and always have been.
> A W2K12 Standard server license costs around 850 USD (~ 700 EUR)
Assuming you have just one server. At the least you will need a production server and a development server. And at least one for every developer. That's one OS license, one SQL Server license and one Visual Studio license per developer. Personally, I love work with a lot of virtual machines off Vagrant for development, testing and deployment. I am not sure how that works with MS licences.
> if it counts 5+ machines [...] some may consider to hire a network admin
It's fairly easy to manage ~100 machines using Ansible, Docker, Chef, etc. But in the Microsoft stack you probably want to keep the number of machines much lower.
> scale up or scale out
Scaling up is the right approach on Windows platforms but here is the issue I have with it. You cannot add RAM on the fly, as and when you need it. Nor can you add more processor cores on the fly. With horizontal scale, it's a no brainer but with vertical scale you cannot scale-up temporarily and then scale back down either. This is quite common and desirable for web applications.
I was on BizSpark and I was really grateful for the free trial. However, ultimately I shifted away and I am glad I did, even though C# is awesome and I absolutely love Visual Studio, I moved away for a number of compelling reasons.
I would add that (i) the pricing you can see on the details page http://azure.microsoft.com/en-us/pricing/details/virtual-mac... are already inclusive of Windows Server licensing, and (ii) depending on the nature of one's shop, it might make sense to get a MSDN subscription instead - and that's probably why people are talking about recurring costs to use the platform.
Would love to see responses from the same users when the bizspark period is over. Seems like an idiotic choice to go vendor lock-in, small community, IMO sheltered mentality, high license fees (after bizspark), and difficult to automate operating systems. I suppose if you don't need a lot of machines it's not a problem yet, but seems like a lot of short sighted decisions.
I run S3stat and Twiddla on the .net stack and my BizSpark term has passed. It was in no way a big deal.
Yeah, servers cost money to provision. But then servers always cost money to provision regardless of your stack. Even with license fees, the MS stack wins for me because my entire server farm fits on three boxes instead of the twelve I'd need to get the same firepower on a typical rails stack. The extra few thousand in full price server licenses is just noise because really, we're talking about a business here, not a hobby.
The bottom line is that if your business is going to fail because of a single $5,000 invoice, it's debatable whether it was ever a business to start with. The whole reason we all build SaaS businesses in the first place is the 95%+ profit margins. Fretting about what happens within that 5% that makes up the expense column seems a bit silly.
Even without BizSpark, I bet I'll build the next product on the same stack. The math just plain works out.
At Izooble (http://www.izooble.com - social product recommendation site), our entire backend is written in C#. We use ServiceStack (v3, which is still free) for our API, PostgreSQL for data.
We host it all on Mono and Docker on Linux VPSs. We wanted Docker because we wanted PaaS-like deployment but not vendor lock in.
Our team uses Linux, Windows and OSX to work on it. MonoDevelop is a pretty decent tool, on some areas actually better than VS.
We're really happy about the choice. C# is a great language, NuGet beats pip and gem by miles (none of that virtualenv bull). If Mono support is a requirement from the set-out, you don't run into many compat problems.
Perhaps a post on the company blog. It would make great reading here on HN. The community gets to hear about a C#+Postgres+Mono+Docker stack and maybe you'll get some new users for your app or bright people making job inquiries. At the very least, increase brand awareness.
Just don't forget; the company logo on the blog page should link to the app, not the blog.
I really like that stack primarily because it couples c# with an open stack. Could you share a bit more about the web server setup and how you came to choose this stack?
I'm using ASP MVC 5 with Knockout.js, hosted in Azure, for my startup (commuting.io, still in dev). I've come from a .net background, so it seemed like the easiest choice to get up and running.
Also using SQL Azure and Redis for data storage/caching - it's been mostly positive so far. The downside with Azure has been the portal/management experience. The current UI is somewhat sluggish and disorganized, and the new portal tile UI is extremely confusing to navigate.
Overall it's been a pretty pleasant experience (maybe minus dealing with web.config files).
the new portal tile UI is extremely confusing to navigate.
Seriously. I don't know what they were thinking. I don't mind the current portal. It does take seem sluggish with all the ajax/loading but at least I know where everything is. The new portal needs to be completely redone.
Octopus Deploy [1], which is automated deployment software primarily for deploying .NET applications is written in .NET. For those that have commented about using Azure in their start-ups, you can use Octopus Deploy for that also.
Planning to launch a SaaS product full .NET stack running on Azure, BizSpark gives you almost a year of free server time ($3700 worth, 9 months worth of their biggest single VM uptime).
It's hard to say no when they give you so much free stuff for a startup-style business.
It's actually pretty easy once you realize that you have to pay for the licences on all Microsoft technologies once BizSpark ends. It gives just enough time to be too locked in to easily adopt a different technology stack.
Honest question: what are the advantages of this choice? I have horrible memories from the time i used microsoft software. Iirc iis had horrible logging, windows administration is not easy to be scripted (is there an ssh server/client by default?), you can be left alone if ms changes course (as has happened in the past), etc
I personally feel much safer and efficient by avoiding ms, but curious to learn and hear counter arguments.
You seem to be coming from an admin/ops perspective.
From developer's perspective it's two modern mainstream languages - F#, C# - that can be used on Windows, Azure, Mac, iOS, Android, WP as a well-defined workflow.
The best IDE - Visual Studio + ReSharper + soon Roslyn. Second best ecosystem of libraries, that is picking up.
There are some missing bits that are coming: docker and containers, dynamic compilation (of static typed code) when building web sites.
It might not be the best choice in individual "disciplines", but it's the best overall.
We are using .Net MVC with C#/Typescript at Makemake.io (still in dev) on Azure. The biggest benefit for our project is Visual Studio and Resharper's Typescript support - it's really helpful for writing big Typescript apps (right now we have 400+ Typescript files in our SPA).
Bizspark is also great! $150 per month of free credit really helps - especially at the early stages.
The project I work on isn't a startup per se but it's not completely dissimilar. We use:
* ASP.NET for web with SQL Server + EF for the database and data access
* Xamarin for mobile and OData for data access (back to our ASP.NET sites)
The CLR is great because it's always been fast enough for our applications and every so often you get something for nothing. For example, CLR 4.5 brought better GC and RyuJIT is bringing better code generation. NET Native might give us even better performance.
LINQ is amazing if you know your IQueryables from your IEnumerables and the difference between an Expression<Func<T, bool>> and a Func<T, bool>.
Hosted in a private datacentre, not using Azure but we've got our eye on it (provisioning resources in the Azure Portal seems to get easier and easier than doing it ourselves).
New Relic for monitoring the web sites.
My biggest gripe (and it's not that big) is that within the Microsoft ecosystem/community everything works great but once you go outside it things are less well supported. Some less-popular-but-wow-that's-useful Javascript libraries don't come as NuGet packages. New Relic's .NET monitoring seems good but second fiddle to their other stuff.
After that I'd say Xamarin is letting the team down. Every second or so release of theirs fixes two bugs but adds another one.
Keeping an eye on Application Insights. It looks like it integrates nicely with Visual Studio Online, and VSO/TFS actually looks quite nice in parts (e.g. Bamboo for CI is largely geared towards Java apps not .NET but TFS' Release Management looks promising). I have my eye on VSO/TFS too but right now it looks like pros do not outweight the cons vs. our Atlassian applications.
If you've got enough processing power and memory and a fast SSD to run Visual Studio + ReSharper it's coding heaven.
Using a cluster of Owin (self-hosted) servers with NancyFx on Mono to host REST APIs behind nginx for a distributed-computing solution on AWS. Also use EntityFramework on Npgsql+postgres - experience has been positive.
Only downside is that for something like a customer-facing portal, the identity-management is tied to Windows-specific features, for now - so have had to build a custom solution for this that runs on Linux. Waiting for ASP .NET vNext and its Identity solution when it becomes slightly more mature.
EDIT: Also evaluating a move to Azure. Primary driver (for choosing the .net stack) has been prior experience with C#, .NET and Visual Studio
[+] [-] orlandpm|11 years ago|reply
Using a Microsoft language has given us huge productivity benefits (most notably Visual Studio and Azure support). There is a fantastic F# community (http://fsharp.org) which is untethered to Microsoft, and it's exciting to see the language grow as an open-source and cross-platform tool.
[+] [-] jchonphoenix|11 years ago|reply
Visual Studio seems to be the only real benefit I'm seeing (and I agree, it's a very major benefit).
[+] [-] nirajs|11 years ago|reply
[+] [-] dazbradbury|11 years ago|reply
Might be worth checking out bizspark [2], as I know it lists lots of startups that are using a .net stack.
Also probably worth mentioning what you're compiling the list for if you want more responses from HN users...
More info: We actually don't host on Azure (Web Sites not flexible enough for us), but use a mixture of AppHarbor [3] (awesome product and team), and various Amazon web services.
[1] - https://www.openrent.co.uk
[2]http://www.microsoft.com/bizspark/partners/startups.aspx
[3] - https://appharbor.com
[+] [-] vyrotek|11 years ago|reply
Would you care to share any specifics? I'm curious to know what you're trying to do that doesn't work on Azure.
[+] [-] siganakis|11 years ago|reply
Azure is a bit hit and miss. Its brilliant for getting something up an running quickly (using websites / SQL Server), but is a little flaky at scale.
Key problems include connection issues with SQL Server, connection issues with their hosted Redis service, pricing of SQL Server when using advanced features like geo-replication.
All in all though, its a pretty good development experience once you get your head around the fact that in the cloud services fail and there is nothing you can do about it except plan for it.
Oh and the Bizspark program they have gives you $100 worth of free hosting on Azure which is always nice.
[+] [-] taspeotis|11 years ago|reply
What sort? If it's intermediate connection problems .NET 4.5.1 added Connection Resiliency to ADO.NET [1]. If you're using a recent enough version of Entity Framework it goes even further [2].
[1] http://dpaoliello.wordpress.com/2014/03/30/connection-resili...
[2] http://thedatafarm.com/data-access/ef6-connection-resiliency...
[+] [-] doobiaus|11 years ago|reply
There are a lot more .NET start-ups than one is lead to believe, but you don't hear so much about them because they're too busy making money to give interviews to TechCrunch ;) Seriously though, they tend to be from developers branching out of existing enterprises & "non-cool" fields and have existing customers or bootstrap funding.
With Azure, AWS, Bizspark & MAPSDD cost implications of being on the .NET stack are negligible comparing to the long term savings in maintainability.
[+] [-] Lelala|11 years ago|reply
Since it was asked what happens if the BizSpark period is over, let me state on detail about the model: In BizSpark, its true that you go vendor lock in as long as you are building strict dependency on their platform, lets say if you use EF for accessing SQL, you may have a problem in the long run. But: Even if you've left BizSpark, a MS Server License is to be paid once? (not per year, not every two years etc.) I do not understand where the myth comes from that one has to pay every year or continuously to use MS licenses? The math is simple: A W2K12 Standard server license costs around 850 USD (~ 700 EUR) - once - even if Opensource would is cheaper in term of license costs, a software running 24/7 for a one-time payment of 700 EUR isn't that expensive.
Now, it comes down to scale up or scale out: - in the one scenario, because of no costs you can scale massivley out, going from one machine to n machines - but if you ever tried to administrate your machine park lonely(!!) if it counts 5+ machines (while you have to develop/maintain & run the app itself, too!), some may consider to hire a network admin (which is a fixed salary per year which usually outweighs the costs of your MS Server license)
The reason why C# is used, is simple (and was stated above): - C# and .NET are very convenient and mature environments to write apps in - C# is considered by me as a beautiful language, i really like it (coming from x years of "C-styled-syntax-languages" could make me somehwat biased ;-)
Instead of the licensing costs of MS products, i see much more important difficulties in the mid- to long-run future if someone built on it: MS maybe not survive the upcoming decade because of huge market shifts; then, in 10 years, it may be a problem if you will not get any support because the company maybe no more existing. God thanks, the next version of ASP MVC has a VM for *nix-derivatives, so you could solve this issue by running your app on a Linux-box. (And if you then have built your app additionally on a top of an ORM, you won't have any issues)
[+] [-] aleem|11 years ago|reply
Microsoft has a 3-year release cycle for their products. You'll end up paying every three years. For every single product. Microsoft's biggest cash cows are it's OS and Office products and always have been.
> A W2K12 Standard server license costs around 850 USD (~ 700 EUR)
Assuming you have just one server. At the least you will need a production server and a development server. And at least one for every developer. That's one OS license, one SQL Server license and one Visual Studio license per developer. Personally, I love work with a lot of virtual machines off Vagrant for development, testing and deployment. I am not sure how that works with MS licences.
> if it counts 5+ machines [...] some may consider to hire a network admin
It's fairly easy to manage ~100 machines using Ansible, Docker, Chef, etc. But in the Microsoft stack you probably want to keep the number of machines much lower.
> scale up or scale out
Scaling up is the right approach on Windows platforms but here is the issue I have with it. You cannot add RAM on the fly, as and when you need it. Nor can you add more processor cores on the fly. With horizontal scale, it's a no brainer but with vertical scale you cannot scale-up temporarily and then scale back down either. This is quite common and desirable for web applications.
I was on BizSpark and I was really grateful for the free trial. However, ultimately I shifted away and I am glad I did, even though C# is awesome and I absolutely love Visual Studio, I moved away for a number of compelling reasons.
[+] [-] Lelala|11 years ago|reply
Jeff Atwood made a GREAT comparison on up-vs-out-scaling some years ago:
http://blog.codinghorror.com/scaling-up-vs-scaling-out-hidde...
[+] [-] andrea_s|11 years ago|reply
[+] [-] frugalmail|11 years ago|reply
[+] [-] jasonkester|11 years ago|reply
Yeah, servers cost money to provision. But then servers always cost money to provision regardless of your stack. Even with license fees, the MS stack wins for me because my entire server farm fits on three boxes instead of the twelve I'd need to get the same firepower on a typical rails stack. The extra few thousand in full price server licenses is just noise because really, we're talking about a business here, not a hobby.
The bottom line is that if your business is going to fail because of a single $5,000 invoice, it's debatable whether it was ever a business to start with. The whole reason we all build SaaS businesses in the first place is the 95%+ profit margins. Fretting about what happens within that 5% that makes up the expense column seems a bit silly.
Even without BizSpark, I bet I'll build the next product on the same stack. The math just plain works out.
[+] [-] skrebbel|11 years ago|reply
We host it all on Mono and Docker on Linux VPSs. We wanted Docker because we wanted PaaS-like deployment but not vendor lock in.
Our team uses Linux, Windows and OSX to work on it. MonoDevelop is a pretty decent tool, on some areas actually better than VS.
We're really happy about the choice. C# is a great language, NuGet beats pip and gem by miles (none of that virtualenv bull). If Mono support is a requirement from the set-out, you don't run into many compat problems.
[+] [-] xtrumanx|11 years ago|reply
Perhaps a post on the company blog. It would make great reading here on HN. The community gets to hear about a C#+Postgres+Mono+Docker stack and maybe you'll get some new users for your app or bright people making job inquiries. At the very least, increase brand awareness.
Just don't forget; the company logo on the blog page should link to the app, not the blog.
[+] [-] aleem|11 years ago|reply
[+] [-] kennethh|11 years ago|reply
[+] [-] woohoo7676|11 years ago|reply
Also using SQL Azure and Redis for data storage/caching - it's been mostly positive so far. The downside with Azure has been the portal/management experience. The current UI is somewhat sluggish and disorganized, and the new portal tile UI is extremely confusing to navigate.
Overall it's been a pretty pleasant experience (maybe minus dealing with web.config files).
[+] [-] vyrotek|11 years ago|reply
Seriously. I don't know what they were thinking. I don't mind the current portal. It does take seem sluggish with all the ajax/loading but at least I know where everything is. The new portal needs to be completely redone.
[+] [-] arlattimore|11 years ago|reply
[1] https://octopusdeploy.com
[+] [-] Mandatum|11 years ago|reply
It's hard to say no when they give you so much free stuff for a startup-style business.
[+] [-] Oculus|11 years ago|reply
[+] [-] raphinou|11 years ago|reply
[+] [-] _random_|11 years ago|reply
From developer's perspective it's two modern mainstream languages - F#, C# - that can be used on Windows, Azure, Mac, iOS, Android, WP as a well-defined workflow.
The best IDE - Visual Studio + ReSharper + soon Roslyn. Second best ecosystem of libraries, that is picking up.
There are some missing bits that are coming: docker and containers, dynamic compilation (of static typed code) when building web sites.
It might not be the best choice in individual "disciplines", but it's the best overall.
[+] [-] DanielBMarkham|11 years ago|reply
I've found the best value/growth combination to be Linux, Mono, and F#. If I need a database I'll use something free or open source.
Right now I think folks are making a mistake if they decide to go "all Microsoft" or "no Microsoft". It's much more nuanced than that.
[+] [-] santoriv|11 years ago|reply
Bizspark is also great! $150 per month of free credit really helps - especially at the early stages.
[+] [-] zerr|11 years ago|reply
[+] [-] taspeotis|11 years ago|reply
* ASP.NET for web with SQL Server + EF for the database and data access
* Xamarin for mobile and OData for data access (back to our ASP.NET sites)
The CLR is great because it's always been fast enough for our applications and every so often you get something for nothing. For example, CLR 4.5 brought better GC and RyuJIT is bringing better code generation. NET Native might give us even better performance.
LINQ is amazing if you know your IQueryables from your IEnumerables and the difference between an Expression<Func<T, bool>> and a Func<T, bool>.
Hosted in a private datacentre, not using Azure but we've got our eye on it (provisioning resources in the Azure Portal seems to get easier and easier than doing it ourselves).
New Relic for monitoring the web sites.
My biggest gripe (and it's not that big) is that within the Microsoft ecosystem/community everything works great but once you go outside it things are less well supported. Some less-popular-but-wow-that's-useful Javascript libraries don't come as NuGet packages. New Relic's .NET monitoring seems good but second fiddle to their other stuff.
After that I'd say Xamarin is letting the team down. Every second or so release of theirs fixes two bugs but adds another one.
Keeping an eye on Application Insights. It looks like it integrates nicely with Visual Studio Online, and VSO/TFS actually looks quite nice in parts (e.g. Bamboo for CI is largely geared towards Java apps not .NET but TFS' Release Management looks promising). I have my eye on VSO/TFS too but right now it looks like pros do not outweight the cons vs. our Atlassian applications.
If you've got enough processing power and memory and a fast SSD to run Visual Studio + ReSharper it's coding heaven.
[+] [-] _random_|11 years ago|reply
The good will become perfect soon enough:
http://www.hanselman.com/blog/IntroducingGulpGruntBowerAndNp...
[+] [-] us0r|11 years ago|reply
I love AI. I hate that they don't even provide a clue to what the pricing model for this will be though.
[+] [-] Permit|11 years ago|reply
Personally, I've always enjoyed C#, so it's been a pretty positive experience on the whole.
[+] [-] michaelsbradley|11 years ago|reply
https://github.com/clojure/clojure-clr
[+] [-] grayrest|11 years ago|reply
https://cognitect.wufoo.com/reports/state-of-clojure-2014-re...
There was an announcement of Clojure in Unity3d [1] a couple weeks ago which is ClojureCLR.
https://github.com/arcadia-unity/Arcadia
[+] [-] benhamner|11 years ago|reply
[+] [-] photon137|11 years ago|reply
Only downside is that for something like a customer-facing portal, the identity-management is tied to Windows-specific features, for now - so have had to build a custom solution for this that runs on Linux. Waiting for ASP .NET vNext and its Identity solution when it becomes slightly more mature.
EDIT: Also evaluating a move to Azure. Primary driver (for choosing the .net stack) has been prior experience with C#, .NET and Visual Studio
[+] [-] kimura|11 years ago|reply
[+] [-] carsongross|11 years ago|reply
[+] [-] thnetcoder|11 years ago|reply
http://pitsolutions.io/
All .net/sql server, jquery on the front end with websockets.