Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
On how Jet.com chose F# (jet.com)
71 points by latkin on July 29, 2015 | hide | past | favorite | 49 comments


The post seems to be a discussion of C# vs F# without considering any other alternatives. It also mentions being surprised at user groups for Scala and Clojure being larger - I'm surprised that it would be surprising. It seems like the verdict was to go to with F# because it's functional - a good reason, but I'd love to have read why not Scala/Clojure/etc.

Odd thing is that at no point does it mention the cost of running ASP.NET servers - are they using F# with Mono? If not, the cost of licensing etc. is a valid concern - though I know MS provides incentives for startups.

Less competition over top developers can only mean good things for Jet.

Ehhh... yes and no? If your overall pool of potential developers is much smaller that's definitely a potential issue.


For an operation the size of Jet the licensing of Windows servers is trivial. Without looking very hard I found a Microsoft Windows Server 2012 R2 Standard - 64-bit License for $574.94. That's a one-time cost. There are ways to get it even cheaper. Maybe expensive for a hobbyist, but not much of a consideration for a company in production.

Companies with a lot of MS licenses have different options available, but this gives you an idea of the scale of the cost.


Software that is licensed per-server has a higher burden than just the license's purchase price: you have to actually keep track of those licenses so that you can plan and optimize license capacity (even if you have a site license) along with real things like server and network capacity. To me, as someone who works exclusively in open source environments, that is a heavy burden and I don't buy software that is licensed per-machine.

To get an idea of the difference in overhead costs I think it's helpful to look at Amazon's pricing between un-licensed Linux and licensed Windows instances. An m3.2xlarge instance with Linux is $0.532/hr whereas the same instance with Windows is $1.036/hr. That is a pretty big difference.

I'm not certain, but I'm guessing the difference boils down to two costs for Amazon:

  1. The cost from Microsoft of a license of Windows
  2. The cost of dealing with licensing Windows
  3. The cost of support from Microsoft
52% cost overhead does seem a bit high, and I bet you could do better than that yourself, but I also don't think it is trivial. Just looking around to figure out the cost of licensing things for this comment was draining.


The cost spread also no doubt has some "because we can" spread built in as well. (Which is entirely proper, IMO. Their customers are getting benefit from the freedom to elect Windows and are paying for the benefit.)


