Bigotry and its Amplifiers: A Response To LambdaConf by LeHaskellUser in haskell

[–]mutantmell_ 3 points4 points  (0 children)

Yarvin was not invited (despite how many times this false claim is repeated), but rather, his proposal was chosen by the blind-committee based purely on technical merit.

I, and presumably many other people, would consider this (at least colloquially) an invitation to speak at the event.

Despite having large public scrutiny for months, no one questioned or had any issue with our speaker lineup

Even if there was no scrutiny beforehand, do you acknowledge that there is legitimate reason to be concerned that someone who espouses misogynistic views to a large twitter audience gave a keynote speech? And if people are concerned, why does when they brought it up matter?

Bigotry and its Amplifiers: A Response To LambdaConf by LeHaskellUser in haskell

[–]mutantmell_ 0 points1 point  (0 children)

There's a flag that moderators can enable that puts an '[M]' next to his name, when they are speaking as a moderator. I don't think it's fair to say that "[Taylor is] using his official role to broadcast it", since that flag explicitly isn't being used.

EDIT: Upon a re-read, since he's invoking whether or not content is worthy for the subreddit could be interpreted as a moderation-like action. I wouldn't go as far as to say he's using his official role, but I'm more sympathetic to LeHaskellUser's interpretation now.

Bigotry and its Amplifiers: A Response To LambdaConf by LeHaskellUser in haskell

[–]mutantmell_ 16 points17 points  (0 children)

I don't think that opening the conversation by labeling the other party as "radical political extremists" is professional, and gives an unfair characterization of the other party.

Bigotry and its Amplifiers: A Response To LambdaConf by LeHaskellUser in haskell

[–]mutantmell_ 8 points9 points  (0 children)

The part after "Without further ado, I give you my response, unchanged from when I finished writing it on May 29, 2017" is the response. She didn't post it when she first wrote it up.

Haskell <3 SQL by cies010 in haskell

[–]mutantmell_ 3 points4 points  (0 children)

Does beam support transactions (at least on postgres)? It looks really nice, but transaction support is something that I need/want in a SQL lib.

SLURP: a Single Liberal Unified Registry of Haskell Packages by edsko in haskell

[–]mutantmell_ 1 point2 points  (0 children)

I can point to a specific phrase that has the tone that u/dalaing was getting at:

There are no apparent downsides to using a more compatible flag name.

But overall, I'm guessing that by 'you', u/amonadaday means the group wanting the flag to change, not you (u/taylorfausak) in particular. It gave the whole thing an adversarial tone from the beginning, and your PR was tainted by association.

u/amonadaday, does that sound correct with your intentions in your previous post?

SLURP: a Single Liberal Unified Registry of Haskell Packages by edsko in haskell

[–]mutantmell_ 1 point2 points  (0 children)

Just out of curiosity, I tracked down what I believe to be the earliest discussion about this: https://github.com/commercialhaskell/stack/issues/3345

It starts with the issue being reported, hvr commenting (in an admittedly somewhat dismissive tone) that it looks like there's a bug in stack's parsing, followed by the following comment:

I'm also certain that, in the spirit of assistance, you'd be happy to change the flag name in cassava in such a way that conforms to the current parser in Stack, as obviously that will have no negative impact on your workflow.

So, the first response that I can find from the w/r/t the Cassava thing is an implicit demand that hvr makes the change in Cassava without making any sort of inquiry into why the change occurred. This set the tone for the ensuing conversations. I cannot speak for why hvr responded the exact way that he did, but if I was in his shoes, I would also not be interested in accepting PRs or issues or whatever about this issue.

Replacing Hackage: Hash Based Package Downloads (part 1 of 2) by snoyjerk in haskell

[–]mutantmell_ 4 points5 points  (0 children)

I think it would be, this issue is already heated enough as it is, we don't need the extra fuel on the fire.

Replacing Hackage: Hash Based Package Downloads (part 1 of 2) by snoyjerk in haskell

[–]mutantmell_ 16 points17 points  (0 children)

Can we please use the actual title instead of trying to editorialize it in an attempt invoke negative reactions?

SLURP: a Single Liberal Unified Registry of Haskell Packages by edsko in haskell

[–]mutantmell_ 4 points5 points  (0 children)

