The Universal Standard Library - ryan-allen http://clintonforbes.blogspot.com.au/2012/05/universal-standard-library.html <comment><AUTHOR> Do you propose that things have the same name, even when the meaning is different?

Some of these functions change the string in-place (C), and others return a new string (Objective-C). Some languages have both options (Lisp), while others can't because strings are immutable (Python). Some languages define strings as arrays of characters, and others have some other opaque array-like structure made up of characters, and others have no concept of a character at all (just "length-1 strings"). And so on.

The biggest differences between languages are not names, but semantics. My editor will happily remind me of the proper name in any language, but that's the least of my worries since I've got to mentally shift gears anyway. The algorithm I write for different kinds of strings can be completely different.

I'm reminded of a similar issue with GUIs a few years back, when Redhat (I think) made themes to unify the look of GNOME and KDE, even though they still worked differently. The conclusion reached was that they should have unified the _behavior_ first (always a good thing), rather than unifying the _appearance_ first (which led to more confusion).

But that could be a problem for programming languages, since these differences are pretty fundamental.

</comment><comment><USER2> Ah to be young again :-)

Side Comment: If Oracle prevails in copyrighting an API this problem will get worse.

I ran smack into a variant of this problem playing around with ARM chips, libc. Its one of the places where gcc has really let me down, because if you get an ARM cross compiler its expecting anything and everything. The various flavors of C library are all bulky and nicely modularized but somehow less useful. And of course there are things in there which assume an OS (stdio for example) or at least a model that the code adheres to) but embedded systems are sometimes not that easily adapted.

And there are libraries provided by the manufacturers which have copyright notices in them about how this code can only be compiled to run on their (the manufacturer's) brand of ARM and when I look at the code I keep thinking "Hmm, I bet if I dug up the code I wrote for SunOS 4.0 when I was but a wee kernel hacker to make libc work with shared libraries, that a lot of it would be eerily familiar :-)

So what it boils down to are that there are 'things' and the useful things are 'memory abstraction (bcopy/memcpy etc)' string abstractions 'str _' and character abstractions 'is_ ' and then io abstractions (open/close/read/write/seek/rewind) and then thread abstractions (fork/sleep/wake/longjmp/yield) and suddenly your USLS is basically an OS API (or it could be) and you're back to square zero.

So rather than a universal library, why not universal VIM code? VIM is already syntax aware based on your language you could add the ability to insert the appropriate code to do what you wanted to do while you were editing. So if you had a variable and you typed if a:upcase == b:upcase it would syntactically awarely conver a:upcase to 'strtoupper(a)' or u"$a" or a->upper() or what ever the language you were writing in needed. Sort of a markdown for library calls. Then you train your fingers to type the markdown and be done with it.

<comment><USER3> OS and libraries have different roles: an OS manages the sharing of resources between programs, while libraries implement common operations in programs. The abstraction aspect in both really is a side effect.

Back to the topic: I think the real obstacle to this USLS idea is that each language has its own idiomatic way to name things, so a common across languages naming scheme or convention will likely look somewhat alien in each of them, and we all know the importance of source code aesthetics for programmers. This might change only if polyglot programming becomes very common.

</comment></comment><comment><USER4> _Making the situation much, much worse to solve the problem is unfortunately unavoidable during the transition period._

This makes me lol. Marx should have included that in his _Communist Manifesto_ right after the bit about taking despotic measures to guarantee freedom for the proletariat.

<comment><USER5> To what 'bit' do you refer? Do you have a direct quote?

<comment><USER4> _Of course, in the beginning, this cannot be effected except by means of despotic inroads on the rights of property, and on the conditions of bourgeois production; by means of measures, therefore, which appear economically insufficient and untenable, but which, in the course of the movement, outstrip themselves, necessitate further inroads upon the old social order, and are unavoidable as a means of entirely revolutionising the mode of production._

<comment><USER5> Ah yes, the good old "dictatorship" of the proletariat which introduces "despotic" inroads in order to create a communist utopia. For example, the Eastern bloc countries were "dictatorial" and "despotic" because they were never communist.

</comment></comment></comment></comment><comment><USER6> So how do you work around the problems where, for example. (Simplest, quickest example I could thing of.)

PHP = strtoupper($str)

Ruby = "Hello".upcase

Since Ruby is a method on the string object and PHP takes the string as an argument. To make them the same you would need to do either

PHP = upcase($str)

Ruby = "Hello".upcase

In which case you lose context in PHP or

PHP = strtoupper($str)

Ruby = "Hello".strtoupper

In which case you are repeating yourself in ruby.

</comment><comment><AUTHOR> BTW, despite being used mostly for "turtle graphics" in middle schools, Logo is a real programming language, and does have an "uppercase" function -- <http://rosettacode.org/wiki/String_case#Logo>

Common Lisp's is actually called STRING-UPCASE, not string-upcase, though with the default reader settings that will work too.

</comment><comment><USER7> Wait... I've seen a discussion on this recently.

Oh, yes... here it is: <http://xkcd.com/927/>

</comment><comment><USER8> I'm afraid this is going to be completely futile. Leaving aside the "yet another standard" issue, the real problem is that standard libraries need standard type systems and standard type systems are never programming language agnostic. Also, things like namespaces and function overloading have an impact on naming things.

</comment><comment><USER9> I'm _fairly_ sure [@"String" lowercaseString] doesn't return an uppercase string in Objective-C :)

<comment><USER10> Fixed. Thank you for contribution to the USLS.

</comment></comment><comment><USER11> Bigger C libraries like APR and GLib are already candidates for this. The only problem is, their language bindings did often mess up consistency anyway. This can be fixed with gobject-introspection or similar.

</comment><comment><USER12> This remind me of a XKCD comic about competing standard:

<http://xkcd.com/927/>

<comment><USER13> Or their latest comic:

<http://xkcd.com/1061/>

<comment><USER14> I figured that second one was mocking the papal bull laying out the rules for leap years.

In your face, 16th century papacy!

</comment></comment></comment><comment><USER15> I think I will go about this slightly differently. When I finally get around to writing the language I have in my mind, it won't have a "new" stdlib, it'll probably just use the python standard library (with modifications for changed semantics). I guess one could say that it could be a potential source of issues, as there will be some concepts that just do not map from one language to the other. However, seeing as I'll probably be the only one using it, I'm not too worried.

<comment><USER16> That's a completely reasonable approach (although I personally would choose something other than Python as my base). In fact, a bunch of languages do this already--most any JVM language (especially ones unique to the JVM) and .NET language take most of their standard libraries from Java or C#.

The fundamental problem with this approach is that either your language is too different from the host for the library to map perfectly or it's too close to the host too be terribly interesting.

</comment></comment><comment><USER17> > if I got your favourite language wrong, then please feel free to rip me > apart in the comments

Well, "strupr" is not part of ISO C at all. In fact I'm having a hard time finding out just which libc it comes from. Unfortunately the only uppercase function in the standard C standard library is the one you write yourself using toupper().

</comment><comment><USER5> The Common Lisp identifier names are the only standard I need. For my own personal use, I am not going to accept anything other then the Lisp naming conventions, which use lower case characters separated by dashes for identifiers. As such string-upper will continue to do just fine as it has been for decades.

</comment><comment><USER18> This sounds like various W3C specifications written in WebIDL to me.

<comment><USER19> Yes sadly, when you set out to make a language agnostic standard library, what you end up with is the browser DOM.

</comment></comment><comment><USER20> this gave me an idea for a DuckDuckGo Instant Answer Plugin [1]....

A mapping/grouping of related functions in each language that allows you to perform searches like:

"toUpperCase in Ruby" "upcase in Python"

[1] <http://duckduckhack.com/>

</comment><comment><USER21> strupr is not universal and not standard.

</comment><comment><USER22> Well, I find this topic rather meaningless, as every language has it's own code writing style and conventions, which may greatly differ, between C#, and, say, PHP. Plus, AFAIK CLR plays exactly this role in .Net, providing common functions across supported languages.</comment>


The Certainty Bias: A Potentially Dangerous Mental Flaw - <AUTHOR> http://www.sciam.com/article.cfm?id=the-certainty-bias&print=true <comment><USER2> "Only in the absence of certainty can we have open-mindedness, mental flexibility and willingness to contemplate alternative ideas."