Careful, Win server licensing has a lot of paths / pitfalls that a single base license may not cover (#5) http://blogs.technet.com/b/volume-licensing/archive/2014/03/...


Holy crap !

"1 – Does my Multifunction Printer need a CAL?

Yes, if the multifunction printer is connected to a Windows Server network. A multifunction printer accesses server software to; receive an IP address, to receive a job, to communicate that the job is finished, etc"

So if your printer gets a DHCP address from your windows server, the printer needs a CAL !

And that's the #1 item they list.

And then there's #5 (which you mention) which has the caveat which could mean you need a CAL for anyone on the internet accessing your web server.


Securing Windows Server licenses might be trivial, but believe me, automatically managing an infrastructure consisting a cluster of Windows servers is a pain in the ass compared to its Linux/FreeBSD counterparts (Azure might have helped here a little bit, I don't know, but I still suspect it would be easier to run a UNIX infrastructure.)


What about licenses for developers to develop software to run on that server? What about licenses for things like deployment software and Microsoft-centric VCS? What kind of database are you going to run? MS-SQL?

To paraphrase the toy story meme at the bottom of the article - SOFTWARE LICENSES. SOFTWARE LICENSES EVERYWHERE.


I would suspect that they are gold partners and therefore get MSDN licences for all their devs and TFS for free.


I know quite a few developers that are only interested in working at companies that have bought in to functional programming. The fact that they're willing to invest in a less popular language says a lot of good things about their engineering culture too.


As per their job listings, looks like they're running on Azure.


Licensing for Windows isn't as expensive as some people believe. Going in with their licensing plans, their cheapest server level with support comes to about $300/year. Redhat, for support, starts at $350. Yes, it can be $500+/server if you're buy it retail off the shelf, but any sort of internet related business, you're almost certainly not going to be going that way.


> a good reason, but I'd love to have read why not Scala/Clojure/etc.

The CTO is familiar with .NET, and realized it's good enough to get the job done. The goal is to deliver a product or service, not argue over which technology stack is better.


There probably more .net or Java companies then any other stack.

In most cities they're usually the highest paid to.

It's mostly startups where it is not used, for the percieved barrer to entry.


A more accurate title would be "Why Jet didn't choose C#" as they don't seem to pay any attention to the non-Windows stacks available.

I'm still no closer to understanding why they would build a startup on a MS stack, a question I've been pondering for the past year and a half.


I honestly believe the burden of proof is the other way around: why would they NOT use the MS stack?

Cobbling together a stack from component parts is not my idea of a productive day, though I do understand the attraction it has for some developers, and I do understand how it made a lot of sense, until recently, for those doing some bootstrapping.

I've dabbled in various OSS technologies, and I cannot for the life if me figure out why anyone attempting something big would automatically choose anything OSS over Java EE or .NET, at this point. The cost to entry with .NET is basically zero these days, and it is a seriously powerful dev stack.


Seriously? The cost of the MS stack doesn't tend towards zero by any means infact it normally increases as you throw more hardware at it. Yes MS can hook you on the BizNet stuff but you have to pay at some point.

Why waste the money when the alternatives are better and cheaper.

What does buying MS actually buy you?


- One can host a compiled .NET app just about anywhere, and yes, that typically costs money. But then it typically costs money to host any app, anywhere.

- The OSS alternatives to .NET are not better, not objectively. Some people prefer them, but that does not make them "better".

But that's sorta the point, isn't it? I've done enough work in the Node and Rails and .NET ecosystems to have some small bit of perspective on the matter. I haven't seen a server-side language that beats C#, at least presently. I haven't seen a framework that is anywhere near as powerful as .NET anywhere in the world of OSS. And I haven't seen ANY text editor that holds a candle to Visual Studio. I am pretty sure I'm coding circles around most of my OSS friends, well-intentioned as they are, and it's mostly because of the tools I use.

There is SO MUCH VALUE in everybody on a team using a powerful, elegant, monolithic framework. There is also a lot of hostility towards Microsoft in our line of work, most of it deserved. But things change. And frankly, I don't have a lot of time for anybody's years-old grudges, not even my own. I don't want to spend months of my life mastering Git while our billion-dollar clients are waiting impatiently for their apps. TFS is better and easier for our purposes, and a LOT of professional developers feel that way. Doesn't mean we think anyone is wrong for using Sublime Text and terminal. Just means "no, thank you".

My point stands: at this particular point in history, the .NET developer is, perhaps, not carrying the burden of proof.


Support, Integrated software, and a stack that doesnt require much delving into server config files to get going? Literally nothing to setup if you use azure.

And two nice languages...

Your time, and getting your software shipped is worth more than few thosand extra.


Visual Studio is the most productive IDE I've used, by a long shot.

It's good enough to get me out of Emacs as a my primary code editor when developing on Windows. That after 20+ years of emacs use.


Because it started with the CEO making a WCF service. Meaning he knew .NET and stuck with what was comfortable - just like StackOverflow's origin.

Best to keep to what you know when you are starting something risky - and there is nothing wrong with the MS stack for this sort of thing.


> Because it started with the CEO making a WCF service.

The CTO, not the CEO.

From what I understand, you are in fact correct though. The CTO happened to be a MS guy, so the whole company had to be MS.


Did you mean "a WTF service"?


Not sure if you're just joking or don't know what WCF is, but in case the latter is true:

https://msdn.microsoft.com/en-us/library/ms731082(v=vs.110)....


Can it be both?


Although I havent worked with WCF for sometime (Web API is all the rage now), WCF wasnt too bad. Pretty good for making REST services, if you wanted absolute control. They streamlined a lot of the configuration needs in 3.5 and 4.


A lot of the NYC area financial firms use Microsoft technologies. If you are a developer at one of these firms and looking to leave to join a startup then there's your chance to jump. At least that is the way they've explained it to me. I don't use any MS technologies myself but that doesn't make it an invalid choice.


Because its fast to get it up and running, and has batteries included.

Other stacks usually require tons of config, infrastructure set up. Scripting etc.

.net I can literally click deploy to azure and I'm done.


Serious question: have you actually developed with OS stacks? They're incredibly easy to get up and running with.

> .net I can literally click deploy to azure and I'm done.

With Python/Node/Ruby/JavaScript, I can literally click "git push to Heroku" and I'm done.


Python/Node/Ruby/JavaScript

Yeah, but those are scripty dynamic languages that many developers don't like.


OK, what about:

$ goapp deploy

Go is a statically compiled language


Because if you want good support, such as OS lifecycles longer than a couple years, they're actually fairly inexpensive. RHEL starts at $350 a year to get you the same kind and length of support you'll get from a $300 MS subscription. Yes, the retail price for an MS OS is high, but if you're going to be doing server deployments, you'll be getting your software from direct resellers, who do provide much more reasonable prices.


i think in this case, they were funded before they started so cost wasnt an issue. versus most startups that start with little or no cash, so the idea of MS licensing is not even open for conversation.

i dont really think of jet as a startup in the classical sense. its just a new company with lots of funding, it sure wasnt bootstrapped.

IMO, its going to be a flop. their prices arent competitive for the items i have searched.


> Jet is the shopping cart membership that gets you club price savings on just about anything you buy.

Pricing should be completely transparent for a competitive market. We need less of this.


Waiting for someone to make something like Tracktor for Jet. It shows you pricing data for Amazon products using an extension.

https://thetracktor.com/


From what I've seen, it wouldn't work, because they adjust your pricing based on the other items you've recently bought. More items/$ gets bigger discounts. Never used it though, so not 100% on how it's calculated.


But - Won't the market sort it out?


Assume there are is a small number of big players. They want to artificially keep the prices high. They could make an agreement, but that would be illegal. Assume it would not be illegal.

Now apply your logic: "Would the market sort it out?"

No, of course not.

So why would the market sort it out in other cases of anti-competitive behavior?


Not very obvious but it was a joke. There's a sense (somewhat more common on HN than in Real Life) that the Free Market will result in an ideal equilibrium and egalitarian society, and it's funny to me, because (as you point out) it's so obviously not the case. But someone always brings it up in these contexts, so I was trying to get a jump on it with some mild sarcasm.


need to replace "but" with "b-but" next time :)


Solid technique, but I was going for a different voice, sort of a dramatic pause and a winking 'aha! - but what about the market? Ever think of that?'


What, like I'm going to shop retail like a peasant?


F# is what the cool former C# developers are using nowdays. It's either that or node.js embrace. Go figure.


Where are all the wonderful .NET github repos written entirely in F#? They sure do like writing about F#.


compiler : https://github.com/fsharp/fsharp build automation : http://fsharp.github.io/FAKE/ deedle : http://bluemountaincapital.github.io/Deedle/

And there are plenty of other very cool open source projects written in F#.

Most of them can be found here http://fsharp.org/community/projects/


FAKE is awesome. The entire F# ecosystem is pretty impressive.


How does F# compare with Ruby? Ruby code is so compact!


As compact. Most of type errors will shift to compile time, instead of blowing during runtime. Profit.


F# is basically OCAML with C# interop, AFAK




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

Search: