Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: Who is using the .NET stack for their startup?
105 points by nirajs on Nov 2, 2014 | hide | past | favorite | 96 comments
Who is using c# or f# for their startup? I am compiling a list of startups using .net stack. I would appreciate your help.



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).


Compared to OCaml, F# has slightly nicer syntax, real multi-threading, and type providers (can e.g. automatically generate a type from a database schema). It lacks OCaml's awesome module system, higher-kinded polymorphism, OCaml's neat but rarely-used object system (it has C#'s object system hacked on instead), and on Mono at least it is generally slightly slower than OCaml.

In my view the .net libaries are probably the biggest advantage over OCaml and Haskell. Similar to how access to Java libraries gives Clojure an advantage over lisps like Common Lisp and Racket.

Oh, and if you want to use Windows without mingw then F# is a far better choice than OCaml or Haskell. The OCaml packaged manager doesn't even work properly on Windows, as far as I'm aware.


Also it seems new versions of F# are released much more often than those of OCAML. Corporate backing is important.


They both seem to produce a new version about once a year, so there's not much difference there.


Great. F# is getting popular. We make https://dotnetfiddle.net/ and we added F# just because that was no#1 user request.


We use .Net MVC (C#) at OpenRent [1].

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


"Web Sites not flexible enough for us"

Would you care to share any specifics? I'm curious to know what you're trying to do that doesn't work on Azure.


The issues were all "Web Sites" specific. I'm sure we could spin up machines and get everything to run - but that's much less enticing compared to AppHarbor / Beanstalk.

One example - if you have any processing in the application_startup, Web Sites won't work for you. Applications are randomly killed and restarted, and don't allow for a startup time, meaning outages when this happens. Customer support suggested using a fail over to work around this, but the fail over only kicks in once your app has been down for a certain amount of time - so you'll still have down time.



What if your running app relies on the processing done during startup?

Sure - we could re-architecture the app so that isn't a requirement, but then I'm making design decisions based on Azure constraints. Why would I when there are alternatives like AppHarbor?


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].

[1] http://dpaoliello.wordpress.com/2014/03/30/connection-resili...

[2] http://thedatafarm.com/data-access/ef6-connection-resiliency...


http://msdn.microsoft.com/en-us/data/dn456835.aspx

    public class MyConfiguration : DbConfiguration 
    { 
        public MyConfiguration() 
        { 
            SetExecutionStrategy( 
                "System.Data.SqlClient", 
                () => new SqlAzureExecutionStrategy(1, TimeSpan.FromSeconds(30))); 
        } 
    }
The above SqlAzureExecutionStrategy will retry instantly the first time a transient failure occurs, but will delay longer between each retry until either the max retry limit is exceeded or the total time hits the max delay. The execution strategies will only retry a limited number of exceptions that are usually tansient, you will still need to handle other errors as well as catching the RetryLimitExceeded exception for the case where an error is not transient or takes too long to resolve itself.


Yeah, we use .Net 4.5.3, without EF. Connections still fail all the time especially under high demand.

We have our own retry logic, which also logs the issue so we are aware of how frequently errors occur while a command / transaction is being executed.

This is using SQL Azure with the "Business" tier, so it will be interesting to see how the new (much more highly priced tiers) Standard and Premium tiers go.


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.


You can buy developer versions of sql server licenses. Last time I bought them they cost £35 for the full enterprise package.

You can buy msdn packages for unlimited development use of any OS across VMs. Around £600 / year I believe. More expensive MSDN subscriptions include development OSes, Visual Studio & Sql Server at around £1000 / year.


I'm no major fan of the Microsoft stack but this is false.

1. You don't have to buy every version. We just got rid of Windows Server 2008 and moved to 2012 R2. We have 5 Windows 2003 Servers that are still supported hanging on until next year.

2. You can hire Visual Studio per month so scaling the team up and down is cheap and easy. Also 100% honestly, VS is pretty cheap compared to the cost of staff and kit. In fact we use VL (renting software) so we get any version we want of any dev tool, server platform etc.

3. It's fairly easy managing 100+ (well 154 but close enough) Windows machines. We do it fine with two guys and a network monkey. Powershell DSC and they are quite scriptable and easy to deploy these days. We build WIM files.

