New string formatting in Python - <AUTHOR> https://zerokspot.com/weblog/2015/12/31/new-string-formatting-in-python/ <comment><USER2> String interpolation is one of those features where I'm really confused about the direction the Python team wants to take. It's implicit and magic, and yet another non-obvious way to do do string formatting.

What's more, it's being hailed at a plus for localization _which it isn 't_. Localizers should never, ever deal with string interpolation - anything past what .format() does is essentially untranslatable.

<comment><USER3> Why is it implicit and magic? Looking at this post, and the PEP, it seems like interpolation is actually pretty close to .format in semantics, but syntactically simpler. There are a few bits that I didn't quite follow in the PEP, so I may just be missing the issue, however.

<comment><USER4> The important thing for localization is to allow the strings to be swapped at runtime by loading them from some kind of database in a way where the arguments are at least numbered, if not named, so as to let them appear in different orders for different languages. The interpolation syntax does not seem, to me, allow for this: it is an "implicit" syntax offered during parsing to take a constant string and immediately build it out of parts, as opposed to the "explicit" % operator or .format methods: it is extremely clear with these two models how one would load a template that has the strings in a different order, or which used a different subset of the strings.

        >>> '%(one)s %(two)s'%{"one":"hello", "two":"world"}
        'hello world'
        >>> '{one} {two}'.format(one="hello", two="world")
        'hello world'

The PEP that is looking at this problem has been deferred: at the end of the document they kind of indicate that they didn't really think about the i18n problem correctly and so don't actually have a good solution to present, and are going back to think about it more.

