Readit News logoReadit News
pure-awesome commented on Should I Use a Carousel?   shouldiuseacarousel.com/... · Posted by u/stepstop
gitgud · 5 years ago
It's the classic false economy you're saving vertical space, but nobody wants to scroll your carousels, or wait for it to transition. It's always easier to just scroll down the page, especially on mobile.

Apps like Instagram have a standard carousel for photo albums and people use them and can trust the functionality.

But most websites have varying implementations of carousels, with weird functionality (autoplay, transitions, no-swipe, randomized). Users get confused by each implementation and eventually just ignore them...

pure-awesome · 5 years ago
"Apps like Instagram have a standard carousel for photo albums"

Yeah, but that only applies to users who are used to Instagram. It's definitely not an INTUITIVE feature.

I've had friends and family link me to Instagram posts, and though I've learned now, for a long time they'd have to explicitly mention there were additional pictures in the post, or I'd miss them.

(I don't know if it's different in the app, but certainly in the webpage those little dots at the bottom are non-obvious to a first-time user.)

pure-awesome commented on How dice changed over 2k years to be more fair (2018)   sciencedaily.com/releases... · Posted by u/Hooke
glandium · 5 years ago
Sounds related to Julian Jaynes's book/theory: The Origin of Consciousness in the Breakdown of the Bicameral Mind
pure-awesome · 5 years ago
Scott Alexander recently gave a good summary & review of that book here. A _very_ interesting hypothesis:

https://slatestarcodex.com/2020/06/01/book-review-origin-of-...

pure-awesome commented on Grid – A Lua Game Engine   planimeter.org/grid-sdk/... · Posted by u/Bambo
tpxl · 5 years ago
Serious question: How do you organize your data in a semantically meaningful way without something like an object/struct (in a strong type system preferably). I get functional programming and all, but structs just seem like a natural way to organize data.
pure-awesome · 5 years ago
Object orientation is not really about making use of structs - many (most?) functional languages also use structs; it's just a grouping of related data.

Object-orientation is about grouping together functionality and data. I.e., an object consists of both a struct, and the functions that act on that struct, known as methods.

In OO, your type additionally refers to the functions called on the data, not just on the data. E.g. you might have a car and a boat and they both only have a position and velocity as data, but the boat has a "sink" method the car doesn't.

There are also debates on what qualifies as "true" object orientation. https://stackoverflow.com/questions/250062/what-is-meant-by-...

For games programming in particular, there is a paradigm known as ECS or Entity Component System. (Depending on your view you might call this a sub-paradigm of object orientation, but I think it's much more accurately described as an alternative.) As the Wikipedia article states:

> An entity only consists of an ID and a container of components. The idea is to have no game methods embedded in the entity.

https://en.wikipedia.org/wiki/Entity_component_system

EDIT: There's also the very interesting paradigm that e.g. Julia uses known as "Multiple Dispatch". This is kind of like defining methods on objects, except that the method is defined on a collection of objects instead of a single one.

E.g., in traditional OO, you might have a vehicle#crash method. And it might take another vehicle as argument, e.g. car.crash(truck). But in multiple dispatch you define a function crash that takes in two vehicles, and then depending on the type of the vehicles given, it changes its behaviour so that crash(car, truck) is different from crash(car, car).

In a sense, the function is not thought of as belonging to either the car or the truck, but as belonging to the pair of them, so conceptually this is different to OO.

I'm not particularly familiar with the paradigm so I'm sure I'm not doing it justice, but you can read further on Wikipedia and in the Julia docs, or the given video:

https://en.wikipedia.org/wiki/Multiple_dispatch

https://docs.julialang.org/en/v1/manual/methods/index.html#M...

https://www.youtube.com/watch?v=kc9HwsxE1OY

pure-awesome commented on The use of `class` for things that should be simple free functions   quuxplusone.github.io/blo... · Posted by u/ingve
pure-awesome · 5 years ago
Luckily Java 8 introduced streams and functional interfaces - the latter of which is admittedly very object-oriented way of passing around functions.
pure-awesome · 5 years ago
For those wondering what I mean:

To support backwards-compatibility, Java could not simply introduce functions as first-class objects. Instead, it works like follows:

Syntax for a function `foo` which itself takes in a function called `intConcat` that takes in two ints and spits out string:

    foo(BiFunction<Integer, Integer, String> intConcat) {
        // ...
    }
Notice that I have to explicitly state "BiFunction". There is also "Function" for single-argument functions, and nothing for more arguments (there are also `Runnable`, `Consumer` and `Producer` for fewer arguments in-or-out). This is because BiFunction isn't actually a function - it's an INTERFACE! Any class that implements 'apply' and 'andThen' functions with the right signatures will satisfy it, and can be passed in. You can make your own class and Java will happily accept it into this method.

Java then just adds some nice syntactic sugar to make stuff look like functions. E.g., if you do want to define an anonymous lambda like

    (x,y) -> "" + x + y;
What happens under-the-hood is that Java defines an anonymous BiFunction class. You can assign it to a variable and do everything you would want to do with an object:

    BiFunction<Integer, Integer, String> bif = (x, y) -> "" + x + y;
I can call bif.toString() and all those other default methods defined on objects in Java. It's really not a function, it's an object holding a function:

    BiFunction<Integer, Integer, String> {

        String apply(Integer x, Integer y) {
            return "" + x + y;
        }

        // ...
    }
and if you were to go and implement your own BiFunction as above (filling in the blanks) - you could pass it around exactly the same places as your "anonymous lambda" and it would work exactly the same way because it IS the same thing.

Like I said, a very object-oriented approach to functionality.

pure-awesome commented on The use of `class` for things that should be simple free functions   quuxplusone.github.io/blo... · Posted by u/ingve
taneq · 5 years ago
This reminds me of the blog rant "Execution in the Kingdom of Nouns": https://steve-yegge.blogspot.com/2006/03/execution-in-kingdo...
pure-awesome · 5 years ago
Luckily Java 8 introduced streams and functional interfaces - the latter of which is admittedly very object-oriented way of passing around functions.
pure-awesome commented on When the sum of two actual UX improvements becomes a bigger UX problem   erik.itland.no/when-the-s... · Posted by u/eitland
eps · 5 years ago
Just order them by availability.

In stock first, out of stock second.

pure-awesome · 5 years ago
In addition to this, mark them clearly as out-of-stock - fade out the preview image and prepend [out of stock] to the item description.
pure-awesome commented on Operation Dark Winter   en.wikipedia.org/wiki/Ope... · Posted by u/shalmanese
Sharlin · 6 years ago
Yes. Like a war game. A standard way to prepare for contingency scenarios. Not all simulations are computer simulations ;)
pure-awesome · 6 years ago
I wasn't only thinking of computer simulations. The word "simulation" is very vague.

