This is an echo chamber. What you hear here is not indicative of real world relevance.
HN user
SomeOtherGuy
>Take advantage of all that extra time
There is no extra time. You just moved time at night to time in the morning. You can take advantage of that time regardless of whether it is in the morning or the evening.
>Most languages can help you avoid using the wrong one through the use of variable names.
That doesn't help at all, are you serious? Cause you genuinely sound like you are trolling. Especially when you say things like "if a language can't prevent every possible bug then there's no poing having it prevent any bugs".
>Erlang is interpreted
No it isn't, it is compiled to bytecode and executed on a virtual machine, just like most scripting languages are.
>Since this is not about a simple CGI application a benchmark in which you compare the running time of a compiled executable with the interpretation and running time a another program it doesn't make a lot of sense.
Read the site, this concern is explicitly addressed. The tests are long running, not short tests repeated a million times. So the byte code compilation step ends up too small to notice. That is why using a PHP bytecode caching plugin doesn't increase PHP's performance on the shootout, and why java isn't dead last from the massive startup time of the JVM.
>Also this performance usually isn't the best way to argument about languages for web applications
This is a myth. Very few web applications actually have one CPU intensive portion that can be moved out into a C module. Most web apps have pretty flat profiles, where overall language speedups make the biggest difference. When 90% of your time is spent in 10% of the code, a C module is a reasonable option. When 90% of your time is spent in 90% of your code, your only option is a faster language.
I can try. Basically it is a PHP framework written in ruby. It has a really poor API that makes for very error prone coding. It completely fucked up the entire MVC architecture, creating a big fat controller layer that contains logic that belongs in the model. This makes it impossible to re-use code as much as it should, and makes unit testing much harder as there's too many inter-dependencies. And monkey-patching is the norm with rails, which causes all sorts of bugs. Monkey-patching is basically changing the API of existing classes, so then other libraries you might use break because the API they are expecting from the ruby library has changed on them.
The model side of things is certainly my biggest complaint. The other things are minor in comparison, but still annoying. I like the architecture of lift, just not some of the details of the implementation.
I don't like the way templates are forced to use snippets to load data, in particular as it results in snippets being dependent on the database, and thus not suitable for unit testing. The framework should be pulling the data into the view, which then passes it as an argument to the snippet to do whatever transformation on it. That way snippets are entirely self-contained and easy to unit-test. This is the sort of thing that I think would have ended up the way I want had it been written in haskell instead of scala just because writing small, self-contained functions is the typical haskell way of doing things.
I hate the very opinionated nature of the form handling, and the even more opinionated responses from the developers to questions like "how can I make a form that works normally and doesn't require a session". People are not bad for wanting forms to behave normally, and the "security" show the lift devs put on to justify the form handling in lift is insulting.
While I find templates acceptable, they are seriously missing out on type safety. I should get a compiler error if I create a template with invalid html. Ocsigen got this part very right (an ocaml framework/appserver). Not only do I not get this benefit for my markup, but lift itself generates invalid html on me when using virtually any of the included form generation methods. Very annoying.
Ideally what I want is a framework that gives me the type safety of yesod, but with the structure of lift. I hate faux-mvc web frameworks and find they make things more difficult rather than making things easier, and unfortunately yesod copies the typical rails clone structure. Lift doesn't make the mistake of trying to hide http from me, and gives me the simple and correct mapping of template to url, leaves the domain model in the model instead of cramming it into "controllers" that shouldn't be involved.
Yes. Scala lets you bypass the compile time type safety pretty easily, and as a result tons of libraries do precisely that. Take squeryl for example, it advertises itself as a type safe DSL for querying databases, but virtually anything you throw at it will compile, and then results in run-time exceptions.
>For complex template rendering/delivery, Erlang will probably beat anything out there because of Erlang's intelligent use of immutable data and I/O lists.
What templating engine are you talking about? I'd assume ErlyDTL for obvious reasons, but it is certainly not beating "anything out there". Are you just comparing it to scripting languages or what?
I'm not a huge fan of lift, but the portion of it I am ok with (the templates/snippets side of things) is fairly similar to how you use snap. It may be worth it to work on helping to finish snap (or forking it if need be) rather than starting from scratch. Snap currently provides nothing for database access, so you have a blank slate there to copy mapper or record from lift (but those both suck horribly!).
Ah, yes we weren't looking for functional languages specifically, just languages with expressive type systems. As far as I know, the only languages with expressive type systems are also functional so we end up with a functional language as a consequence of that requirement, not due to actively seeking a functional language.
We use scala in a pretty functional way, but most of the gains there come in the processing/displaying side rather than the model. Just because that portion lends itself to a functional style of applying chains of functions on data to transform it.
>Is anyone here using haskell or a similar funtional language for any web app?
Yes.
>Would be interested in known your experiences and opinion compared to something like django or rails.
Rails is an abomination, so pretty much anything would be better than that. We rolled our own framework in scala. Despite initial resistance from some dynamic language proponents here, it is now the only thing anyone here will use for web development. Even the python fan won't touch django now.
>How difficult is it to build something with a complex domain model?
Easier than in dynamic languages. The problem with complex models is that humans can't hold all that information in their heads. Static typing lets us offload a bunch of important information to the compiler and have it error check for us as we go. Our biggest issue has been that scala isn't strong enough, I'd much prefer to be using haskell.
>I think there's a very real danger you guys aren't hearing stuff like this because who in their right mind would tell you and who would you listen to?
Tons of people have told him he's a pompous blowhard. The problem is that the answer to the second half of your question is "nobody". Paul's ego does not allow him to listen to anyone. "I was lucky once" is his standard reply to any form of criticism or questioning of his "wisdom".
You seriously think repeating conspiracy theory bullshit magically turns it into fact?
So how does that support your initial reaction at all? Comics aren't NSFW just because you work in a shithole. Tons of things get posted here that aren't related to software development, you think they should all be tagged as NSFW?
If it is their New Coke, then what you mean is they can roll it back to something exactly the same, and then have conspiracy nuts repeat nonsense claims that it is different now. New Coke was not a way to distract people while they changed the recipe of classic, classic didn't change.
So, you missed the domain, and were subject to the horrors of people discussing comics? Why exactly do we need to protect you from this terrible fate?
>"I'll bite" == "I'll take the bait".
Which indicates that your mentality is "anyone who says anything is better than freebsd for any purpose must be trolling". That sort of rabid fanboyism doesn't make for productive conversation.
FreeBSD includes a very old, partial port of PF. Even CARP which is very simple is missing functionality in FreeBSD. And as I already mentioned, bgpd is fully integrated with PF and routing domains in openbsd, it isn't in free (which doesn't have routing domains).
>I'm just amused by your comment given that FreeBSD's network stack has vastly superior performance and support for far more 10GbE interfaces.
Did you have some data to support that claim? I've seen no such benchmarks, and the only 10gbe driver freebsd has that net/open haven't pulled in that you can actually purchase hardware for is broadcom, which is broken and can't even do 1gb in reality. All 4 BSDs pull in hardware drivers from each other all the time. The great thing about the BSD license is that when one project does some great work, everybody else catches up quickly. :-)
I don't know what you are biting or why, but your question makes no sense. I didn't say anything was wrong with FreeBSD, I simply pointed out that networking is one of OpenBSD's primary focuses, and as such it offers much more. OpenBSD's firewalling and routing support is miles ahead of FreeBSDs. FreeBSD isn't the best at everything, just as no other OS is.
OpenBSD wrote the best BGP daemon around, the best firewall around, both of which integrate nicely together and with routing domains to allow perfectly fine-grained control of complex routing scenarios, created CARP for address redundancy ala VRRP but sans patent mines, had the very first IPSec implementation, etc, etc, etc. OpenBSD is used almost exclusively for routers, firewalls, VPN gateways, etc. You shouldn't take it as a personal insult that it excels in those roles.
>get the data model benefits of a NoSQL database [1] without sacrificing the mature Postgres internals.
They already have that: http://www.postgresql.org/docs/9.1/static/hstore.html
>I do know that FreeBSD's handling of network activity appears to be second to none
It is certainly second to OpenBSD. Probably third behind NetBSD even.
>These patterns are mostly borrowed from BSD family and Gentoo Linux.
No. Stop blaming your horrible distros on BSDs. All the BSDs provide binary packages and encourage users to use them. Typing "make install" and watching the build script compile and package an identical binary package as the one on the public FTP servers is not learning anything, and does not make your system "advanced". Exposing the package build system to users lets them build custom packages when needed. It makes absolutely no sense to then say "we won't provide any binary packages for you" and force everyone to always compile everything themselves.
>considering that many of us look to 37signals as essentially the poster boy of leading behaviors
Hopefully you guys learn from your mistake.
I'm not a java programmer. Just to help you out for the future since you seem a bit confused:
pomp·ous/ˈpämpəs/Adjective:
Affectedly and irritatingly grand, solemn, or self-important: "a pompous ass".>It's tempting to be dismissive of modern development practices (TDD, for example) using the argument that a lot of great software was written before it existed.
It is even more tempting to be dismissive because there is no evidence to support the notion than TDD is in any way helpful, and there is evidence that suggests it does not help at all.
>It's a near certainty that a bash interpreter will be available on a Unix system
Someone confused "linux" and "unix". Linux systems almost certainly have bash installed. BSDs and commercial unixes don't.
Only FreeBSD. OpenBSD and NetBSD aren't that fucked up.
>I cringe now when I write PHP
Duh. Every single real language (not deliberately painful languages like brainfuck) makes PHP look terrible in comparison. That says nothing about objective C other than "it is not the worst language ever made".
>I'm not convinced that I would be more productive developing say a web app , database app or game using say Haskell rather than Java or Python
Have you tried? Why do you think your baseless assumptions are interesting?
No it isn't, that's the point. It is easier to find any programmer. It is not easier to find a good programmer. 99% of java programmers are bad. 50% of scala programmers are bad. Finding the 1% of good java programmers is just as hard as finding the 50% of good scala programmers.
So, a guy tries to solve a hard problem by using very powerful but very complex features that 99.9999999% of scala devs would never touch, and you take that as a reason to avoid scala? And then you come here to tell everyone how absurd your decision making process is?