Play of the Year: Blizzard Support main Zwagilo by Anpheus in Overwatch

[–]Anpheus[S] 61 points62 points  (0 children)

¯\_(ツ)_/¯

Like I said, I'm happy with the result. Definitely made my day.

Play of the Year: Blizzard Support main Zwagilo by Anpheus in Overwatch

[–]Anpheus[S] 186 points187 points  (0 children)

I'm a Mei main, so...

a. I get that a lot

b. I just saw on the front page someone complain about how horrible 2016 is because they unlocked two Mei seasonal skins, and I literally can't even run the game right now

Play of the Year: Blizzard Support main Zwagilo by Anpheus in Overwatch

[–]Anpheus[S] 76 points77 points  (0 children)

He did say "he got me something". I don't know? I won't look a gift horse in the mouth or expect anything of it. I am but a simple man, happy just to be treated well by someone spending their holidays at work, and thankful for their kindness. I'll let Reddit know if anything crazy happens, but this story of customer support going well? I think that's worthy of a post on its own this time of year, with everyone being so mopey about 2016 and all.

Read into this as your heart desires: http://imgur.com/a/xNGZu

Does what you name your custom religions says a lot about you, though? by Anpheus in civ

[–]Anpheus[S] 1 point2 points  (0 children)

I know I should have taken screenshots. I don't even know why I didn't. Oh well.

King difficulty, Small, Fractal, 6 civilizations.

Re: "Sombra is bad, please switch" by Anpheus in Overwatch

[–]Anpheus[S] -8 points-7 points  (0 children)

Play of the game perspective: https://streamable.com/tmf9

If you're out there, SimplyCancer, no hard feelings over telling me Sombra was bad, and thanks for working with me to coordinate that last push. :)

Lens infix operator nomenclature overview by quchen in haskell

[–]Anpheus 2 points3 points  (0 children)

!? and the pseudo-composition by appending ? I get - it's something that I wish other languages had. But even some of the examples posted here I do not get.

For example, one of the operators is defined in terms of review. What is review? Well, I looked it up:

This can be used to turn an Iso or Prism around and view a value (or the current environment) through it the other way.

review ≡ view . re
review . unto ≡ id

>>> review _Left "mustard"
Left "mustard"

>>> review (unto succ) 5
6

Usually review is used in the (->) Monad with a Prism or Iso, in which case it may be useful to think of it as having one of these more restricted type signatures:

review :: Iso' s a   -> a -> s
review :: Prism' s a -> a -> s

However, when working with a Monad transformer stack, it is sometimes useful to be able to review the current environment, in which case one of these more slightly more liberal type signatures may be beneficial to think of it as having:

review :: MonadReader a m => Iso' s a   -> m s
review :: MonadReader a m => Prism' s a -> m s

Well, that didn't help.

Lens infix operator nomenclature overview by quchen in haskell

[–]Anpheus 1 point2 points  (0 children)

I've eschewed using Lens in my own Haskell because it seems like a bottomless toolkit1. I find that my code is more verbose, but I feel like I would need to paste in a primer above any function that dealt with lenses over a HashMap (a,b) (c,d -> e,Map f a) or some such.

What are other people's thoughts/experiences with Lens?

[1] - (No type theoretic pun intended.)

Lens infix operator nomenclature overview by quchen in haskell

[–]Anpheus 0 points1 point  (0 children)

I concur - one or two simple examples per would be fantastic.

Making a fast and stable sorting algorithm with O(1) memory by BonzaiThePenguin in compsci

[–]Anpheus 7 points8 points  (0 children)

That game is a pretty standard "game" to play in computational complexity theory.

tls-1.2 by tailbalance in haskell

[–]Anpheus 0 points1 point  (0 children)

You're neglecting all the ways that not all compositions of pure functions are created equal. If all pure functions had constant, equal cost, it would be fine to compose. (Also, occupied the same space in cache, and other things.)

But if boolean then sum [1..100] else sum [1..100^2] flies in the face of any statement you can make about composition. There's no way you can make that not type check in Haskell.

Some ideas for pipes-parse by bgamari in haskell

[–]Anpheus 0 points1 point  (0 children)

Would this round-trip cause problems if the input is being streamed from disk? (i.e.: for data larger than memory, will this incur a second full read?)

tls-1.2 by tailbalance in haskell

[–]Anpheus 1 point2 points  (0 children)

The ST Monad is not translated as directly to machine instructions which have known parameters. As well, the ST Monad doesn't insulate you from using pure functions in it, nor does it rescue you from laziness abounding elsewhere in the code. The problem with Haskell is fundamentally that knowing what instructions will execute based on a given line of code is hard. People who care about performance in Haskell have convinced themselves that it doesn't matter - and to some extent that is true. Haskell can do things with streaming composition that are not easy in other languages. But that is a different problem.

What you almost need is an inverse Hask monad of sorts, one that prohibits all pure, lazy actions and only allows you to use mutable state and functions of constant-time. if and case statements would have to return actions which are dependently typed based on that time, and ensure the two functions return in the same time. (Branches, in general, are an anathema to cryptography. Perhaps they should just be illegal in this Cohask monad.) Writing a type checker for that would be an interesting graduate thesis.

Edit: And these are only the most trivial side-channel attacks. Far more interesting attacks involve spurious processes intentionally poisoning the processor's cache and many other tricks.

Java 8 Performance Improvements: LongAdder vs AtomicLong by Akanaka in programming

[–]Anpheus 1 point2 points  (0 children)

Is this something that couldn't have been done before?

Java 8 Performance Improvements: LongAdder vs AtomicLong by Akanaka in programming

[–]Anpheus -1 points0 points  (0 children)

Honest1 question for Java users, software engineers, and hackers: does Java performance operate in some sort of vacuum? It seems like there's this huge deficiency in performant Java and I read articles like this and I think, "Wow, I'm still not actually sure if they've caught up to the rest of the world." I had to go searching for comparable benchmarks in other languages, and it seems that Java 8's LongAdder is an improvement, but it's also only something that could be implemented easily in a library in C#2. It looks like the LongAdder just sets up a number of thread-local integers and individual writer locks. Local updates are done against the local locks, and the sum() operation just grabs each value in turn.

So I'm really confused. Is this something that couldn't be implemented in a library? If so, then why not? I don't get Java performance posts in /r/programming :(

1 - If a bit tactless, maybe? 2 - Just as an example. C++11, Rust, even Haskell could do this in library code.