1,327 karma · joined December 13, 2017
But this scrolling paradigm is just fantastic for looking through the CT scans on my phone - I can easily move up and down layers. Kudos to the web design.
I was told that the headlight adjustment in some large vehicles are meant to accomodate for weight (2 people in front vs 5 people in vehicle), but it seems that most people simply adjust this as high as it goes because they can see further. Even in Australia, which doesn’t have quite as much of a large-car problem, it’s becoming incredibly difficult to drive on the highway at night in a small car due to incredibly bright lights from behind.
I agree that in a free marketplace of ideas bullshit content would get buried, but this isn’t how modern social media platforms work.
I guess my point is that even if I used "the correct abstraction" here, meaning a ring or something, then the whole newtype setup still makes it annoying for me to split off one operation and feed it into a function expecting a monoid: the way that fold and friends work is much more natural, just taking a starting value 1 and an operation * for example, rather than some kind of "Multiplicative" newtype or whatever.
In general I see a lot of the abstract algebra type towers in Haskell and Purescript as being unhelpful, and making a huge assumption that (for example) there will rarely be two monoid instances on a type. In reality in abstract algebra we use tons of different operations on the same objects all the time, and I really just want to define those operations and then be able to use them.
toAdditive ((toMultiplicative a) <> (toMultiplicative x)) <> toAdditive b
or something similar. This is of course an insane way to program, and so really what is done is that we define two entirely different operations of addition and multiplication so that they can be used without newtypes.
What would be cool is if operations could ad-hoc be bound to instances of typeclasses, for instance you could accumulate a list of integers inside the (0, +) monoid, or inside the (1, *) monoid. Of course this is basically what the fold functions in Haskell do, but you could imagine being able to formalise this pattern at the type level in a less newtype-hellish way.
Geometric algebra is great if you want to extend things to higher dimensions, or spaces with different metric signatures (the 4-dimensional spacetime for example). But quaternions should not be discounted just because they fit into a generalisation - they have many quite special properties all of their own.
The problem in the proof is that the inductive step P(n) implies P(n+1) only holds for n >= 3, and so the fact that P(1) is true does not imply anything for the larger integers.
Elliptic curves are nice because they are algebraic groups, so by plugging in complex or real numbers you get a continuous group, and by plugging in finite fields you get a discrete group.
In Sydney, in the last 10 years our icons have been replaced by stylised letters. T stands for train (not Taxi or Tram), except when it doesn’t and M stands for Metro (which everyone still just calls the train), L stands for light rail (which everyone calls Trams)… it was so much more clear when there were just icons.
Not saying this is the way it should be, just saying that “doing your best” to allow unsupported platforms often leads to a terrible and confusing user experience.
What is the priority - being able to switch blog implementations at the drop of a hat, or having an actually good website?