[HN Gopher] Why Co-Star Uses Haskell
___________________________________________________________________
 
Why Co-Star Uses Haskell
 
Author : _query
Score  : 101 points
Date   : 2021-11-05 14:30 UTC (8 hours ago)
 
web link (www.costarastrology.com)
w3m dump (www.costarastrology.com)
 
| platz wrote:
| A fairly low quality article, imho.
| 
| The points listed could almost as easily apply to Java or C#
 
  | cryptonector wrote:
  | The points listed cannot "as easily apply to Java", and,
  | really, not to C# either. You really need a functional language
  | to meet the "requirements" listed, which are -from TFA, almost
  | at the top-:
  | 
  | > Why? Three reasons: > Functions in the mathematical sense. >
  | > No statements, no instructions, just expressions that don't
  | ever mutate. Everything returns something. You don't mutate by
  | default. > Type-driven programming. > > Start thinking
  | generally, in broad concepts, about what kinds of info you're
  | dealing with - the inputs, the outputs, the steps - and then
  | work down to implementation. Start in the center w/ a little
  | implementation and work your way out. Haskell makes illegal
  | states unrepresentable. > > You can't do the wrong thing with
  | this data because this data can't handle that, it just doesn't
  | accept that kind of thing.
 
  | dgb23 wrote:
  | Is this the "you can write this in X by implementing a compiler
  | for Y"-joke? Or genuine? If so, I find it unfair.
  | 
  | Even at the most fundamental level, the mishmash of
  | statement/expression syntax in those languages makes it
  | cumbersome at best to compose functions and expressions in the
  | style of an FP language. And the more you venture into
  | conceptual things like values and functions you're fighting
  | those languages left and right to achieve the same _basic_
  | semantics.
  | 
  | I'm neither pro nor contra static typing in general and I don't
  | really know Haskell, but I think it would be obvious that Java
  | and C# don't have the same sophistication, inference and
  | expressiveness on the type level as Haskell. When they say
  | "make illegal states unrepresentable" they don't mean "write a
  | bunch of defensive runtime checks".
  | 
  | Not to bash on Java/C#, they are powerful and very useful. But
  | the type of specific benefits the article talks about are not a
  | given or even practical in those.
 
    | gavinray wrote:
    | I used to think that same thing
    | 
    | I recently found a very smart fellow who has been writing
    | translations of a small Scala "expression interpreter" with
    | monads and what.
    | 
    | But in Java. I kid you not.
    | 
    | He wrote it in JDK 8 Java (pretty far from Scala)
    | 
    | Then updated with JDK 15 features Java (getting closer)
    | 
    | I made a rough pass at JDK17 Java using records and ADTs
    | (sealed types) with pattern match "switch" and the net result
    | is an almost verbatim translation.
    | 
    | https://github.com/Randgalt/expressive-java/issues/1
    | 
    | There is one ugly line which JDK18 will fix, "destructuring
    | in pattern captures/match".
    | 
    | See "Deconstruction Patterns" at bottom of page here:
    | 
    | https://openjdk.java.net/jeps/405
 
      | zactato wrote:
      | I don't think that JEP is part of JDK18 yet.
 
  | bachmeier wrote:
  | > You don't mutate by default.
  | 
  | > makes illegal states unrepresentable
  | 
  | Maybe recent versions of Java are different, but I don't recall
  | either of those statements applying when I used Java.
 
    | twic wrote:
    | Java doesn't force you to do either of those, but it allows
    | it, and doing so has been standard programming advice in Java
    | for at least a decade.
    | 
    | See item 13, "Favor immutability", in Effective Java, the
    | bible of Java programming, published in 2001:
    | 
    | https://www.pascal-man.com/navigation/faq-java-
    | browser/java-...
    | 
    | I can't find a concrete citation for "makes illegal states
    | unrepresentable" (does anyone know the history of this
    | phrase?), but it was certainly part of conversations i was
    | having in 2012.
 
      | bachmeier wrote:
      | > Java doesn't force you to do either of those, but it
      | allows it, and doing so has been standard programming
      | advice in Java for at least a decade.
      | 
      | "You can do that" and "enforced by the compiler by default"
      | are pretty different.
 
      | marshray wrote:
      | "Make illegal states unrepresentable" is usually attributed
      | to Yaron Minsky of Jane Street.
      | 
      | This video shows it at 28:02.
      | https://blog.janestreet.com/effective-ml-video/
      | https://www.youtube.com/watch?v=-J8YyfrSwTk
 
    | odyssey7 wrote:
    | The whole idea of OOP is you have mutable data coupled with
    | the methods that mutate it.
 
      | cryptonector wrote:
      | You can do immutable data structures with OOP. The problem
      | is that you can also do mutation.
 
        | zdragnar wrote:
        | Compilers / runtimes for most OOP languages don't really
        | put the same level of optimization into operations with
        | immutable structures as they do with mutable ones,
        | because the mutable paradigm is largely how the languages
        | are (intended to be) used.
        | 
        | There are exceptions, of course, but you are leaving a
        | lot on the table when you try to shoehorn one into the
        | other.
 
| canjobear wrote:
| The biggest advantage of running a Haskell shop is probably that
| it imposes a strong intelligence filter on the devs you hire.
 
  | IshKebab wrote:
  | I agree. Two out of the three things listed here you can easily
  | do with Typescript. But good luck getting web developers to not
  | just use strings for everything.
 
  | teddyh wrote:
  | The fact that the product is an astrology product will also
  | impose some kind of filter on the people who choose to work
  | there.
 
    | twic wrote:
    | Maybe that's why they could only hire Haskell devs.
 
| _query wrote:
| 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.
| 
| If you're curious about giving it a try and are doing web dev,
| check out IHP, haskell's largest web framework:
| https://ihp.digitallyinduced.com/ (Disclaimer: I'm founder of the
| company that makes IHP)
 
  | toomanydoubts wrote:
  | I've been getting lots of ads about IHP on reddit lately. The
  | ads are really bad, which led me to believe IHP would be of
  | equally bad quality, but looking at IHP homepage now I'll just
  | have to try it out sometime. Now, I have some questions. As a
  | user, why should I use IHP instead of Yesod or Servant? Can I
  | create rest and especially graphql apis or is it more focused
  | on building old-school server side rendered pages?
 
    | _query wrote:
    | Thanks for the feedback on the ads! We've been experimenting
    | a lot with different ad formats recently. I'll make sure this
    | is fixed. (Update: Fixed now, thanks again for the honest
    | feedback)
    | 
    | In a comparison between IHP and Yesod I think that IHP is
    | designed for people that have only very little to no haskell
    | experience. IHP brings a lot of conventions and code
    | generators to get you up and running very quickly, while
    | Yesod gives you more flexibility (flexibility might be more
    | challenging when you're just starting out with haskell. E.g.
    | what DB library do you want to pick? In Yesod you have many
    | options, in IHP we'll provide one out of the box). Check out
    | the IHP documentation and compare it to the Yesod docs,
    | you'll quickly see the difference :) Also if you want to
    | check out some reviews of people already using IHP, you can
    | find a few longer ones on our G2 page
    | https://www.g2.com/products/ihp/reviews
    | 
    | > Can I create rest and especially graphql apis or is it more
    | focused on building old-school server side rendered pages?
    | 
    | At the start IHP was focussed a lot on server-side rendering.
    | Now you can also use it for building REST APIs. GraphQL is
    | not yet supported, but it's coming in the future.
    | 
    | We're also right now working on a generic REST API layer with
    | a bundled JS SDK. It will allow you to query your database,
    | create and delete models and keep everything in sync with a
    | realtime sync engine.
    | 
    | Here's a JS code example:                       const tasks =
    | await query('tasks')                 .orderBy('createdAt')
    | .fetch()
    | 
    | On the backend we use Postgres Row-level-security Policies to
    | make sure that a user can only access his own data.
    | 
    | Here's a demo react component that uses the new JS APIs:
    | https://github.com/digitallyinduced/ihp-datasync-
    | demo/blob/m...
    | 
    | Docs are still in progress, but here's a draft https://github
    | .com/digitallyinduced/ihp/commit/39baa4aa23cc6... :)
 
    | kodefant wrote:
    | To me, IHP provides so many great features for making type-
    | safe robust web apps, I have forgotten about GraphQL.
 
  | ramesh31 wrote:
  | >If you're curious about giving it a try and are doing web dev,
  | check out IHP, haskell's largest web framework:
  | https://ihp.digitallyinduced.com/ (Disclaimer: I'm founder of
  | the company that makes IHP)
  | 
  | Something ironic about getting a 502 from your domain right now
 
    | _query wrote:
    | Haha yes :) Sorry, the IHP website is hosted via
    | https://ihpcloud.com/ (like Heroku but for IHP) and the
    | system just crashed because of too much activity (unrelated
    | to the HN traffic, mostly too many deployments at the same
    | time). We're about to roll out a new more stable system in
    | the next days that fixes the root cause of the downtime
    | today.
 
  | pmarreck wrote:
  | IHP looks like an impressive work, I'm seeing a lot of the
  | kinds of things that drew me from Ruby/Rails to Elixir/Phoenix
  | here, and all of those things are good... plus I love how the
  | type safety is basically all implicit now, which seems like the
  | best of both worlds- ruling out additional classes of bugs but
  | without needing to be explicitly verbose all the time about
  | types.
  | 
  | Quick question - when you change the schema def, does it
  | generate a schema diff automatically and run that? What if you
  | have to do some more complex things like add triggers or stored
  | procs (such as might be necessary if you use Postgres' fulltext
  | search features, which I am wont to do)?
  | 
  | Second question- Is there something I could read to catch up
  | with what's happened to the Haskell language over the last 5-10
  | years or so, since I looked at it last?
 
