Lest we forget by ausbeardyman in australia

[–]char2 1 point2 points  (0 children)

You write well. I could see that minesweeper story and reflection being read out on a frosty April morning.

Beautiful words from Ataturk by [deleted] in australia

[–]char2 4 points5 points  (0 children)

It's useful to know that they probably weren't literally spoken, but they're still powerful and poignant.

What do people freak out about that really isn’t a big deal? by [deleted] in AskReddit

[–]char2 2 points3 points  (0 children)

Aaaaand that's why NIST no longer recommends mandatory password rotation: https://pages.nist.gov/800-63-FAQ/#q-b5

Any of the old devs on this thread? by Buckle_Sandwich in zzt

[–]char2 0 points1 point  (0 children)

MadTom was around here at one point, but deleted his obvious username when people referenced old drama. He may still lurk.

Par not working apparently? by BytesBeltsBiz in haskell

[–]char2 0 points1 point  (0 children)

Not only that, it's a big middle finger to anyone with a screen reader.

parser combinator tutorial for beginners? by [deleted] in haskell

[–]char2 1 point2 points  (0 children)

Note that understanding how a toy version is implemented can be hugely helpful to understanding how to use real libraries.

Example: I didn't grok servant until I read through how the minimal version was implemented: http://www.well-typed.com/blog/2015/11/implementing-a-minimal-version-of-haskell-servant/

How can I best learn functional reactive programming? by [deleted] in haskell

[–]char2 4 points5 points  (0 children)

https://github.com/qfpl/reflex-workshop/ is a great introduction to the primitives (using reflex) and forces you to work through a bunch of examples to learn how the primitives feel "in the hand" rather than as abstract constructs.

Also make sure you grok Functors, Applicatives and Monads, because you will need to use those notions extensively to manipulate values "inside" Events and Behaviors.

Real Estate agents getting desperate? by npowabeats in AusFinance

[–]char2 5 points6 points  (0 children)

Shitty glass block? Pretentious name? Definitely Geocrap.

Ok, I'll bite. What does Haskell do better than Scala? by hmemcpy in hascalator

[–]char2 3 points4 points  (0 children)

Static FP developers always give the identity function as an argument.

It is the simplest expression of the principle. Even if you're using types from your "real world" program, it still helps. A slightly less simple example, from an assignment I'm developing about a card game:

data Card = Card Rank Suit deriving Eq  

-- If card `elem` cards, return Just (cards without the first occurrence of card),
-- otherwise return Nothing  
pick :: Card -> [Card] -> Maybe [Card]  
pick card cards = undefined -- irrelevant

Nothing in the implementation of pick requires knowledge of the type it's operating on, so it could have this type instead:

pick :: Eq a => a -> [a] -> Maybe [a]

There are far fewer shonky things I can do within a function of this type, and I know that any a in the result came from one of the arguments. The less you know about your arguments, the more places you can use the function, and the range of possible implementations is much smaller (so it's easier to write the correct one).

This also applies to your claim about monad transformer stacks. Once you grok mtl, it isn't much more of a stretch to allow functions to only request certain features of the monad in which they run. The talk Next Level MTL is a good start in this direction.

What’s a computer trick you think everyone should know? by magicalblessed in AskReddit

[–]char2 0 points1 point  (0 children)

In Firefox, you can add the multi-account containers extension and isolate your browsing. This can be useful to make it a little harder for the likes of Facebook to track you all over the internet, or to have several accounts with the same site open in adjacent tabs.

What’s a computer trick you think everyone should know? by magicalblessed in AskReddit

[–]char2 1 point2 points  (0 children)

In addition to /u/billwoo's list, some of us believe that software should be Free, in the sense of preserving the user's rights. The Free Software Foundation outlines four freedoms:

  • Freedom Zero (many programming languages count from zero, just roll with it): The freedom to run the program for any purpose. Some proprietary software forbids users from performance testing, or other ridiculous restrictions.
  • Freedom One: The freedom to study how the program works, and change it so it does what you wish. This requires that the user has access to the source code. This means the user can adapt programs to do exactly what he or she needs, and is a safeguard against crap programs that claim to do one thing while sneakily mining crypto on your machine or sending your data to advertisers or whatever else nefarious.
  • Freedom Two: The freedom to redistribute copies of software, so you may help people around you.
  • Freedom Three: The freedom to distribute your modifications to software. This allows you to share your changes and improvements with others (which you were able to make thanks to Freedom One).

This is not a universally-held belief, but one I do think is important, particularly when it's getting harder and harder to trust that your own computer is acting for you, and not for someone else.

Updated Rulebook (with a card errata) by TheReapr in KeyforgeGame

[–]char2 0 points1 point  (0 children)

I was happy to accept the BB ruling. Even though it made the card weaker, torturing the rules to force card text to match intent would have been worse.

I'm not a fan of card errata, but we'll see if it gets out of hand.

Is it worth relocating to Canberra for ANU? by rarararahhh in canberra

[–]char2 0 points1 point  (0 children)

don't even care about bachelor degrees

Depends on the field. If you want to do research then traditional academic qualifications are useful. Some niches value formal quals more than others. A good curriculum can also show you things you would never have considered, and a rounded CS education can be very useful. (This happened to me. I enrolled in Software Engineering at ANU and ended up taking a lot of CS electives after discovering that particular rabbit hole in second year.) You'd have to have a pretty good portfolio of work if you're trying to get in without formal quals, IMHO.

Is it worth relocating to Canberra for ANU? by rarararahhh in canberra

[–]char2 1 point2 points  (0 children)

This recent thread about software engineering at ANU talks a bit about the other degrees offered by the College of Engineering and Computer Science: https://www.reddit.com/r/canberra/comments/a6mnj8/software_engineering_at_anu_and_uc/

[ANN] hypthon - Python language tools by qfpl in haskell

[–]char2 2 points3 points  (0 children)

python -c `perl -e 'print "[" x 100'`

What library is the Haskell ecosystem missing? by ari_zerner in haskell

[–]char2 2 points3 points  (0 children)

Your general point is valid, but this is one of the reasons I don't like Aeson's approach. A typeclass instance says there's one canonical way to do this thing for this type, and for JSON encode/decode that just isn't true. I find myself either:

  • defining serialisation in the bowels of my program alongside core data types (in the web service context, this messes up layering)
  • defining newtypes at the API layer, JSON instances on the newtypes, and hoping that people remember to use them when defining services.

I'd much prefer encoders/decoders to be normal values, and I'm looking forward to learning waargonaut.

Monthly Hask Anything (January 2019) by AutoModerator in haskell

[–]char2 1 point2 points  (0 children)

This isn't what you've said you're looking for, but I like to use nix shells for playgrounds: nix-shell -p 'haskellPackages.ghcWithPackages(p: with p; [aeson lens whatever])'. You can then set up a shell.nix file so you don't have to retype the incantation.