5 ms·
This post is not for beginners/non-haskellers, I don't understand why it's being posted here. Is this intentional or are people in the haskell community this to
by hardwaresofton 7y ago
This post is not for beginners/non-haskellers, I don't understand why it's being posted here. Is this intentional or are people in the haskell community this tone deaf? It's like we're determined to prevent new people from joining.
Dear everyone, code like this is not where Haskell starts to get useful, it's useful much earlier. I won't reproduce it here but I just wrote a post with some practical code (and how haskell helped) taken from a project of mine: https://news.ycombinator.com/item?id=20260095 https://news.ycombinator.com/item?id=20260095.
If you are using Coyoneda in your code, please do not use it to extol the virtues of Haskell, except if you're sure your audience is expert haskellers/mathematicians/researchers/others who can actually gain something from the post, or if the writing is so sublime that it has reduced the complexity to near zero.
Please OP, you're actively hurting the adoption of Haskell by posting stuff like this in the wrong places/context.
The author of the article (Sandy Maguire) created a library called polysemy that improved on the efficiency of using a concept called Free Monads in Haskell -- their main benefit is that they let you write functions that deal only in your business domains. A rough corrolary would be a dependency-injected function that could not do anything outside of what the dependency injected pieces do, but also allows for different dependency implementations to be mocked out entirely within the languag (i.e. without the XML/annotation hell that is Spring DI magic).
- stcredzero 7y agoIs this intentional or are people in the haskell community this tone deaf? It's like we're determined to prevent new people from joining. It happens with small "misunderstood" groups. People in such groups start doing things to purposely set themselves apart and distinguish themselves from the outside majority. It seems partly subconscious or instinctual, though it's also expressed as conscious actions and can involve quite a bit of thought and rationalization. In particular, it happens with programming communities.
- danharaj 7y ago> This post is not for beginners/non-haskellers, I don't understand why it's being posted here. Is this intentional or are people in the haskell community this tone deaf? It's like we're determined to prevent new people from joining. There are plenty of submissions on HN that are aimed at specialists of a field. They get to the front page because people are curious about specialized fields. So, even though I disagree from the pits of my soul with the content of the submission (as a professional Haskell developer, I should add), I think you're being very unfair to say that stuff like this shouldn't be shared with a broader audience.
- xelxebar 7y agoOh man, I'd absolutely love to work in haskell professionally. Mind if I ask for your advice? As someone with ~4yrs in industry as a mobile developer and a master's in math, what are some routes I should be look into?
- dllthomas 7y agoApply at LeapYear?
- hardwaresofton 7y agoSome resources: - https://www.fpcomplete.com https://www.fpcomplete.com - https://haskellweekly.news https://haskellweekly.news - https://wiki.haskell.org/Jobs https://wiki.haskell.org/Jobs - https://angel.co/haskell/jobs https://angel.co/haskell/jobs (if you're into startups) - r/haskell on reddit I do not work in haskell at my day job but I've found writing side projects with it has done wonders for my understanding -- I've been able to work through the trends in how people are being productive with haskell (mtl, readert, free monads, vinyl, datakinds shenanigans), just by trying to make stuff with haskell.
- danharaj 7y agoSo, I got my first job by going to my local Haskell meetup and chatting with someone who would end up being my boss, and I've stuck with that crew since. I think that's rather serendipitous but it definitely doesn't hurt to go hang out with the Haskellers in your area. There's a regular meetup in many major cities, including Boston, SF, NYC, London and Zurich off the top of my head. Our shop has also hired people who respond to our job postings (on Reddit, for example), as well as people who participate in the community on IRC and Discord either by word of mouth or recommendation. Now, as someone who evaluates resumes and interviews people, the only Haskell specific thing I care about is making sure the candidate knows how to use the core of the language, which is basically Haskell2010 + some indispensable extensions. I expect fancier stuff to require training, and to be honest it's sometimes better to properly contextualize that stuff for someone instead of having them come in already thinking they know how to use the footguns :^). My company asks candidates to attach or link code samples if they have them. If they don't, we ask them to write a small Reflex [0] app, because we're primarily a Reflex shop. Now, every shop is going to be different and expect different things from their candidates. That's one reason why getting involved in the community is so useful. If you hear directly from people who employ Haskellers in your area what they want, then you can build your credentials for that. Besides that, you just gotta apply. If you're a strong candidate in another tech stack, you're a strong candidate for a Haskell stack too if you can demonstrate you can use the language. There's currently a remote job posting on r/haskell if you want to give it a shot. I wish you the best of luck :) [0] https://reflex-frp.org/ https://reflex-frp.org/
- crispinb 7y ago> you're actively hurting the adoption of Haskell by posting stuff like this in the wrong places/context If someone's put off learning Haskell because they are (terrifyingly!) exposed to a single obviously non-beginner's article (on HN not the Daily Mail!) -- well, they must be too incurious to be worth recruiting to the language anyway. I know nothing about Haskell (and am unlikely ever to learn it for unrelated reasons), but I read the article, understood little of it, and survived with my interest if anything somewhat piqued.
- hardwaresofton 7y agoIt kind of sounds like using curiosity as a gatekeeping mechanism. There's also nothing to suggest that someone who isn't curious today can't become more curious as time goes on. Maybe someone writes their first program with `unsafePerformIO` everywhere without understanding how to properly use monadic contexts, but that's likely not where they're going to stop -- that person may go on to properly understanding monads, monad stacks, then MTL, then free monads, etc. Great things happen when barriers to entry are low, why would you want to make the barriers seem higher (despite the fact they didn't actually change)? You're going to scare off someone who could have contributed a simple driver/client/whatever (the kind of libraries that make thriving ecosystems) that doesn't require any of this type tomfoolery (I use that term jokingly not pejoratively), because they wrote off haskell early.
- crispinb 7y agoIt kind of sounds like using curiosity as a gatekeeping mechanism I don't know about 'using'. I think it just is one - learning is possible but terribly inefficient in its absence. There's also nothing to suggest that someone who isn't curious today can't become more curious as time goes on Very true & thanks for reminding me. That we can & do change (and must leave space for each other to) is one of the drums I like to bang now and then.
- hardwaresofton 7y ago> I don't know about 'using'. I think it just is one - learning is possible but terribly inefficient in its absence. I definitely agree there -- it's definitely part of the barrier to entry, people have to start looking for other ways of doing things before they'll land on haskell since it isn't main stream. The things from haskell that are trickling out into the mainstream should (hopefully) be pointing people back at haskell, if it's at least mentioned in passing > Very true & thanks for reminding me. That we can & do change (and must leave space for each other to) is one of the drums I like to bang now and then. Yeah I really felt this when I watched Sandy's talk on polysemy (https://www.youtube.com/watch?v=-dHFOjcK6pA0 https://www.youtube.com/watch?v=-dHFOjcK6pA0 There were parts he didn't quite fully understand and he mentions it Also to temper my previous comment, I want to be clear that I don't necessarily want every single able bodied coder to necessarily join the haskell ecosystem -- I am at least a little cynical in that I believe if there exist good contributors (that you do want) there are probably bad ones (that you don't want).
- nilkn 7y agoI don't really understand. I thought this was an extremely interesting post, and it was very easy to follow. It's clearly not written for a complete beginner, but I don't think this is intended for experts either -- not even close. This kind of material is the sort of thing I come to HN to find. I also remember reading your comment the other day, and I thought it was great too.
- hardwaresofton 7y agoYeah I clarified up top -- I think the title "Implement with Types, Not Your Brain" does a bad job of setting expectations. Personally, I clicked through expecting to find out about some new way haskell can help me use my types to verify how implementations work (the title is fantastic in this sense, and I saw the domain), but I was instantly hit with that bit of code that's somewhat inscrutable and doesn't do enough to set up the context of what's happening and why. Then the general point of the article basically was to use polymorphism and type holes to work your way to what you need. I felt like this wasn't what I signed up for, and wondered what others thought, only to go back and see upvoted comments bashing haskell based on this one example. This is what lead me to make my comment -- I think this article is too advanced to post here without some really good prose/writing. Not blaming sandy, as of course he doesn't control how his content spreads but I thought it just wasn't right for this context and sharing something that makes haskell seem harder than need be is damaging IMO. The case that "haskell will tell you what types it expects" is so much easier to make without the monstrous signatures in that post, or without type level computation (the ':).
- gridlockd 7y ago> Please OP, you're actively hurting the adoption of Haskell by posting stuff like this in the wrong places/context. I think what's really hurting the adoption of Haskell is Haskell. This blog post represents Haskell quite well. Haskell will never be "popular", just like category theory will never be "popular".
- hardwaresofton 7y agoA follow up to this comment... Please, haskell people, read what other people are writing: > Sorry but this is just crazy. I always wonder if people writing blog posts like that have ever worked in a big company. You need to spend at least 2-3 hours a day doing code reviews and most of the rest you are writing code, which subsequently involves reading the code you wrote yourself and others have written. > Now we currently use Java here. I worked with other programming languages in companies too, for instance C and C++ which were a nightmare with no equal. Don't get me wrong, when I was in college I just loved creating crazy shit with template metaprogramming and preprocessor metaprogramming. Once you mature out of it, this is just the most craziest thing you could ever do. These impressions of Haskell are wrong Haskell is not crazy, it's actually insanely reasonable -- so reasonable in fact that it will not let you compile code that is crazy. This is the message getting lost in crazy type signatures (which admittedly often do cool/useful things if you undertsand them) and overly verbose/complex examples. > Hello, I am at Amazon. I spend a decent portion of my time working with an in-house Clojure library (not entirely dissimilar to Haskell) which handles some mission critical business logic my team owns. > It terrifies me. I hate it. I do not use/encourage use of Clojure any more, and this comparison scares me -- Haskell is not clojure, but it's getting lumped together and this really worries me because it should not be. Haskell helps you write clear code -- type signatures, pure functions, immutable values, typeclasses, algebraic data types are all tools to make your code clearer and more obviously correct. If this isn't getting across haskell is in trouble/has a big marketing problem.
- mrkeen 7y agoReally?! Where exactly should we post write-ups about complicated concepts like the y-combinator?
- Tehnix 7y agoI don’t have any particular need to defend the posting, but I disagree with your take, as I think you’re not aware of how subjective your opinion is, and there are more target groups than what you seem to focus on. > This post is not for beginners/non-haskellers, I don't understand why it's being posted here. Plenty of interesting topics related to specific languages get posted here all the time, I am under no assumption that 100% of HN is haskellers, but there is still enough that people find it worthwhile to share and upvote on here. > Is this intentional or are people in the haskell community this tone deaf? Why would you blame the community on this? If anything, the need to create rifts with comments like yours, is something the community deeply needs to move on from. The reason for the posting is that it’s an interesting exploration of type holes and their usefulness. As you may have noticed several places in this thread, the concept that the more polymorphic the type, the more restricted you actually are, seems to have peaked interest and opened some eyes to new concepts. > It's like we're determined to prevent new people from joining. Not at all. What people find interesting is very subjective, and one of the things I sorely miss from daily working in other languages, is being able to work with the compiler as a pal that helps you out. This post demonstrates one way to make Haskell work for you, and if you’ve honestly read the post, Sandy does a good job of explaining the concept on simpler functions. > If you are using Coyoneda in your code, please do not use it to extol the virtues of Haskell, except if you're sure your audience is expert haskellers/mathematicians/researchers/others who can actually gain something from the post, or if the writing is so sublime that it has reduced the complexity to near zero. Sorry, but I’m starting to feel like you didn’t read the article, but maybe just the comments here. At no point did the post care about Coyoneda. It started out with demonstrating how a complex piece of code could be reached with the method (type holes), and then went on to demonstrate the method on simpler code, removing the need to know anything else. If you focused on understanding the first piece of code, then you’ve completely missed the authors intent. > Please OP, you're actively hurting the adoption of Haskell by posting stuff like this in the wrong places/context. That’s a fair opinion to have, but not one I can agree with at all. With a wealth of languages to pick from, why should anyone pick Haskell? Some of what drives people’s interest are these demonstrations of what is possible, when you have a more expressive type system. That are tons of other reasons too, but as a “selling point”, it’s not “look how simple Haskell code can look”, because that is sure as sh*t like lying people straight up in their face—that’s not where Haskell differentiates itself. I’ll close out with adding that Polysemy is very cool, and I’m personally looking forward to seeing it ready for usage :)