| quantified wrote:
| Something lovely here about leveraging formal correctness for
| delivering astrology.
 
  | abeppu wrote:
  | On their front page:
  | 
  | > Most horoscopes ask what month you were born. Co-Star asks
  | what minute.
  | 
  | > Access to astrology this accurate has historically been
  | restricted to those with access to personal astrologers--now
  | these predictions can be anyone's.
  | 
  | I mean, anyone can _ask_ what minute you were born. But what on
  | earth can "accurate" mean in this context? I'm sure there's
  | some modern tech we can use to measure your skull with great
  | precision and detail, but I'm guessing that doesn't improve the
  | predictions of phrenology.
 
  | plafl wrote:
  | If it compiles your predictions are bug free
 
  | pxc wrote:
  | Mathematically-inclined people surviving by calculating
  | outstandingly accurate and precise charts for producing
  | superstitious bullshit is an ancient tradition
 
    | 3maj wrote:
    | The Day trading quant gets _cold sweats_ as he reads this.
 
      | pxc wrote:
      | this made me laugh out loud in public
 
    | uptownfunk wrote:
    | Perhaps you are referring to the traditional sun-sign
    | astrology found in tabloids/magazines? There are claims that
    | you can get much more precise by looking at ascendant-based
    | astrology which varies down to the minute and lat/long of the
    | place you were born. Or are you referring to both? Are there
    | sources out there in the literature proving/disproving modern
    | Astrology? There is this article on Gauquelin's Mars effect
    | for instance - https://en.wikipedia.org/wiki/Mars_effect
 
    | dudeinjapan wrote:
    | One of my favorites is Jantar Mantar
    | https://en.wikipedia.org/wiki/Jantar_Mantar
 