[https://www.python.org/dev/peps/pep-0501/](https://www.python.org/dev/peps/pep-0501/).

<comment><USER5> If you need to localize, you still have format(). You just happend to have a shorthand to do it for the 80% case, just like you have @decorator as a shortcut for decorated = decorator(decorated) or [x for x in z] as a classic loop alternative.

Yes, having so many solutions is not ideal, espacially when it comes to teach the language. However, it would be foolish to avoid improving the usability of Python just to avoir having "one more way to do it".

I do wish they'd deprecate Template though. It's more than useless.

<comment><USER6> string.Template is the one used for i18n, it is simple for the end user so has a use.

</comment></comment></comment></comment></comment><comment><USER6> From another post:

        "{a} {b} {a}".format(a=a, b=b)
        "{a} {b} {a}".format(**locals())

Compared to this:

        f"{a} {b} {a}"

Sorry that's about 1000% better. This should have been the one way to do it, originally. It isn't magic either, rather a simple compile-time transformation to existing format syntax. There's nothing new to remember besides a large reduction in noise.

<comment><USER7> I'm in the "wish it was more explicit" camp. Would a fmt function be that terrible?

        fmt("{a} {b} {c}", a=a, b=b, c=c)

If you want to save typing, maybe use :a instead of {a}. Or ?a would have made plain old ? a nice positional variant:

        fmt("?a ? ?", a=a, b, c)

The main benefit of the fmt function is that it requires no syntax changes to the language and is trivially provided by a third party library for all past versions of Python.

That being said this ship has sailed. I guess I just take a more conservative approach to syntax changes than most.

Update: a bit sad to see my votes fluctuating wildly on this post. Please don't use votes to support or disagree with me: that's not what they're for. Please vote only based on whether you find this relevant.

<comment><USER6> It is explicit, in that one must use the f'' prefix. There are no syntax changes as u'', b'', and r'' already exist. Positionals make bugs more likely.

<comment><USER7> It is a syntax change as before f"" was a syntax error:

        >>> f"foo"
          File "<stdin>", line 1
            f"foo"
                 ^
        SyntaxError: invalid syntax

<comment><USER7> > ... though similar to adding a function that didn't exist before.

This is not true and exactly the distinction I'm trying to make:

Adding new packages, functions, objects, etc. can all be backported to older versions and alternative implementations. They also require no updates to ASTs, linters, syntax highlighters, static analysis tools etc.

Adding new syntax is backward incompatible (unless it's added as a from __future__ import to new old releases) and requires changes to all tools that parse Python syntax (the interpreter, ASTs, linters, transpilers, etc).

<comment><USER6> Ok, true, though I would argue that it isn't entirely new syntax but rather a variation of an existing one.

It is a shame that linters will have to add a letter to their grammar also, but I argue that the everyday usability and readability for millions will outweigh this drawback.

</comment></comment></comment></comment></comment></comment><comment><USER8> The motivation for PEP-0498 given in the article was the difference in verbosity between these two lines:

      "{} {}".format(a, b)
      "%s %s" % (a, b,)

That's not very convincing. I was hoping this article would make a good case for interpolated strings, since it's starting to feel like Python is having an identity crisis. Type annotations especially took me by surprise, but string interpolation is another good example of an addition that doesn't feel like Python (imho, anyway).

<comment><USER9> The more common case for me is to name the parameters. Especially with longer variable names, this gets tedious fast. Given

        >>> very_long_var_name_1 = 'spam'
        >>> very_long_var_name_2 = 'ham'

compare

        >>> # Explicit but tedious and doesn't help readability:
        >>> print('{very_long_var_name_1}: {very_long_var_name_2}'.format(
        ...       very_long_var_name_1=very_long_var_name_1,
        ...       very_long_var_name_2=very_long_var_name_2))
        spam: ham

with

        >>> # Explicit but somehow feels dirty:
        >>> print('{very_long_var_name_1}: {very_long_var_name_2}'.format(
        ...       **locals()))
        spam: ham

and

        >>> # Still fits on one line. I think f prefix makes intent clear.
        >>> print(f'{very_long_var_name_1}: {very_long_var_name_2}')
        spam: ham

<comment><USER10> Thing is, * * locals() "feels dirty" but does exactly the same thing as f''. Except f'' does it implicitly, hiding dirt under the carpet. One day, that dirt will turn something into a bug; which is _exactly_ why the Zen says "explicit is better than implicit".

The best way imho would be:

        vars = {'short1': very_long_var_name1,
                'short2': very_long_var_name2}
        print('{short1} {short2}'.format(**vars))

Easy and extremely unlikely to ever include the wrong variable.

<comment><USER11> Except a linter or static analyzer can easily be taught to understand f"", but it's essentially impossible to reason statically about locals().

</comment></comment></comment></comment><comment><USER12> I have mixed feeling about this. This will be the FOURTH way of formatting strings in Python. The other formattings will never go away.

<comment><USER13> What's the fourth way? The article only mentions three.

<comment><USER14> Not the op but Im guessing just using + (which calls .__str__(), iirc?)

<comment><USER15> \+ doesn't call __str__ internally.

e.g the following is an error.

      a = 4
      "a: " + a

You have to do:

      "a: " + str(a)

</comment></comment></comment></comment><comment><USER16> I'll just leave this here: [https://www.python.org/dev/peps/pep-0020/](https://www.python.org/dev/peps/pep-0020/)

"There should be one-- and preferably only one --obvious way to do it."

There are a lot of warts on that snake, but I still really like using Python.

<comment><USER17> PEP20 _sound_ amazing, but then when this only way end up being way too verbose/ugly, you are kind of stuck with it. Compare:

        #python
        import re
        m = re.search('(a.+)(d.+)', 'abcdef')
        if m:
          print(f"{m.group(1)},{m.group(2)}")

        #perl
        if('abcdef' =~ /(a.+)(d.+)/){
          print "$1,$2";
        }

<comment><USER18> I don't know why Python re match objects don't support indexing; a __getitem__ method would allow m[1] and m[2] instead (or m['name'] for named groups).

That aside, though, I don't consider brevity alone the most critical criteria for a programming language; that way lies APL. _Expressiveness_ , yes, but not at the expense of clarity.

</comment></comment></comment><comment><USER19> Also not a fan. The two existing methods of string formatting are sufficient:

        "%s %s %s" % (a, b, a)
        "{} {} {}".format(a, b, a)

If you want placeholders to match variable names, you can do:

        "{a} {b} {a}".format(a=a, b=b)
        "{a} {b} {a}".format(**locals())

So this is just unnecessary (especially since the "f" prefix is easier to miss than a "format" method):

        f"{a} {b} {a}"

And _this_ is downright obfuscated—putting operators inside of string literals:

        f"{a + ' ' + b + ' ' + a}"

<comment><USER20> I certainly agree about your last statement, I have no clue what that would do without reading the spec. I'd guess an error, but apparently not.

</comment></comment><comment><USER21> At the very least, it sure looks a hell of a lot better. And using symbols and single-character abbreviations for types (in a dynamically typed language, mind you) and an overloaded % which has the extra syntactical rule that it only takes a single argument and so multiple replacements have to be done by throwing them all into a tuple is FAR more intuitive and readable than the way most languages do string formatting. Plus the alternatives, that require you bounce back and forth between the string and the variable it is replacing rather than read left to right the way humans are meant to read strings of text is a terrible design. Something as simple as string formatting should not rely on arcane and nuanced rules which are more or less arbitrary.

You've all been programming in C-like languages for far too long to realize what a horrible design string formatting is. You can argue over "explicitness" all you want, the new way is easier to learn, easier to read, makes more intuitive sense, requires learning fewer rules, ad is close enough to the format string method that they work well together.

</comment><comment><USER22> As an outsider to the python community and full time ruby dev, this "controversy" baffles me every time it comes up. Lightweight string interpolation is _obviously_ better! I think you all have string Stockholm Syndrome or something.

The one counter argument that makes sense to me is that in general we _shouldn 't_ be doing easy string interpolation, since that way lies SQL injection, XSS, etc, and should instead rely on a stronger type system with binary text blobs, HtmlStrings, SqlStrings, etc, with automatic escaping into and out of the data type.

But then that's not the case with Python now. If you're only trying to stick this string inside that string in a quick and dirty manner, I totally don't understand the reticence folks have to something the way ruby does it: "Name: #{first_name}".

<comment><USER2> If it's _obviously_ better, would you care to share some better arguments than "people who disagree have stockholm syndrome"?

Don't get me wrong, I'd _like_ Python to have better, more obvious, more concise string formatting. However the last time we had this discussion, it was about str.format() and how it was going to be awesome and don't worry modulo-formatting will go away.

Turns out it did not; modulo formatting is still there because _why would it be removed_. This is history repeating itself - are you actually _baffled_ that some people learn from past mistakes?

<comment><USER6> All you have to do is try it once or twice to enjoy the readability and lack of positional mismatch bugs.

None of the other techniques are going away. This time yes, no one is naive enough to think so.

<comment><USER2> "Try it!" is not an objective argument (I have tried it extensively eg. in Bash and I neither like or hate it), and positional mismatch is not a concern when you use name-based syntax, which interpolation forces you into due to its nature.

<comment><USER6> I've made numerous posts in this discussion, so not going to copy them again here. The previous named-based syntax comes with significant redundancy and noise.

As a ruby dev posted here, it is obviously better in most respects in most common cases.

</comment></comment></comment></comment></comment><comment><USER23> Not a fan. We already have 2 ways of formating strings in Python, we really should not bring in a third one.

It may be true that

        "{} {}".format(a, b)

is a bit verbose, but it is crystal clear and clean. Just remember the Python Zen: "There should be one-- and preferably only one --obvious way to do it." _and_ "Explicit is better than implicit."

<comment><USER6> It is the same thing as .format without all the noise.

<comment><USER24> No, it's the same thing as .format, except limited to literals, so basically useless (hardcoding literal strings is bad for i10n).

<comment><USER6> Useless... have you never used a shell? It's quite handy.

<comment><USER24> If they're adding features purely for the convenience of python shell users, how about, I don't know, remove the need for significant whitespace (by adding "end block" statement). Because Python shell is a major pain to use when you try to copy-paste some code into it and it doesn't like the indentation levels. On the other hand I can copy-paste whatever into my Lisp REPL and it will run just fine. Or allow several statements per lambda. Saving a few keystrokes writing ".format" doesn't even register on the same scale of annoyance.

<comment><USER6> I've been using Python heavily since about 2000.

Approximately 2.5 times since then has whitespace been a problem, and which I fixed in under 10 seconds each time. Yet, the readability gains from removal of block delimiters in that time frame is uncountable.

> Saving a few keystrokes writing ".format" doesn't even register on the same > scale of annoyance

It isn't just .format, it is:

        .format(long_variable_name1=long_variable_name1,
                long_variable_name2=long_variable_name2)

This is a huge win that should have happened long ago.

<comment><USER24> But you don't need to use long variable names in Python shell! Even one-letter vars are perfectly acceptable.

<comment><USER6> When I wrote "shell" I was thinking of interpolation of bash, etc.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER25> Quite useful! If you want to have string interpolation in Python 2.6+ just use [https://github.com/syrusakbary/interpy](https://github.com/syrusakbary/interpy)

<comment><USER26> "They" could put string interpolation in the __future__ module:

from __future__ import string_interpolation

:)

</comment></comment><comment><USER27> Am I crazy or PHP had this feature since forever? String templates can significantly improve programming speed specially for those of us who are keyboard impaired. Not having to remember how many %s' you need or if one of them should be %d and so on may to most seem just knit picking but personally it makes a day and night difference.

<comment><USER28> PHP has had it forever. Given PHP's reputation, I'm not sure if that is a good argument for this feature. Rather than '%s' and '%d', why not just use '{}' and '.format'? That way, each argument is converted to a string appropriately. If it becomes confusing with many arguments, it is easy to name the parameters '{myparam}'

</comment></comment><comment><USER29> > That actually looks pretty nice but as Python 3.6 is slated for release in > another 12 months you will have to wait a little longer.

...Or just do it in 28 lines of Lua:

[http://hisham.hm/2016/01/04/string-interpolation-in- lua/](http://hisham.hm/2016/01/04/string-interpolation-in-lua/)

This is a nice showcase of how Lua's metamechanisms can be applied to do things that often require new features in other languages.

<comment><USER30> I'd argue that it's not a good thing that you can just disregard block scoping willy-nilly from within unprivileged code.

<comment><USER29> If you are in a context where you are concerned about "privileged vs. unprivileged" code, you have to sandbox way more than that, and Lua provides you many mechanisms to control that (more than any other mainstream scripting language). Disabling the "debug" library which I used there for traversing block scopes is the very first thing one does when sandboxing in Lua.

<comment><USER30> At which point you can no longer use this fmt construct, so what was the reason for having it?

<comment><USER29> You can, privately within the module.

</comment></comment></comment></comment></comment><comment><USER31> I for one welcome the shorthand interpolation. String formatting is the thing we all do all day long (slightly exaggerated pretty much).

Now if python would begin to support immutable values by default then I'd be most content, and Python complete enough.

</comment><comment><USER9> +1 for [https://pyformat.info/](https://pyformat.info/) (mentioned in article), with some nice practical examples of equivalent %s and .format() formatting.

</comment><comment><USER32> _There should be one-- and preferably only one --obvious way to do it._

Hoping for a decision from the core team – having both f"" and .format is a pretty clear deviation from this principle.

<comment><USER33> Well, having both % and .format was already a clear deviation from it.

<comment><USER34> Though I think the communication has been pretty clear that developers should stop using % formatting in favor of .format when moving to Python 3. Not so much a deviation, just a migration. Now that there's another alternative, there definitely needs to be some clear communication about what's going to be idiomatic going forward.

<comment><USER35> Except that they went and made .format() useless for bytes... which made everyone have to hang on to % for both 2/3 compatibility cases, and for all the cases where bytes templates were actually needed (all kinda of lowlevel wire protocols and file storage formats).

</comment></comment></comment></comment><comment><USER36> The rift between Python 3 and Python 2 seems to be a fallout of the one-true- way philosophy. In fact, it almost stands the reason that Python 3.6 ought to be Python 4 if one-true-way needs to be upheld.

If Python 3.6 is going to introduce multiple ways to do the same thing, there is no good reason to not merge Python 2 and 3 together and have both set of behavior co-exist with each other (__future__ or __past__).

In one shot, you break the Berlin wall of Python.

<comment><USER5> Apprently you haven't being using Python 3 much. It reduces the numbers of ways to do stuff a lot.

        - class stuff(object) vs class stuff;
        - range vs xrange;
        - itertools.izip vs zip;
        - itertools.imap vs map;
        - itertools.ifilter vs filter;
        - dict.items vs dict.iteritems vs dict.viewitems;
        - dict.items vs dict.itervalues vs dict.viewvalues;
        - dict.items vs dict.iterkeys vs dict.viewkeys;
        - __cmp__ vs __eq__ + __gt__;
        - sorted(cmp) vs sorted(key);

They didn't fallout from the philosophy. They have been pragmatic and tried to balance the language design : gaining modern features vs making a robust base vs pleasing the legacy crowd. Is. Is. Very. Hard.

And yes, we would all prefer to have less way to format. Would it mean I would prefer NOT to have fstring ? Certainly not, it's a great feature. We can't live in the past because it will make us not stand perfectly to the ideal we have.

Real life is not ideal.

But merging Python 2 and 3 ?

With the string model completly reworked, that would be apocaliptic. Most people don't realize how deep the unicode change has been.

I have been dev and teaching Python 2 and 3 for years. The amount of problems linked to UnicodeDecodeError dropped by 90% after the switch.

Not because Python 2 model didn't work.

Because nobody understand text.

Most dev don't understand what text is. They just want to format string. That's what Python 3 helps to do, and it does it well.

Mixing both would be like mixing olive oil and vanilla ice. Great on their own way, but use them together all you'll get a terrible meal.

<comment><USER36> at no point am I arguing whether python 3 is better or worse than python 2. That is an uninteresting conversation because the fact remains that less than 30% of all software is in python 3. Even when Google released Tensorflow, it was in Python 2 (and they employ core developers of Python).

Do you seriously think anybody is thinking of dropping python 2 support by 2020 ? that will only create a fork. None of the core frameworks have upgraded in a decade. Look at Flask for example. So yes, I havent been using Python 3 much - there has been no reason to.

the point I'm trying to make is how to get everyone on the same page. The reason Python 3 was api incompatible was because of the core tenet of one- true-way. All the functions you mentioned may be superior, but unless you give people a way to mix and match both in the same source , you will not have adoption.

Or do you think Python 3 adoption has been successful ?

</comment></comment></comment><comment><USER37> _" PEP-0498 tries to improve this situation by offering something that has been common to other languages like Ruby, Scala and Perl for quite some time: Interpolated strings."_

P3 _'.format '_is fine, the only problem I have is forgetting the last ')' and vim picks this up. Is interpolation that good to introduce another way of doing things?

</comment><comment> blubb-fish > by offering something that has been common to other languages like Ruby, > Scala and Perl for quite some time

So funny ... the most prominent language known for this stuff is PHP ... and missing :D

</comment><comment><USER38> I never understood why I had to write (count=count, apples=apples, name=name) when a logical default would suffice.

<comment><USER12> I suppose you mean to take the variable names of the arguments without using keyword arguments? That's not possible because .format() is just a simple method call on str/unicode objects.

<comment><USER38> >That's not possible

That statement is against my religious beliefs. Apparently we can stick an f in front of the string, but we can't have default values that work with locals()?

<comment><USER6> That would mean the formattee would have to dig thru its surrounding namespace. This solution is more elegant, the string is transformed into the equivalent format call at compile time, making the implementation tiny.

<comment><USER38> Elegant for who?

Adding a new syntax that doesn't exist in any language.

vs.

Using sensible default parameters.

\</comment></comment></comment></comment></comment><comment></comment><comment>-----

An argument for why my suggestion would be bad: [https://www.python.org/dev/peps/pep-0498/#no-use-of- globals-...](https://www.python.org/dev/peps/pep-0498/#no-use-of-globals-or- locals)

<comment><USER6> > Adding a new syntax that doesn't exist in any language.

Not true, look into the new interpolation features in C#, Scala, JS, Swift, nim, etc.

</comment></comment><comment><USER39> Just because simply one way isn't enough.</comment>


Ask HN: If you could reset internet and its services, etc. What would you do? - <AUTHOR> <comment><USER2> Decentralized DNS, because centralization is a weakness that makes the internet vulnerable to censorship, etc. And DNS is a major weakness in my eyes.

Also, anti trust/monopoly moves preventing content providers from owning or attempting to control what should be dumb public pipes ala public roads.

</comment><comment><USER3> Truth servers:

1\. User address

2\. domain code

3\. data address

4\. data

5\. data version

6\. digital signature

7\. signature verification algorithm

\- and depending on the importance of the data you could store the data on multiple servers to add redundancy and prove the server is telling the truth.

\- root user addresses could be used like name servers to store other types of truth servers, user names etc.

\- could add some kind of currency/time storage protocol to manage free loading.

\- you could have some kind of trust network by putting I attest that at this time this server returned this version of the data and/or I verified the data was signed.

\- or I attest at this time this server(any server including web) returned this data and here is a hash of the data

\- reputation could be stored by putting a transaction code and each party agrees they did the transaction and it went well and here's the contract with index-able properties.

<comment><USER3> Then you could have a contract server(s) that has legal contracts that are:

1\. indexable

2\. forkable

3\. parameterized - signing party 1, 2, witness, state/province, jurisdiction, allowable arbitration, etc.

4\. digitally signed.

</comment></comment><comment><USER3> How about transparent fair pricing contract/database.

1\. if you post your prices you agree your not offering other prices for X amount of time to anyone else for that marketplace product code.

2\. skill/service codes priced by the hour

3\. marketplace product code for all vendors

4\. you can fork a product/service/skill code but need to list a reason, xyz feature(s) is/are different or just a contractual difference or something.

</comment><comment><USER4> No NAT.</comment>


Neil Armstrong's Death, and a Stormy, Secret $6M Settlement - <AUTHOR> https://www.nytimes.com/2019/07/23/us/neil-armstrong-wrongful-death-settlement.html <comment><USER2> > _In a scorching July 2014 email to the hospital's lawyers, Wendy R. > Armstrong, a lawyer and the wife of Mr. Armstrong's son Mark, noted that > Mark and his brother, Rick, would soon be traveling to Florida to speak at a > ceremony marking the 45th anniversary of the first moon landing.

"This event at Kennedy Space Center will receive national news coverage," Wendy Armstrong wrote. "Rick and Mark have been solicited by several book writers and filmmakers for 'information about Neil that no one already knows.'" The lawyer suggested that unless the parties reached a quick settlement, the hospital would be publicly criticized for giving lethally flawed care to one of America's most famous and revered public figures._

Well that's nice, a touch of blackmail is always nice.

Regardless of the care being flawed, he was 82 years old! It's hard not to paint the family as opportunistic and greedy.

</comment><comment><USER3> [http://archive.is/hdGqi](http://archive.is/hdGqi)

</comment><comment> dfeojm-zlib A similar situation happened to my grandfather: a hospital's medical error caused pneumonia and wrecked his lungs. He could've lived another 10-15 years because he was relatively healthy. He wasn't Neil Armstrong and that side of the family wasn't astute enough to sue, at least to hold them accountable for their actions. :(

</comment><comment><USER4> _"If it was me, I would try medical therapy first, but it depends on how severe the pain is," Dr. Mack said._

[https://www.nytimes.com/2019/07/25/health/neil-armstrong- hea...](https://www.nytimes.com/2019/07/25/health/neil-armstrong-heart- surgery.html?module=inline)

If someone was 82, and a quality-of-life surgery is elected to be performed, it is always the patient and the doctors making that decision. Surgeries can go wrong, they carry risk, heart surgery more so, heart surgery with an 82 year old even more so. Should we be holding the health care system accountable? Even when the risks are known? Do we all of a sudden have the expectation that every open heart surgery will be successful and no one will die? Hospitals shouldn't be rewarded for failures, but placing full blame on an organization with an impossible mandate seems a little bit unfair.

<comment><USER5> As someone who lost a loved one to cdiff and mrsa infections, I would hope to expect a basic level of competence in a hospital, which is increasingly not there.

<comment><USER6> Having personally had 3 open heart surgeries (where they remove your heart, do work and put it back), it's important to pay attention to which hospitals are the best at which types of care.

Veteran care has improved drastically since the first Bush administration (might have been started with Clinton, I dunno for sure). Cheney used VA hospitals for full body scans, etc which my father casually used as a reason to get his own. All veterans are equal in the VA now.

Largely, hospitals ALL have a basic level of competence in the US (meaning medical training and certification and subject to regulation) and it's disrespectful to imply otherwise. There is no benefit to people dying in a hospital. Nobody wins and the penalties are stiff. The staff are people, which are imperfect (often overworked) and situations are fluid.

The idea that opening him up again was going to save him, is tenuous. It would not surprise me to find the implant wires caused angina; given his history it would be warranted that a nurse would move the patient to cath, since the heart can only survive so many "insults". A nurse is not a doctor and doctors (especially cardiologists) are RARELY walking around, especially in that facility at that time. The nurse made a call and a patient died that may have died anyway waiting for a doctor to make the decision.

<comment><USER5> > Largely, hospitals ALL have a basic level of competence in the US (meaning > medical training and certification and subject to regulation) and it's > disrespectful to imply otherwise. There is no benefit to people dying in a > hospital. Nobody wins and the penalties are stiff. The staff are people, > which are imperfect (often overworked) and situations are fluid.

No way. Look at the Centers for Medicare Services ratings and check out the shitshow that lower rated hospitals are. When you see high cdiff infections, that's a sign of general incompetence — poor hygiene, undertrained or untrained staff, or insufficient staffing levels.

Disrespect is allowing patients to suffer needlessly. The people running those facilities deserve none.

</comment></comment></comment></comment><comment><USER7> fucking terrifying. I had open heart surgery 3 weeks ago with one of the surgeons named in the article (bavaria).

My pacing wires were removed by the ICU resident (a physician), not a nurse. It's not a complicated thing, they just grab and pull. Maybe his wires were implanted incorrectly so they damaged something when getting removed?

They also made it really clear that if you start bleeding during a cath procedure then they crack your chest open immediately. Not sure what they thought could happen in the cath lab if he was already bleeding internally.

it's such a shame, they fucked up badly but i couldn't even imagine being part of the OR team that lost Neil Armstrong.

</comment><comment><USER8> Sad footnote to one of the greatest of lives.

</comment><comment><USER9> Korolev is also rumored to have died due to hospital error:

[https://en.wikipedia.org/wiki/Sergei_Korolev#Death](https://en.wikipedia.org/wiki/Sergei_Korolev#Death)

</comment><comment><USER10> Paywalled

<comment><USER8> Yup, tho I can access it ok without an account. Limit I guess.

Alternative here:

[https://time.com/5633280/neil-armstrong-estate-6-million- set...](https://time.com/5633280/neil-armstrong-estate-6-million-settlement/)

<comment><USER10> Perfect, thank you very much</comment></comment></comment>


Automate tracking and sharing your location with your friends and family - <AUTHOR> https://github.com/neelkadia/WhereaAreYou <comment><USER2> So, its find my friends. But for android, and not optimised to only collect your location on demand.

Does google not provide something like this for android accounts?

<comment><AUTHOR> Yes, Its like find my friends for Android. Yes, I need contributes that's why I open sourced this. I use it to show my location to my mother and brother.

As far as I know, Google provide you location tracking only to you, It won't provide you sharing it with other people.</comment></comment>


The Afterlife of Pablo Escobar - <AUTHOR> https://www.newyorker.com/magazine/2018/03/05/the-afterlife-of-pablo-escobar <comment><USER2> _Escobar's cartel died with him, but, despite a U.S.-assisted war on narcotrafficking that has cost thousands of lives and more than nine billion dollars, international consumption has spread enormously, and the drug economy remains strong; last year, the United Nations reported that Colombia was the world's largest producer of cocaine._

Damn, that's so sad. All that effort for a drug war, and for what? People still do drugs, and narcos still run Colombia. What was the point?

<comment><USER3> Who the money funnels through was the point.

</comment></comment><comment><USER4> Enjoyed watching Narcos on Netflix recently, reminded me of my days backpacking though South America. One thing I didn't know was how _much_ money we were talking about, like Bill Gates level, in cash!

<comment><USER5> 70 million in cash _per day_ , 10% of their cash written off because of rats eating it, and $1,000 per week just in rubber bands for the cash.

It's just insane to think about cash flowing illegally at that scale.

<comment><USER6> Puts historical cash faucets into perspective.. eg the opium wars.</comment></comment></comment>


Facebook employees 'angry' after Apple blocks its internal iOS apps - <AUTHOR> https://www.businessinsider.com/facebook-employees-angry-after-apple-blocks-its-internal-ios-apps-2019-1 <comment><USER2> so facebook has been forced to eat what they dish out, on a regular basis, and they protest it. very interesting times ahead of us methinks.</comment>


FBI Warns of U.S. Government Breaches by Anonymous Hackers - <AUTHOR> http://www.reuters.com/article/2013/11/15/us-usa-security-anonymous-fbi-idUSBRE9AE17C20131115

<comment><USER2> At first, I thought this was just the FBI trying to whip up a moral panic about HACKERS! because the "Terrorists!" thing is beginning to wear thin with both lawmakers and the public. The FBI has lured a few too many obviously clueless into totally fake "bomb plots" to be credible on that issue.

But my first impression was wrong: this is just major cluelessness on the FBI's part. And it's not the first time. Google for "virtual casefile" to see other computer-related messes the FBI has made.</comment>


Brave browser moves to Chromium codebase, now supports Chrome extensions - <AUTHOR> https://www.zdnet.com/article/brave-browser-moves-to-chromium-codebase-now-supports-chrome-extensions/ <comment><USER2> This might get me back to Brave. I don't trust Chrome. I'm a bit frustrated with Firefox from time to time, and it will be good to use plugins again.

<comment><USER3> google still has their hands in chromium, so it's not much of an improvement over chrome. there's supposedly a way[0] to remove all of google's shenanigans from chromium, but I doubt the brave folks are going to go through that much trouble.

Also, for those who care about licensing, chromium is a licensing nightmare. half (or more?) of the repos in the externals directory when building chromium have _no_ license specified.

0\. [https://github.com/Eloston/ungoogled- chromium](https://github.com/Eloston/ungoogled-chromium)</comment></comment>


Wander (1974) – a lost mainframe game is found - <AUTHOR> https://ahopeful.wordpress.com/2015/04/22/wander-1974-a-lost-mainframe-game-is-found/ <comment><USER2> This game is not only an early text adventure -- it is early interactive _fan_ fiction. See Keith Laumer's Jame Retief stories: [http://en.wikipedia.org/wiki/Jame_Retief](http://en.wikipedia.org/wiki/Jame_Retief)

The CDT, Mr. Magnan -- the whole scenario is straight from Laumer's work. Fan fiction inspires all great things :)

</comment><comment><USER3> I have a copy of this (Peter Langston's Wander C source code) from a 1980 distribution.

I don't think it was ever "lost", it just became gradually more obscure over time, as most things do.

Edit: Looking closer, I see that Langston's 1980 distribution also included Empire (PDP11 object files, not source! -- infamously), "Fast Food" (with C source), and "Star_Drek" \-- object files again)

</comment><comment><AUTHOR> [http://en.m.wikipedia.org/wiki/Text_adventure](http://en.m.wikipedia.org/wiki/Text_adventure) implies Adventure was first in "around" 1975, but this blog post says WANDER was 1974.

<comment><USER4> Wikipedia is notorious in the video game history community for its lack of accuracy and vague primary sources.

<comment><USER5> In this case, Wikipedia's citation leads (via an intermediate hop) to an academic article that dates Adventure to 1975-76, and argues that a date of 1972, which some other sources had previously mentioned, is incorrect: [http://www.digitalhumanities.org/dhq/vol/001/2/000009/000009...](http://www.digitalhumanities.org/dhq/vol/001/2/000009/000009.html)

<comment><USER6> Last I checked Don Woods was at Google so someone there could just ask him.

</comment></comment></comment></comment><comment><USER7> > _Sure enough, after a little tweaking_

Just a reminder, the ESA would like to make this a crime.

Edit: the source was retrieved from the original author. I stand down.

</comment><comment><USER8> This is great! I look forward to seeing the original (and modified) source code released. I love old text adventure games.

If you want to try your hand at another obscure, early text adventure, there's a version of Warp (early 1980s) hosted here:

[http://empire.openmpe.com/empire/other_games.html](http://empire.openmpe.com/empire/other_games.html)

(You have to access it through telnet.)

It's a huge game with a very advanced parser, but it only runs on the HP e3000 and the source code has never been released. This is another one I'd like to eventually see the source code to, but I tried contacting one of the authors and got no reply.</comment>


Java 9 Released - <AUTHOR> http://www.oracle.com/technetwork/java/javase/downloads/jdk9-downloads-3848520.html <comment><USER2> Will JVM ever play with the browser again? [https://twitter.com/globalmaxima/status/908089963752808448](https://twitter.com/globalmaxima/status/908089963752808448)

It would be great if Oracle licensed & worked to get bytecode into chromium and Microsoft did likewise with cil. It will take wasm 10 years to mature anywhere near those two. It'd be nice to not have to wait.

<comment><USER3> Even if Oracle were willing to relicense the JVM under more permissive terms, I very much doubt Google/Chromium would agree to include a JVM in Chrome. The experience with applets has been the JVM is difficult to secure for untrusted code execution due to its broad API surface. (Maybe running an untrusted JVM in a sandbox would help with that.) Putting that aside, the JVM is just such a massive code base, I don't think Google/Chromium would want to embed it. And the same comments apply to Apple, Microsoft and Mozilla. And the situation with the equivalent proposal for the CLI is broadly similar.

I think what is plausible is that OpenJDK could support wasm as a platform (as a target for JIT and AOT), and similarly so could .Net. Wasm probably isn't mature enough yet for either to succeed, but I can't see why it can't get there.

<comment><USER2> This thread is about Java 9, which includes the Java Module System aka Jigsaw. The JDK itself was modularized. The API surface is now tiny. It would be easy for chromium to whitelist which are the permissive modules. Applets had a different and inferior security model.

</comment></comment></comment><comment><AUTHOR> With Java 9, Java finally supports HiDPI on Linux and Windows. MacOS has had HiDPI support since Java 7u40. On Linux it also adds GTK support.

<comment><AUTHOR> _On Linux it also adds GTK support._

Too late to edit: I meant GTK3 support. It supported GTK2 just fine even before JDK 9.

</comment></comment><comment><AUTHOR> I was pretty excited about AOT compilation⁰, but it seems it doesn't support dynamically generated classes and bytecode i.e.: lambdas and invokedynamic.

⓪ - [http://openjdk.java.net/jeps/295](http://openjdk.java.net/jeps/295)

<comment><USER4> Really? Reading the document I felt AOT was too much pain for too little gain.

This might benefit IDEs with slightly less startup time but with SSDs even that's questionable. And who besides IDE authors is writing desktop apps in Java anyways?

<comment><AUTHOR> I'd write desktop apps in Java if AOT was available. I'd much prefer Java with JavaFX/Swing/SWT to C++ with QT for cross platform desktop apps. Maybe we'd see Java used for cross platform desktop apps more, instead of the usual Electron app.

</comment></comment></comment><comment><USER5> Android Studio 2.3 and the corresponding gradle versions embedded in android projects throw a hissy-fit on this java version. Android studio refuses to select the jdk9 directory (says "Please use JDK 8 or newer"), and gradlew quickly fails with "Parsing the SDK, no caching allowed, Failed to notify project evaluation listener, javax/xml/bind/annotation/XmlSchema"...?

<comment><AUTHOR> They've changed the version string⁰ format. Existing software needs to be updated to parse the new format.

⓪ - [http://openjdk.java.net/jeps/223](http://openjdk.java.net/jeps/223)

</comment></comment><comment><USER6> Installer is digitally signed August 3rd, why such a long delay until release?

<comment><AUTHOR> Speculating here, but perhaps they had planned some additional testing and wanted to have plenty of time to fix bugs.

<comment><USER6> Looks like they just gave themselves quite a bit of time for testing. [http://mail.openjdk.java.net/pipermail/announce/2017-Septemb...](http://mail.openjdk.java.net/pipermail/announce/2017-September/000230.html)</comment></comment></comment>


48th Mersenne prime found - <AUTHOR> http://www.mersenne.org/various/57885161.htm <comment><USER2> I went to this university and took several of Professor Cooper's classes. He was a great guy and he seemed really passionate about his Mersenne project.

One thing that was annoying however was the prime finding software was put on every lab computer possible. It was suppose to pause when a user got on a machine and resume when they got off. This seemed to never be the case though because they would all run terribly slow and when you checked the process list the prime software would be pegging the CPU. After reporting the problem several times I simply added a line in my bash file to kill it when I logged on.

<comment><USER3> What OS was this? Processes like these (Folding, Seti, etc) should be "niced" on *nix-like OSes to have the lowest possible priority. Not sure what this looks like on Windows, but I imagine it's possible.

<comment><USER4> nice doesn't help with I/O pressure or memory contention, particularly if it used enough memory to contribute to swap activity. Even something like pressure on the system L2/L3 caches can be a big deal, particularly on older systems where those were less generous.

<comment><USER5> Thats where ionice or, even better, cgroups[1] come in :)

[1] <http://en.wikipedia.org/wiki/Cgroup>

<comment><USER4> Agreed, although I would note that at least on Linux and FreeBSD those haven't been a realistic option for a terribly long period of time – if the user didn't go to school recently, it's likely that they weren't an option.

(also, not sure about cgroups but ionice did absolutely nothing useful with swap churn when I tested it awhile back)

</comment></comment></comment></comment></comment><comment><USER6> In my freshman year of college, I discovered something neat about perfect numbers and Mersenne primes (verified by my math professor):

The first perfect number, 6, written in binary is 110 The second, 28, in binary is 11100 The third, 496, in binary is 1111100 The fourth, 8128, in binary is 1111111000000

See the pattern? Its a number of ones equal to the mersenne prime that generates the perfect number, followed by one less number of zeroes.

Just an interesting tidbit I discovered completely by accident in college that I always thought was cool. :)

Of course it derives directly from the fact that mersenne primes (and perfect numbers) are based on powers of two, but I still thought it was cool (probably because I discovered it accidentally and independently without trying to)

<comment><USER7> This is in fact the consequence of a fact first proven by Euler: every even perfect number is of the form (2^(p-1)) * (2^p - 1) where 2^p - 1 is a prime. That is, it's p ones shifted left by p-1 zeroes.

</comment></comment><comment><USER8> Good for GIMPS, 2⁵⁷⁸⁸⁵¹⁶¹ - 1 has a nice ring to it! GIMPS is one of the largest distributed computations in the world and have been tooling away finding primes since 1996. SETI@Home gets most of the credit for popularizing this kind of distributed computing, but GIMPS has been at it for even longer and has delivered consistent results.

<comment><USER9> To be fair, SETI@Home has delivered most consistent results.

<comment><USER10> you mean "nothing" ?

<comment><USER11> What? Don't be silly. If they delivered no results or "nothing" at all, the project would have been shut down years ago. SETI has consisently reported that they have searched through a very large amount of signal and found only natural noise. That data is extremely valuable and is absolutely not "nothing".

<comment><USER12> The aliens are using subspace communication, no wonder we haven't found anything yet.

<comment><USER13> Or encrypted communications, indistinguishable from noise.

<comment><USER14> An unintended consequence of the "https everywhere" practice.

</comment></comment></comment></comment></comment></comment></comment><comment><USER15> So what's the application of finding these sorts of primes? (I don't mean to sound like a dick or anything, I'm genuinely curious what this kind of knowledge can help us with).

<comment><USER16> Honestly, this is pretty much a "because we can" thing, other sibling replies to the contrary. It is cool and fun, and the resources dedicated to this are a pittance compared to, oh, say, the amount of computational resources applied to playing pretty 3D games.

<comment><USER17> I think that the resources required deserve to be considered. If these computers are running 24 hours per day, and they require an extra 100 watts to look for primes (over their idle power consumption), then each computer is using the equivalent of 10 kg of coal per month.

In some cases, they're using renewable energy, and in some cases, they're offsetting heating costs. But the important thing is that the people installing the distributed computing software are not the people looking at the electricity bill. And that kind of breaks the whole economics of it.

<comment><USER16> Yes, but large numbers tend to just blow people's minds. Compare it to, say, power lossage due to people leaving their light bulbs on too long, or using incandescent bulbs instead of something more efficient.

It's noise. Nothing more.

</comment></comment></comment></comment><comment><USER18> GIMPS "why" page is an interesting read as well: <http://primes.utm.edu/notes/faq/why.html>

<comment><USER19> I was wondering what the significance of these findings were. I was disappointed that it is mostly "fame and fortune".

</comment></comment><comment><USER20> If we meet aliens, we should exchange Mersenne primes.

<comment><USER21> To them, that would be like someone wants to exchange integers with us.

 _\- Fifteen THOUSAND!_

 _\- Uuuh..._

<comment><USER22> You assume that they will be advanced enough to come to us. What if we find them in Europa or Titan?

<comment><USER21> Then we will probably not ask them to exchange Mersenne primes with us either. :-)

</comment></comment></comment></comment><comment><USER23> In 2004, Liechtenstein issued a postage stamp with the 39th Mersenne prime number (2^13466917-1), this is the picture from a mathematical stamps collection: [http://stamps.postbit.com/photos/math-stamps- collection/liec...](http://stamps.postbit.com/photos/math-stamps- collection/liechtenstein-math-stamp-2004-prime-number-mersenne.html)

</comment><comment><USER24> If for whatever reason you want to download the number, there are a couple of links here:

[http://www.isthe.com/chongo/tech/math/digit/m57885161/prime-...](http://www.isthe.com/chongo/tech/math/digit/m57885161/prime-c.html#middle)

</comment><comment><USER25> This part confuses me: "a 32-core server in 6 days" and "i7 CPU in 4.5 days" to do the same verification? Is the MLucas code really that much slower than GIMPS, or did the verification only use one core on the 32-core machine or what?

<comment><USER26> It's a myriad of answers. The Mlucas run used a larger FFT than was necessary, partly due to multithreading reasons. The Mlucas code also only uses SSE2 instructions, where the overclocked i7-2600K using GIMPS' Prime95 program is fully AVX capable. I would also expect that the i7 runs at a higher frequency, with a higher IPC, than the server. The "main" CUDALucas run took around 90 hours on a GTX 580. We didn't even hear about the 560 Ti run by Gilchrist, that was on the side.

Here are some links: [http://www.mersenneforum.org/showpost.php?p=325878&postc...](http://www.mersenneforum.org/showpost.php?p=325878&postcount=12) [http://www.mersenneforum.org/showthread.php?p=325951#post325...](http://www.mersenneforum.org/showthread.php?p=325951#post325951) [http://www.mersenneforum.org/showpost.php?p=325995&postc...](http://www.mersenneforum.org/showpost.php?p=325995&postcount=38) [http://www.mersenneforum.org/showpost.php?p=326020&postc...](http://www.mersenneforum.org/showpost.php?p=326020&postcount=51)

<comment><USER26> One last clarification: the reason to use Mlucas, and not Prime95 since it's so much faster, is for independent-code verification of the prime. (CUDALucas also counts in that regard, but the more independent triple and quadruple checks, the merrier!)

</comment></comment></comment><comment><USER27> Is 2^57,885,161-1 Numberwang?

<comment><USER28> Sorry, it was 3.

<comment><USER29> Let's rotate the board!

</comment></comment></comment><comment><USER30> Wolfram Alpha needs to update: [http://www.wolframalpha.com/input/?i=what+is+the+largest+mer...](http://www.wolframalpha.com/input/?i=what+is+the+largest+mersenne+prime+number%3F)

<comment><USER31> Well it's not up to date, but it's not wrong either. It says "Largest known ... as of July 2012"

</comment></comment><comment><USER32> I've long wondered:

Is 2^(2^(2^(2^(2^(...(2)...)-1)-1)-1)-1)-1 prime for all levels of recursion?

<comment><USER33> Those are the Catalan-Mersenne numbers, and it is unknown whether c_5 is prime: <http://oeis.org/A007013>

<comment><USER32> May be. Each value in the series is, in binary, all 1s with the quantity of digits equal to the previous value in the series. Someone took a stab at this theory: <http://email@example.com/msg06260.html>

</comment></comment></comment><comment><USER34> When dealing with numbers of such magnitude, how are they stored in memory?

<comment><USER35> I'm not sure how GIMPS does it, but if you're interested in how it CAN be done you could look into the GMP library for C.

<comment><USER26> It's definitely just a standard lots-of-bits. Every bit of information is needed, lose one and the whole test will be wrong. For current wavefront exponents, like 2^60,000,000-1, save files are around 8 MB, or ~60M bits -- exactly what you'd expect.

Also Prime95 doesn't use GMP, its code is all hand-coded assembly, optimized specifically for the LL test and x86 architecture, written by one very dedicated George Woltman.

</comment></comment></comment><comment><USER36> Finally! Now i can sleep well....

</comment><comment><USER37> If you care what the number actually is, and you have gnu bc, : echo '(2^57885161)-1' | bc > prime.txt

will yield a text file of 17,937,675 bytes, containing all the digits of the number, plus some overhead for newlines and continuation.

<comment> iso8859-1 if you use a real Unix, you can use dc: »dc -e '2 57885161 ^ 1 - p'«

</comment></comment><comment><USER38> Just imagine if we didn't have computers how many fewer primes would have been found.

Even with computers I started wondering how they even go about testing these. I know there are multiple algorithms etc for verification. I meant in the sense of how to keep everything in memory and doing computations on it (I assume that numbers these large aren't trivial to work with).

The history of mersenne primes was a an interesting read though. <http://primes.utm.edu/mersenne/index.html>

<comment><USER39> The number's representation in binary can fit in RAM comfortably -- it's "only" 3 million bits or so. From there, the goal is to perform the Lucas- Lehmer test in as few operations as possible:

[http://en.wikipedia.org/wiki/Lucas- Lehmer_test_for_Mersenne_...](http://en.wikipedia.org/wiki/Lucas- Lehmer_test_for_Mersenne_numbers)

</comment></comment><comment><USER40> I first wondered they wouldn't just multiply all the prime numbers up to this new prime and then subtract one from it to get an even bigger prime number.

But then I realized that they're not searching for them in sequence. I guess it's a very sparse table of primes once you get up there in the magnitudes.

<comment><USER41> Or, you could test that theory with some smaller primes and realize it wouldn't work.

<comment><USER40> oops.

<comment><USER42> It will not necessarily be a larger prime. But it will always be divisible by a larger prime. See <http://en.wikipedia.org/wiki/Euclids_theorem> (Though not necessarily the next largest prime).

The problem with this approach is that the product of the first n primes grows exponentially as the number of primes increases.

</comment></comment></comment></comment><comment><USER43> The absurd amount of time that takes just to verify the thing, shows how much we have yet to improve our computing power to be able to do more and more precise and groundbreaking science.

<comment><USER44> But... numbers are an infinite, artificial construction, there always will be a number exceeding current computing powers by any wanted factor.

<comment><USER45> Mersenne primes may not be infinite ;)

<comment><USER46> > Mersenne primes may not be infinite ;)

The argument can be made that, because there are an infinity of primes, then either (a) Mersenne primes are also infinite, or (b) a very strange effect prevents Mersenne primes above a certain size, while allowing an infinity of ordinary primes. Occam's razor suggests it's (a).

<comment><USER47> > Mersenne primes may not be infinite ;)

The argument can be made that, because there are an infinity of primes, then either (a) even primes are also infinite, or (b) a very strange effect prevents even primes above a certain size, while allowing an infinity of odd primes. Occam's razor suggests it's (a).

Or, as another poster said: math doesn't work that way.

<comment><USER48> It's up to you whether this is strange or not, but the effect you're looking for is _the definition of even numbers_.

I don't find the GP's argument credible, but this really isn't a contradiction of it.

</comment></comment></comment></comment></comment></comment><comment><USER49> > _The discovery is eligible for a $3,000 GIMPS research discovery award._

Missed opportunity. Award should be $3,571.113

</comment><comment><USER12> They give the date to the nearest second but neglect to mention the year...

</comment><comment><USER50> tl;dr version:

The largest known prime number, 2^(57,885,161)-1, was discovered on January 25th 2013. It has 17,425,170 digits. The new prime number is a member of a special class of extremely rare prime numbers known as Mersenne primes... [http://tldr.io/tldrs/51111f3dde23f15658000031/48th-known- mer...](http://tldr.io/tldrs/51111f3dde23f15658000031/48th-known-mersenne- prime-discovered)

</comment><comment><USER51> this is not scalable :P</comment>


Bayesian reasoning implicated in some mental disorders - <AUTHOR> https://www.sciencenews.org/article/bayesian-reasoning-implicated-some-mental-disorders <comment><USER2> Heh, I was kinda hoping this study would be about how spending too much time at LessWrong was bad for your mental health- because speaking from experience I have this vague suspicion that it might be- but this is interesting too.

The increasing amount of evidence that autistic spectrum disorders are at least partially about a failure to do automatic "holistic" processing of incoming sensory information, and thus have to do it, for lack of a better term, "in software" is a big deal, both in terms of making people's lives easier and possibly figuring out where this mechanism comes from and what exactly it consists of.</comment>


When business culture eats cyber security for breakfast - <AUTHOR> http://infospectives.co.uk/2015/07/30/when-business-culture-eats-cybersecurity-for-breakfast-part-one/ <comment><AUTHOR> Part 1 of 4 longer posts written last year, but recently highlighted as equally relevant now. Outs layered corporate blockages to maturing security (a.k.a why security's STILL crap despite huge spend in many firms).</comment>


The Tiles of Infinity (2009) - <AUTHOR> http://www.aramcoworld.com/issue/200905/the.tiles.of.infinity.htm <comment><USER3> It is interesting to note that there are tiles with which one can simulate a Turing machine. The tiles can tile the plane iff the TM never stops.

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

<comment><USER4> They were even the subject of a short (fiction) story by Greg Egan: [http://kasmana.people.cofc.edu/MATHFICT/mfview.php?callnumbe...](http://kasmana.people.cofc.edu/MATHFICT/mfview.php?callnumber=mf935) .

</comment></comment><comment><USER5> Saudi Aramco World is probably my most favourite periodical - <USER2> consistently insightful and fascinating than NatGeo for me. Ironically, I also find it far less commercial than NatGeo.</comment>


Developing HTTPS Services in Node with Self-Signed Certificates - <AUTHOR> https://mattcbaker.com/post/developing-https-node-local/ <comment><USER2> Save a ton of work by placing a http proxy infront of your NodeJS apps, and also let the http proxy serve static content. That way you dont have to implement a http-server+SSL+routing+file-server for each nodejs project. There are a lot of advantages to keeping a program small: For example less bugs, less maintenance, and faster implementation.

<comment><USER3> I second this. In production I will typically front my Node app with Nginx that takes care of SSL and static file serving. There is also a substantial performance benefit.

Can all be bundled up in a single Docker container for super easy deployment. :)

</comment></comment><comment><USER4> Me and my engineering team has been working with a combination of Zerotier + Caddy for a while now. We have a development domain and then every engineer has a subdomain, which is just `username.example.com` and `*.username.example.com` that points to their Zerotier address. Since it's all on a Zerotier network, we use DNS-01 validation, which works well.

Each engineer then has caddy running on his development machine with domains such as `server.username.example.com` and `web.username.example.com`.

The useful thing about this is that we're spread out remotely, but can at any point, while pairing or something like that, connect to the services running on each others machines. I've also grown used to simply using my own domain, rather than localhost, when developing, especially since it's served behind HTTPS.

</comment><comment><USER5> If you own a domain, create a A record for local.mydomain.com and point it to 127.0.0.1 and you can generate a valid cert with Let's Encrypt.

<comment><USER6> In this case you'll need to use the DNS-01 validation method for the domain issuance, not HTTP-01 (because local.mydomain.com won't be able to receive an inbound validation connection from Let's Encrypt).

<comment><USER5> There's various tricks. You can also assign the domain to a static IP long enough to verify your ownership then change it. Using a TXT record is probably easier to automate renewal though.

</comment></comment></comment><comment><USER7> You can also front it with Caddy in a single command, no need to generate the self-signed certificate manually and find a place to store it:

$ caddy -host localhost "proxy / localhost:9000" "tls self_signed"

This will serve your Node application (assuming it's on port 9000) at [https://localhost:2015/](https://localhost:2015/). And you can change the port from the default port with the -port flag.

</comment><comment><USER8> I've never tried to serve HTTPS locally without a proxy (ngrok etc.) or behind a load balancer, because I always end up serving the app with one or the other. And now there's Let's Encrypt. Why would you ever develop with HTTPS locally?

<comment><USER9> > Why would you ever develop with HTTPS locally?

One good reason is to mimic the production environment, as there are an increasing number of browser features that depend on HTTPS (HSTS, cookie secure flags, new html5 APIs like the location api, etc). Though when I do use https locally I also typically use an nginx reverse proxy.</comment></comment>


The Paywall Paradox of Medium - <AUTHOR> https://hackernoon.com/the-paywall-paradox-of-medium-3dd0a6a7bde6 <comment><USER2> Russian technical oriented website opened English section earlier this year [https://habr.com/en/company/habr/blog/435764/](https://habr.com/en/company/habr/blog/435764/). It has a long history working with independent technical writers. 10 years may be more. It is a good alternative for technical part of Medium.</comment>


How I had a bygone 72-pin connector remade just to play Duck Hunt - <AUTHOR> http://www.keacher.com/1627/how-i-had-a-bygone-72-pin-connector-remade-just-to-play-duck-hunt/ <comment><USER2> sadly no mention of price on solution, but still a very interesting article which teaches you that even things that are no longer made can still be obtained via the internet in the modern day :)</comment>


Cache Oblivious Algorithms - <AUTHOR> http://www.catonmat.net/blog/mit-introduction-to-algorithms-part-fourteen/

<comment><USER2> Cache Oblivious Algorithms are actually fairly old, 1999 to be precise -- Harald Prokop's Master's thesis: <http://supertech.csail.mit.edu/papers/Prokop99.pdf> (pdf).

Tokutek uses it: <http://www.tokutek.com/careers.php>

</comment><comment><USER3> wow the one guy in the world who has worse penmanship than myself :P

In all seriously, interesting topic and the text book for that course is an amazing algorithms book. My copy is certainly well used.

<comment><USER4> I'd also _very highly_ recommend this book, but anyone looking to buy might be interested to know that the 3rd edition comes out this fall (9/30).

[http://www.amazon.com/Introduction-Algorithms-Third- Thomas-C...](http://www.amazon.com/Introduction-Algorithms-Third-Thomas- Cormen/dp/0262033844)

 _"It includes two completely new chapters, on van Emde Boas trees and multithreaded algorithms, and substantial additions to the chapter on recurrence (now called "Divide-and-Conquer"). It features improved treatment of dynamic programming and greedy algorithms and a new notion of edge-based flow in the material on flow networks."_</comment></comment>


Show HN: Rate your meetings - <AUTHOR> https://www.comeet.me <comment><AUTHOR> Hi everyone! This is Lluis from Comeet.me

To make the long story short, in the last months we have been working on a tool that aims to solve the frustration we all have after having tons of unproductive meetings. It allows everyone to provide and receive feedback on each of their interactions, to learn, improve and help your peers. Fully integrated into your GCalendar, provide feedback doesn't take more than 10 seconds.

We are currently looking for some help! Individuals and Teams that feels their meetings should be better, that can test Comeet.me, and provide us feedback about what is useful, what lacks, what needs improvement, etc. Download directly the Chrome extension from our landing, or contact us at email@example.com if you have any question!

Thanks!!! This is so helpful for us!</comment>


Starting a Business Around GPT-3 Is a Bad Idea - <AUTHOR> https://www.allencheng.com/starting-a-business-around-gpt-3-is-a-bad-idea/ <comment><USER2> This seems obvious but the reason has nothing to do with GPT-3. It's just a bad idea to build a business around someone else's API, especially when there's no real competition to that API (for now) and it's nontrivial to roll your own replacement if you had to.

Someone else mentioned the App Store. But that platform requires diverse businesses to participate for it to be valuable to Apple's customers. And you can still diversify across other platforms and app stores. And despite that there are still lots of examples of businesses getting shut out for one, sometimes arbitrary and opaque, reason or another. Or Apple simply likes the product and clones it (Flux). We also have Twitter's fickle relationship with developers. And various Google APIs that have been shut down (Reader, etc.), priced up (Maps) or modified their TOS to curtail use cases businesses had built on because it impinged on Google's own interests. This list is nowhere near exhaustive.

What if OpenAI's business model changes (again) and your business is no longer important to theirs? If it ever was in the first place...

<comment><USER3> Is this even mentioned in the article? I was reading and reading and thinking "this is all moot, you can't do anything with GPT-3 because you can't run it yourself". Seeing how much money this level of AI is worth, I think OpenAI's incentives are skewed at best at this point.

<comment><USER4> Author here, I discuss aspects of this in the "Economies of Scale" section - if you're existentially dependent on a supplier, that supplier has leverage to squeeze you hard.

The counterforce will be development of similar algos by AWS, Google, and others; and OpenAI's personal balance of volume vs prices. OpenAI has a monopoly now but it won't in a year or two; I'm sure they're planning for this.

<comment><USER5> I suspect that 6 months from now the situation will be different, and technology will have moved on. The potential for these very large models is just too tempting, and I can see a lot of different organisations piling on the bandwagon.

</comment></comment></comment></comment><comment><USER6> The author's main points are all centered around the assumption that GPT-3 related technologies are ready to create market-disrupting products, and that the key business challenges remaining are mostly around figuring out how to build a defensible moat.

However, that assumption is dead wrong.

We don't know how well GPT-3 "works out of the box" (hence OpenAI's api release), and it's stupendously premature to assume that it is ready for products.

We don't have a good understanding of what inputs the model handles well vs. doesn't (a key pre-requisite for building a safe product), and it has been shown to regurgitate authoritative but untrue statements.

[EDIT]: by construction, it also cannot store information provided by the user for later use, nor can it "look up" facts.

I agree with the high level statement ("starting a business around gpt-3 is a bad idea") but almost none of the generic business advice, because it's founded on an assumption of technical capability that simply isn't there yet. The article talks about GPT-3 in an abstract "super powerful AI" sense, which leads me to suspect that the author doesn't really understand the technical limitations of GPT-3 beyond the demos that have been shown.

<comment><USER4> Author here. I agree it's early and we'll have to wait until real products hit the ground to see the full extent of its capabilities and limitations.

I was a skeptic of the performance too ("surely all these demos are cherrypicked") but having played with the beta for a dozen hours and gotten better at prompts, the performance is real, and it's good enough to build the mentioned products around that people are willing to pay money for.

Will these be good, airtight products at the same level as human-designed performance? No. But we're not talking about "self-driving car needs six 9's of reliability to meet regulations or face a PR nightmare" performance.

We're talking about "is this AI therapy bot fun to chat to and better than paying $200 per hour for a therapist?" performance.

We're talking about "is is cheaper to pay a writer $200 per news article or $0.05 for a good enough article?"

<comment><USER6> Fair enough, thanks for your reply and clarification. I think "PR nightmare" scenario might be more likely than you suspect.

1\. What if an AI therapy bot tells a depressed person to kill themselves? How do you get a language model to obey confidentiality rules? How do you prevent it from memorizing and regurgitating someone's mental health conversation to another patient?

2\. I think the implications of replacing journalists with far cheaper automated systems (with substantially less fact-checking capability) have not been well thought out, and I worry that some VC bro is going to rush a product to market before policy makers / stakeholders have thought carefully about whether this is something that we want.

It's telling that GPT-3's best writing successes have been of the "philosophical musing" variety, not of writing accurate articles. I'm not sure whether that says more about AI or Philosophy.

<comment><USER4> I agree, any morally conscious founder should build in extra safeguards to stifle the bad edge cases and launch only after pretty thorough testing. Even an immoral founder who wants to avoid bad PR would do so.

Ideally all creators to be as thoughtful and careful as you. But we all know 1) there will be plenty of builders will build and launch regardless of how ready the app is, 2) users happily use whatever's engaging, convenient, and low-cost, while ignoring problems with privacy, security, and whether the product is net negative for a % of users (see TikTok, Twitter, Whisper).

If the technology is here, then the products will exist, and regulation isn't going to come in time to stop it.

<comment><USER6> I feel that overestimation of fundamental capability is actually the cause of many morality/safety issues, if not at least a degradation of user experience (automated voice menus).

The big difference here is that TikTok, Twitter, Whisper actually have working technology, in spite of ethical concerns. What I am saying is that the people who want to use GPT-3 for business use case X, Y, and Z probably have not thought deeply enough about the limitations/implications of large language model methodology on specific nuances of X, Y, Z tasks.

Have you considered the fact that GPT-3 can't actually look up any information? Consider the implications of that before suggesting that GPT-3 could be used for therapy.

<comment><USER7> While GPT-3 cannot lookup information, a service using GPT-3 could. For instance one could include the past dialog/facts cleverly presented in the context window.

How well this would work in practice is up for debate.

</comment></comment></comment></comment></comment></comment><comment><USER8> Counter proposal from someone who is starting a business around GPT-3 ([http://serendipityrecs.com/](http://serendipityrecs.com/)):

\- If your whole app is a wrapper around the GPT-3 API then yes, you don't have much of a moat. But GPT-3 isn't some kind of perfect oracle, so you have lots of engineering challenges in the not-GPT-3 parts of your system where you can build your moat.

\- GPT-4 does not render your current efforts moot. It takes time to build business/technical expertise in a domain. That's like saying it was pointless to build a web company in the 90s because web technologies/computing power was increasing so fast. You work with the technology you have, and then when it's time you upgrade.

\- I disagree with the idea that you'll have hundreds of competitors. We're just starting to figure out what we can do with this technology. The space is wide open for someone to figure out a novel application.

AI dungeon was mentioned in another comment and serves as a good counter example. Where are all the AI dungeon competitors? How easy would it be to build a competing product to AI dungeon if you wanted to? And AI dungeon started with GPT-2, but incorporated GPT-3 into their product when it came out.

To summarize, starting a business around GPT-3 is a great idea. Stay realistic, be cognizant of GPT-3's limitations, but do realize that there is a genuine opportunity here.

<comment><USER9> AI Dungeon is very cool, but it's not clear that it has had enough success to inspire any competitors, so I don't think it's a very good counter example.

<comment><USER4> Agree - if it becomes known AI Dungeon 3 makes $500,000 in profit a year, expect plenty of competitors to pop up and conduct a pricing war down to the bottom.

<comment><USER10> And guess how much of that goes to Nvidia/cloud? (hint, more than all of it)

</comment></comment></comment></comment><comment><USER11> I think businesses that benefit from large amounts of auto-generated content (namely video games) will also benefit from GPT-3. Some of what breaks the immersion in an open world game like GTA is repeated conversations among NPCs, so automated scripts and improvements to text-to-speech synthesis would massively improve that experience.

I could also see fiction writers using such tools to get around writer's block - feed previous works or a novel-in-progress as training data and let the AI generate the next paragraph.

Additionally, many forms of media and entertainment tend to be one-off affairs (essentially rapidly scaled up / quickly spun down businesses that benefit from quality off-the-shelf tooling).

<comment><USER12> I like the idea of using generated dialog for NPCs in those kinds of circumstances where dynamic dialog makes sense.

As an author I can assure you that writers block is a different animal. Being blocked on fiction happens because you don't know what comes next, and no amount of generative help will clarify a story.

Novels aren't written one paragraph at a time, moving inexorably forward. Generating another sentence to get over the hump would only push a lost novice even farther into the wilderness.

I do believe you could replace 95% of the comedy accounts on Twitter though.

<comment><USER13> > I do believe you could replace 95% of the comedy accounts on Twitter though.

I have yet to see GPT-3 write something that's funny because it's clever and not because it's absurd or ridiculous. But maybe that's 95% of twitter's comedy (I don't read twitter).

<comment><USER12> That's exactly why I limited it to twitter comics, the form relies heavily on non-sequitur.

</comment></comment></comment></comment><comment><USER14> Gwern points out that "prompt engineering" is very important in GPT-3 ([https://www.gwern.net/GPT-3#prompts-as- programming](https://www.gwern.net/GPT-3#prompts-as-programming)), and it's entirely possible that will be more pronounced in GPT-4.

If that's the case, there's an obvious moat (perhaps not an incredibly deep one) in being better at prompt engineering than your competitors, dedicating R&D effort to discovering new prompt engineering tricks/principles, etc.

I could see this as being kind of like an advanced form of SEO.

<comment><USER4> I agree prompts make a huge difference in how well GPT-3 performs. The relevant questions are:

1) how easy is it to replicate best practices? If it's simple reformatting and everyone knows how to do it, then the playing field levels off quickly.

2) what does the improvement curve look like - how far can you push performance through better prompts before you get diminishing marginal returns?

It's too early to tell and we'll need more samples to figure this out.

<comment><USER15> I don't think it's going to be about a single prompt; reverse engineering multiple prompts interacting with themselves is hard. There's a lot of cool things to be done with:

(a) creating a pipeline of prompts that combine outputs of previous prompts into new prompts in a predefined manner

and (b) designing prompts to generate other prompts

<comment><USER16> With the right type of online learning and possibly some of the weights frozen, GPT-3 could gain an unlimited memory instead of the fixed 2048 token memory.

</comment></comment></comment></comment><comment><USER17> This is a massive generalization, made far too early in the lifecycle of a new platform.

Don't take this advice.

Similar criticisms could have been aimed at developing iPhone apps, which have spawned many multi billion dollar companies.

<comment><USER18> The title is an overstatement, but the contents of the post are more balanced.

Out of curiosity, what were the criticisms of building iPhone apps?

<comment><USER17> Read the blog post but replace GPT3 with iPhone.

</comment></comment></comment><comment><USER19> I have to disagree with the central thesis. Disclosure, I'm building snazzy.ai, a company that utilizes GPT-3.

Counter to the article, GPT-3 isn't the moat, the moat is the company you build around it. It's your positioning, your team, your UI, etc.

GPT-3 is just another tool and if you treat it as a building block, then it can be part of what helps build a great company.

<comment><USER9> It will never be a key differentiator for your company, since someone else can add it very easily to their product. There is also no network effect moat (i.e. Facebook), or data collection moat (i.e. Google).

Sure, you can build a little bit of UI around it, and maybe you have some prompts which you've refined, but that's about the only advantage you'll have over anyone else.

At the end of the day, I suspect OpenAI will be the only big winner in the GPT-3 space.

<comment><USER19> GPT-3 is just the enabling technology, what you do with the tool is where a company differentiates itself.

The key argument the article and your comment is making is that GPT-3 is the moat. There's so much more to a company than just a piece of tech implemented within in.

Network effect and data collection are growth loops that exist separately from the technology and can be effectively layered into a company regardless of the underlying tech.

<comment><USER20> The clear winner is still OpenAI. Who's to say that established companies can do the exact same thing even with the OpenAI GPT-3 API.

I can see Google doing this and they also have many options here to remain competitive. They too can access this API, Google DeepMind can create another AI as a Service service similar to OpenAI or directly clone your idea as a feature in another product.

OpenAI has now become the AWS of AI services. I won't be suprised to see DeepMind thinking of doing the same thing.

</comment></comment></comment></comment><comment><USER21> The examples I have seen tease but are not fully clear on how far GPT-3 can go on tasks that are not in principle text generation tasks.

For example I've seen the translation to HTML code demo. Of course, LSTMs already generate quasi compilable code. But the promise seems far better here. Countless "AI" tasks can be conceptualized as entering prompts and receiving code — playing chess, finding logical implications (maybe from tabular data like in Formal Concept Analysis), detecting outliers in columnar/matrix data. How much does GPT do? How much turf beyond chatbots and automatic journalism does it cover?

<comment><USER22> > How much does GPT do? How much turf beyond chatbots and automatic journalism > does it cover?

The real answer to this is that we don't really know just yet. People are still finding ways to represent problems as text completions and feeding them to GPT-3 and seeing what comes out. However there is a hard limit for GPT-3 specificially, and that's its context window. IIRC it can only be prompted with & generate 2048 "BPEs" in total (smaller than a word, but bigger than one character). So in your prompt you could give it a handful of tables, some with outliers, some without, and some metrics after each table concerning outliers. Then the last part of your prompt is a table you'd like the metrics for and let GPT-3 fill it in. Does this work? The answer is a strong maybe, lol. But you're so limited in space that for some use-cases it's more likely you'd need to wait for later iterations of this approach that raise or remove the length limitation.

</comment></comment><comment><USER23> Note also that a lot of these points, on AI businesses generally, will also apply [https://a16z.com/2020/02/16/the-new-business-of-ai-and- how-i...](https://a16z.com/2020/02/16/the-new-business-of-ai-and-how-its- different-from-traditional-software/)

<comment><USER4> Agreed - companies can compete by adding on services and focus on verticals. It might be a different type of company than the founder originally envisioned, though.

Here's a good take on this article: [https://scottlocklin.wordpress.com/2020/02/21/andreessen- hor...](https://scottlocklin.wordpress.com/2020/02/21/andreessen-horowitz- craps-on-ai-startups-from-a-great-height/)

</comment></comment><comment><USER24> This article assumes the cost of training GPT-3 will remain high. I think it will depend on how quickly we can make these models more efficient vs how much bigger we should make them to keep improving the quality of output. At some point, the quality will plateau, and the engineering improvements should catch up. For example, the 2013 VGG model has 160M parameters, and achieves the same Imagenet accuracy as a 16M parameter 2020 model (or maybe even 1.6M parameter one, I haven't checked the state of the art in efficiency). The algorithmic improvements will be combined with hardware improvements. Once the cost of training falls below some threshold, people will apply this technology to various domains, and entirely new applications will appear, creating a lot of room for new startups.

</comment><comment><USER25> I think that GPT-3 and similar "AI" technologies will help companies provide user-specific customization that previously would have required uneconomical software development. It's giving us the ability to put another layer of polish on existing products.

<comment><USER26> Personally, I find predictability to be the most important attribute of good software. I want to know that if I do an action, I can expect a specific, repeatable result. I find that any time AI technologies are involved, predictability decreases (for example any voice controlled system, or Google's increasingly fuzzy search suggestions). Therefore I don't understand how AI can add "polish" to a product. New features? Sure. But polish?

<comment><USER25> Agreed that AI will probably be frustrating if it's used in a way that makes "queries" unpredictable.

On the other hand, suppose we use it to make stable changes to a personal version of a product. I'd like to ask the "AI" to write the SQL query that answers a question within the context the product, and save the query once we get it right. Now I have customized my product with a new query without hiring a developer or learning SQL myself. And I can reuse this saved query for predictable results. The story probably gets more interesting with more components: reports, screens, storage, etc.

<comment><USER27> How do you know the SQL query is right without knowing SQL? Unless you have all possible inputs and outputs (and at that point there are definitely more reliable bits of tech) you won't be able to tell.

</comment></comment></comment></comment><comment><USER28> Very good reality check that separates hype/cool factor from real business development.

</comment><comment><USER5> One thing that I think GPT-3 _does_ show is that NLP technology has now reached a level of sophistication where it becomes possible to use it in a wide range of new and different applications.

<comment><USER10> Exactly. The real innovation here is NLP, not GPT. It will take time for the technology to become democratized, but it no doubt will. GPT will become one expensive API compared to the dozens of smaller, cheaper, and more focused APIs.

</comment></comment><comment><USER29> "GPT-3 looks more like a sustaining innovation than a disruptive innovation"

Definitely see GPT-3 as a utility to augment existing functions within a product than something that stands on its own. One immediate use case I was thinking about was a way to auto generate decent meta descriptions for different pages on a site

</comment><comment><USER30> Perhaps the big winners from GPT-3 will be patent trolls? Easier than ever to mock an idea up and use the implementation to do a land grab in form of a patent? [Not saying I advocate this strategy, am just wondering if the low barrier to entry will enable it]

<comment><USER31> It would be a wonderful way to make "prior art" too, effectively blocking such patent trolls.

<comment><USER30> Excellent idea! See now you have filled me with optimism. Thank you kind stranger.

</comment></comment></comment><comment><USER32> The article isn't wrong, but it also depends on how much (time, money) you invest in your business.

For example, creating AI Dungeon (first with GPT-2, now with 3) will probably be profitable for its founder, one way or another. So that likely was effort well spent.

<comment><USER4> I agree, AI Dungeon is a fantastic idea and right now has first mover advantage. Once it's clear it's a viable business, AI Dungeon will spawn a lot of competitors. Outside of GPT-3, their proprietary tech doesn't seem like anything fancy. From here, there are a few main outcomes:

-AI Dungeon has first mover advantage in branding and reputation, and new customers stay loyal to it. Its competitors end up seizing just a small % of market share in the niche automated AI text game market.

-five viable competitors to AI Dungeon pop up. They all compete with each other with very similar products, and it becomes a pricing war, sapping earnings from everyone.

-API pricing will kill the economics of AI Dungeon and similar projects. This is what happened to Geoguessr and related games, which relied on Google Maps API for years until the pricing became prohibitive.

<comment><USER32> Completely agree. But the creator of AI dungeon has gotten 10k Twitter followers and will likely get a good job/career out of it, if nothing else.

</comment></comment></comment><comment><USER33> I can see one avenue in which GPT-3 might be quite disruptive, and that is in reinventing our software development processes. For example, if it can be purposed into something that reliably converts source code between programming languages, then there is no longer any moat in library code and bindings beyond the prompt development; PL development will accordingly accelerate. And the same goes for tasks like developing tests, static checks, optimizations, user interfaces, import/export and so forth.

In this scenario, software itself commoditizes to a greater degree. Perhaps not to the point where the AI is a Star Trek computer, but transitionally towards that. And that means that software businesses increasingly become commission shops that pump out AI-built programs on demand, while software services built on platform lock-in get threatened by cheap data export and format conversion tools.

<comment><USER9> That's besides the point of the article. Whether or not GPT-3 can produce working software at a useful scale (beyond a small amount of markup), doesn't have anything to do with whether one can build a successful business wrapping OpenAI's API.

</comment></comment><comment><USER34> That's like saying building a video startup is a bad idea because everybody else including MS, Google, FB, etc. already have same tech. You just need a polished product that's appealing.

<comment><USER4> Interesting analogy, though not perfect. The key question is to what % of the user experience the core technology provides.

For software, the programming language plays a small %, from the user's perspective - it's what is done with it that matters. Thus, "building a Python startup is a bad idea because everyone else has Python" doesn't make sense.

For online mattress companies, the mattress is really 95% of the experience (with minor points for delivery and customer support). Thus, "building an online mattress company is a bad idea because everyone sells the same mattresses and no one has a product edge" does make sense.

Video startups are more like programming languages, IMO. The key of the user experience is less the video technology and more what videos are actually accessible. Here, the network effects of user-generated content (Youtube, Tiktok) or proprietary videos (Netflix) are the real secret sauce.

For GPT-3 startups, the question is whether GPT-3 forms the vast majority of the value or just a small % of it. The lower the % it takes up in your product, the more likely you can build a competitive advantage in technology.

</comment></comment><comment><USER35> It is all pattern matching and no conceptual understanding. Therefore, not very useful for business other than to maybe trick people into thinking it might understand something.

</comment><comment><USER36> Let us stick with steam power because making diesel trains is too easy.

The problem is that GPT3 is a technology you got to utilize or get kicked to the curb by the competition.

</comment><comment><USER37> I think I'm out of touch and Google is just giving me news articles: what is GPT-3?

<comment><USER38> "A team of more than 30 OpenAI researchers have released a paper about GPT-3, a language model capable of achieving state-of-the-art results on a set of benchmark and unique natural language processing tasks that range from language translation to generating news articles to answering SAT questions. GPT-3 has a whopping 175 billion parameters. By comparison, the largest version of GPT-2 was 1.5 billion parameters, and the largest Transformer-based language model in the world — introduced by Microsoft earlier this month — is 17 billion parameters. [...]"

[https://venturebeat.com/2020/05/29/openai-debuts-gigantic- gp...](https://venturebeat.com/2020/05/29/openai-debuts-gigantic- gpt-3-language-model-with-175-billion-parameters/)

</comment></comment><comment><USER39> I'm drawing a blank. What are some business models here?

What would people pay for?

</comment><comment><USER40> Prototype with GPT-3, launch with GPT-4

</comment><comment><USER41> It's not a bad idea, the timing isn't right, I see GPT as being ~13-14 years ahead of its time. I'm pretty certain within our lifetime we will see an explosion of such tools, now with CSS and browser engines being significantly less intelligent than their future counterparts, GPT-3 WILL/ might just evolve into something substantial, hence the buzz

<comment><USER14> > I see GPT as being ~13-14 years ahead of its time.

What do you think is missing from GPT that will take more than ten years to add?

<comment><USER32> I certainly would not want to bet on it, but adding the ability to perform computation and access storage could take 10 years.

Right now, GPT-3 "sees" 2048 tokens, does a forward pass, and outputs the next word. We would like to to be able to say "hold on while I think for a while" but how to do that with current gradient-based deep learning methods is unclear.</comment></comment></comment>