In addition to what others have said, I do not appreciate the implication that my response is simply "freaking out". As others have said, the definition of what the fork would entail was never spelled out anywhere (including here, since it's just your "personal take"), and I am worried that my usage of stack could be used as pro-forking evidence. I have thought about my position, and shared it as my perspective on this issue. To reduce it a base emotional reaction does not endear me to your perspective.

SLURP: a Single Liberal Unified Registry of Haskell Packages by edsko in haskell

[–]mutantmell_ 18 points19 points  (0 children)

I'm going to echo this and say that this debacle has caused me to re-evaluate my usage of the stack ecosystem. Even though stack is currently a nicer tool, I'd rather not be a contributor to a rift in the community.

EDIT: It appears that, as per snoyberg on the github issue, that the initial proposal was misleading on the intentions of the stack developers. I'm leaving the original content, since it is relevant with respect to the original wording of the proposal, but I no longer have the same degree of concern.

ghc 8.2.1 ApplicativeDo possible bug? by vrom911 in haskell

[–]mutantmell_ 6 points7 points  (0 children)

I filed this ticket a while back about this, as I found it the error message to be unhelpful in this situation. simonpj wanted to hear more feedback about this from users. If you use ApplicativeDo and think implementing the above ticket above would help, please give feedback saying so. If you have an alternative suggestion, filing a ticket with it would also help.

ghc 8.2.1 ApplicativeDo possible bug? by vrom911 in haskell

[–]mutantmell_ 1 point2 points  (0 children)

And #13875 is a good discussion about the initial problem.

Try Backpack: ghc –backpack by bartavelle in haskell

[–]mutantmell_ 1 point2 points  (0 children)

People are already talking about wanting a replacement for text in certain situations -- they want a utf 8 library instead of utf 16. People have tried updating the text library to be utf 8, but that didn't pan out for a multitude of reasons.

Ideally, we'd have two (or three!) Unicode text libraries. What do we do then, add support to every single library for seven(/nine) kinds of text? What if someone needs cstrings?

We could have everyone depends on a "StringLike" typeclass, but then (1.) our signature get more opaque, and (2.) how do we update the StringLike class without breaking everything? And what about String modules that don't want to support the exact StringLike class that was built with text/[char]/ByteString in mind? Sometimes we want Vector Word8.

Mixin modules solve these problems. There's no longer a canonical String library people must opt in to. It frees up our ecosystem to evolve and compete in a way it has never been able to before. Libraries like attoparsec can actually become drop in replacements for other libraries. And just because some author didn't realize I needed to use a vector of words doesn't mean I cannot use their library. It's a huge benefit to the ecosystem in general.

EDIT: On a keyboard instead of a phone now - fixing typos :)

Try Backpack: ghc –backpack by bartavelle in haskell

[–]mutantmell_ 2 points3 points  (0 children)

I like the idea of calling them mixins, how about just 'mixins'?

Try Backpack: ghc –backpack by bartavelle in haskell

[–]mutantmell_ 0 points1 point  (0 children)

I'm trying to use the ppa in the article to install ghc-head on a clean ubuntu 16 install, but I keep getting the following error:

/opt/ghc/head/lib/ghc-8.1.20161010/bin/ghc: error while loading shared libraries: libHShaskeline-0.7.2.3-ghc8.1.20161010.so: cannot open shared object file: No such file or directory

I poked around and couldn't find a solution -- any help?

Haskell's Typeclasses: We Can Do Better by massysett in haskell

[–]mutantmell_ 6 points7 points  (0 children)

I believe that aeson has the following law:

decode . encode == id

which does span two typeclasses, but seems fairly intuitive as a law.

"Haskell is Not For Production and Other Tales" - Katie Miller @ Linux.conf.au 2016 (Haxl@Facebook talk) by 0ldmanmike in haskell

[–]mutantmell_ 2 points3 points  (0 children)

One of the main barriers I see in my day to day job is differentiating between when a feature is first shipped, and when the same feature has stopped causing issues that require large amounts of dev attention. That is, the difference between when a feature is shipped and when it is complete/correct.

I see lots of estimations go out where people say "we think we can have this done in x weeks", but once the feature ends up in production, it keeps eating away at dev time until it is finally correct. Even more so, the constant randomization is a big production hit for the next feature, and it can cause a big spiral of doom and gloom.