| pphysch wrote:
| Two non-surprises here:
| 
| > 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.
| 
| 1) That they have 1-2 Haskell developers.
| 
| 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.
| 
| 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.
 
  | avgcorrection wrote:
  | First they said that functional programming is only used for
  | toy/proof of concept/academic things. And that's fine, to the
  | extent that that is true. There is a sort of real
  | world/academenia dichotomy.
  | 
  | But now you're deriding functional programming because it is
  | used on... a regular old boring backend. Used to power a non-
  | FP-related domain (to dismiss the "I used FP to implement
  | another FP language" critique...). On an ostensibly real-world
  | application. And you contrast this backend with "real world
  | utility"...
  | 
  | This is quite confusing.
 
  | tadfisher wrote:
  | > 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.
  | 
  | We (Mercury) have 60 backend engineers working on a monolithic
  | Haskell backend. So at least there is one counterpoint to your
  | hypothesis.
 
    | pphysch wrote:
    | What does your onboarding process look like for Haskell
    | engineers? Ballpark time-to-first-master-commit for new
    | hires?
 
      | DesertVarnish wrote:
      | I'm another Mercury employee. When I joined there wasn't
      | much of a specific onboarding process at all, beyond being
      | given a few simple tickets to work on and pointed to some
      | documentation.
      | 
      | I had written a very small amount of Haskell before, but
      | IIRC correctly I think I made my first commit only a few
      | weeks after joining. In general even people without an
      | existing strong FP background seemed to become productive
      | pretty quickly.
 
  | mjh2539 wrote:
  | > 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
  | utility beyond that.
  | 
  | Evidence is abundant if you look for it. FB, Microsoft, and
  | Standard Chartered all have active internal haskell projects.
 
    | taeric wrote:
    | Like all evidence, it is actually easy to find both sides.
    | Notably, I have yet to come across a project in clojure,
    | Haskel, or scala that wasn't abandoned as soon as the major
    | advocate for that language left the group.
    | 
    | Sad in the cases where it was a well done project.
    | Frustrating when it was bursting at the seams.
 
      | whateveracct wrote:
      | The main reason for that phenomenon is it's more personally
      | advantageous to rewrite than to learn Haskell and extend
      | what's there.
      | 
      | Haskell advocate quits? Blame them for selfishly using a
      | toy language (they're gone anyways - who is gonna
      | disagree?), and save the day by spending a long time
      | reimplementing an MVP subset of what they already did.
      | Congrats - you're a hero! The end product has less
      | functionality, but at least you didn't have to do something
      | actually hard like learn Haskell and work with Someone
      | Else's Code.
      | 
      | I've seen this happen multiple times. For shame - and yes
      | people did get promotions for it. Pathetic.
 
        | ramesh31 wrote:
        | >The end product has less functionality, but at least you
        | didn't have to do something actually hard like learn
        | Haskell and work with Someone Else's Code.
        | 
        | But did the _business_ need all of that functionality?
        | Rewriting a subset of an application that is far more
        | maintainable and cost effective in the long run can be a
        | huge win. I am currently rebuilding an application full
        | of intractable bugs and proprietary DSLs that was
        | implemented in Salesforce with lots of bells and whistles
        | that nobody wants or needs to be a simple Golang /Mysql
        | app hosted on AWS. Yes, it is a tiny subset of the
        | current functionality. But it solves the business case
        | and will save millions of dollars per year in Salesforce
        | fees while simultaneously making the user experience an
        | order of magnitude simpler and allowing faster
        | onboarding.
        | 
        | Engineers allowed to run free can often times spend an
        | inordinate amount of time building things out that no one
        | really asked for. Your Haskell backend was probably a
        | thing of pure beauty from a programmers point of view.
        | But an expensive liability to the business.
 
        | whateveracct wrote:
        | > But did the business need all of that functionality?
        | Rewriting a subset of an application that is far more
        | maintainable and cost effective in the long run can be a
        | huge win.
        | 
        | It was needed enough that the rewrite (which was slow)
        | had to delay release and the legacy software had to be
        | kept alive well past its sunset date (and plenty of
        | people jetted by then.) Because the business had to keep
        | the lights on!
        | 
        | The missing functionality at least was said to be missed
        | by the business folks who made use of it. "If only we had
        | feature X" definitely was said.
        | 
        | There wasn't anything too beautiful about the Haskell. It
        | was mostly systems work. But incrementally evolving and
        | improving would've definitely be cheaper long term than a
        | rewrite .. but it does require people to learn Haskell,
        | which seems to be a nonstarter for many. If people don't
        | wanna, they don't wanna.
 
        | taeric wrote:
        | That would be the sad case. I have also seen the case
        | where the code was impenetrable and did not at all lend
        | itself to extension.
 
      | Barrin92 wrote:
      | I'm pretty sure Nubank has for years and continues to rely
      | heavily on Clojure. (to the point where they acquired
      | Cognitect)
 
        | taeric wrote:
        | Right, I meant my point to be that you can find evidence
        | on both sides. Far as I can see, language is not a
        | predictor of success.
        | 
        | Having an advocate for a program is a predictor. That
        | advocate doesn't have to be a developer.
 
    | hota_mazi wrote:
    | I've always been fascinated by the fact that these claims are
    | always completely unfalsifiable.
    | 
    | "A lot of companies use this  in
    | internal projects but since it's internal, we can't show
    | you".
    | 
    | It reminds me of "I have a girlfriend but she goes to another
    | school".
 
      | mbesto wrote:
      | I've tech diligenced 200+ software companies and I've seen
      | Haskell twice and Clojure once. The two that were using
      | Haskell had to drop the project and rewrite because they
      | couldn't find enough developers.
      | 
      | I have zero problems with the technical capabilities of
      | functional programming languages, but it's simply not a
      | smart decision to use them in for profit businesses writing
      | CRUD apps. It simply doesn't make economic sense. When you
      | get to scale and need to write  then it
      | starts to make more sense.
 
      | mjh2539 wrote:
      | https://engineering.fb.com/2015/06/26/security/fighting-
      | spam...
      | 
      | https://www.reddit.com/r/haskell/comments/phooqo/haskell_ro
      | l... https://www.reddit.com/r/haskell/comments/oee437/job_a
      | d_seni... https://www.reddit.com/r/haskell/comments/nug8mw/
      | haskell_job... https://www.reddit.com/r/haskell/comments/nn
      | 11sm/haskell_job... https://www.reddit.com/r/haskell/commen
      | ts/n642ve/haskell_dev...
      | 
      | https://www.reddit.com/r/haskell/comments/8io3uk/job_work_o
      | n...
 
        | hota_mazi wrote:
        | So... an article from six years ago, and then a few open
        | job reqs.
 
        | twic wrote:
        | I've spoken to people who have been through that
        | department at Facebook, and they report the scale of use
        | of Haskell is wildly exaggerated.
 
      | bojo wrote:
      | I mean, what are those of us in this category supposed to
      | do?
      | 
      | For the last 5 years I have 7 developers that have been
      | working on internal applications in Haskell for an
      | enterprise company that I am not able to show you due to
      | legal reasons. We have a small open source library or two
      | out there, but they are not even remotely representative of
      | how deep our development iceberg really is.
 
      | [deleted]
 
    | pphysch wrote:
    | Do any of these projects have more than 1-2 active
    | maintainers?
 
      | bidirectional wrote:
      | None of them are individual projects, all of those
      | companies have several projects in Haskell. Standard
      | Chartered, for one, have their own custom implementation of
      | Haskell and it is used by dozens of developers across
      | different projects.
 
        | dllthomas wrote:
        | IIUC it's their own custom implementation of something a
        | lot like Haskell, with the compiler implemented in
        | Haskell.
 
        | samhh wrote:
        | It's called Mu. It's strict and has a few other quirks.
        | There are a few different teams using it for different
        | projects.
        | 
        | Source: Used to work there.
 
  | named-user wrote:
  | I think it's generational.
  | 
  | I believe we are limited by our own experience, a lot of
  | software is built upon the idea that problems are solved
  | through procedural steps rather than a series of
  | transformations.
  | 
  | This does not lend itself to thinking in a way that aligns
  | nicely with functional programming.
  | 
  | Future generations will naturally think in ways unfathomable to
  | you and I, and this will cause a shift in the fundamental
  | approaches to software development.
 
    | ritchiea wrote:
    | I think it's subjective. I learned Haskell early on in
    | university and I've learned Lisps and it still feels like
    | extra work to reason about programs or model domains in
    | functional languages.
    | 
    | I believe functional programming advocates when you guys say
    | it works better. But I only believe it works better for you.
    | In my experience there's a minority of people who find
    | functional programming to be a powerful paradigm shift but
    | for most developers functional programming either doesn't
    | resonate or resonates at the level of an academic exercise
    | that helps you think better about writing code but best
    | remains an academic exercise.
 
      | grumpyprole wrote:
      | It can be extra work to reason about the performance and
      | efficiency of functional programs, such is the case with
      | higher level languages. But modelling the domain is _far_
      | easier. I can solve difficult problems using Haskell, e.g.
      | writing a specialist DSL compiler targeting a GPU. I 'm
      | just not smart or patient enough to solve such problems in
      | C/C++ or Java, although I do concede that many can.
 
      | bcrosby95 wrote:
      | I broadly agree. I actually think most people are most at
      | home in the procedural domain, and most just write
      | procedural code in OOP languages. Which is hard to do in an
      | FP.
 
    | pphysch wrote:
    | Last time I checked, everything is still running on von
    | Neumann/Harvard CPUs. Did I miss a major revolution in
    | computing?
 
      | marcosdumay wrote:
      | Yes, nowadays we have those machines, called computers (or
      | automatic computers if you need the older name for
      | reference), that can take software made for one
      | architecture, no matter how unreal, and turn it into
      | software made for another architecture.
 
        | pphysch wrote:
        | Could you share a Haskell compiler that produces output
        | that can execute on a real non-von Neumann/Harvard
        | architecture?
 
      | gmfawcett wrote:
      | Forgive the tangent, but your comment reminded me of item
      | #52 on the venerable "Things to say when you're losing a
      | technical argument" list. :)
      | 
      | http://web.archive.org/web/20050131033632/http://www.skirsc
      | h...
 
        | pphysch wrote:
        | Yikes.
 
      | named-user wrote:
      | Yes
 
        | pphysch wrote:
        | Please elaborate.
 
        | mixedCase wrote:
        | Compilers.
 
        | pphysch wrote:
        | Which (Haskell) compilers that target actually-existing
        | hardware do not output _procedural_ bytecode?
 
        | mixedCase wrote:
        | That is the point.
 
  | whateveracct wrote:
  | Evidence does not remain scant. For instance - ever used
  | Starbucks Rewards? Congrats, you used Haskell software built by
  | more than "two buddies." Ever shop at Target? Congrats, the
  | inventory was likely in the store to fulfill your demand in
  | part thanks to Haskell software built by a team.
  | 
  | However, a large engineer org that brings in senior non-
  | Haskeller engineers/managers/leadership is bound to run into
  | political troubles imo. Those types tend to blame Haskell and
  | use it as an excuse for rewriting and re-orging - hence giving
  | them newfound power. This isn't FUD or a strawman. This is
  | observed behavior of many "respected" "old heads" I've had to
  | work with/for.
  | 
  | That's just my experience from 3 different companies lol :) You
  | can build software at any scale with Haskell - you just have to
  | actually like and want to use Haskell for its cultural and
  | technical benefits. Sadly, a complainer at the top of the org
  | chart who can't even read Haskell code can easily come in and
  | force Haskell out. That's just facts.
 
  | alexfrydl wrote:
  | Honestly my first thought when I saw the title "why we use
  | Haskell" was "because you have one engineer and they like
  | Haskell?" I suppose I was wrong. It was two.
 
| claytonjy wrote:
| I appreciate and agree with the attitude/approach here.
| 
| 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.
| 
| 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.
 
  | named-user wrote:
  | >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)
  | 
  | At some point you have to admit to yourself that it's the wrong
  | tool for the job, when is this going to be?
  | 
  | Dependency/environment management is poor as well given how
  | popular the language is. I believe it's popularity is similar
  | to that of PHP in the past; flooded with carefree users.
  | 
  | I would strongly advise against using python for anything other
  | than PoC/experimental endeavours.
  | 
  | It's a scripting language, and should be used as such.
 
    | gmfawcett wrote:
    | I don't know. I like Haskell, but practically I would still
    | choose a dynamic language "with benefits" over Haskell for BE
    | development. [1] For example, Python frameworks like FastAPI
    | can enforce type discipline at the system boundary, and
    | frankly it feels like a development sweet-spot. Rigour at the
    | API level, but fast-and-loose reasoning can proceed as normal
    | in the implementation.
    | 
    | It's a worse-is-better approach, to be sure, but it has a
    | very appealing effort:result ratio.
    | 
    | [1] with the normal caveats -- every project is different,
    | everybody's notion of a "backend" is different, etc. Haskell
    | might be the sanest solution to some backend challenges.
 
      | named-user wrote:
      | FastAPI is hard to contend with for anything marginally
      | complex, without having to dig deep in its internals.
      | 
      | If you want performance, or to apply more rigorous (read:
      | enterprisey) development practices, you really are better
      | off looking elsewhere.
      | 
      | However, you can get a Data Science python developer to
      | front their code behind an API with minimal ceremony.
      | 
      | Type safety does not exist in Python. Type hinting does not
      | solve this problem, neither does Pydantic. These are
      | bandaids for huge shortcomings of using the wrong tool for
      | the job.
 
        | mrtranscendence wrote:
        | Just continually _saying_ Python is the wrong tool for
        | the job doesn 't cut it. I've gotten a lot of mileage out
        | of type hints in Python and have caught my share of bugs
        | statically, so I disagree with your contention that it's
        | merely a "bandaid for huge shortcomings". It's a helpful
        | tool that serves a purpose.
        | 
        | You could pick at every tool, every language. What's
        | better than Python at (since you brought it up) data
        | science? Julia? That's hardly any more type safe, if
        | that's an issue for you. Haskell? Good luck getting non-
        | CS types to buy in to the restrictions, and good luck
        | porting everything you need. R? Slower than Python, even!
        | I mean, I dunno, if you have something in mind that's
        | better _in every way_ than Python then I 'd love to hear
        | it.
 
        | gmfawcett wrote:
        | Sure, but there's a continuum at play here. Haskell
        | leaves some correctness on the table, right? -- you
        | should be using Idris 2; or better yet, proving your API
        | in Coq and extracting the code. From some perspectives,
        | Haskell is the "worse" in "worse is better".
        | 
        | Personally I find python-is-wrong arguments to be a bit
        | naive. "It's a crappy language that's only good enough to
        | build prototypes..." -- like YouTube, for example? :)
        | Ultimately, smart developers are smart, and can get work
        | done with whatever tools they have at hand.
 
        | fiedzia wrote:
        | Take computer away from them and see how far they'll go.
        | 
        | Tools matter. However the community and ecosystem behind
        | Python makes it extremely hard to beat at many games.
 
        | gmfawcett wrote:
        | LOL, I agree that YouTube would be hard to build if you
        | only had a hammer and chisel. :P
 
      | claytonjy wrote:
      | I agree and I really like that way of framing it; I want
      | interfaces and contracts strong enough that I don't have to
      | care about the implementation.
 
    | claytonjy wrote:
    | I work in data science and engineering, so not using python
    | is not really an option. I'd love to use Julia and Rust
    | instead, but the ecosystems and users aren't there yet.
    | 
    | Python continues to earn its reputation as the second-best
    | option for most problems.
 
      | named-user wrote:
      | I agree absolutely.
      | 
      | It's always a matter of choosing the least worst solution
      | with Python, and additionally patching over shortcomings of
      | the language with afterthought-tooling.
 
      | CraigJPerry wrote:
      | >> Python continues to earn its reputation as the second-
      | best option for most problems
      | 
      | Never heard that line before but it resonates with me.
 
      | dunefox wrote:
      | > I'd love to use Julia and Rust instead, but the
      | ecosystems and users aren't there yet.
      | 
      | https://github.com/JuliaPy/PyCall.jl
      | https://github.com/JuliaInterop/RCall.jl
 
    | Orou wrote:
    | > I would strongly advise against using python for anything
    | other than PoC/experimental endeavours.
    | 
    | I agree with your points, but this seems to lean a bit too
    | far the other way. Yes, Python has plenty of limitations and
    | cases where there are better choices in programming language.
    | But saying that it shouldn't be used in real production
    | systems when there are so many examples of it being used
    | effectively for precisely that seems a bit hyperbolic, no?
    | It's like saying Javascript shouldn't be used in production.
 
      | romero-jk wrote:
      | At least JS can be 50X faster than Python and it has TS.
 
      | ModernMech wrote:
      | > It's like saying Javascript shouldn't be used in
      | production.
      | 
      | I mean... is that such an unreasonable point of view?
 
  | toomanydoubts wrote:
  | No matter how many type hints you put in your python code,
  | haskell type system is on another level altogether. I honestly
  | believe every developer should get to experience writing some
  | haskell code at some point in their lifes to really understand
  | what I'm talking about.
 
  | gen220 wrote:
  | > do any linters complain about input modification or out-of-
  | scope references?
  | 
  | I know Instagram was experimenting with something similar to
  | this a couple years ago ("Python strict modules").
  | 
  | It might be possible to implement function purity with a
  | decorator. (Kind of like declaring something "safe" in Rust).
  | 
  | Definitely agree that Python is becoming more amenable to
  | functional style programming over time. And it's great!
 
    | ianandrich wrote:
    | > It might be possible to implement function purity with a
    | decorator. (Kind of like declaring something "safe" in Rust).
    | 
    | Two parts to this. 1: Does it mutate variables. 2. Does the
    | code have side effects.
    | 
    | 1: def no_mut(func): @functools.wraps def new_func( _args,
    | *kwargs): new_args = tuple(copy.deepcopy(arg) for arg in
    | args) new_kwargs = {k, copy.deepcopy(v) for k, v in *kwargs
    | return func(_ new_args, *new_kwargs) return new_func
    | 
    | For the second point, gevent seemed to have a trick to
    | identify side effecting code.
 
  | 8589934591 wrote:
  | Are there examples of moving from Python to Haskell? Would love
  | to read and evaluate such options since I'm in dire need of
  | moving away from Python to a typed language and Haskell seems
  | like an interesting choice.
 
    | LeonidasXIV wrote:
    | Not from Python to Haskell but Thomas Leonard[1] has a very
    | nice series of blog posts about migrating 0install away from
    | Python to OCaml, of which many points also apply to Haskell
    | which he evaluated as a choice as well.
    | 
    | [1]: https://roscidus.com/blog/blog/2013/06/09/choosing-a-
    | python-...
 
| mpweiher wrote:
| The writeup appears to be about as well-founded as the domain.
| 
| "Increased abstraction means that you can write things much
| quicker and more simply than in another language."
| 
| Except for any other kind of higher level language.
| 
| > [Haskell is much more bullet-proof than] IF NATALPLANET ==
| "MARS"
| 
| 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.
| 
| and so on.
 
  | projektfu wrote:
  | Comparing to Python and Javascript, referencing an unused name
  | in source without reaching it in your execution path will not
  | cause an error.                  a=4        3+a        3+a or
  | 3+b
  | 
  | in a strongly-typed language, that would break compilation. So,
  | Java and C will not compile those, either, but the article
  | doesn't go into other cases where Haskell types are more useful
  | for preventing various errors, such as Data.Result, which can
  | either be a result of the type you expect or an error type, and
  | which the compiler requires you to handle both cases. I think
  | the write up would have benefited from some of the more
  | advanced cases like this.
 
    | mpweiher wrote:
    | This isn't due to static typing (you appear to be mixing up
    | strong vs. static typing).
    | 
    | This will also not compile in Smalltalk.
    | 
    | Nothing to do with static typing at all.
 
  | igouy wrote:
  | > [Haskell is much more bullet-proof than] IF NATALPLANET ==
  | "MARS"
  | 
  | And perhaps there might be something like a Python _Enum HOWTO_
  | 
  | https://docs.python.org/3.11/howto/enum.html
 
    | samhh wrote:
    | I'm not familiar with Python, but if those are traditional
    | enums and not sum types then you're missing out on a lot in
    | terms of domain modelling.
 