It could potentially mean one of:

- Computer Simulation

- Pen & Paper Mathematical models

- Pen & Paper narrative modelling (i.e., writing a paper about different situations and the possible contingency plans - though granted this is not usually referred to as "simulation")

- Role-playing a situation via speech

- Acting out a situation with props and physical movement / simulated limited communication

- Sending out simulated broadcasts ("this is only a test")

- Sending out false but believable broadcasts

- Infecting the public with a (hopefully less harmful) disease in order to gauge response.

pure-awesome commented on Operation Dark Winter   en.wikipedia.org/wiki/Ope... · Posted by u/shalmanese
pure-awesome · 6 years ago
I was confused what they meant by "simulation". But they basically mean like a role-playing game. Like, they acted out how they would respond in that particular situation.

This site has more info:

http://www.upmc-biosecurity.org/website/events/2001_darkwint...

http://www.upmc-biosecurity.org/website/events/2001_darkwint...

pure-awesome commented on Quantum researchers able to split one photon into three   phys.org/news/2020-02-qua... · Posted by u/jonbaer
triplesex_ · 6 years ago
Why do we associate the speed of time with the speed of light? Is this even valid assumption?
pure-awesome · 6 years ago
Yes.

A better name for "the speed of light" might actually be "the speed of time" or "the speed of information transfer".

It's a mathematical limit and you can derive it using pretty much anything, not just light.

As an object goes faster, it experiences time dilation, length contraction, etc. The "Speed of Light" C is basically the point at which all of these things reach either zero or infinity.

It also "just so happens" that electromagnetic waves (such as light) travel at exactly this speed in a vacuum. They travel that fast because they travel at the maximum possible speed, and that happens to be the maximum possible speed.

It's like if you always traveled at the speed limit because you didn't want to break the law, and we called it "triplesex_ speed", but really it's just the maximum speed that anyone would go if they didn't want to break the law.

Except in this case it's not just a law- it is (to the best of our knowledge) physically impossible to go faster. It's not just that we haven't seen anything go that fast- it's that going faster than that doesn't even really make sense theoretically - for example, it would result in time-travel (this has to do with the fact that the order in which events happen and the speed at which time passes is different to different observers depending on the speed at which you're traveling).

pure-awesome commented on Don’t Confuse a Bug’s Priority with Its Severity   bluelabellabs.com/blog/do... · Posted by u/omgbobbyg
pure-awesome · 6 years ago
It sounds like they're using:

- "severity" as level of importance the tester assigned it when they found the bug and - "priority" as level of importance a developer assigned to it after triage.

That first piece of information is important when you need to determine which bugs to look at first for triage, but how important is it after that point? Can it not just be replaced after the developer's judgement?

In other words, could you not have a single priority field? The tester uses a heuristic to assign an initial priority (e.g., crashes are P0, cosmetic are P4). The dev uses this to prioritize which bugs to triage first, and once they've determined a new priority based on customer experience combined with app behaviour, they replace the old one.

If you really need to go back and check what the tester assigned, then I assume you can just use the "history" or "revision" feature in your bug tracking app.

Additionally, as suggested in a different comment, you can add a label for the bug's type if you feel that's important (crashing, lagging, cosmetic, etc.).

Perhaps the message here is that the app's behaviour in a vacuum is not the sole determinant of its priority. But then that should be the message, rather than claiming there is another metric which needs to be separately tracked when evaluating bugs.

u/pure-awesome

KarmaCake day524January 16, 2018View Original