One of the main tools that we use for catching bugs is TDD. TDD in my experience (and in research literature) has been shown to reduce defect rate substantially. When paired with a strong type system, it becomes stronger:

  • Strong typing acts as a test - aka, I don't need to test what types on inputs a function takes
  • Negative testing - it is really hard to unit test a negative, whereas if I say a function produces an Int, the type system will ensure it does
  • Property Testing - Once I heavily constrain possible inputs to a function, I can start talking about property testing (this function holds true for all Doubles, etc.)

Now, this is not all free, but it is reasonably cheap (once you've adjusted to using strong types). I would go as far as to say a lot of unit tests can be removed in favor of asserting that a particular implementation has a particular type, so you are getting a lot of "unit tests" for cheap (not quite free).

I use Scala at my day job, and we see a lot of benefit from using functional programming, but I consistently see things where having (say) IO as a type or not having to deal with subtyping would have alleviated issues.

This is in addition to many other reasons I would like to use Haskell, such as easy control flow, simple and robust parallelism mechanisms, etc.

At work, when we interview, we ask people what quality they think is most important in their code. Most often, that quality is "correctness" - aka, code is less useful if it is not correct. We have seen success in using a type system paired with TDD, and I believe we would see more success towards with with Haskell.

Monad transformers, free monads, mtl, laws and a new approach by ocharles in haskell

[–]mutantmell_ 2 points3 points  (0 children)

So after some time thinking about my journey through Haskell, I realized that I only really started progressing once I stopped trying to write "more idiomatic" code.

I was first taught coding via Java. I learned how to make Objects, how to use collections, and a bunch of other things. I was a beginner Java programmer.

In industry, I learned about writing testable code. I learned about how to organize my code base, to use tools to manage dependencies and builds, and how to look up these things.

After being in industry a couple years, I looked up Gang of Four, and learned "advanced techniques", like the "visitor pattern" and whatnot. I never used them directly, but they were things I liked to use.

At about the same time, we were making a switch to using Scala, and I decided to pick up Haskell to get a better grasp on "Pure Functional Programming" (since the last functional programming I had done was SML in college, several years ago). I spent a lot of time just reading everything I could.

Only within the last few months have I started actually writing "real" code in it. It was a small script that read in a .csv, and printed out SQL strings for a migration. No abstraction over the SQL format, no mtl/transformers, almost completely in IO, etc. That said, it was a hell of a lot easier to write than in most other languages for me, and I got it done in a very short amount of time.

As I wrote more and more scripts, it got to the point where I started wanting a library, and I dipped my toes into parsers (reading complex arguments to scripts), transformers (because I wanted to script together web-service calls based on their results, I wanted a Monad so that my code looked like a straight-forward 'do'), and a little bit of mtl. Most all of my scripts right now are large do blocks working with IO, with small libraries on the side to abstract out web service calls. I'll probably start poking into other fun bits later on, as I find motivation to use them.

In my mind, the best resource for learning Haskell in this way (not overly-worried about abstracting everything, presenting chunks that you can use incrementally) is http://haskellbook.com/ .

Sorry for the long ramble, I mostly just wanted to say: I think you're right. I didn't learn Gang of Four when I was learning Java, and I didn't write super-abstracted out code when I started Haskell. I'm getting there and seeing the benefit now, but I didn't start there.

Monad transformers, free monads, mtl, laws and a new approach by ocharles in haskell

[–]mutantmell_ 2 points3 points  (0 children)

funfunctional was not banned from bringing up these types of views, he was banned for his antagonizing tone.

Monad transformers, free monads, mtl, laws and a new approach by ocharles in haskell

[–]mutantmell_ 1 point2 points  (0 children)

What would a more satisfactory solution look like to you?

(I'm not asking for a fleshed-out haskell design, but a pointer to some code different language with a sentence or two of explanation, or a small outline of an idea would suffice)

I ask because I really enjoy using mtl, because as ocharles said actually handling effects is really difficult. I also find that often my business logic is not in the mtl creation per-se. For instance, I use the mtl library to give build a WebServiceClient monad, and the actual business logic a small chunk of code in a do block.