| amznbyebyebye wrote:
| 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.
| 
| 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.
| 
| 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.
| 
| 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.
| 
| One thing I find sorely lacking is the complete lack of any
| statistical rigor applied to the predictions/indications given by
| astrological readings.
| 
| 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.
 
  | brokencode wrote:
  | Personally, I think astrology today is just an easy way to make
  | money off of folks who don't know any better.
  | 
  | While it would surely be one of the most incredible scientific
  | discoveries in human history to prove that the normal motion of
  | objects in the solar system can somehow affect people's lives
  | through some unknown force, it is incredibly unlikely.
  | 
  | To claim otherwise and sell some kind of product or predictions
  | based on astrology is dishonest.
 
    | amznbyebyebye wrote:
    | On average literacy as to what astrology is in fact growing
    | not shrinking. This is in particular due to social media and
    | YouTubers who get into the nitty gritty details of birth time
    | based astrology.
    | 
    | You don't need to prove the causative relationship in many
    | cases. Look at modern ML where "why does this model predict
    | the outcome so well" is generally an open research question.
 
| ahmedfromtunis wrote:
| Off topic!
| 
| I'm really curious about how hners think/feel about astrology. Do
| you "believe" in it or does it help in any meaningful way?
| 
| 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!
 
  | oxfeed65261 wrote:
  | I think of astrology, like tarot, as a storytelling tool. For
  | myself, an astrology or tarot reading gives a narrative which I
  | can consider and possibly act upon. For flattering or welcome
  | aspects of the reading, do I actually manifest the desirable
  | characteristics? Could I be more like these aspects of the
  | reading? For unflattering/unwelcome aspects, the opposite.
  | 
  | Of course, this works just as well with a randomly shuffled
  | tarot deck, or with a random astrological reading (I don't
  | think that there is anything special about the astrological
  | reading which corresponds to my date of birth).
  | 
  | I haven't written fiction in a long time, but I also think it
  | might be interesting to use such readings to develop fictional
  | characters or plots.
 
  | _bohm wrote:
  | I place zero stock in it as far as decision making or
  | understanding myself/others goes, but it also doesn't really
  | make me angry in the way that it seems to for a lot of other
  | people. I think it's often quite fun to compare astrology
  | charts or ask someone their sign as an icebreaker when getting
  | to know them, etc.
 
    | whatshisface wrote:
    | People get mad about astrology because it's a clear cut case
    | of rational people abusing less rational people, like Q-anon.
 
      | _bohm wrote:
      | Is it that clear-cut? My impression is not that astrology
      | as a practice has a rigid hierarchical structure, nor that
      | the people disseminating horoscopes and the like do not
      | believe it themselves.
 
    | whimsicalism wrote:
    | I think it can be really damaging and there's a substantial
    | proportion of the population that actually believes it and
    | spends a substantial amount of time obsessing over it.
    | 
    | I hear the couple next door to me in SF get in shouting
    | matches through the wall about how she doesn't feel like he
    | takes her seriously because he doesn't believe in astrology,
    | about how there are some things that science doesn't
    | understand, etc. etc. And she's like a PM at Stripe or
    | something.
 
      | _bohm wrote:
      | I feel you, but at the end of the day I don't think
      | astrology as a belief system is any wackier or more harmful
      | than most mainstream religions. And my capacity for holding
      | a grudge against people for having beliefs that lack an
      | empirical basis is not very high.
 
        | bobthechef wrote:
        | > I don't think astrology as a belief system is any
        | wackier [...] than most mainstream religions.
        | 
        | Statements like these are problematic. Not only are there
        | meaningful differences between religions that make them
        | incommensurate in this context (e.g., a Catholic, while
        | acknowledging that some glimmers of greater or lesser
        | truth exist in all religions, will regard much of them as
        | erroneous and even superstitious), but it seems you
        | haven't done the philosophical due diligence here to make
        | a sensible comparison.
        | 
        | For example, we have no reason to suppose that the
        | relative positions of the planets has any effect on how
        | things pan out. And additionally, from a Catholic
        | perspective, not only is astrology generally taken to be
        | superstitious (on account of its irrationality), but the
        | impulse behind astrology is also taken to be evil. From
        | the Catechism of the Catholic Church:
        | 
        | "All forms of divination are to be rejected: recourse to
        | Satan or demons, conjuring up the dead or other practices
        | falsely supposed to 'unveil' the future. Consulting
        | horoscopes, _astrology_ , palm reading, interpretation of
        | omens and lots, the phenomena of clairvoyance, and
        | recourse to mediums all conceal a desire for power over
        | time, history, and, in the last analysis, other human
        | beings, as well as a wish to conciliate hidden powers.
        | They contradict the honor, respect, and loving fear that
        | we owe to God alone" (CCC 2116)[0].
        | 
        | (N.b. the catechism is not a defense of these beliefs. I
        | cite it only to show the Catholic position. Defenses can
        | be found elsewhere, as well as pedagogical treatments
        | like those in the Summa[1].)
        | 
        | The positions of the Church are rigorously defended over
        | at least two millennia, some before that where natural
        | theology and philosophy are concerned (the _existence_ of
        | God, for example, is knowable through unaided reason; the
        | divinity of Jesus, on the other hand, requires faith in
        | the sense that while the totality of evidence may be very
        | strong in favor of that belief, it is not fully deducible
        | in the way philosophical arguments for the existence of
        | God are). To compare astrology to that intellectual
        | tradition (I ignore here the petty superstitions
        | particular Catholics might entertain) is ludicrous.
        | 
        | And part of due diligence is also an understanding of
        | what constitutes an "empirical basis" and where and how
        | it is an appropriate to draw on empirical observation.
        | For example, does the claim "a belief P is reasonable if
        | and only if there is an empirical basis for it" itself
        | have an "empirical basis"? If so, in what way?
        | 
        | [0] https://www.vatican.va/archive/ENG0015/__P7E.HTM
        | 
        | [1] https://www.newadvent.org/summa/3092.htm
 
        | _bohm wrote:
        | The point of my comment really wasn't to denigrate
        | anyone's belief system or to prop up empirical basis as
        | an absolute standard for establishing the veracity or
        | value of a claim.
        | 
        | The parent commenter expressed concern that people
        | holding these unsubstantiated belief systems as truth was
        | inflicting real harm to society. My point was to say that
        | if this is a real concern, why are we singling out
        | astrology as a punching bag? Basically all major
        | religions entail beliefs which are unsubstantiated by
        | empirical evidence. Do we as individuals really have the
        | capacity harbor ill will towards anyone who chooses to
        | believe things outside what can be verified empirically?
        | I don't!
        | 
        | Your belief system may be incompatible with Astrology,
        | and it may possess a richer intellectual tradition than
        | Astrology, but this alone is insufficient to convince me
        | that the faith-based beliefs of one system are inherently
        | superior or more true than the other.
 
      | toqy wrote:
      | > there's a substantial proportion of the population that
      | actually believes it and spends a substantial amount of
      | time obsessing over it.
      | 
      | Is this actually substantiated?
 