So what do we do when it comes time to make a decision? How are we supposed to evaluate and act on evidence? The article seems to be (note my lack of certainty - that's a good thing, right?) an over generalization.

<comment><USER3> you are always dealing with incomplete knowledge. You are making decisions based on the evidence you have. Especially in a field as 'fuzzy' as business, if you are certain that a plan can not fail, you are almost certainly not evaluating it rationally.

</comment></comment><comment><USER4> Alright... most cognitive biases are potentially dangerous mental flaws.</comment>


Programming In Time For Dinner - <AUTHOR> http://www.fastcolabs.com/3029495/programming-in-time-for-dinner

<comment><USER2> Excellent article. So many people I know could benefit from reading this (not only programmers).</comment>


Zune vs iPod - Which do you want for Christmas? - <AUTHOR> http://www.informationweek.com/blog/main/archives/2007/11/zune_vs_ipod_wh.html <comment><AUTHOR> I'd take the $100 zune edition 1 from Dell.com over an iPod any day.

Then again, Archos 605 looking sort of sweet. But hey, people don't have unlimited budgets right? =]</comment>


Monads in JavaScript - <AUTHOR> https://curiosity-driven.org/monads-in-javascript <comment><USER3> PLT_HULK would have something to say about it :) [https://twitter.com/plt_hulk/status/397822619736870912](https://twitter.com/plt_hulk/status/397822619736870912)

<comment><USER4> I feel like this rush to adopt functional language features in non-functional languages is like deciding to shoehorn a jet engine onto your hot-air balloon. Yes, it can be done but ... see PLT_HULK.

<comment><USER5> These two functions are equivalent:

      const f1 = function(s) {
        let data;
        try {
          data = JSON.parse(s);
        } catch (err) {}

        if (data != null &&
            data.a != null &&
            data.a.b != null &&
            typeof data.a.b.c === 'string') {
          let x = parseFloat(data.a.b.c);
          if (x === x) {
            return x;
          }
        }
        return null;
      };

      const f2 =
      R.pipe(S.parseJson,
             R.chain(S.gets(['a', 'b', 'c'])),
             R.filter(R.is(String)),
             R.chain(S.parseFloat),
             S.fromMaybe(null));

Note that in the first function we have an unsafe expression,

      data.a.b.c

which we must guard with null/undefined checks. Unsafe expressions can easily get out of sync with their corresponding guards.

We can apply functional programming concepts to JavaScript code to obviate the need for null/undefined checks. The fact that we can't have _all_ the benefits of FP in JS shouldn't dissuade us from taking advantage of the ideas which are applicable.

<comment><USER6> Less as a real argument than as devil's advocate, here's a shorter non-library version:

       function f1(s) {
          try {
             let data = JSON.parse(s);
             let x = parseFloat(data.a.b.c.substr(0));
             if (x === x)
                return x;
          } catch(e) {}
          return null;
       }

...ok, it's a bit golfy, and in JavaScript you don't get much control over exception catching. But in general, exceptions can be used like an implicit Maybe/Either monad, just as mutability is an implicit IO monad.

(Also, you picked an odd task - it's unusual to expect a float to be represented as a string in a JSON object, and a check that rejects NaN but accepts weird floats like Infinity is not terribly useful.)

<comment><USER5> It's a contrived example, certainly.

Your counterexample is informative. I hadn't thought of exceptions in this way. The downside of putting everything in a `try` block, of course, is that we'll potentially catch exceptions arising from a bug in our code which _should_ crash our program.

</comment></comment></comment></comment></comment><comment><USER7> I detest how everyone always takes monads, a quite simple concept, and completely butchers the explanation. I think it's likely in large part a reason for a lack of their acceptance and use.

<comment><USER8> I'd say you're now almost guilt-edged required to provide us with your simple explanation here. But i'll warn you, i've been nicely flummoxed by competing 'simple' explanations in this forum previously: "A Monad is an object whose methods return monads.", "They're simply a highly specific way of chaining operations together.", "You know how jQuery methods can string out multiple methods with periods? That's what monads are.", "Monads are merely an analogy to control flow what abstract data types are to data."

<comment><USER9> Haskell is a pure language. Purity is a concept that is absolutely bizarre to the real world, where adding two numbers together results in tons of side effects (load into registers, oops, have to load cache lines, alter memory, raise the ambient temperature, etc. etc.). However, the idea of pure functions is useful. So we make our basic program blocks from pure functions that don't "do" stuff, but just transform values.

However, we must chain these into useful programs somehow. Monad is the type name chosen in Haskell for the construct that does this. It's kind of simple if you work it backwards from the syntax. You want to be able to say

        do
          a <- readInt
          b <- readInt
          add a b
          print

The first two can fail, rely on side effects and the last one is purely a side effect. The only pure function is add, which can't work if a or b aren't there. Monads serve as a way to represent the real-world-ness without it seeping into the add function. You can think of each line as a closure getting the next value from the previous line. So readInt returns a Maybe Int. If it returns a Nothing, the next closure is simply skipped. You can insert a check after the add, if you want to, to see if you got Nothing and alert the user, etc. However, the basic idea is that the program does not crash with a NullPointerException. We know what to do if we get Nothing. The add function doesn't need to concern itself with that.

Hence, the Monad. It wraps a real world concern around a type (it has a type constructor). You must be able to make one from a concrete value that is unburdened with exceptional state (it has the unit function). You must be able to call pure functions on these monadic values without the side state seeping into the function (it has the bind function).

Edit: the reason you don't see Monads in other languages is because they're not essential to them. You can do stuff in C without Monads. To Haskell, Monads are like the Higgs boson. It's how you bind stuff together.

<comment><USER10> Your explanation makes sense, but I don't see how are Monads different from Rust's Option Type (or Java's Optional Type?), or any other nullable type?

<comment><USER11> "Monad" is more like an adjective. "Option" is a monad, but, interestingly, the union type (A | null) is _not_.

<comment><USER12> As I understand it, this is because nullability (typically?) doesn't nest and so can't be a functor (with the whole of the types of the language as domain). If you can't wind up with m (m a), then there is no place for join.

<comment><USER11> Yeah, exactly. The other way to see it is to note that `Nothing(null)` is a perfectly reasonable Javascript expression which ought to mean something different from `null` alone. If that cannot be true then you don't actually have parametricity.

</comment></comment></comment></comment></comment></comment></comment><comment><USER13> We've leaned on this functional JS library to make JS more type safe ([https://github.com/plaid/sanctuary](https://github.com/plaid/sanctuary)). Heavily borrows Monads and other FP concepts.

<comment><USER14> Very powerful addition to JS. Definitely using this in my next project.

</comment></comment><comment><USER11> Here's a thing I wrote when this was submitted to Lobste.rs: an implementation of the continuation monad which was elided.

[https://lobste.rs/s/r5oeqr/monads_in_javascript/comments/sxt...](https://lobste.rs/s/r5oeqr/monads_in_javascript/comments/sxtbia#c_sxtbia)

</comment><comment><USER15> Am I crazy that I never understood the point of talking about monads? It just seems like a trivial pattern. It's like having a Subroutine Pattern, or a Variable Assignment Pattern. I'm all for investing in better primitives, but do these kinds of libraries really help vs implementing them from scratch with language primitives inside your (inevitably more complex) domain code?

<comment><USER16> The big problem with monad tutorials is that you can't talk about them without understanding the motivation behind them, and that comes from purely functional languages (i.e. Haskell). When you're not allowed to touch IO, use `null`, exceptions don't exist, there is no global state, and all of these things have a common pattern to them, then you can motivate their use and talk about them. In my opinion, there isn't much of a point in talking about them without those things. There are some neat tricks (`flatMap` etc...) but without proper motivation, it's not likely to stick, and the idea seems relatively useless.

<comment><USER17> So what you're saying is that these purely functional languages are so restricted that if you want to do anything useful in them, you _need_ this concept that nobody on the internet is able to actually explain.

Makes me want to use purely functional languages even less.

<comment><USER18> > So what you're saying is that these purely functional languages are so > restricted that if you want to do anything useful in them, you _need_ this > concept that nobody on the internet is able to actually explain.

What do you define as useful? Reading a file and taking the first line maybe? Here's what you need to know:

Start ghci (I'm using stack[0], if you don't have stack you can also just use `ghci` here).

        cody@cody-G46VW:~$ stack ghci
        Using resolver: lts-2.16 from global config file: /home/cody/.stack/global/stack.yaml
        Configuring GHCi with the following packages:
        GHCi, version 7.8.4: http://www.haskell.org/ghc/  :? for help
        Loading package ghc-prim ... linking ... done.
        Loading package integer-gmp ... linking ... done.
        Loading package base ... linking ... done.
        Prelude> import Control.Applicative ((<$>))
        Prelude Control.Applicative> readFile "/etc/issue"
        "Ubuntu 15.04 \\n \\l\n\n"
        Prelude Control.Applicative>

Now we are going to use the $ sign which allows you to avoid extra parenthesis.

        Prelude Control.Applicative> let add x y = x + y
        Prelude Control.Applicative> let subtract x y = x - <USER2>
        Prelude Control.Applicative> add 5 (subtract 3 5)
        3
        Prelude Control.Applicative> -- now using $
        Prelude Control.Applicative> add 5 $ subtract 3 5
        3
        Prelude Control.Applicative> -- what's the point of me teaching you the $ operator?
        Prelude Control.Applicative> -- it's similar to one we'll use to apply our lines function to what readFile returns

How can we split the file by newline?

        Prelude Control.Applicative> (fmap lines (readFile "/etc/issue"))
        ["Ubuntu 15.04 \\n \\l",""]

From there, how can we get the first item?

        Prelude Control.Applicative> (fmap head (fmap lines (readFile "/etc/issue")))
        "Ubuntu 15.04 \\n \\l"

The duplication of fmap is getting kind of tedious to me. We can use function composition to avoid it. I'll use the add and subtract function definitions from above, but I'm sure it's obvious what those do.

        Prelude Control.Applicative> let addFiveSubtract3 x = (add 5 . subtract 3) x
        Prelude Control.Applicative> addFiveSubtract3 0

Now you know (hopefully) how function composition works, how can you use it for real stuff?

        Prelude Control.Applicative> -- back to reading files and stuff
        Prelude Control.Applicative> fmap (head . lines) (readFile "/etc/issue")
        "Ubuntu 15.04 \\n \\l"

Remeber that seemingly pointless detour to teach you what $ does? Let's try using that.

        Prelude Control.Applicative> fmap (head . lines) $ readFile "/etc/issue"
        "Ubuntu 15.04 \\n \\l"

There is an infix version of fmap called <$> which you might notice resembles $ with the addition of square brackets, kind of like it's in a box or something. Try removing `fmap` and replacing `$` with `<$>`. I'll wait here.

....

....

....

....

....

Done? Alright, here is the solution just in case:

        Prelude Control.Applicative> (head . lines) <$> readFile "/etc/issue"
        "Ubuntu 15.04 \\n \\l"

We can actually get rid of the parenthesis on the left hand side of <$> like so:

        Prelude Control.Applicative> head . lines <$> readFile "/etc/issue"
        "Ubuntu 15.04 \\n \\l"

Now how can we print it out? Well, let's see what our type is:

        Prelude Control.Applicative> :t head . lines <$> readFile "/etc/issue"
        head . lines <$> readFile "/etc/issue" :: IO String

Something to know about Haskell is that it's okay to be naive and pick functions whose type signatures look like they do what you want. There are even search engines[1][2] that take type signatures and give you functions.

So what is the type of putStrLn?

        Prelude Control.Applicative> :t putStrLn
        putStrLn :: String -> IO ()

How could we go from `IO String -> IO ()`? Well, IO is a Monad (thing which follows some rules as defined by typeclasses). A monad defines a few things as you can see here:

[http://hackage.haskell.org/package/base-188.8.131.52/docs/Prelude...](http://hackage.haskell.org/package/base-184.108.40.206/docs/Prelude.html#v:-62 --62--61-)

But remember, we aren't interested in intimately understanding all that stuff... just in getting our functionality working. Maybe later we can circle back and figure stuff out at a deeper level.

The first function defined is >>=, whose type is:

        (>>=) :: Monad m => m a -> (a -> m b) -> m b

What was that type we needed again? Let's compare these two:

        (>>=) :: Monad m => m a -> (a -> m b) -> m b

If we look at the type of our function getting the first line of a file:

        head . lines <$> readFile "/etc/issue" :: IO String

We see that it can fit into the m a part of this:

        (>>=) :: Monad m =>  m      a    -> (a -> m b) -> m b
                             IO   String

Keep in mind that m means Monad, as is specified in the typeclass constraint to the left of `=>`.

Now we can specialize our type signature to:

        (>>=) :: Monad m => IO String -> (String -> IO b) -> IO b

What's an `IO b`? `a` meant anything so what does `b` mean? `b` actually means anything too, but a was already taken in the earlier part of the type signature.

If we look at the type of our putStrLn function:

        putStrLn :: String -> IO ()

You might notice it fits into the second part of our new specialized type signature:

        (>>=) :: Monad m => IO String -> (String -> IO b) -> IO b
                                          String -> IO ()

aside: () is kind of like void, at least that's how I think of it. It's actual name is unit.

So our full function is now:

        (>>=) (head . lines <$> readFile "/etc/issue") putStrLn

Let's try it out:

        Prelude Control.Applicative> (>>=) (head . lines <$> readFile "/etc/issue") putStrLn
        Ubuntu 15.04 \n \l

Cool, now notice that I put parenthesis around the infix function to make it a prefix function. Let's take those parenthesis off and use it as a proper infix function:

        Prelude Control.Applicative> (head . lines <$> readFile "/etc/issue") >>= putStrLn
        Ubuntu 15.04 \n \l

Take out superfluos parens:

        Prelude Control.Applicative> head . lines <$> readFile "/etc/issue" >>= putStrLn
        Ubuntu 15.04 \n \l

There is a flipped version of >>= called =<< that is easier to read in this case to me:

        Prelude Control.Applicative> putStrLn =<< head . lines <$> readFile "/etc/issue"
        Ubuntu 15.04 \n \l

We could have also used do notation and the `<-` or "draw from IO to variable on the left, taking appropriate actions as defined by the Monad context you are in in the case of a failure". So if you are in the Maybe monad's context, a failure will cause a break (using imperative terms) and return Nothing.

The example using do notation:

        Prelude Control.Applicative> putStrLn myLine
        Ubuntu 15.04 \n \l

There, now you know how to use monads and functors to some degree for a real problem and know the minimum knowledge (as far as I can tell) necessary. Why do all of this just to read the first line of a file?

Now that you know how the machinery works it's pretty simple and gets you composability and referential transparency.

Want to know more about Functors and Monads (maybe even applicatives O_o)? Check out Functors, Applicatives, And Monads In Pictures[3].

0: [https://github.com/commercialhaskell/stack](https://github.com/commercialhaskell/stack)

1: [https://www.haskell.org/hoogle/](https://www.haskell.org/hoogle/)

2: [http://hayoo.fh-wedel.de/](http://hayoo.fh-wedel.de/)

3: [http://adit.io/posts/2013-04-17-functors,_applicatives,_and_...](http://adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html)

<comment><USER17> Dude, if you wanted to open a file and read the first line, then just do so. What you're doing is try to derive this simple task in a cery complicated matter full of weird symbols that, even if you don't believe it, are not entirely obvious. People who want the first line of a file want something that expressed that in an obvious matter, not with a baggage of functional programming theory.

<comment><USER18> > Dude, if you wanted to open a file and read the first line, then just do so.

After knowing how the Monads and Functors work, I can:

        putStrLn =<< head . lines <$> readFile "/etc/issue"

There are advantages to separating pure and impure functions. Pure functions can be tested more aggressively with property testing for instance. They can also be optimized more agressively.

Most of the errors in software in my experience come from impure functions, so handling it in a principled way seems to reduce bugs.

> People who want the first line of a file want something that expressed that > in an obvious matter

I feel like you mean to say "want something that expressed that in a familiar matter". The Haskell definition I used at the beginning of this comment is obvious to someone familiar with the basics of the programming language.

> not with a baggage of functional programming theory.

What functional programming theory? To put this into OOP terms this is just working with well defined Objects that adhere to an interface and whose failures are encapsulated in a sensible way.

edit: I agree it's harder to see or explain these advantages. Please give the tutorial I posted a quick once-over and let me know what you think. If you have specific criticisms about smaller and more specific pieces I think we could have good discussion.

To be honest I'm constantly re-assessing whether it's worth having to deal with the "baggage" of Haskell as you refer to it. However I go back to using other less principled languages and things simply don't ever seem to work out as well.

</comment></comment></comment></comment></comment></comment><comment><USER19> Taking that (free) class on coursera was an eye opener on all the things that are discussed in this article. Highly recommended:

[https://www.coursera.org/course/reactive](https://www.coursera.org/course/reactive)

<comment><USER20> This looks awesome. I wish there was way to watch the videos of the course.

<comment><USER21> I was able to "join" the course for free and all of the videos are available.

</comment></comment></comment><comment><USER22> Love Javascript and want to learn FP? Checkout this book - [https://github.com/DrBoolean/mostly-adequate- guide](https://github.com/DrBoolean/mostly-adequate-guide).

I stumbled upon it last week and I've found it to be quite approachable (although I haven't yet read the section on Monads).

<comment><USER23> search in repository + pattern matching --> no results

:(

<comment><USER22> Not sure I understand - are you looking to learn about 'pattern matching' in Javascript and couldn't find anything in the book?

<comment><USER23> correct

<comment><USER24> [https://github.com/natefaubion/sparkler](https://github.com/natefaubion/sparkler)

</comment></comment></comment></comment></comment><comment><AUTHOR> I came to an understanding of monads the other day thinking about fail-and- reverse-on-error applications like messing with the filesystem. I have an example of this (and a simple implementation in OCaml) if it helps you [0]. After my "breakthrough", I've been seeing monads everywhere; everything is a nail.

[0] [https://github.com/eatonphil/monad](https://github.com/eatonphil/monad)

</comment><comment><USER25> In a strict (as opposed to lazy) non-functional language monads make no sense. Write two statements which uses a temp variable on the same line, separated by a semicolon - this is your monad.

<comment><USER26> No way. While I do agree monads don't make sense in some imperative languages, writing two statements on the same line is not a monad.

</comment></comment><comment><USER26> I recently grokked monads, only to realize that monads are just a special case of something more general called arrows. waah.

</comment><comment><USER27> Well, those are some fancy ligatures.

Wonder why the author enabled st but not ct, though...</comment>


Why programming manuals aren't on audiobook - <AUTHOR> http://vimeo.com/116986391

<comment><USER2> In college, I made cassette tape recordings of myself reciting various mathematical formulas, and listened to the tape on my way to class. That would have been a ridiculous way to learn the material the first time, but it was helpful for reviewing it.</comment>


CSS Sans – A pure CSS font - <AUTHOR> http://yusugomori.com/projects/css-sans/fonts <comment><USER2> This is really well done and polished. Great stuff. About a year ago when I was bored, I made a quick and dirty codepen [1] of the exact same thing you have here. I added a transition to it so you can type to switch the letters.

I also made it so you can type with pure CSS letters [2]. It's nothing great like what you've done, but I'd thought I would share anyways.

[1] [http://codepen.io/ncerminara/pen/yFcfn](http://codepen.io/ncerminara/pen/yFcfn)

[2] [http://codepen.io/ncerminara/pen/cEbGC](http://codepen.io/ncerminara/pen/cEbGC)

<comment><USER3> The non-webkit-transform is missing on the .t::before.

<comment><USER4> I've come to love autoprefixer[1] on a current project for just this reason. It's a CSS preprocessor that deals with prefixing and property syntax changes across browser versions. Usage:

        1. Write unprefixed CSS
        2. Tell autoprefixer what browser versions to support
        3. It adds the correctly prefixed properties for you

Interestingly, autoprefixer uses the property support data from caniuse.com to determine what prefixes to apply.

[1] More info and link to interactive demo at: [https://github.com/postcss/autoprefixer](https://github.com/postcss/autoprefixer)

</comment></comment></comment><comment><USER5> Very cool how this project uses the font face to explore how CSS rendering has evolved over time. I find it strangely beautiful when rendered in IE 6/7, almost like an alien language.

[http://yusugomori.com/projects/css- sans/archive](http://yusugomori.com/projects/css-sans/archive)

<comment><USER6> Finally, a legitimate reason for IE 6 to exist.

</comment></comment><comment><USER7> Really cool exercise in CSS. My first thought is that texts displayed using this font can't be selected/copied & won't be screen reader friendly. Might make for a great way to display your email or phone number on a site without worrying it would get scraped by marketers.

<comment><USER8> I thought this too at first, but then I realize that an image would do the job just as well.

<comment><USER9> Seriously, this is the stupidest thing I've ever seen. Why are people pretending this would be useful in any way at all?

I see how its a fun exercise in CSS and everything, but actually providing it as a download as if people will use this productively is stupid.

<comment><USER10> >this is the stupidest thing I've ever seen

Lol obligatory XKCD!

[http://xkcd.com/1497/](http://xkcd.com/1497/)

</comment></comment></comment></comment><comment><USER11> Here's another one; a bit more stylized and can be copy+pasted:

[http://people.mozilla.org/~mclaypotch/CSS- Sans/](http://people.mozilla.org/~mclaypotch/CSS-Sans/)

(GitHub: [https://github.com/potch/CSS-Sans](https://github.com/potch/CSS- Sans))

<comment><USER12> "can be copy+pasted"

[http://imgur.com/8SNbm0k](http://imgur.com/8SNbm0k)

</comment></comment><comment><USER13> As usual, the S looks strange.

No wonder Knuth dedicated a whole chapter to this one letter in "Digital Typography".

</comment><comment><USER14> This is pretty cool. It's unfortunate that some characters (CGJQ) require masking with a background colour to get the desired shape. It would be nice if this could be resolved so this could be used on any background.

<comment><USER15> This might be viable using Sass or Less, since they have support for variables, nested selectors, etc. Although I'm not really a front-end engineer, so I don't know exactly what would be involved.

<comment><USER16> Sass or Less still output standard CSS in the end, which gets interpreted by the browsers. Anything written in Sass or Less would still have to work within the limitations of CSS.

</comment></comment></comment><comment><USER17>

</comment><comment><USER18> Appreciate the meta css rules to explain on hover. Now let's build an ascii rasterizer on top [http://imgur.com/VyEAzsm](http://imgur.com/VyEAzsm).

</comment><comment><USER19> The S looks out of place.

</comment><comment><USER16> This is the kind of stuff I come to Hacker News for! Inspirational, brilliant, beautiful, and awe-inspiring.

</comment><comment><USER20> Very cool project but I fear that this approach will only work for relatively simple glyphs that can be broken down into 3 sections (main, :before and :after) whereas Chinese characters, for example, may take up a few dozen strokes.

</comment><comment><USER21> I love this project, I think it is wonderful. I'm not sure of the practical usage but I don't care, it just strikes me as smart, and looks very nice.

</comment><comment><USER22> A stupid question I imagine, but wouldn't em be more appropriate than px for the defined units ?

Couldn't the size be defined proportionally to the expected size ?

</comment><comment><USER23> Very nice! Now for the lower case, should be easy. :)

</comment><comment><USER24> what would the practical usage of this be?

Honest question.

<comment><USER25> Typography that maintains a relative width to the rest of the page content and scales with everything else. Similar to how it's desirable to use CSS shapes over images.

</comment></comment><comment><USER26> Are there any advantages to using this over other methods for large text?

Also, can anyone think of any practical uses for this?

<comment><USER16> what about responsive logos, or as a basis for some responsive CSS illustration?

</comment></comment><comment><USER27> Would it be possible to use CSS to draw glyphs using data from Metafont source files?

<comment><USER28> KaTeX does a lot of interesting CSS tricks. I don't think it goes all the way down to the Metafont level, though.

[https://github.com/Khan/KaTeX](https://github.com/Khan/KaTeX)

</comment></comment><comment><USER26> Anyone have an idea what that aberration is in the hook of the Q?

<comment><USER29> It cuts off the end of the tail. Also look at how the tail of the "J" is done.

</comment></comment><comment><USER30> this is amazing!

</comment><comment><USER31> seriously just blew my mind with this.

</comment><comment><USER32> At the risk of making an uninteresting comment -- I really love seeing cool/interesting work like this done by people who aren't devs in America. Not that there's anything wrong with American tech or devs particularly, but just that I feel like we're finally getting at the true promise of the internet.

Great work, Found the characters really consistent in style, and obviously functional.

<comment><USER33> There's nothing new about non-Americans creating amazing software. Linus Torvalds is Finish. Guido van Rossum is Dutch. Matz is Japanese. Fabrice Bellard is French. DHH is Danish. Tim Berners-Lee is English.

And that's just off the top of my head!

<comment><USER34> Skype! Mention Skype! :-)

</comment></comment></comment><comment><USER35> You can already do regular fonts in pure css. See. Here's open sans in pure CSS. [https://github.com/steakejjs/OpenSans- CSS](https://github.com/steakejjs/OpenSans-CSS)

I've actually found its much nicer using this in my projects than using a font cdn or self hosting woff files.

I do like the minimalism of css rules to creating this font as opposed to having a giant data section. It's pretty neat

<comment><USER34> I miss the html-pages of old times. [http://motherfuckingwebsite.com/](http://motherfuckingwebsite.com/) Just full of information. Or non-information. But full of it and not full of empty space or animated backgrounds that makes my cpu-fan convert to jet-engine.

<comment><USER36> Thanks for this link! I've always love reading GNU manuals in HTML because it relies on your browser's navigation, which is always better than what any website could implement itself. Ctrl-F is fast because scrolling is trivial and doesn't require a Javascript callback for every pixel scrolled, and without a CSS-customized div after every paragraph, you can load web pages containing 2MB of _text_ just fine.

<comment><USER37> Why don't you read GNU manual with `man` in a terminal? (Genuine question)

<comment><USER34> Have to open up a new window anyway if it is any sort of long man-page that needs reading while constructing the command in another window?</comment></comment></comment></comment></comment>


Drinking 1% rather than 2% milk accounts for 4.5 years of less aging in adults - <AUTHOR> https://medicalxpress.com/news/2020-01-accounts-years-aging-adults.html <comment><USER2> > "If someone asked me to put together a presentation on the value of drinking > milk, I could put together a 1-hour presentation that would knock your socks > off. You'd think, 'Whoa, everybody should be drinking more milk.' If someone > said do the opposite, I could also do that.

Pretty much sums up the state of nutrition science.

<comment><USER3> Yep. And this story is some "John Tesh Radio Show" tier fluff.

<comment><USER4> I wonder if the scientist in question doesn't know of the possibility of confounders, didn't mention them to the reporter, or the reporter just didn't think that was exciting enough to include in the article. It seems just possible that there is something about 1% fat milk drinkers that is different from 2% fat milk drinkers, which causes them to drink 1% fat milk and which also causes them to have longer telomeres. Unfortunately, there is no link to the study, so we can't see what was controlled for. But if I were a betting man I'd bet that most of the difference is caused by other causes than the difference in milk drinking.

<comment><USER5> I think this is correct. The non-milk-drinkers had telomere lengths between those of the reduced-fat and the full-fat groups, which leads me to conclude that among milk-drinkers, those who go for the reduced-fat milk tend to live a healthier overall lifestyle. Those who go for the full-fat milk tend to live a less healthy lifestyle. The non-milk-drinker category is a mixed bag, since the preferred-fat-percent variable is lost.

</comment></comment></comment></comment><comment><USER6> Alternative hypothesis: People who choose to trade flavour for lower milk fat tend to also be more risk-aware, prefer a healthier lifestyle (don't smoke, work out) which contribute to slower telomere shortening.

People who chose flavour over lower milk fat would probably self-describe as "living the moment", likely tend to favour short-time gratification more, and do more activities that lead to faster telomere shortening.

<comment><USER7> the researchers took steps to mitigate the potential effects of confounding variables:

[https://new.hindawi.com/journals/omcl/2019/1574021/](https://new.hindawi.com/journals/omcl/2019/1574021/)

<comment><USER8> Serious question - would it make these studies more accurate if in addition, the scientists were also able to control for differences in dna? ie, maybe protein absorption is not as good in a significant amount of the tested population for this study.

</comment></comment></comment><comment><USER9> But, "Kids who drank whole milk were at a 39 percent reduced risk for being overweight than those who drank low-fat milk"?

From just 8 days ago.

Really getting tired of these conflicting narrow food/health studies.

NYT: Whole Milk May Be Better When It Comes to Children's Weight

[https://www.nytimes.com/2020/01/07/well/whole-milk-may-be- be...](https://www.nytimes.com/2020/01/07/well/whole-milk-may-be-better-when- it-comes-to-childrens-weight.html)

<comment><USER10> The article specifically says "in adults", so it's not conflicting.

<comment><USER9> True, and my frustration probably shows. I shouldn't rant.

Maybe the finding is drink whole milk until 18 to lower risk of obesity then switch to 1% to slow effects of aging.

What I'd like to see is a reliable source that synthesizes recent, reproducible research into cogent diet recommendations. Anyone aware of such a source?

In the meantime, I'd prefer not to be pestered by narrow tree-instead-of-the- forest articles that seem to be published every week with hyperspecific diet research. Up to me to ignore them I guess instead of ranting.

Still I thought this was an especially poignant example of research popularized just a few weeks apart that could understandably leave many people wondering what action to take or reducing confidence in diet research in general.

<comment><USER11> NNR 2012 is pretty good [https://www.norden.org/en/publication/nordic- nutrition-recom...](https://www.norden.org/en/publication/nordic-nutrition- recommendations-2012)

</comment></comment></comment></comment><comment><USER12> I wonder if anyone's studied the effect that keeping up with nutrition studies has on lifespan.

<comment><USER13> There's a study I want to see. Mortality rate broken down by cause compared to health enthusiasm rated by sect.

Or even simpler, compared to book ownership. Pick a few hundred of the most popular health books and track a population of owners and their cause of death or significant health events.

</comment></comment><comment><USER14> Just opened the study and read a bit about the methods and I wonder why they didn't include people that do not drink milk so the telomere lengths could be compared.

We cannot know if milk (in general or 1%) is causing aging or protecting against it, cases which point for very different conclusions.

This table also has something interesting that corroborates with this idea:

[https://new.hindawi.com/journals/omcl/2019/1574021/tab4/](https://new.hindawi.com/journals/omcl/2019/1574021/tab4/)

Note how the ones that rarely drink any milk have the same telomere lengths, same as the ones that drink full fat or 2% milk. SE is also so big for 1% and non-fat on the "rarely" row that telomere lengths can be considered to be the same for all the columns (on this row).

It makes me wonder if it's the milk or if there is any other covariable that is playing a role here. In fact, they themselves cite this in the study ("Discussion" section):

"However, it is possible that other dietary differences account for some of the biological aging differences among the milk fat categories."

Therefore, I'd take this study with a grain of salt. If anything can be concluded by these numbers is that 1% milk may be protective, not that full- fat milk promotes aging.

</comment><comment><USER15> I hate food science, Just few weeks back had switched from 1% milk to full fat milk by reading one another article which states opposite. That sugar lobby has demonised fat and actually consuming non skimmed milk reduces craving. So you do less beinge eating. Now this is opposite!!

<comment><USER16> Now look up dairy lobbying. I'd wean off cows' milk entirely if you don't like to be manipulated.

</comment></comment><comment><USER17> I know everyone's reaction (mine included) was: "No shit, people who drink low-fat milk probably live healthier lives in general"... But it looks like they really did account for other variables and found that milk-fat percentage was the only strong factor in play:

> "High-fat milk consumers may have lifestyles that are less healthy than low- > fat milk drinkers. Since this possibility was recognized before the onset of > the investigation, statistical adjustments were made for a dozen potential > confounders. Statistical analyses determined that these variables had little > influence on the milk fat and telomere relationship. Nevertheless, other > variables could explain some of the relationship between milk fat intake and > telomere length identified in the present investigation."

Source: [https://new.hindawi.com/journals/omcl/2019/1574021/](https://new.hindawi.com/journals/omcl/2019/1574021/)

<comment><USER18> Okay, but let's stop and think about it for ten seconds: _Of course_ drinking a slightly different brand of milk doesn't make you live 4.5 years longer; the headline claim is obvious nonsense. (And as I understand it, it's now thought that to the extent there is any difference, it's in favor of the high-fat milk.)

So then the conclusion seems to be that confounding factors have an extremely strong effect on the conclusion, even when the investigators have tried hard to screen them out.

Why? What went wrong with the attempts to screen out the confounding factors?

<comment><USER17> To be fair, it's a pretty large claim to just assume that something "went wrong with the attempts to screen out the confounding factors" and that the conclusion _must be_ false.

It's a shocking conclusion, I'll give you that. And to be honest, I'm not convinced either. You might very well be right. But it's a strong claim to make agains a peer-reviewed journal publication.

<comment><USER19> > _But it 's a strong claim to make against a peer-reviewed journal > publication._

Remember that peer-review only means that two or three persons had read the manuscript and found no obvious error and think it's inteligible and interesting. It doesn't mean that the reviewers had reproducer and checked all the details.

It is more trustworthy that a webpage in all-caps with white text over a black background, but it depends a lot of the journal. There are serious journals, and there are crappy journal that publish any rubbish if you pay them.

This is not may area, so I'm not sure. I looked at the other articles published in the journal and they look fine, but this is not my area. (Crackpot articles tend to aggregate, so looking at the other articles is sometimes useful.)

It's is very strange that an article about 5834 persons has only one author. Again, this is not may area, but I'd expect 5 or 6 authors. (The other articles in the journal have multiple authors.) It's not a smoking gun, but it's _very_ strange.

In the article, the more interesting part is table 4 [https://new.hindawi.com/journals/omcl/2019/1574021/tab4/](https://new.hindawi.com/journals/omcl/2019/1574021/tab4/) It looks fine. I didn't redo all the calculations, but it looks fine. (It may be a professional defect I have, but for me most articles are "Bla bla, bla bla, _important table_ , bla bla.".) The table looks nice.

Also, they are measuring telomere length, not a self reported coefficient. I never trust self reported data. (Some of the covariant they use are difficult to measure like "percentage of total energy derived from saturated fat". How did they measure that? Anyway, I don't expect that to be a problem.)

It's important to wait until the study has been reproduced. (Exact reproductions are difficult to finance and publish, but you can make a twist. For example comparing the four combinations of normal vs cocoa milk and 1% vs 2% milk.)

@GP: Note that the (research) article does not claim that you live 4.5 years longer. They claim that the telomeres are reduced approximately 145 bases, that is somehow equivalent to 4.5 years of aging. Probably having 145 less bases in the telomeres increase some illness, but I doubt it affect too much the accident death rate.

</comment></comment></comment></comment><comment><USER20> Serious question: is 1% milkfat known to be "more healthy" than 2%? The body needs fats, and the USA (most of all) is still recovering from an unhealthy fear of fats instilled by the megacorps the past ~30 years. [me: grew up drinking 2% until I was fully grown / 18yrs]

<comment><USER21> It's become more complicated:

[https://www.health.harvard.edu/staying-healthy/are-fats- so-b...](https://www.health.harvard.edu/staying-healthy/are-fats-so-bad)

</comment></comment><comment><USER22> The study:

[https://new.hindawi.com/journals/omcl/2019/1574021/](https://new.hindawi.com/journals/omcl/2019/1574021/)

>Effect modification testing indicated that the milk fat and cellular aging association may be partly due to saturated fat intake differences across the milk fat groups. When the sample was delimited to adults reporting only high total saturated fat intake (tertile 3), the milk fat and telomere relationship was strong. However, when the sample was restricted to adults reporting only low saturated fat consumption (tertile 1), there was no relationship between milk fat intake and telomere length.

<comment><USER23> Wow, if the creator of this website is reading - please stop with the crazy locked headers and auto-adjusting panels on the top and bottom.

</comment></comment><comment><USER24> This is consistent with other research that found that vegans live about 10 years longer on average. It seems no-milk is even better for longevity than low-fat milk.

[https://www.independent.co.uk/life-style/health-and- families...](https://www.independent.co.uk/life-style/health-and- families/health-news/vegan-meat-life-expectancy-eggs-dairy- research-a7168036.html)

<comment><USER25> India has the highest percentage of vegetarians of any country (at 38% of the population), yet they rank 128th out of 185 countries in life expectancy. Meanwhile, you look at the top 10 countries for life expectancy, and there's plenty of meat in the diet, including Hong Kong, who eat more fish and beef than Americans do, and Iceland, who consume at least 200 pounds of fish a year:

[https://en.wikipedia.org/wiki/List_of_countries_by_life_expe...](https://en.wikipedia.org/wiki/List_of_countries_by_life_expectancy)

<comment><USER26> Are you accounting for lead poisoning or mercury poisoning which seems common.

<comment><USER27> A quick quality check is Tamil Nadu v Karnataka (two neighbouring Indian states that are very similar).

Tamil Nadu (3% vegetarianism) - 70 years

Karnataka (21% vegetarianism) - 68.8 years

Doesn't look like I'd look there for life extension.

[https://en.wikipedia.org/wiki/List_of_Indian_states_by_life_...](https://en.wikipedia.org/wiki/List_of_Indian_states_by_life_expectancy_at_birth)

[https://en.wikipedia.org/wiki/Vegetarianism_by_country#India](https://en.wikipedia.org/wiki/Vegetarianism_by_country#India)

</comment></comment></comment></comment><comment><USER13> I am at the point where I don't believe any food or drug research and reporting has practical value outside cases where a linear relation between substance and effect is established and at a high enough dose the effect kills you.

The literature is full of fishing expeditions for premeditated statistically significant results. People seem to choose a belief set which is intuitively appealing to them (bonus points if it can make them feel like they are morally superior) and then write and share volumes which poorly represent weak research as gospel.

This report should say the opposite, more accurate "People with shorter telomeres prefer higher fat milk". There is no evidence presented that would indicate you can influence your telomeres by choosing different milk or that milk choice is actually the culprit.

Biology-substance-effect research and especially reporting is strongly biased towards telling a good story and the motivations driving that bias strongly devalue the results.

</comment><comment><USER28> Study Suggests Milk Doesn't Strengthen Your Bones - It Ages You Instead [https://www.sciencealert.com/study-suggests-milk-doesnt- stre...](https://www.sciencealert.com/study-suggests-milk-doesnt-strengthen- your-bones-it-ages-you-instead)

> _We've been brought up to think that drinking milk is good for our bones, > but new research suggests that not only is this false, but the sugars in it > may actually be accelerating the ageing process._

<comment><USER24> The large scale China Study had negative finds on human's drinking milk intended as a baby cow growth hormone as well: "Dr. Campbell says that in multiple, peer-reviewed animal studies, researchers discovered that they could actually turn the growth of cancer cells on and off by raising and lowering doses of casein, the main protein found in cow's milk." Ref: [https://www.wellandgood.com/good-food/china-study-cheat- shee...](https://www.wellandgood.com/good-food/china-study-cheat- sheet-10-things-you-need-to-know/)

<comment><USER29> Dr. Jason Fung often shows a graph from a study showing that Osteoporosis increased in Greece over the years, correlated to the increase in milk consumption.

</comment></comment></comment><comment><USER30> Link if anyone wants to read the actual paper: [https://www.researchgate.net/publication/336877579_Milk_Fat_...](https://www.researchgate.net/publication/336877579_Milk_Fat_Intake_and_Telomere_Length_in_US_Women_and_Men_The_Role_of_the_Milk_Fat_Fraction)

Also:

Conflicts of Interest: The author declares no conflict of interest.

</comment><comment><USER31> Without a biological mechanism this is just a correlation, no matter how much statistical correction they claimed to do.

</comment><comment><USER32> Not probable and highly likely to be confounded by secular and social cofactors. These dietary models and recommendations in humans are dumb "one size fits all". We know from extensive animal research that genome-by- environmental effects are pervasive and can be large. For example in a highly diverse family of mice, a very high fat diet—60% calories from lard—is advantageous in terms of longevity in a few family members; although also true that this extreme diet is generally deleterious (see bioRxiv paper by Suheeta Roy and colleagues, GXE BXD study, 2019).

The contrast between whole milk and no-fat milk is a comparatively subtle dietary shift.

Extraordinary claims require extraordinary evidence, especially when they can impact millions of humans.

<comment><USER7> the researchers took steps to mitigate the potential effects of confounding variables. here is a link to the full study:

[https://new.hindawi.com/journals/omcl/2019/1574021/](https://new.hindawi.com/journals/omcl/2019/1574021/)

</comment></comment><comment><USER33> I knew my grandma who spent her life drinking 4% whole milk should have lived another twenty years!

</comment><comment><USER34> I hope people will follow the link to the actual research before commenting, because it addresses almost all of the objections that I'm seeing pop up repeatedly here: [https://www.hindawi.com/journals/omcl/2019/1574021/](https://www.hindawi.com/journals/omcl/2019/1574021/)

A smallish red flag from a scientist's perspective is that the article was published by a publisher based out of a developing country. There's nothing wrong with that per se, but in practice it often reflects a paper that for one reason or another couldn't get published in more well-known higher impact factor journals

</comment><comment><USER35> > "there was no relationship between milk fat and telomere length when total > saturated fat intake was low, but the association was strong when total > saturated fat intake was high."

Seems more to do with high saturated fat intake.

</comment><comment><USER36> Consumption of a near 0% fat cheese called Skyr has historically been high since the 11th century in Iceland. I do wonder if that may have had a role to play in our high average age expectancy.

Sadly our traditional food culture of Skyr, lean grass fed sheep and plenty of fish has given way to a more Americanized fast food culture. So it wouldn't surprise me if our averages will start trending downwards in a generation or two.

</comment><comment><USER37> This is a useless research and doesn't prove anything.

Milk fat sourced from grass fed cows is actually pretty rich in healthy fats like Omega 3, CLA and Butyric acid. In fact many people who can't tolerate milk, can easily digest milk fats like butter and ghee which are devoid of the usual milk allergens (Lactose and Casein)

</comment><comment><USER38> I kinda wish they'd speculated on a cause and effect chain here, but then we'd have a different group of readers upset.

I might also like to see results with other kinds of fats, to know if it's something about milkfat in particular.

There was a theory a while back that the lipid size in homogenized milk might be problematic for the human digestive and circulatory system, causing them to get into places they shouldn't.

If that were true, I suppose you could explain these results by showing a link between early cardiovascular disease (CVD) and shortening of telomeres. But it looks like we have a bunch of studies showing shorter telomeres leads to CVD, not vice versa (although we've gotten cause and effect backward before so who knows at this point).

</comment><comment><USER39> Better yet, don't drink milk at all, it's unhealthy in the same ways as soda and fruit juice (milk does have a lot of sugar which I don't think a lot of people think about).

Don't drink your calories.

</comment><comment><USER40> When it comes to studies that involve measuring telomeres as a result, I've always wondered: is telomere length such a foolproof measure that it can be used to make claims like this? Given two people who will live their entire natural lifespan and have no complications, will the one with shorter telomeres necessarily die first? Are there tolerances of some kind?

</comment><comment><USER41> Does this study take into account other variables? The article also says that people who do not drink milk have shorter telomeres.

Could it be that people who drink 0% and 1% milk also eat fewer foods high in fat and sugar (or are more aware of their diet in other ways) compared to the average (i.e., those who do not drink milk and those who drink the most common milk available)?

<comment><USER34> The paper is open access, fortunately, so you can go view the list of covariates that were included in the model at the link

</comment></comment><comment><USER42> I don't know enough about chemistry to say, but does steaming milk (like for a latte) have any effect on its health properties? I ask because for milk based coffee drinks you _really_ want to be using whole milk. There are no taste and texture options that get anywhere near it.

<comment><USER43> Yes. Steaming milk degrades lactose into glucose and galactose, and coagulates some of the proteins.

<comment><USER13> Those aren't health properties, they both happen in your stomach regardless.

<comment><USER44> Unless you are deficient in your production of the enzyme lactase (lactose intolerant)

</comment></comment></comment></comment><comment><USER45> My immediate thought is, those who grab the 1% milk at the grocery store are more likely to make other healthy decisions as well. Can anyone comment on whether the study adjusted for this?

<comment><USER17> My immediate reaction as well. Seems like the perfect case of confounding. But after reading the paper, I saw this statement:

> "High-fat milk consumers may have lifestyles that are less healthy than low- > fat milk drinkers. Since this possibility was recognized before the onset of > the investigation, statistical adjustments were made for a dozen potential > confounders. Statistical analyses determined that these variables had little > influence on the milk fat and telomere relationship. Nevertheless, other > variables could explain some of the relationship between milk fat intake and > telomere length identified in the present investigation."

They didn't go into great detail as to what those confounders were, but it looks like they took that into account and isolated milk-fat percentage as well as they could. Source: [https://new.hindawi.com/journals/omcl/2019/1574021/](https://new.hindawi.com/journals/omcl/2019/1574021/)

<comment><USER46> It sounds like one must still assume they correctly accounted for all confounders.

<comment><USER17> Exactly. As I said, they didn't reveal much of the process that "accounted for confounding" but I just wanted to dismiss everyone's initial reaction that this is just an obvious case of confounding.

Perhaps it is. Perhaps it isn't. It just depends on how much you trust their methodology.

</comment></comment></comment></comment><comment><USER47> What is the default fat percentage for the milk of a traditional cow?

<comment><USER48> 3.25% [0]

[0] [https://en.wikipedia.org/wiki/Fat_content_of_milk](https://en.wikipedia.org/wiki/Fat_content_of_milk)

</comment></comment><comment><USER49> I'm gonna go on a limb without looking at this study and propose the following connection:

The people drinking 1% typically would exercise more and watch overall diet.

Shocking.

<comment><USER50> > There were a dozen covariates controlled in the present study (age, gender, > race, household size, smoking, body mass index, MET-minutes of total > physical activity, alcohol use, grams of protein consumed per kilogram of > body weight, percentage of energy derived from dietary fat, grams of dietary > fiber consumed per 1000 kilocalories, and percentage of total energy derived > from saturated fat.

<comment><USER51> How would one handle that many factors? I am very curious what the techniques for doing so would be.

I'm no expert but my initial reaction would be that you need more than 5834 adults in a study that controls for all of those factors. We don't really know how household size, for example, would affect the results, so wouldn't you need a bunch of test data to analyze all of the combinations? Or did they only study people who are the same in most of them? (i.e. 45, male, with a household size of 4, nonsmoking, etc...)

Would love to hear from someone more informed on this than myself.

<comment><USER34> It depends on the effect sizes, but in most contexts 5k participants is considered a very sufficient sample. You don't need millions of participants to study things like this.

</comment></comment></comment></comment><comment><USER52> Classic example of Co-relation doesn't equal Causation

</comment><comment><USER53> Do people who drink 1% milk eat low fat pizza and yogurt?

Do people who drink a lot of 1% love longer than people who drink a little 2%? What about 3.5%?

Is this just boring p-hacking?

</comment><comment><USER54> 1%? Why bother going half way: just switch to water.

</comment><comment><USER55> I'm skeptical. I've seen other studies where whole milk has a whole host of health benefits.

</comment><comment><USER56> So is drinking 0% milk better than 1%?

<comment><USER57> Drinking no milk at all is best! Reducing dairy intake reduces Parkinson's disease rate[0], reduces hip fracture rate[1], reduces twinning offspring rate in women[2], and may even reduce Prostate Cancer[3]. You really don't miss it after a while, and the most annoying thing is modifying your restaurant orders to remove all the cheese :/

[0]: [https://www.ncbi.nlm.nih.gov/pubmed/24894826](https://www.ncbi.nlm.nih.gov/pubmed/24894826)

[1]: [https://www.ncbi.nlm.nih.gov/pubmed/20949604](https://www.ncbi.nlm.nih.gov/pubmed/20949604)

[2]: [https://www.ncbi.nlm.nih.gov/pubmed/16779988](https://www.ncbi.nlm.nih.gov/pubmed/16779988)

[3]: [https://www.ncbi.nlm.nih.gov/pubmed/15203374](https://www.ncbi.nlm.nih.gov/pubmed/15203374)

<comment><USER58> > modifying your restaurant orders to remove all the cheese

I think I might rather have the cancer.

</comment></comment></comment><comment><USER59> Using 1% milk means you need twice as much for a decent cup of tea. It's a false economy.

</comment><comment><USER60> :doubt:

</comment><comment><USER61> Drinking NO MILK accounts for 8 years of less aging and reduced cases of Osteoporosis in adults.</comment>


The next big thing will start out looking like a toy (2010) - <AUTHOR> https://cdixon.org/2010/01/03/the-next-big-thing-will-start-out-looking-like-a-toy/ <comment><USER2> I think most participants in the Internet circa 1996 and personal computers in the early 1980s would understand this idea.

The Internet was being widely written off as a toy that many couldn't ever imagine having practical applications.

Case in point, this widely-cited piece from 1998:

> The growth of the Internet will slow drastically, as the flaw in "Metcalfe's > law"\--which states that the number of potential connections in a network is > proportional to the square of the number of participants--becomes apparent: > most people have nothing to say to each other! By 2005 or so, it will become > clear that the Internet's impact on the economy has been no greater than the > fax machine's.

[http://web.archive.org/web/19980610100009/www.redherring.com...](http://web.archive.org/web/19980610100009/www.redherring.com/mag/issue55/economics.html)

Here are some fun things about this concept of toys turning into big things:

1\. toys start out looking like toys, too

2\. it's extremely difficult to distinguish the toys that will remain toys forever from those that will become "the next big thing."

A useful approach to the problem posed by (2) is to look at things that appear to be toys but refuse to die despite every indication that they should have done so long ago.

Toys that remain toys often have a trendiness and inelasticity to them that gives them naturally short lives. If you see a toy lingering long beyond the time it should have given up the ghost, you may be looking at the next big thing.

The next problem is that it can take a very long time for a toy to turn into the next big thing.

<comment><USER3> By this test, is Lego the next big thing?

<comment><USER4> The real test, I think, is something that has genuinely useful applications to anyone with a little bit of vision.

Big entrenched players are unable to see the next big thing, because they see the world through the glasses of their successful business. Microsoft for example almost missed the internet, and suddenly realized it in 1995. I believe Bill Gates was quoted as saying it was just a fad. The funny thing is that more than a decade earlier (about 1980) I heard the same thing about "personal computers" or "microcomputers". Just a fad. A toy. Never will compete with IBM's "real" computers, etc.

Similarly, these new fangled "automobile" thingies will never become popular. They are noisy. Smelly. Unreliable. Difficult to start. You can even break your arm if it kicks back while you are cranking it. And worst of all (gasp!) they frighten the horses! That's why these automobile thingies are just rich kid's toys. A fad.

I guess they couldn't see that all of those imperfections I listed could be fixed.

Back in the 1990s I saw this interesting tv program. Sorry, can't remember. It was about personal computers. The person being interviewed said the entrenched players NEVER see the next big thing coming. So they hire someone smart who will see it coming, and then tell them when its coming. And then when they are told this is the NEXT BIG THING! They never believe it.

Speaking of Microsoft almost missing the internet, they did entirely miss the new generation of smartphones starting with the iPhone. Ballmer laughed at the iPhone. They woke up to the new reality after it was too late. Sorry iPhone and Android already dominated. Smart phones sold in unit volumes that dwarfed PC unit volumes. Win Phone 7, followed by an incompatible Win Phone 8 didn't stand a chance -- even with nice Nokia hardware.

<comment><USER5> The idea that you speak of, about bug entrenched companies not being able to see new things coming - it's the central theme of The Innovator's Dilemma. I highly recommend that book if you wish to read about this further.

<comment><USER6> I think you are replying to someone that has worked for G for a long time, and is using their knowm alt-account (i.e. not hiding anything). He probably read that book when he was ~25 yrs. old.

</comment></comment></comment></comment></comment><comment><USER7> If you're hung up on the word "toy," another way of phrasing this is the next big thing will look like just a hobby to most people.

Looking forward, smart homes and 3D printing are 2 industries that fall in this bucket. Both feel like toys to the majority of the market right now, but have the potential to completely change how we live.

3D printing - low-cost manufacturing has completely revolutionized what's possible for startups, and developed a large hobbyist following, but we haven't scratched the surface of how they can change day-to-day life for everybody. Imagine what's possible once they support more material types (metal, electrical circuits, food, etc) and every home has one, like an oven.

Smart homes - we just have fancy remote controls so far, but eventually we'll be living like Tony Stark with homes that constantly adapt to us without input. This is where we'll see the benefit of ambient computing present itself clearest. Imagine a home that helps you raise your child, keep your chores in order, or handle the repetitive tasks without requiring a primary care-taker to be responsible for keeping the home in order.

disclaimer: I'm building Hiome ([https://hiome.com](https://hiome.com)) to turn smart homes into more than just toys, so maybe I'm a little biased.

<comment><USER8> Before smart homes are more than just a toy, they need to have functionality that is actually time saving.

I've messed with smart home stuff and so far the only thing that has been useful beyond being a toy is our robot vacuum, which I'm not sure is really classified as a smart home thing.

As someone that lives in California, something that could be an actual $$ and time saver rather than just a toy is if I could have a system that would open windows rather than turning on the AC when the outside temperature is low enough.

<comment><USER9> _which I 'm not sure is really classified as a smart home thing._

This is amusing to me, I think as soon as something becomes somewhat common it will no longer be classified as "smart home". Sort of like how the definition of AI is a moving target.

<comment><USER8> It's definitely a smart device. But to me a smart home has a central system that can monitor a variety of inputs and, in response, control a set of things to accomplish some goal.

We have a robot vacuum and robot mopper. Me going over and pressing the robot vacuum button, then once its done, placing the robot mopper in position and pressing the start button, is using smart devices but isn't a smart home. If I can tell a central system to "clean the kitchen" and it starts the vacuum, and when that's done dispatches the mopper, that's a smart home.

I know higher end iRobots can do this sort of thing in their dedicated app. And if you can control that via a smart home hub then that would be smart home functionality to me.

<comment><USER10> A vacuum is really easy to use; what's a real pain is _cleaning the vacuum cleaner_. When are they going to automate _that_?

<comment><USER8> It might not sound like a lot, but it saves us 15-20 minutes of cleaning per day. We have 3 kids and get about 1-2 hours of free time per night. So its 12-33% more time to spend doing whatever we want rather than cleaning the house.

<comment><USER10> Vacuuming every day strikes me as misguided, even if (especially if) you have allergies, because the residual dust never has a chance to settle. I'm speaking as someone who has issues with household dust much beyond most people, and who has found even a good air purifier to be counterproductive if used 100% of the time.

</comment></comment></comment></comment></comment></comment></comment><comment><USER11> This did not hold up well, imo. Not sure how to count it but by some lists this is stuff like: Tencent, Alibaba, Amazon, Netflix, Priceline, Baidu, Salesforce.com, JD.com.

Others would include Uber/Lyft, Airbnb, GitHub, ...

There are only a few that would qualify that I can think of - Instagram, Snapchat, and WhatsApp.

If folks here have other examples or thoughts on why this does or doesn't hold true would love to hear them.

<comment><USER12> I can see curren-gen VR and AR games leading to next-gen "real AR" glasses with an impact on far more than just gaming.

<comment><USER13> Most VR/AR development activity I've seen seems to be about (industrial) training.

<comment><USER14> Where it would be most _definitely_ not a toy after a few iterations.

</comment></comment></comment></comment><comment><USER15> > Disruptive technologies are dismissed as toys because when they are first > launched they "undershoot" user needs. The first telephone could only carry > voices a mile or two. The leading telco of the time, Western Union, passed > on acquiring the phone because they didn't see how it could possibly be > useful to businesses and railroads – their primary customers. What they > failed to anticipate was how rapidly telephone technology and infrastructure > would improve (technology adoption is usually non-linear due to so-called > complementary network effects). The same was true of how mainframe companies > viewed the PC (microcomputer), and how modern telecom companies viewed > Skype. (Christensen has many more examples in his books).

Skype feels like a bad examples it was always fairly obvious video chat would be prevalent eventually. It was never obvious that Skype was the best answer, and there were Skype alternatives with similar offerings which have failed.

Skype itself may not last the long run if it can't keep up with zoom or whatnot.

</comment><comment><USER16> Here's a more full account of the Western Union and Bell settlement on patent infringement-

[http://oldtelephones.com/blog/2012/04/25/bell-telephone-- wes...](http://oldtelephones.com/blog/2012/04/25/bell-telephone--western- union-patent-agreement-of-1879/)

I'm also generally skeptical of revisionist narratives. People often say no one saw X coming, no one saw apps on a phone or a screen with buttons etc etc. But it seems hundreds or thousands of writers, designers, futurists, failed technologists and so on did predict these things. The hard part is building them and then creating a system (eg financed hardware) to create widespread adoption.

<comment><USER17> > People often say no one saw X coming, no one saw apps on a phone or a screen > with buttons etc etc. But it seems hundreds or thousands of writers, > designers, futurists, failed technologists and so on did predict these > things.

Often technologies are available long before they ever catch on with the mainstream. There were several PDAs sold in the 90s, and at least one had a built-in telephone. The Buick Reatta had a touch screen center stack in the late 1980s.

Technology adoption is weird. There needs to be the perfect storm of integration, marketing, and (for lack of a better term) zeitgeist to really make something mainstream. And even with all those things, it still takes YEARS to really get there. Think about how long techies were downloading TV shows/movies before streaming really took off -- Windows Media Center came out in 2002! That's a full six years before Netflix started its streaming service, which itself took several years to take off.

</comment></comment><comment><USER18> I have a question for those who were there at the very beginning of the internet. I heard that many were skeptical about both personal computers and the internet.. did it feel the same as it does right now with crypto- currency/quantum-computing? I wasn't there, but on my side, it feels like people were able to use internet right from the beginning, whereas there's a bigger leap to using crypto/quantum. Is it just that the infrastructure isn't in place to allow normal people to do easy things?

<comment><USER19> In the very beginning, it was restricted to a very, very small list of users in the military and colleges. At the time it seemed like a very useful tool and pretty fun to play with. The next phase was Mosaic and then Netscape creating the web, which also felt like a pretty neat and potentially useful toy. I remember passing around sheets of paper with URLs to type in, before there were search engines. And then it all exploded, everyone had to have it, and things changed a lot as the average user was both way less technical and way less well-behaved.

Given that, blockchain may be in a similar state to the early-middle Internet. It's out there, you can play with it, it's neat and seems useful even if for most people that practical purpose is elusive. Maybe someone has yet to create the Netscape that turns it into a must-have tech, but it might be happening as we speak.

(Edit: TCP/IP came out in 1983, and HTTP in 1990. In 1995, the year of the Netscape IPO and when everyone "knew" the web was a big deal, there were 40 million Internet users. Now there are about 32 million Bitcoin wallets. I think some of the other answers are remembering things a bit later in time, or more colored by hindsight.)

On the other hand, quantum is much farther out. The percentage of people who have used a quantum computer at all is minuscule. When it does become useful, it may be too expensive to see mass adoption for decades.

<comment><USER20> > I remember passing around sheets of paper with URLs to type in, before there > were search engines

Wow, what a throwback in time! I had completely forgotten that. Thanks for the sweet memories!

Also, I agree with your take. One key difference re. cryptocurrencies might be legal context however. Internet wasn't stepping on governments toes, more like disruption of the telco sector (which was already focused on emerging mobile at the time, a decade prior to smartphones). I'm not so sure the road is wide open for alternative currencies, because central banks and, oh, stability of the economy etc. It's a much tougher sell.

Blockchain itself however, the tech, may have killer-apps and uses — either as an evolution of currencies, or decoupled entirely from 'currency' (trustless secured distributed databases may fit many needs IMHO, notably for social purposes like contracts or unhackable communication).

</comment></comment></comment><comment><USER21> I'm trying to brainstorm what I think is a "toy" in today's tech market, and I can't think of much. Tech pundits who have seen 30 years of crazy endeavors are taking everything overly seriously. Companies have the resolve to invest billions in "jokes" (like Facebook Portal) stubbornly refusing to recognize a sunk-cost fallacy.

Instagram is the most recent example of a revolutionary toy - when everyone thought social media was a puzzle solved by Facebook, Instagram cut the fat and became a more elegant tool to getting a message across (and making some money in the process).

I could see Slack's fun approach to workflow automation and collaboration take off, but maybe I'm biased by what I'm investing my own time into learning.

<comment><USER22> Some examples of 'toys' in today's market - AR/VR, Drones,

Another factor is that investment in tech is dramatically higher today that it was 20 years ago (partly due to success that early investors had) and people are willing to invest in anything that looks like a 'toy' in the off chance it pays off.

<comment><USER23> Are drones still considered 'toys'? At least in photography, they have long ceased to be toys. Given that you have big companies working on them (like amazon for deliveries), I'm wondering if they are still in the 'toy' phase.

VR is. The incremental changes are not yet enough to make them practical for non-gaming use (and even gaming, they are amazing, but cumbersome). AR is firmly still in the toy camp.

</comment></comment></comment><comment><USER24> Surprised no one here has mentioned bitcoin.

</comment><comment><USER25> Discussed at the time: [https://news.ycombinator.com/item?id=1029069](https://news.ycombinator.com/item?id=1029069)

<comment><USER26> Fun to see that a decade ago, people were convinced that AR was going to be the next big thing. I could see that exact same argument being made today, nearly ten years later!

</comment></comment><comment><USER27> If you're excited by this concept I recommend the book "Wonderland: How Play Made the Modern World" by Steven Johnson. Fascinating stuff!

Here's a recorded talk and more info: [http://longnow.org/seminars/02017/jan/04/wonderland-how- play...](http://longnow.org/seminars/02017/jan/04/wonderland-how-play-made- modern-world/)

</comment><comment><USER28> I can't see how Skype was different in 2010 vs 2003. I mean, it provided facility for perfect clarity voice calls over the Internet right away and that never changed (arguably, clarity of a Skype voice call is worse now than it used to be). And it perfectly worked over then-day Internet connections. I had a mediocre quality dial-up in 2003 which was already long in the past for most developed countries, and i used Skype a lot, it worked OK - and when i moved onto 112kbps dedicated line - also considered slowish by developed countries' standards of the day - and Skype calls were literally perfectly clear all the time, every time. Much better than over a landline phone, if you had a headset.

So while agreeing with the rest of the article, Skype sounds like a wrong example. It was a total replacement for phone calls from day one. I never made, and maybe received only about 10, calls to/from my U.S. customers since getting on Skype, PSTN immediately lost me as a long-distance client.

</comment><comment><USER29> Recently watched George Hotz on video announce his latest update for Comma.ai. To sign up for their optional prime(?) monthly subscription account you've got to give them your GitHub account.

Gave a friend anxious to try self-driving a link. He then asks me what is GitHub? I explain it and he tells me, what is this some sort of tech toy? I could tell that he began to lose interest.

I well remember talking to people about getting on the Internet in 1994 and as soon as they found out they'd have to install a tcp/ip stack on Windows 3.1 they too soon lost interest.

I believe against all odds that Comma.ai just might be one of the eventual winners in the self driving market. Which is crazy because they're battling people who've invested billions of dollars. By coincidence the partner who brought Comma.ai to Andreesen Horowitz is Chris Dixon! Coincidence?

Personally I'm just waiting for them to add support for Ford.

</comment><comment><USER30> This was the approach Anki (which recently shut down) took for robotics. I actually had a similar idea, but whenever I went to the drawing board to make robot toys I could never make anything that was both fun and affordable - using videogames as a benchmark it basically always lost. I think Anki did as close to an admirable job as you could at trying to sell robotic toys while developing more utilitarian robots (they were working on a chore bot but it was woefully inadequate), but they still failed pretty hard. I was always surprised by their ability to continue to raise large sums of money (they raised about a quarter billion in total).

There is a similar approach being taken in the eVTOL space, with Kitty Hawk trying to develop their Heaviside as an obvious toy for the rich (single seater, short range, "quiet"). I think people will refuse to allow so much noise pollution in the skies, not to mention the inherent question of safety as all these designs make _serious_ compromises to flight stability in order to make them so lightweight and take off vertically.

There is merit to this approach though - you could certainly argue hypercars are toys for the super rich and eventually that technology trickles down to cheaper vehicles. But the economics around racing cars are much more complicated, including making an entire sport (and an extremely popular one at that) to justify the development costs. You could also argue Tesla did this, starting with the Roadster, then the Model S, and now the Model 3. Tesla's financials have been a source of great debate for a decade now though.

Whatever the next big thing is, I bet the media hasn't caught onto it yet. I don't think it's VR, AR, self-driving cars, general AI, or anything else that has already been woefully overhyped. It'll be something nobody was looking for and the right person stumbles upon it at the right place and time.

<comment><USER31> I actually think AR could still be the next big thing, once the integration becomes seamless and the peripheral technology doesn't look ridiculous

<comment><USER30> I'd have to try it. The question is what's the killer app? VR essentially has 3 things going for it after becoming somewhat mature - Google Earth, Beat Saber, and porn. All are considered better in VR, but none are really "omg VR is the future!" level of amazing (to be fair I haven't tried the porn yet so maybe I don't realize how much I'm missing out).

The notion of having a HUD for my eyes everywhere I go sounds neat at first, until I think about it a bit more and it just seems like sensory overload. I can always just pull out my phone if there's something I want to know, and that thing is already pretty invasive when it comes to my daily living - do I really need something more than that?

When it happens, we'll know. The iPhone was famously expected to be such a failure that Verizon refused to be a carrier. Microsoft also joked about Apple being able to make a smart phone. Blackberry felt the same way. The only company that took them seriously was Google with Android.

Out of curiosity, what is it you think AR will revolutionize? What do you consider the killer app?

<comment><USER32> A possible killer app might be something for business meetings. Videocalls are already a huge thing, but many feel like they're missing some real personal intimacy in there. If instead of a videocall, you could all be using AR to see each other walk around in front of you, that might make it a whole lot more appealing. If it's done right, you could have the same private one on one side conversations that are common in real life, but just in some AR space.

AR has a clear advantage over VR here as you wouldn't be blind to your real surroundings so you'd still be able to talk with the people in real life too (and not look like a doofus who walks into walls)

</comment></comment></comment></comment><comment><USER33> > _The reason big new things sneak by incumbents is that the next big thing > always starts out being dismissed as a "toy." This is one of the main > insights of Clay Christensen's "disruptive technology" theory. This theory > starts with the observation that technologies tend to get better at a faster > rate than users' needs increase._

Or perhaps new technologies are solutions in search of a problem, and without any concrete sense of self and hierarchy, user "needs" can get artificially inflated to infinity...

Kind of how people "needed" cigarettes in 1950, and "needed" bell bottoms in the 70s, and "need" a good smartphone camera today (because of course they also "need" to broadcast to their friends and everybody else what they ate for dinner, their latest selfie, and their life 24/7) -- even if nobody on the receiving end really cares, except perhaps their parents and grandparents...

</comment><comment><USER34> Observation: "comic book" movies today are largely not suitable for non- teenage children (practically all rated PG-13). What was literary version of "toy" is now 9-digit-budget blockbusters.

<comment><USER35> FWIW, my son is in 3rd grade and most of his peer group (8-9yo) has seen at least some of the MCU movies.

</comment></comment><comment><USER36> This made me think of disparaging comments from ESA about SpaceX:

'Asked about how the Ariane 5 compares to lower-cost alternatives on the market today, such as SpaceX's Falcon 9 rocket, Stefano Bianchi, Head of ESA Launchers Development Department, responded with a question of his own. "Are you buying a Mercedes because it is cheap?"

Ranzo, sitting nearby, chimed in and referenced the India-based maker of the world's least expensive car. As he put it, "We don't sell a Tata."'

<comment><USER37> But whoever makes that Fiat Ducato or equivalent for space will make big bank. Different markets warrant different solutions, including custom.

<comment><USER36> Agreed, but lower cost access to space could also change the game itself. If launch costs are 1/10 or 1/100 what they are now, your bespoke $100m absolutely-cannot-fail-at-all-costs satellite can similarly be blown away by satellites that can be built without the super-expensive verification required to make them infallible. Just build them cheap and good enough and if/when they fail, throw up another.

</comment></comment></comment><comment> dawg- Video games will always show what's next. Gaming companies are developing the expertise at constructing virtual worlds, with rules that engage and immerse users, that will be essential to the popularization of VR. VR will go mainstream under the umbrella of gaming before it's used in any practical sense. It's the same way computers went mainstream, and I bet video games will spawn whatever comes after VR as well.

</comment><comment><USER38> Most toys remain toys...

I really like Clay Christenen's ideas, but he dismissed the greatest recent disruption (smartphones) as "sustaining"... His theories are not predictive.

What actual toys _are_ there? Especially new ones. def toy: fun/enjoyable/popular but useless.

video games (e.g. minecraft, pubg), social media (stackexchange, reddit, meme- makers), scooters, fidget spinners, drones, 3D printers, face swaps, shadertoy

</comment><comment><USER39> This makes me think of Fortnite. What if Fortnite, and the impact it's going to have on us, is yet but a tiny baby?

<comment><USER40> You must not have school-aged kids, Fortnite is already dead.

<comment><USER41> You sure about that? It currently has the second-highest viewership on Twitch, topped only by League of Legends (which is surprisingly almost a decade old).

<comment><USER40> It was mostly a joke for people with school-aged kids. At least in my kids school, and what r/memes seems to reflect around the world, is they all say it's "trash" and Minecraft is the thing again. I think they all still play it, it's just cool to say it's not cool. However, a lot of them seem to have stopped buying V-bucks, at least to get skins.

</comment></comment></comment></comment><comment><USER42> Tiktok comes to mind. Maybe drones as well

</comment><comment><USER43> This was my thought regarding Google's Soli chip[0] when I saw comments talking about it's usability limited to cooking or other fringe cases.

[0] [https://news.ycombinator.com/item?id=21269877](https://news.ycombinator.com/item?id=21269877)

<comment><USER44> The chip has potential to change the way we live, but this potential will only become reality when proper applications and bussiness models create really useful stuff around it.

I think seeing this tech as disruptive somehow is kind of obvious, but to change our lifes upside down it needs much more.

The same can be said about 3D printing. It has a lot of potential, but timing + the right ecosystem around it is also a big deal.

Apple with Newton, MS and specially Palm were there first for the pocket computer + phone, but why only with the iPhone things started to really happen?

The right bet + timing + ecosystem around it is also pretty important.

</comment></comment><comment><USER45> Thats an interesting topic and an evergreen article as every few years we can try and observe the landscape of up and coming toys. Some candidates:

Drones Bitcoin Electric Scooters VR AR Voice recognition (Alexa, Siri, OK Google) 3d printer Robotics

what else?

</comment><comment><USER46> I hope the next big thing will move atoms around.

I think bits are very limiting. My Iphone, no matter how good the apps are, will never be able to get up and clean up the kitchen, or build me a house for that matter.

</comment><comment><USER47> Aren't atomic bombs a counter example to this? Though maybe an example that proves the trend. There's a strong connection between nuclear power failures and political push back.

</comment><comment><USER48> PCs, Smartphones, the Web, JavaScript... All things that helped me making a good living.

</comment><comment><USER49> kubernetes didn't start out looking like a toy. nor did tensorflow or kafka nor ipod / iphone nor spacex nor tesla

unless looks like a toy is relative to the incumbents, but not to the population at large.

<comment><USER27> In "Wonderland: How Play Made the Modern World" the toy as predictor concept is explored more deeply.

The emphasis is less on the implementation of the toy than on the popularity of the style of play or human amusement that the toy enables. Then over time various technologies come along to implement the mode of play. Eventually someone says, wow that might help in serious adult activity X. And then disruption.

Kubernetes, Tensorflow, Kafka, Falcon 9, iPhone, and Model S aren't toys.

Video game AI, model rockets, iPod (limited to music playback), and RC cars are toys that predicted these modern, serious adult innovations.

The toy as predictor theory doesn't require that all technologies begin as toys. So maybe Kubernetes & Kafka don't fit (I can't think of a relevant toy).

</comment></comment><comment><USER50> Ten years later... it's still very true :)

<comment><USER51> There are some interesting user comments like one guy who talked up Google Search compared to Yahoo and AOL and how it gave you what you wanted and sent you on your way and didn't try to keep you on site indefinitely.

How things change and end up repeating the same old mistakes.

</comment></comment><comment><USER10> Remember 3D TV?

</comment><comment><USER52> Or weapons / military hardware.

</comment><comment><USER53> Am I the only one thinking of WebAssembly? (e.g. [https://wasmer.io](https://wasmer.io) )

</comment><comment><USER54> healthcare?

<comment><USER55> Possibly the absolute last market sector where you want people thinking of their products as toys.

<comment><USER7> Wearables started off looking like toys, but are poised to drastically change how we think about health. The whole point of this argument is that the next big thing will come out of left field, not that you should build toys to try to solve a major problem.

</comment></comment></comment><comment><USER56> Imo if a statement about the future doesn't contain word "probably" \- it is probably wrong.

<comment><USER57> probably.. suppose... it seems to me.. I hate it when people try and hedge their opinions.

<comment><USER58> Why? Hedging is fine. I think it's important to accurately communicate how certain you are of a thing. Constant hedging is annoying, but so is stating everything as if it's a fact, despite how sure you really are.

Communicating confidence is useful.

<comment><USER57> I totally agree. My beef was with people using vague words like "probably". What does probably mean? 51% likely? 55% likely? 90% likely? It contains no sense of probability, that can be agreed upon.

If you're going to attach a probability to an opinion, use "most likely", or "almost certainly", or "unlikely".

</comment></comment></comment></comment><comment><USER59> Mods: Please put (2010) in the title.

<comment><AUTHOR> Fixed!</comment></comment>