Hacker News new | ask | show | jobs
by DenisM 4378 days ago
1. c# is a great language - LINQ and type inference make it as succint as python (or even more when I use extensions methods and generics!), static type system gives a lot of safety eliminating huge classes of bugs, decent performance compared to other succint languages like Python or ruby. Really hits the spot for me, and I would hate to go to a dynamically typed language now.

2. VS is a great IDE if you give it enough RAM.

3. LINQ2SQL makes for quite pleasurable, succint and type-safe database manipulation. Bulk updates suck though, but that's an ORM for you. SQL is also a good database, and when time is right I can make use of remote database mirroring, instantly boosting my fault-tolerance. I could use Postgres as well, but SQL tips the scales with LINQ2SQL.

4. Reasonably popular, compared to web dev in other succint statically typed languages say, Haskell. So I can find answers on stack overflow.

5. Nuget. Sometimes I need a commercial package, and I can often times just get it from Nuget, play with it, and then punch in serial number after paying to remove watermarks etc. It's nice to have those packages for when I need them, to be able to buy my way out of problems.

6. Backward compatibility. I heard that ruby was breaking it more than once and python did it once. .NET seems to be less prone to this.

And I really see no downsides to it. Windows is only 20% more expensive on AWS, and hosting is literally the last on my list of expenses. Performance is good enough for me - given my business model I will be able to afford a small data center before my single Windows server gets too small for my workload. VS is slow, but buying extra RAM is a small price to pay to get it up to speed.

1 comments

On AWS booting Windows can easily take 10-15 minutes. On the same type of EC2 instance, it takes 30 seconds. This makes auto scaling quickly very difficult because you have to scale up in anticipation of demand rather than as it occurs.

One other problem is that Windows by itself easily takes 1+ GB of RAM whereas Linux can easily run 64MB-128MB. So while Windows may only be 20% more expensive for similar hardware (which I don't object to either), I can run cheaper hardware and have more of it available to the application instead of the OS. Our metrics show the savings to be about 60% less expensive when counting hardware and licensing costs.

The boot time is annoyance, and resource hogging is unfortunate, but I can easily buy my way out of those problems by buying bigger machines and doing it in advance. My time is more valuable, I think, and server costs are negligible next to payroll. There are business models where hardware costs dominate like, I don't know, video processing or something, but most startups are not in that boat - they need to iterate on UX as fast as possible.