| twic wrote:
| I came across this interesting post touching on Haskell just
| recently:
| 
| https://www.drmaciver.com/2015/04/on-haskell-ruby-and-cards-...
 
| AreYouSirius wrote:
| ASTROLOGY.............
 
| stefantalpalaru wrote:
| And you thought being associated with cryptocurrencies was bad
| :-)
 
| StefanWestfal wrote:
| 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?
| 
| If, on an enterprise scale, you can avoid the majority of bugs,
| would that not be a clear win?
 
  | dudul wrote:
  | It is hard to hire developers with Haskell XP since not a lot
  | of companies use it. And not a lot of companies use it because
  | it's hard to hire for.
  | 
  | This vicious cycle exists for a lot of very good languages.
 
  | dunefox wrote:
  | > why is it not more adopted?
  | 
  | "We use Java here. We have always used Java here and we will
  | always use Java here. We're a Java shop. No other languages
  | exist." My personal experience with companies.
  | 
  | > If, on an enterprise scale, you can avoid the majority of
  | bugs, would that not be a clear win?
  | 
  | Yes, but then you wouldn't be using Java.
 
    | nesarkvechnep wrote:
    | Yeah... the Java monoglots.
 
| [deleted]
 
| frozenport wrote:
| >> Co-Star is built by a small team of thirty.
| 
| LOL thats giant. How much does it cost to run the show? 30 x
| $100,000 for an astrology app?
 
  | bojo wrote:
  | I have strong feelings against astrology myself, yet I find it
  | frustrating _that_ is the HN takeaway here, and not the fact
  | that there 's a successful company making enough money to fund
  | 30 people's salaries and is written in what a lot of us
  | consider an interesting functional programming language.
 
    | dang wrote:
    | That's doesn't seem to be an accurate description of this
    | thread. Maybe look again?
 
  | dang wrote:
  | " _Please don 't post shallow dismissals, especially of other
  | people's work. A good critical comment teaches us something._"
  | 
  | https://news.ycombinator.com/newsguidelines.html
 
