Haskell is really an underrated super power for building backends and web apps. The ecosystem has improved quite a lot over the recent years. With the Haskell Language Server and the Haskell Plugin for VS Code there's now really nice editor support. The language itself is also improving at a good pace, e.g. the latest release of GHC (The haskell compiler) added support for dot-notation, so you can now write `someValue.someField` as you might know from other languages.<p>If you're curious about giving it a try and are doing web dev, check out IHP, haskell's largest web framework: <a href="https://ihp.digitallyinduced.com/" rel="nofollow">https://ihp.digitallyinduced.com/</a> (Disclaimer: I'm founder of the company that makes IHP)
Two non-surprises here:<p>> We currently have exactly two backend engineers. A single Haskell engineer can support a 2:3+:1 data:FE:BE developer ratio and still have free BE time.<p>1) That they have 1-2 Haskell developers.<p>2) That backend is very straightforward once you separate it from data engineering and frontend, because you don't have to deal with hardware or wetware (pesky "side effects") like those other poor sods. This applies to virtually any popular backend language.<p>Yet another confirmation that pure functional langs work great when its just one or two buddies working on a "pure programming" project, but evidence remains scant of their real world utility beyond that.
From <a href="https://www.costarastrology.com/jobs" rel="nofollow">https://www.costarastrology.com/jobs</a>:<p>> Every day, we generate millions of hyper-personalized horoscopes using rules-based natural language generation that combines state-of-the-art AI models like GPT-3 with the insights of staff poets. Co–Star is the first synthetic text to be called wildly beautiful, brutally honest, or comparable to therapy.<p>So their horoscopes are largely auto-generated, and aren't even written by humans with knowledge of astrology? This seems like something you would only do if you knew astrology was a scam, and therefore that no real expertise was needed to engage in it. Makes you wonder...
The fact that there are only two backend developers seems like a big asterisk to me. It's admirable how productive their backend team has been, but tiny teams are often surprisingly productive. Communication costs and distributed decision-making often slow development a lot.<p>What I'm wondering, as someone who doesn't know Haskell, is how well will it work if the team needs to scale? Will they be able to find quality engineers? Will those new engineers be able to easily pick up the pieces if one of the two engineers leaves unexpectedly?<p>I certainly am biased here, but pure functional programming has always seemed unnecessarily abstract and constricted for the purposes of most applications. The communication of function and purpose to other engineers is an important responsibility of code. Using long sequences of poorly-labeled, nested arrow function returns is great fun until you have the task of deciphering someone else's.<p>To be clear, I am not suggesting all Haskell code is poorly-written or hard to understand. But writing clear code is not a priority for a lot of engineers, and in my experience, functional programming can lead to especially opaque codebases.
I appreciate and agree with the attitude/approach here.<p>I suspect the author may be a bit removed from modern python, as the community is increasingly taking a similar stance. Python is not Haskell, but Python in 2021 with tools like type-hints, mypy, (frozen)dataclasses, Pydantic, etc. is trying to address at least the latter two points here (type-driven & illegal-states-unrepresentable). I'm not aware of ways to enforce function purity in python (do any linters complain about input modification or out-of-scope references?), but I try to make functions as pure as possible regardless of language or domain anyways.<p>I don't mean this as a flamewar, Haskell seems like the right choice for OP. I love how a language like python is making more of these benefits available to a wider audience and I wish more folks embraced these recent advances.
Astrology seems like such a strange thing for a Haskell developer to be spending her time on. I wouldn't think twice about it if the back-end was written in Python, but I just find it strange that she's sharp enough to be a Haskell pioneer, but still thinks the positions of stars influences what approach you should take in a relationship.
Haskell: recommended by the insight of human astrologers.<p>There’s a poetry in the merging of two new-age religions stemming from different communities. Unfortunately I’m an atheist, and so are most of us here I’d imagine.
I see a lot of python and js/node as basis of comparison against Haskell which seems really odd.<p>I would be comparing Haskell more to Scala/Elixir/etc if you're trying to make an argument for Haskell.
Sh*t... the horoscope I've been using all these years doesn't have functional correctness. So THAT's why I've made all the wrong decisions in my career and love life.
Very interesting and well thought out write up on a high level. Shame on me for being surprised at the technical clarity of an astrology app I suppose. On a lower level, I’m interested in how they balance the purity of Haskell with the necessity of a server actually persisting state and dealing with IO.
I see astrology as basically "folk data science". You make observations and try to find correlations (not causation, though some ancient literature does attempt to explain it). One simple one is Mercury goes into retrograde motion and takes down Meta with it.<p>You can model intrapersonal dynamics (basically found by looking at findings between positions of transiting bodies and those of the natal chart, namely the positions calculated at the time/place of the individual's birth). For example the current position of Jupiter (which symbolizes growth/expansion) is now conjunct an individual's natal midheaven (represents career/how you are seen in society) and all of a sudden this person is being recognized in a very positive way by their community or workplace.<p>You can also model the interpersonal dynamics, found by looking at the effects of just the transiting planets alone, say transiting Mars conjuncts the North Lunar Node or Pluto and all of a sudden you have these really violent transformational events that erupt. Maybe mass shootings, natural disasters etc.<p>The other interesting thing about astrology is it stands to unify many disparate concepts together. For example Jupiter is at the same time connected to the liver, to growth, to happiness, to biology, etc. if I recall correctly. Where else could you find this idea of unifying together seemingly unrelated things into the notion of a planetary symbol.<p>One thing I find sorely lacking is the complete lack of any statistical rigor applied to the predictions/indications given by astrological readings.<p>I do find it fascinating that co-star is throwing technology and data science to the problem. It may not be far off to see them publishing findings that actually meet the level of rigor to at least show statistically significant correlations. I don't practice or believe these things personally, but my ancestors used to try to help their communities understand their problems better using tools like ancient Indian astrology.
I am interested in functional programming. Without a CS background I was wondering, if Haskell can provide these guarantees, why is it not more adopted?<p>If, on an enterprise scale, you can avoid the majority of bugs, would that not be a clear win?
The writeup appears to be about as well-founded as the domain.<p>"Increased abstraction means that you can write things much quicker and more simply than in another language."<p>Except for any other kind of higher level language.<p>> [Haskell is much more bullet-proof than] IF NATALPLANET == “MARS”<p>As is any other non-stringly-typed language, so everything other than Tcl. And even Tcl is misunderstood, it's actually pretty awesome for its intended purpose. And of course you can write stringly typed code in Haskell just as much as you can in any other language.<p>and so on.
I came across this interesting post touching on Haskell just recently:<p><a href="https://www.drmaciver.com/2015/04/on-haskell-ruby-and-cards-against-humanity/" rel="nofollow">https://www.drmaciver.com/2015/04/on-haskell-ruby-and-cards-...</a>
Forgive me if I don’t want to read anything written by someone making an <i>astrology</i> product. I may be open-minded, but I have limits where it comes to people who I <i>know</i> are trying to influence me into believing stupid false things to their benefit.<p>I mean, if they’re fine with claiming that astrology is real to enrich themselves, why should I believe anything else they say?
Off topic!<p>I'm really curious about how hners think/feel about astrology. Do you "believe" in it or does it help in any meaningful way?<p>I grew up thinking these kind of things are for the "uneducated" but I'm surprised by how many smart people I meet nowadays who really care about this stuff. So, I'm really curious!