3 ms·
Anybody here has developed and deployed a Scala-based or/and Haskell-based project for production? I mean systems for business purpose where rubber meets the ro
by happywolf 14y ago
Anybody here has developed and deployed a Scala-based or/and Haskell-based project for production? I mean systems for business purpose where rubber meets the road with timeline to hit and budget to meet. Far too often the stories are shared by people who learned a new language for 3 months and implemented a pet system where only a few real users. Definitely I respect their zeal and curiosity, but I am more interested to know what the veterans are thinking
- joshdev 14y agoAt my company we started a Scala project a little over a year ago. Two of us had a Java background the other two had a C++ background. We targeted Scala 2.9, Akka 1.3, and ran it on JVM 1.6. For us the stack proved to be very easy to work with. The project spent about 5 months in development and has been in production for another 9 months with weekly updates. What the author calls old habits, I call productivity. A lot of us started off coding imperatively and slowly started adapting functional along the way. It allowed us to get the best of both worlds. Over the past year we've definitely stumbled a few times (mutable objects for akka messages are really really bad), but overall we've been very happy with the stack. One of the only real ongoing problems we are continuing to struggle with is limiting the impact of big GCs in production. Scala tends to generate more garbage then pure Java, so the GC has to work harder. Most of these objects are in the eden space, but we can run into memory fragmentation issues, which leads to eventual long compaction cycles.
- warfangle 14y agoFairly certain that twitter used scala at some point for message passing (back-end); At one point Foursquare was using scala/lift for their web platform. I'm not certain if this is still accurate; my information is pretty out of date.
- carterschonwald 14y agoI know of a few strong mostly Haskell places in NYC alone. Likewise I'm actually bootstrapping a biz where I've spent most of the past year building the tech where some of the things I'm doing are only tractable to build by using Haskell.
- slurry 14y ago> I know of a few strong mostly Haskell places in NYC alone. Hedge funds? Or something else?
- carterschonwald 14y agoBoth! more precisely, at least one large quant shop, at least one normal hedge fund (apparently theres a difference!). Probably others in the finance space. Theres at least 2 not finance enterprise focused haskell shops in NYC that are currently profitable and growing, theres at least 1-2 other places that have a smidge of haskell here and there. Oh, and theres my place, Wellposed, which is pre launch but for the first product, only Haskell is used, and if it works out, the # of (partially) haskell shops will increase quite nicely :)
- sixbrx 14y agoI've recently finished an internal web app in Scala. It uses Play 2.x web framework, Squeryl for database access. The main pain point was that there was no way of reverse engineering an existing database schema into classes for use with Squeryl, but I was able to write my own. Overall I've been very happy with the combination, and I plan to use it on my next project.
- papsosouid 14y agoYes. We wrote a webapp in PHP. It has actual paying customers, and handles billing and invoices for real money. As is so common with PHP projects, as we needed to keep adding features, changing functionality, etc it got difficult to maintain, and hard to make changes without adding bugs. So, we re-wrote it in scala using lift. We were not pleased with the results. So we re-wrote it in scala using play. We were even less pleased. So we re-wrote it in haskell using snap. We were finally happy. That version is now in production, and the type safety of haskell makes doing changes far safer. The maintenance burden is much smaller now.
- happywolf 14y agoThanks for sharing. Could you elaborate why you were not pleased with the previous experience with Scala? The project was hard to maintain? Or it couldn't take heavy hitting of requests? Or it has limitation for multi-programmers kind of work?
- papsosouid 14y agoScala wasn't really the problem, lift and play were. Scala is fine, although it did feel like using an ugly crippled haskell at times. Lift and play both presented us with a bad combination of being both immature (which means lots of missing functionality) and opinionated (which means forcing you to do things their half-finished, not really working way). We ended up using snap in haskell which is just as immature, but because it isn't opinionated, it is easy to fill in the missing bits however you please,
- ericssmith 14y agoOur company uses both Scala and Haskell for revenue-producing projects. There's a lot that goes into choosing a language for such projects. I think it's fair to say that Scala is not really a beginner friendly language, nor do I think it is meant to be. Odersky's Coursera course is pretty heavily inspired by SICP (see 'Scala by Example' for an earlier manifestation of this material). And SICP was definitely designed to be used as an intro to programming. But as anyone who has gone through SICP can attest, it's probably not the best choice for a lot of people. But the Coursera Scala course is good in much the same way that SICP is. It is deep and well designed. Just not for everyone. Haskell has relatively simple syntax and coherent semantics (being unencumbered by a 'foreign' VM eco-system, such as the JVM). As such, it is somewhat easier to get into. But to quote Gerry Sussman (co-author of SICP and Scheme), 'Haskell is the most advanced of the obsolete languages'. It gets deep pretty fast. You don't learn Haskell, so much as get initiated into it. It's an ongoing process. This can be said of Scala as well. Neither are particularly small languages when you consider their entire respective eco-systems. In general, if you are already competent in a mainstream, dynamic language, and want to get your feet wet in functional language concepts, diving into Haskell is not a bad idea; but you are not likely to stick with it. I would recommend Clojure for such people. However, if you are already a Java programmer (and don't completely hate it), then the transition to Scala will be tough, but somewhat gradual. It is designed to be. But I would also say that the Scala world (not so much the language itself) is easier to grok if you know Haskell to at least an intermediate level. I think it is worth the time to learn Haskell and build something useful with it. It does not need to precede learning Scala, however.