| TheMagicHorsey wrote:
| 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.
 
  | nybble41 wrote:
  | You probably don't need to believe in astrology to work there.
  | Perhaps she just feels that this is a simple and mostly
  | harmless way to separate some irrational individuals from their
  | money. Which, on the whole, is probably a net benefit to
  | society: If they weren't spending their discretionary funds on
  | $20 astrology-themed in-app purchases they might instead put it
  | toward something _really_ dangerous.
 
| 6gvONxR4sf7o wrote:
| This is illegible with that background (in portrait mode on an
| ipad pro).
 
  | adhoc_slime wrote:
  | same with chrome 95.0.4638.69. whatever they intended it to
  | look like, they failed.
  | 
  | edit. Its a dark mode issue, styling not being applied to the
  | background rendering
 
  | mpweiher wrote:
  | Lucky you.
 
  | 0xcoffee wrote:
  | On desktop the background follows the mouse. I couldn't focus
  | on anything else, I move my mouse around while I read.
  | 
  | If the author is reading these, please consider using a static
  | background.
 
    | babelfish wrote:
    | I couldn't finish anything past the first paragraph because
    | the background made me nauseous
 
    | pxc wrote:
    | I only see that weird background stuff if I have my global
    | dark mode browser extensions on
    | 
    | when I turn that off, I can't see any background effects at
    | all
 
| dudeinjapan wrote:
| 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.
 
| teddyh wrote:
| Forgive me if I don't want to read anything written by someone
| making an _astrology_ product. I may be open-minded, but I have
| limits where it comes to people who I _know_ are trying to
| influence me into believing stupid false things to their benefit.
| 
| I mean, if they're fine with claiming that astrology is real to
| enrich themselves, why should I believe anything else they say?
 
  | onion2k wrote:
  | _Forgive me if I don't want to read anything written by someone
  | making an astrology product._
  | 
  | Typical Capricorn.
 
  | odyssey7 wrote:
  | Many consider astrology to be a creative and self-reflective
  | process. Definitely would want to hear technical ideas from
  | that kind of person. In any case, it's up to the reader to
  | decide where they will look for ideas and what they find
  | valuable.
 
    | teddyh wrote:
    | In the current climate of censoring "misinformation",
    | astrology and its ilk should have been the first to go.
    | Propagating superstitions and encouraging magical thinking
    | is, if _anything_ is, a destructive force on critical
    | thinking.
 
      | ashtonkem wrote:
      | Eh. Astrology is obviously bullshit, but on the whole it's
      | much less harmful than other forms of misinformation. If
      | we're going to spend public and private credibility
      | haggling over misinformation, I'd rather focus on the forms
      | that have a much higher body count. I'm fine with leaving
      | astrology in the category of "not subject to any
      | moderation, but openly mocked by other commenters whenever
      | it comes up".
 
        | teddyh wrote:
        | Sure, there's a scale to these things:
        | 
        | https://twitter.com/abbieasr/status/1312512066071060480
        | 
        | However, it could be argued that small continuous amounts
        | of superstition and magical thinking (like regular
        | horoscopes) weakens people over time, so that they are
        | vulnerable to the larger stuff (like essential oils) or
        | even larger and more harmful conspiracies later.
 
      | odyssey7 wrote:
      | On the other hand, astrology is decentralized and requires
      | individuals to find their own values, and to actively
      | interpret the meaning of things they read. I find that
      | being this engaged with something enhances critical and
      | creative thinking.
      | 
      | And in the case of astrology, self-awareness.
 
        | teddyh wrote:
        | Encouraging people to "find their own values" and to
        | "actively interpret the meaning of things they read" ,
        | _without_ any grounding in reality or science, will
        | mostly result in people either growing more ardent in
        | their existing beliefs (whatever they happen to be), or
        | make people spin wildly out of control in conspiracy
        | theories and /or magical thinking and superstitions.
 
        | throwamon wrote:
        | Oh, so it's just like philosophy and science, except
        | without any philosophical or scientific backing.
 
        | pxc wrote:
        | No. Astrology is a somewhat mystified, ritualized form of
        | useful reflexive and social activities, namely thinking
        | about personality and long-term thinking about life
        | decisions.
        | 
        | Just like how a funeral at a church is a somewhat
        | mystified, ritualized form of the useful reflexive and
        | social activities of remembering and grieving.
 
      | bcrosby95 wrote:
      | Add Santa and the tooth faerie to the list.
 
  | whoisjuan wrote:
  | > I may be open-minded
  | 
  | You're not. If you were you will understand that astrology and
  | other esoteric beliefs are culturally anchored to the human
  | experience of many people in the world. In particular the self-
  | development that many people seem to get from astrology. I
  | don't need to believe in astrology to understand its cultural
  | role.
  | 
  | I think it's completely fair to build a business around a
  | cultural idea and use that idea as a thematic glue to teach
  | people about self-development and self-care. If you donwload
  | the app, you will quicky realize that's exactly what they are
  | doing. Personally not my thing, but I respect what they do and
  | their approach to building a business around this.
 
  | markn951 wrote:
  | Well... they're not really "making" an astrology product.
  | They're an engineer "making" an application backend. It's
  | almost kind of irrelevant what it's being used for in this
  | context (a relatively technical discussion on the merits of a
  | language).
 
    | teddyh wrote:
    | Sure, they might be honest about this - who knows? But anyone
    | known to be peddling snake oil _doesn't_ get the benefit of
    | the doubt. If they're telling the truth, there will be
    | others, more trustworthy, who can make the same argument.
 
  | dang wrote:
  | Please don't take HN threads on generic flamewar tangents.
  | They're tedious, predictable, and usually turn nasty.
  | 
  | https://news.ycombinator.com/newsguidelines.html
 
    | whimsicalism wrote:
    | I hardly think criticizing astrology is a generic tangent for
    | an astrology company as per the rules.
 
      | dang wrote:
      | It definitely is. It's a cliche, threadbare topic about
      | which people adamantly repeat platitudes they settled on
      | long ago.
 
    | teddyh wrote:
    | If there were an article about Rust posted to HN from, say,
    | the Church of Scientology, would criticism of CoS be
    | disallowed? Some things should be called out when you see
    | them.
 
      | dang wrote:
      | You need to understand what we're going for on this site:
      | curious conversation. Curiosity withers under repetition
      | and burns under indignation. Therefore, topics that combine
      | a lot of repetition with a lot of indignation are not what
      | we're looking for.
      | 
      | They also have a habit of taking over an entire thread very
      | quickly, much as fire consumes and spreads quickly through
      | what it touches (which is why 'flame' is a good metaphor
      | for the corresponding kind of internet comment).
      | 
      | There are a lot of past explanations of these principles in
      | case any of it is helpful:
      | 
      |  _repetition is bad for curiosity_ https://hn.algolia.com/?
      | dateRange=all&page=0&prefix=false&so...
      | 
      |  _good discussion is specific, not generic_ https://hn.algo
      | lia.com/?dateRange=all&page=0&prefix=true&sor...
      | 
      |  _reflective responses are better than reflexive ones_ http
      | s://hn.algolia.com/?dateRange=all&page=0&prefix=true&sor...
      | 
      |  _trying to avoid the internet callout /shaming culture_ ht
      | tps://hn.algolia.com/?sort=byDate&type=comment&dateRange=a.
      | ..
      | 
      | (and so on)
 
  | Nav_Panel wrote:
  | I know one of the founders, and she has a deep background in
  | philosophy and psychoanalytic theory, as I do as well.
  | Astrology as a contemplative and epistemological practice has
  | deep roots; the idea that astrology is "real" in a physical
  | causal sense goes back to Ptolemy and only persists because of
  | the historical influence of the Christian church. I've written
  | a bit on the topic here:
  | https://listed.to/@simpolism/27322/what-is-astrology
  | 
  | As an engineer who's also studied a bit of astrology and has
  | played around with how one might produce a description language
  | to support the astrological symbolic apparatus, I think a
  | functional language is a great choice. The idea of strict types
  | defined as a set of symbols makes perfect sense in astrological
  | terms. Although I'm much more familiar with OCaml/SML than
  | Haskell, a basic outline would be something like:
  | 
  | type Planet = Sun | Moon | Mercury | ...
  | 
  | type Sign = Aries | Taurus | ... | Pisces
  | 
  | type House = 1 | 2 | ... | 12
  | 
  | Using this, you could represent a whole chart in a pretty
  | straightforward way. And then you could have higher order
  | constructs, which represent meaningful formal relationships,
  | like:
  | 
  | type Aspect = (Planet, Planet, Degree)
  | 
  | type Rulership = (Planet, Sign)
  | 
  | etc. It's a pretty natural idea, to use a strong type system to
  | represent what is effectively a formal language (astrology).
 
    | whimsicalism wrote:
    | > I know one of the founders, and she has a deep background
    | in philosophy and psychoanalytic theory, as I do as well.
    | Astrology as a contemplative and epistemological practice has
    | deep roots; the idea that astrology is "real" in a physical
    | causal sense goes back to Ptolemy and only persists because
    | of the historical influence of the Christian church. I've
    | written a bit on the topic here:
    | https://listed.to/@simpolism/27322/what-is-astrology
    | 
    | Sorry, how does this justify lying and deceiving people for
    | profit?
    | 
    | > she has a deep background in philosophy and psychoanalytic
    | theory,
    | 
    | By "deep background" you mean she got a BA in psychology?
 
      | Nav_Panel wrote:
      | > lying and deceiving people for profit?
      | 
      | Who here exactly is being lied to? Some people feel that
      | doctors lie to them, so they don't go to doctors.
      | Similarly, if someone feels like astrology is all a big
      | lie, they don't have to use the app.
      | 
      | > By "deep background" you mean she got a BA in psychology?
      | 
      | I mean she's done quite a lot of reading on enlightenment
      | and modern philosophy, can hold a conversation on Kant,
      | Hegel, etc. as well as Freud, Lacan, RD Laing, and others.
      | Humanities degrees tell me very little about the quality of
      | someone's understanding.
 
    | cogman10 wrote:
    | > Astrology as a contemplative and epistemological practice
    | has deep roots
    | 
    | I've never understood this as an argument for veracity. There
    | are lots of ideas and practices with "deep roots". Blood
    | letting has "deep roots", yet we've pretty thoroughly
    | debunked humor balancing and good medicine.
    | 
    | Astrology, like other psuedosciences, seems built on the
    | notion that if you add enough lingo it becomes valid. Yet a
    | quick skeptical consideration of "Ok, what does the position
    | of a rock in the sky have to do with my day to day life"
    | seems like it should readily debunk it. Why does the position
    | of Jupiter, for example, have more effect on my life than say
    | the position of the moon? Or 624 Hector? If I throw a rock
    | over someone's head does that have an appreciable effect on
    | their "luck" or how their day will go? Does the composition
    | of said rock impact a person's luck?
 
      | Nav_Panel wrote:
      | > Why does the position of Jupiter, for example, have more
      | effect on my life than say the position of the moon?
      | 
      | It doesn't particularly matter. You can use a randomly
      | generated chart and it will still "work", because the use
      | of astronomy in astrology is basically as RNG, and
      | astrology itself is a psychological language.
      | 
      | > Blood letting has "deep roots", yet we've pretty
      | thoroughly debunked humor balancing and good medicine.
      | 
      | Do you really think modern medical psychology has moved
      | past the "blood letting" phase of knowledge? If so, then
      | why are so many people still depressed, anxious, etc,
      | despite all the supposed advances?
      | 
      | The fact is that psychology has a long way to go before it
      | can be treated as a proper physical science, requiring
      | researchers to bridge vast gaps in neuroscience and the
      | structure of experience, which includes the huge and
      | significant role of symbols in life.
      | 
      | As it stands, the person with the most knowledge of your
      | own life is... you, and tools like astrology function as
      | _mirrors_ to help you avoid your own biases when developing
      | self-knowledge. This is entirely unlike any medical
      | intervention I 'm aware of, and cannot be compared in kind.
 
        | cogman10 wrote:
        | > Do you really think modern medical psychology has moved
        | past the "blood letting" phase of knowledge? If so, then
        | why are so many people still depressed, anxious, etc,
        | despite all the supposed advances?
        | 
        | A common misunderstanding of psychology is that it's
        | about "curing" psychological illnesses. Almost all
        | psychological illnesses are chronic and not diseases that
        | can be cured. As such, the work of a psychologist is
        | almost always around managing, not curing.
        | 
        | You wouldn't, for example, look at the physical therapy
        | an amputee receives and go "Physical therapy must be no
        | better than blood letting because amputees still exist!"
        | 
        | > The fact is that psychology has a long way to go before
        | it can be treated as a proper physical science, requiring
        | researchers to bridge vast gaps in neuroscience and the
        | structure of experience, which includes the huge and
        | significant role of symbols in life.
        | 
        | That's happened perhaps more than I think you'd expect.
        | This is where, for example, SSRIs have come from. It's
        | not random shots in the dark and guesses. The unfortunate
        | problem is there's a bunch of stigma around taking
        | medicine for psychological problems.
 
        | Nav_Panel wrote:
        | > You wouldn't, for example, look at the physical therapy
        | an amputee receives and go "Physical therapy must be no
        | better than blood letting because amputees still exist!"
        | 
        | And yet, we know the precise cause and details of their
        | situation...
        | 
        | > This is where, for example, SSRIs have come from. It's
        | not random shots in the dark and guesses.
        | 
        | SSRIs were designed with a specific neurotransmitter in
        | mind, but the reason why serotonin can affect what we
        | call "depression" is, as wikipedia puts it, "somewhat
        | uncertain". Only in the last couple of years have
        | theoretical frameworks appeared where we can kind of
        | develop a causal understanding, like in Friston's REBUS
        | paper:
        | https://pharmrev.aspetjournals.org/content/71/3/316
        | 
        | The gist is that, if serotonin modulates high level
        | neurological priors, then SSRIs lead to slightly
        | increased plasticity wrt the environment, which can help
        | people get "unstuck" from previous environmental priors
        | i.e. trauma. But if their current environment is poor,
        | then SSRIs will have no effect or make them worse. If
        | this model is correct, then it necessitates a shift in
        | the etiology of depression, back to the more classical
        | psychoanalytic "epistemic" view (in which "mental
        | illness" is equivalent to unwanted patterns of thought
        | and action, a definition that should feel obvious to
        | anyone who's dealt with their own psychic distress) vs
        | the modern "neurotransmitter" view (i.e. "not enough
        | serotonin = depressed").
        | 
        | The result is that any etiological understanding must
        | include not only the present state of the individual
        | seeking treatment, but also their environmental and
        | historical contexts, i.e. their whole life. This
        | problematizes the metaphor of mental illness, because, as
        | you said, most people think you can treat mental illness
        | like curing an infection, removing some sort of foreign
        | element which resulted in whatever deviation from the
        | "healthy" norm, without realizing it has to be a longer
        | term intervention, because the foreign element is...
        | still you.
        | 
        | Like physical therapy, there's plenty of stretches you
        | can do on your own, and you're also in a unique strong
        | position to evaluate your own environmental and
        | historical context, compared with a therapist who can
        | only know what you tell them (or what they can read
        | between the lines). This is why reflective practices
        | exist, like many religious exercises which give you a new
        | pattern to consider (like on Yom Kippur, you think about
        | your last year in terms of repentance, forgiveness, etc),
        | but also like astrology, which "automatically" produces
        | frames for contemplative reflection. The result of proper
        | reflection is in action, which shifts the agent away from
        | their old repetitive patterns and can actually provide
        | the mythical-seeming cure for their mental illnesses.
        | This form of "treatment" has been rediscovered in many
        | traditions over the years, from Buddhism to Stoicism. It
        | seems to only be in modern western culture where we
        | delegate to experts the responsibility for our own
        | psyches...
 
  | cbhl wrote:
  | You may disagree, but I read this comment as a gendered
  | microaggression and I hope you will reconsider your stance to
  | be inclusive of this sort of content on HN going forward.
  | 
  | I see astrology as an entertainment product. Some folks take it
  | way too far, and it's fine if you'd prefer to abstain. But I
  | think that it is the same as with other vices (porn, casinos,
  | gatcha games, etc) who, otherwise, can have very interesting
  | technical problems.
 
    | teddyh wrote:
    | You don't know my gender, and the article has no author name
    | attached.
 
  | IncRnd wrote:
  | > Forgive me if I don't want to read anything written by
  | someone making an astrology product. I may be open-minded
  | 
  | No. You are closed-minded. The article explained three reasons
  | why Haskell was chosen, not about converting you to believe in
  | Astrology.                 FUNCTIONS IN THE MATHEMATICAL SENSE
  | TYPE-DRIVEN PROGRAMMING       HASKELL MAKES ILLEGAL STATES
  | UNREPRESENTABLE
  | 
  | This is the tl;dr from the page, where there is nothing about
  | Astrology:
  | 
  | "Haskell is optimized for developer efficiency. You can get a
  | lot done, have a high degree of confidence that it runs
  | reasonably without having to do too much thinking or ass-
  | covering. We move fast & need things to be reliable. Rather
  | than hand optimizing Doom 2 for ___, Haskell is the opposite.
  | The computers serve us. Code is for humans to read, and only
  | incidentally for computers to read. Code is how humans express
  | themselves to each other and computers, and it's up to
  | computers to run it in a reasonably good way."
 
    | teddyh wrote:
    | I have enough to read already. I choose not to spend my time
    | reading texts by known con artists, whatever the texts may
    | contain. If the truths expressed therein are valuable,
    | someone else with more authority can repeat or re-discover
    | them elsewhere.
 
      | User23 wrote:
      | > I choose not to spend my time reading texts by known con
      | artists
      | 
      | And yet you have the time to impugn other people's
      | character here? I propose to you that your time might be
      | better spent on your reading backlog.
 
  | weatherlight wrote:
  | How is this not flagged?
  | 
  | > I don't want to read anything written by someone making an
  | _insert religious /philosophical belief here_ product.
  | 
  | I'm not sure _the what 's_ being built takes a way from the
  | correctness of _the way_ something was built.
 
    | whimsicalism wrote:
    | Why should it be flagged? Seems like a perfectly reasonable
    | comment, just like how in day to day life I think less of
    | people when I learn that they are religious.
 
      | weatherlight wrote:
      | I'm an atheist, I say this because its against the hacker
      | newsguidelines
      | 
      | > Please don't use Hacker News for political or ideological
      | battle. It tramples curiosity.
      | 
      | https://news.ycombinator.com/newsguidelines.html
 
  | pxc wrote:
  | > I have limits where it comes to people who I know are trying
  | to influence me into believing stupid false things to their
  | benefit.
  | 
  | The market for astrology already exists. Their whole thing is
  | getting people who are into it to prefer them because their
  | math is better.
  | 
  | I get the anti-pseudoscience reflex, but (1) it's the wrong way
  | to think about astrology and (2) it's weird to pick on
  | astrology apps for their 'ethics' when the practice is more or
  | less benign. We're not talking about a cult where people refuse
  | medicine for their children here.
  | 
  | From an employment perspective, Co-Star seems way cleaner than
  | places where lots of people I know and like work. Better
  | horoscopes than missile defense or spy drones or brutal
  | retailers like Amazon. Better a stupid, fake typology than
  | spyware that reads people's emails to hit them with more
  | effective ads. Better to produce models of the positions of
  | stars than models of human faces to power militarization of the
  | Israeli border.
  | 
  | Re: (1)
  | 
  | Astrology as most people practice it is a low-stakes system of
  | prompts for reflecting on oneself and one's environment in a
  | way that is useful and healthy, but can easily be neglected
  | when you're just trying to get from one day to the next. Taking
  | it too seriously is a mistake, but it can be useful without
  | being correct about the capacity of the power of heavenly
  | bodies to determine human personalities or affairs.
  | 
  | If we had nobles using court astrologers again, I'd say
  | attacking astrology as harmful would be valuable. But when it's
  | more about prompting for reflection or producing a shared
  | vocabulary of personality, I think it ranges from helpful
  | ritual to benign nonsense.
 
| halfmatthalfcat wrote:
| I see a lot of python and js/node as basis of comparison against
| Haskell which seems really odd.
| 
| I would be comparing Haskell more to Scala/Elixir/etc if you're
| trying to make an argument for Haskell.
 
  | romero-jk wrote:
  | To Scala yes, to Elixir? wut?
 
    | remexre wrote:
    | If you don't have experience with both, "Elixir is FP" and
    | "Haskell is FP" makes it sound like "Elixir and Haskell are
    | comparable" ig?
 
  | dudul wrote:
  | Why? Anything can be compared to Haskell. It's ok to compare
  | things that are very different.
 
| uncomputation wrote:
| 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.
 
  | anchpop wrote:
  | Doing IO stuff is very well-supported in Haskell. Printing to
  | the terminal just looks like:                   main = putStrLn
  | "Hello World"
 
    | uncomputation wrote:
    | Doesn't this "contaminate" the entire calling function
    | though, as in you now have to specify it is impure?
 
      | samhh wrote:
      | Yes, impurity (or rather the representation thereof) is
      | contagious. This is where the common "functional core,
      | imperative shell" comes into play. You generally try to
      | push side effects to the edge.
      | 
      | There are other approaches you can take too, like encoding
      | your effects in a monad which has a different runtime
      | representation in tests. It's like mocking on steroids with
      | type safety.
 
___________________________________________________________________
(page generated 2021-11-05 23:01 UTC)