4. You shouldn't plan to add RAM or cores on the fly. Stick a duff RAM stick in and what happens? Scale up/down in/out: depends who you host with.


"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."

Really curious: what did you move to (both language and IDE-wise)?


> You cannot add RAM [+ CPU Cores] on the fly...

I doubt that this type of instant scaling is useful for the typical .NET shops that serve small and medium size businesses and still sell a lot of on-premise solutions and niche-market web apps.

> That's one OS license, one SQL Server license and one Visual Studio license per developer.

Not necessarily. I just worked with a client who had every one of their 10 developers on SQL Server Express (free, with 10GB db limit) and Visual Studio 2013 Express (also free) which is good enough for doing basically anything in the MS universe. The computers they bought came with Windows.

My current client has me working at home where I use my own copy of Windows 2012 R2 + Visual Studio 2013 Pro and SQL Server Web edition which I got all for free via a free WebSpark membership that I signed up for 2 years ago.


So this all reminds me of when I was an IT manager and my sysadmin spent like 25% of her time just managing license compliance. My dev worked in open source and spent 100% of his time getting stuff done.

MS seems to be getting a lot better about this stuff (dev licenses, free short-term VM images for testing purposes, I don't know what else) but making things cheaper while not relaxing compliance requirements doesn't make it all that much easier.


P.S.: i forgot:

Jeff Atwood made a GREAT comparison on up-vs-out-scaling some years ago:

http://blog.codinghorror.com/scaling-up-vs-scaling-out-hidde...


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.


Like aleem, I'd also love to hear more.

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?


Came to choose: It was the only language that doesn't suck that the entire initial team had some to much experience with. About the open stack, seemed obvious to me - why knowingly lock yourself in? BizSpark is nice, and we're members, but not every startup takes off as fast as Slack and for a struggling company, licenses might be prohibitive.

Server setup: We have 6 docker containers: Postgres, backend, nginx, assets, data and ssh. Backend is a ubuntu+mono+backend_code. Data is the docker data container pattern. Assets is the frontend code (we're an SLA). Ssh is an sshd for looking at the data and logs in the data container.

Nginx and backend talk via fastcgi, one of ServiceStack's apphosts.

Currently it's all on one server, but the code is prepared for scaling and load balancing.


How is ServiceStack working out for you guys? Is there a lot of difference between v3.x and 4.x?


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.

[1] https://octopusdeploy.com


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.


> It's actually pretty easy once you realize that you have to pay for the licences on all Microsoft technologies once BizSpark ends

For the most part, the stuff that runs on Azure doesn't have a discrete licensing cost. You pay the hourly rate for the resource.


can you run linux VMs on azure? i think so.

free servers are free servers.



I think they did an offer to change this later.


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.


The question was a little ambiguous. "Microsoft Stack" could mean everything from MS, but it could also mean you just pick and choose.

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.


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.


What frameworks/libs you use in TypeScript?


Ember, Pixi, When, jQuery. That's pretty much it. All of them have type definitions (although some are a bit out of date/inaccurate).


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.


> "Some less-popular-but-wow-that's-useful Javascript libraries don't come as NuGet packages"

The good will become perfect soon enough:

http://www.hanselman.com/blog/IntroducingGulpGruntBowerAndNp...


"Keeping an eye on Application Insights."

I love AI. I hate that they don't even provide a clue to what the pricing model for this will be though.


We're using it at Code Connect (http://codeconnect.io). We build a plugin for Visual Studio, so there's not exactly a lot of choice. :)

Personally, I've always enjoyed C#, so it's been a pretty positive experience on the whole.


Any .NET folks making use of ClojureCLR?

https://github.com/clojure/clojure-clr


Survey says probably not:

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


We use C# and F# extensively at Kaggle: kaggle.com is an ASP.NET MVC app on Azure, and a good portion of our data processing is in C# or F#.


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


At http://www.listmax.ca we use .NET for our backend api and various other tasks. Plentyoffish ran .NET stack on one machine for a very long time.


Xero is built on the .NET stack. Per Craig Walker (CTO):

  https://www.xero.com/blog/2011/03/why-we-hire-any-kind-of-programmer/
"Xero is a .NET shop."


I use the .net stack for every project.

http://pitsolutions.io/

All .net/sql server, jquery on the front end with websockets.


Our tech stack at Entomic (www.entomic.com) is all done in .NET. We've got a pretty common stack (at least we think so) - MVC5, WebAPI, SignalR running on Azure web and storage.

Like others here who get set up on a MS stack, everything integrates very easily. Visual Studio IMO is still one of the best IDEs out there for what it does, and having that supported by a good CI system means very little is left to do except code.


I know of at least two startups who're heavily using F#:

http://tachyus.com/ http://jet.com/

There are others as well (I just don't recall their names right now) -- take a look on http://fsharp.org for more links.


This will be a little off topic since the last time I tried C# and .Net was many years ago (I was getting prepped to write a book on J2EE, and I wanted to spend a week using the competition first, to get a more balanced point of view):

I want to praise Microsoft's BizSpark program. I was accepted a few months ago after I submitted my plan for a SaaS product. I am using Ubuntu servers on Azure, and Azure works well - fewer services than AWS, but a comparable developer's experience to AWS and Google's offerings. I definitely recommend looking into BizSpark if you are interesting in developing an SaaS business. Since I am using Linux, Haskell, and Ruby I am not really locked into using Azure, but if my SaaS product is successful, I will probably keep using Azure in gratitude for $150/month of free Azure use for up to 3 years.

In general my attitude about Microsoft improved a lot earlier this year after trying their Office 360 product that works on all of my devices (MacBook, iPad, and Android phone). I like the direction the new CEO is taking the company.


https://www.moneysoft.com.au - is a running on C# & SQL Server , hosted on our own servers.

And https://www.calendartree.com/ (startup by Dilbert's Scott Adams + others) are C# / SQL site, on their own servers.


Anyone else getting ERR_CERT_AUTHORITY_INVALID?


Not getting the exact error, but the cert that https://www.moneysoft.com.au is using is not actually for https://www.moneysoft.com.au.


Sorry, getting our app and website mixed up.

Website: http://www.moneysoft.com.au/ App: https://secure.moneysoft.com.au/


Everymove in Seattle is, I believe.

https://everymove.org/


We, at Degreed (https://degreed.com), are using .NET, MVC 5, EF 6 on Azure. Front-end is Angular. We are part of BizSpark Plus which ends next month. Currently looking into whether or not VS 2013 Express for Web is sufficient.

Reason for using it was tooling, hosting and familiarity. I enjoy being able to being able to fully debug the code and step through things. Makes things enjoyable, to say the least. I love C# and use it for everything I do.

Only concern is the steep SQL pricing for the new tiers and the occasional blips as mentioned by siganakis. However, support is fast and helpful.

Shameless plug: we're hiring. We're distributed/remote between SF, SLC and LA. Ping me for futher details.

Disclaimer: former MS dev.


The question reminded me of this classic: http://blogs.law.harvard.edu/philg/2009/05/18/ruby-on-rails-...


http://iactionable.com is a .NET/C# start-up. We're completely hosted in Windows Azure as well. We also went through the Microsoft BizSpark program which is amazing and I highly recommend it.


We are using .NET Stack for our web app scanner. Both for desktop and (https://www.netsparker.com/web-vulnerability-scanner/) and SaaS versions use .NET (https://www.netsparker.com/online-web-application-security-s...)

We started with Bizspark as well, now we graduated and license cost is not much really. We also rely on MS stack for many things other than source code repository / CI etc.


ZocDoc in NYC uses C#/.NET stack.


Stack Exchange is a .NET shop as well.



ClearTax -- cleartax.in uses the .net stack. We use F# and C#.


we use it extensively at http://www.backrecord.com (C#, mono)


We're a startup (https://whoaverse.com) using .NET4.5/C# MVC5 and SQL, currently working on getting set up in Switzerland. C# beauty, Visual Studio and Azure were the key factors why we decided to go with .NET.


We are using Windows, the .NET Framework, IIS, ASP.NET, and Visual Basic .NET. We're on the .NET Framework 4.0 and see no reason to move to 4.5.

For C#, not interested: The syntax borrows from the deliberately idiosyncratic syntax of C, and the Visual Basic syntax is more verbose, easier to learn, teach, and read, and, thus, less error prone, is as a programming language in its semantics, features, and functionality essentially equivalent to C#, that is, the difference is mostly just syntactic sugar, and apparently is about as good as C# or anything else at getting at the CLR and the .NET Framework.

For F#, people back to Backus have been working on functional programming, and, for more than just curiosity, and certainly for the work of our start-up, we're not impressed or interested, in that or logic programming, rule-based programming, or standing on our heads in the corner programming, etc. -- sorry 'bout that; we can agree to disagree, and YMMV.

We're quite pleased with Visual Basic .NET. A hat tip to the Microsoft Visual Basic group.

Main gripe: For the documentation, actually for all the documentation on MSDN, especially for SQL Server, please, please, please, get a least a C in technical writing 101. Our biggest problem in our start-up, far and away, much, much, much more difficult than everything else combined, literally, is the low quality of the technical writing at MSDN.

For JavaScript, Microsoft's ASP.NET writes some for us, but so far we have yet to write a single line of it and will delay doing so as long as we can, hopefully forever.

For ASP.NET, we are using just the basics, that is, with

     Sub Page_Init
     Sub Page_Load
     Sub Page_PreRender
     Sub Page_Unload
etc. We have heard of MVC, looked at it a little, can see no reason for it or advantage in it, and intend to have nothing to do with it. Maybe better technical writing at MSDN would let us take MVC more seriously.

We type into our favorite text editor and make no use of an IDE nor do we want to.

For developing code for Web pages, ASP.NET and Visual Basic work nicely together -- it works fine. Actually, it's nice.

For a session state store, we wrote our own using just instances of one class, de/serialization, TCP/IP raw sockets, and two collection classes. On an 8 core processor at 4.0 GHz, our session state store should be good for 11,000+ transactions a second; transactions is appropriate because the code is single threaded. Yes, on an 8 core processor we would run several instances with sharding.

As we go live, our server will be just a single full tower case with an 8 core processor, 32 GB of main memory, some SSDs for a special purpose particular to our start-up, and some disks, with Windows Server, SQL Server, IIS, ASP.NET, our Web pages, our session state store, and some specialized back-end servers. The software and architecture are scalable via just simple sharding. We have little or no intention of using the cloud soon or ever.

As we go live and grow, after the issue of the MSDN documentation, no doubt, and closely related to the documentation issue, our biggest concern will be Windows Server, SQL Server, and IIS installation, configuration, updates, security, monitoring, management, performance, administration, reliability, backup, and recovery -- little things like those. But from some of the just astounding successes Microsoft has running server farms with their software, clearly terrific results are possible; maybe we will be calling for some high end technical support.

That's what we are doing!


You joke, but this stuff happens. I'm not a startup, but I'm working on a native app for Windows. The client comes in at ~60 KLOC, all in Visual Basic.NET. The WCF service is around 12 KLOC, and will probably grow by another 5. No third-party libraries at all (no Entity Framework either), no LINQ (no good for perf-sensitive code paths, there's just too much plumbing), and no WPF (it's all Windows Forms).

What it does: http://bit.ly/1rqJ0NG

Security aspects: http://bit.ly/1tgHUcD

2FA/OTP ideas: http://bit.ly/1sQyQtq

Screenshots: http://bit.ly/1rMIWbd


What I wrote is literally true, but maybe there is some humor in there somewhere.

For WCF, LINQ, and WPF, we looked at the documentation, and it was clear that just working through the tough parts of the documentation alone would be much more work than just writing our code directly. Moreover, any bugs, security problems, need for updates, etc. of WCF, LINQ, and WPF we just neatly avoided.

And we saved maybe a lot of address space.

That is, it looked to us like, for us, YMMV, WCF, LINQ, and WPF are a candle not worth the match. I can believe that in some situations those three could have some value; for us, I don't see the value.

I mean, WCF boils down to TCP/IP raw sockets, right? Well, the API to raw sockets is about the easiest I/O one could hope for, nearly as easy as the ancient Basic statement PRINT or the same in C, etc. I tried for several days to make sense out of WCF, came up with zip, zilch, zero, nichts, nil, nada, and gave up, but I learned raw sockets in about three hours one afternoon decades ago. To heck with WCF.

For LINQ, that boils down to just SQL, right? Well, SQL was supposed to be really easy to use, is profusely documented, and has been, for decades, has long been an ANSI standard, has been tested in various ways, and with astounding severity, around the world, for decades, right? So, writing some SQL is not so tough. Getting a connection string to SQL Server? Yup, that took two weeks of mud wrestling, but the SQL statements were easy enough to write. SQL's fine. Very glad to have it. SQL Server connection string mud wrestling? Did I mention some bad documentation? The full power of the Microsoft Corporation still is unable to document how to write SQL Server connection strings. The only way I learned was via Google searches wherever, and then I did some organized trials of essentially all possible combinations of everything involved until it appeared to work. I still don't know just why what worked did and what didn't work didn't. Cave men with burnt sticks wrote better documentation on cave walls.

For our SQL Server database schema, that is, the specifications of the tables, the columns, etc., we have a little file, just awash in comments, nicely clear and easy to read, that we run through the wonderful SQLCMD.EXE -- "Look, Ma, no GUIs!". And no clicking! Instead, just type the name of a little script, and presto, boom, have a new database created just as want, nearly no chance of anything going wrong. It's better than most sex!

For the SQL Server Management Studio, can use it read only a little and otherwise just can't make sense out of most of the screens, windows, sub-windows, check boxes, terminology, concepts, etc.

So, for SQL Server administration, just back to the simplest little SQL statements, mostly industry standard.

The SQL Server documentation of users, logins, etc. wins the prize for the worst technical writing I ever saw. But, do some Google searches, go to some Web sites, and see that just some fairly simple SQL statements are enough for such administration work. So, get a collection of little SQL files, run them through the wonderful, fantastic, we're lovin' it, SQLCMD.EXE, document the little files and their usage, and, fine -- f'get about Management Studio.

Basically, right, really prefer command lines to GUIs! GUIs? Far too difficult to understand, get to work, script, document, etc. We'll let the cognitive psychologists at Xerox PARC, Steve Jobs, etc. play with direct manipulation GUIs, and we'll stay with command lines, scripts driving command lines, and a text editor writing the scripts. Sorry 'bout that. To each their own. If you like GUIs, then go for it. YMMV.

WPF? Maybe that boils down to Windows Forms for a native Windows application, but our only GUI is HTML and CSS with the little JavaScript ASP.NET writes for us. If WPF boils down to HTML elements, then, sure, we'll just use, directly, HTML elements and/or the ASP.NET class wrappers for those elements to make the HTML programmable, that is, be able to generate HTML elements via software that executes for each user uniquely after they connect.

So, we just saved having to read some hundreds of Web pages at MSDN, buy a cubic foot or so of books, do 500 Google searches about details, submit 100 questions to Stack Overflow and the MSFT fora, etc.

Our code so far is about 30 KLOC (that is, actual VB statements) with maybe 60 KLOC of blank lines and 100 KLOC of comments.


It seems we share a similar philosophy. My SQL code is actually generated by the client. The server also generates its own SQL code, and does its own DB admin (create and drop tables, insert seed data and so on).

I think I need to look into TCP/IP sockets though. I have a very simple WCF service that accepts a byte array, and returns a byte array. No more, no less. The back-end deserializes the bytes and does what it needs to. WCF configuration is a Night! Mare! I think someone got completely spannered on the dependency injection koolaid. My service is a single method, and I spend more time babysitting XML in Web.Config than I do writing the service...

And yeah, with white space and comments my code base is around 120 LKOC. Just under 140 if I include the Windows Phone client.


Long ago I concluded that in tools, ease of use was tools that were reliable, did fairly simple things, and were easy to understand how to use and not tools that tried to do a lot, do favors, anticipate what I wanted, and do more for (to!) me!

So, in a kitchen, I don't want a hot dog cooker and, instead, can, depending on what I want, just use a pot and with water and boil the hotdogs, use a skillet with some oil and fry the hot dogs, or go on the back porch, build a charcoal fire, and broil the hotdogs. Besides, for a hotdog cooker, how to clean the darned thing! And have to get it out of storage, set it up, etc. No thanks.

For cutting onions, use my best three tools in a kitchen, a good French chef's knife, a cutting board, and my hands. Works great also for potatoes, carrots, cabbage, garlic, and much more.

In a shop, have saws, hammers, files, wrenches, screwdrivers, a drill plate, drill bits, a nice, variables speed, reversible 3/8" electric (not battery powered -- don't want to mud wrestle with batteries that run down, need charging, go dead, wear out, get weak, need to be replaced, etc.) drill. Also socket wrenches, etc. But lots of automatic tools, e.g., a screwdriver that has a spiral shaft that push on to turn a screw, don't want.

To sharpen a kitchen knife? Sure, just use whatever grit size sand paper, usually silicon carbide, want, put the paper flat on the cutting board, and sharpen away.

Simple tools, that do simple things, and are reliable and easy to understand. Then, build more on those.

So, just use TCP/IP raw sockets and build more on those.

For a session state server, use TCP/IP raw sockets, de/serialization, and two collection classes. Piece of cake, no use of CONFIG whatever, no use of XML, only a few pages of documentation, lots of good, old code samples, rock solidly reliable ("TCP/IP sockets are the workhorse of all of the Web and Internet") etc. By far the easy way.


My server is stateless. Definitely checking it out.


You're trolling, right? Please?

...if not, would you mind letting us email your developers to try and save them from career suicide?


Trolling? Not at all. Instead, it's just what we are actually doing.

I'll let them all know that they have a choice: (1) Make money doing the work to make our software and Web site good, our users happy, and our start-up successful or (2) grow their resumes for jobs elsewhere.

With (1), they get to help build something important. With (2) they get to add buzz words of questionable utility for unknown projects of questionable value. YMMV.


"30 KLOC code with maybe 60 KLOC of blank lines and 100 KLOC of comments"

I'd say obvious ... is obvious


This. Is. Hilarious. :-D

Just in case you guys aren't clear on the intent of the post, another submission by this user talking about cats breaking Firefox:

https://news.ycombinator.com/item?id=8541621


> Hilarious.

Ah, good to get some laughs.

But if your kitty cat, puppy dog, or baby walks across your keyboard, or if something falls on your keyboard, etc., and suddently Firefox closes after 10 seconds, and keeps doing that, as you keep restarting Firefox, no matter what, you may very well like my post and its solution.

Or, you can do a Google search and find that the symptoms are common, and find that the recommended solutions range from reinstall your anti-virus software, install a new version of Firefox, reinstall device drivers, ..., buy a new keyboard, give up your kids, divorce your spouse, buy a new computer, submit to full castration, move to the woods in northern Canada, or worse.

Instead, just use the solution I found. Piece of cake.

It's easy to suspect that my simple discovery will solve a major fraction of all the instances of that nasty, fairly common problem, hilarious or not.

Exercise: Before reading my solution, guess what it is! Record your guesses here before reading my solution.

Hilarious? Maybe. Obvious? No. Useful? Yes. Difficult? No. Fast? Yes. Easy? Definitely. Better than the suggested alternatives? By some light years.



"a clear indication of the author's intent"

No, what I wrote is what we're doing. Maybe there's some humor in there somewhere, but it's all simple and obvious and makes good sense to us.


We (https://markedup.com/) use C# heavily and do about 20-30k requests per minute on fairly small Elastic Beanstalk / EC2 instances.

Mostly ASP.NET MVC, but we also use Akka.NET for a lot of our internal services.


I've been using F# on Mono for all of my startup back-end work over several startup attempts.


What are you doing with this list?


Thanks. Basically, creating a network of startup folks to help each other with tools and ideas. Job board to find talents. We also make https://dotnetfiddle.net/ to collaborate, help educate all things .net


We use C#/F# for enterprise data processing app. C# for WPF front-end and F# for data processing back-end. F# was a total revelation for me and it has become my favorite programming language.


Contemplating on whether should I use ASP.Net webforms for my ecommerce site or stick with a no/minimum-coding required solution such as wordpress/drupal


I'm using Node.js + .NET for my part-time, single founder startup.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: