How to Name a Baby (2013) - <AUTHOR> https://waitbutwhy.com/2013/12/how-to-name-baby.html <comment><USER2> One thing I'm missing from this article is that a name is often one of the first things people hear about you, and our primate pattern-searching brains immediately use that to lay the foundations of their first impression of you. When someone is juggling ten résumés for a job opening your name matters (even though it shouldn't) — and that's just the obvious example.

A lot of name trends automatically sort you into boxes. Sometimes based on class or (parental) income, sometimes skin colour or ethnicity, sometimes religion, and of course level of education¹. Whether you want to have you child deal with those stigma or not is a personal choice, but you can't change how people perceive names overnight.

Personally (and I actually get to do this in March) I would never use a name that strongly ties a child to religion or any other stigma that might hold them back.

It shouldn't be, but _nomen est omen_ holds true.

1: If someone in the Netherlands names their son 'Jayden' or 'Mason', they probably didn't go to college. Yes, that is a horrible thing to conclude based solely on a name, but that _is_ how names tend to work. Primate pattern- searching brains, remember?

<comment><USER3> That is another reason why I wanted to give my daughter a boring 'normal' name. I wanted he name to be as much of a blank slate as possible that people would draw as few conclusions from as possible.

<comment><USER4> A very common name also has its problems. Large chances of being compared to peers with the same name for example.

</comment></comment></comment><comment><USER5> The author misses one useful strategy (or maybe it's just a sub-strategy of #3): Pick a name that is a _former_ fad name. I was named after two uncles (same name, one on each side!) and my name is wildly common in men 30-60 years older than me and unusual in my age group. This is ideal: everyone knows how to spell it, and nobody thinks it's a weird name, so I have most of the advantages of an unusual name without the disadvantages. :)

<comment><USER6> I really wanted a daughter so we could name her after my great grandmother Eleanor. I just love the way that sounds.

<comment><USER7> How much Gone in 60 Seconds influence do you think is at play?

<comment><USER8> I thought it was influenced by Lord of the Rings. I guess the name just shows up a lot.

</comment></comment></comment></comment><comment><USER9> Why is everyone ignoring the obvious solution.

The childs name is just the hash of the two parents names plus the birthday timestamp. This would resolve any infidelity questions.

In all seriousness I have a different strategy. Pick an "A" name. Many lists are sorted alphabetically and at the grade school level its often by first name. As trivial as it may seem, having your name appear first on a list feels like you "won". Might even be enough to give my (currently hypothetical) kids some slight advantage. Aaron and Abbey are optimal.

<comment><USER10> Most name lists I saw was sorted on family name, not first name. But I guess that is country specific, just like some write dates as YYYY-mm-dd instead of the day first... Just makes sorting a list that little bit more logical :-)

Everything that happened the first january I want in that pile, after that we take second january and so on.

You want the news for fifth march 1884? Sure thing, just look thru that pile with everything that happened the fifth march!

<comment><USER11> We were also usually listed by last name in my grade school. I remember that, because I have a last name starting with a "W". Every once in a while for things like waiting in line or taking turns in an activity, the teacher would flip it to reverse alphabetical. I remember that always feeling pretty great.

</comment></comment></comment><comment><USER12> One important fact that many "baby-naming" materials gloss over is that you're choosing not a _baby_ name, but a _person_ name. The child will carry that name for their entire life, including adolescence and adulthood, unless they get so sick of it that they decide to change it. To avoid the latter situation, perhaps it's best not to choose something whimsical, ridiculous, or creatively misspelled.

<comment><USER13> its okay, the article goes into that.

I think its pretty insightful, basically you'll end up doing what everyone else does, but now you will be cognizant of why. Or if your significant other wants to argue over a ridiculous name, you have some rationale to point to.

</comment></comment><comment><USER14> For our second the rules were:

       -- Not repeated in family, friends or celebrities
       -- Not too common or uncommon (300-400) in the rankings
       -- Easy to say (and yell)
       -- No spell needed

Bonus:

       -- Not too bound to any country
       -- Name.surname@gmail avaible.

In any case, whatever you choose you will love it. I remember not liking the name of my daugther the first weeks, but now I think there wasn't any better name than the one she has.

<comment><USER15> Perhaps more interesting than name.surname@gmail, is namesurname.com. If you have that, then you can just make your email email@example.com.

</comment></comment><comment><USER16> [https://1.bp.blogspot.com/-WpCuIur1YKg/Uqg3qVmmCUI/AAAAAAAAG...](https://1.bp.blogspot.com/-WpCuIur1YKg/Uqg3qVmmCUI/AAAAAAAAGqM/cmo9eJNj134/s1600/Top+weird+names.png)

Ryker and Kyler are more popular than Philip and Scott. It's done, just shut the whole thing down.

<comment><USER17> did you overlook MAXIMILIANO???

<comment><USER18> Maximiliano seems like a relatively normal Spanish given name, and since Spanish speakers are a growing demographic with higher fertility rates than the US baseline, that's not too surprising. Unless there's a fad of Anglos deciding to name their kids "Maximiliano". That would be weird.

</comment></comment></comment><comment><USER6> I was giving my sister a hard time about naming her kids Liam and Aiden, and she was like: 'when I picked those names, nobody called their kids that.' 'And you got those names from where?' 'A baby name book on amazon.'

I got around the baby fad thing by just naming our kids after family members. It's boring, but you don't need an interesting name to have an interesting life, and I'm not sure I like the idea of expressing your personal quirkiness by burdening your kids with a lifetime of tediously spelling their name to customer service reps.

<comment><USER16> I don't understand why parents name their kids unique names. My name is unique, and other than getting my first name as my gmail address, it has no upside. I was constantly spelling it out until I decided to go by a short form which is a normal name, but because nobody names their kids normal names anymore I still have to spell it. ("What's the name for the order? Gray?").

<comment><USER19> I went by my middle name for years because it is the least weird of all my names. My first, maiden and married names are all weird. I felt like you. Then I read this article and it made my problems with my names pale in comparison to the troubles one can have from a common name:

[https://www.theguardian.com/us-news/2017/apr/03/identity- the...](https://www.theguardian.com/us-news/2017/apr/03/identity-theft-racial- justice)

</comment></comment></comment><comment><USER3> Both my wife and I have quite odd names which were made fun of when we were in school and are almost impossible to pronounce or spell correctly in English so we gave our daughter a really simple 'boring' name that will work in just about any language or country and no one will ever spell incorrectly.

I wonder if our daughter is going to rebel against having such a 'boring' name by giving her kids a really odd name that is hard to pronounce and spell and start the cycle again.

</comment><comment><USER20> Fun article.

We followed nearly all of the advice just from following our own worldviews and from taking simple approaches to the "problem." 1) No candidate names were discussed outside of the immediate family 1a) To make discussing the baby easier, we had a "project" name as a placeholder, so we could refer easily to things having to do with the baby without being limited to saying "the baby" all the time. Our code name was "Spartacus." So it was, "What color should we paint Spartacus's room?", etc. 2) We stayed away from anything in the top fifty (or one hundred), and we used Babynamewizard to help with that. No one wants to be the third instance of a name in their classroom or circle of friends. 3) We wanted a name that was easy to spell and that people were familiar with, so we weren't going out on a limb and creating a name or repurposing a noun to be a name (e.g., "Feather","Tiger", &c.). 4) We wanted something from the family if we found something we liked and that met the other constraints.

Finally, when we found one we liked, we quickly agreed and it was an easy call. Then just wait for the big "day of delivery."

Reveal: We had a boy and went with 'George.' (Post hoc discovery: living in LA, I now know to say "George with a G" or else "Jorge" may be written down instead. It's a tiny thing & not a real issue — and kind of funny, tbh.)

</comment><comment><USER21> I would pick a very common name.

A unique or exotic name would make it too easy to find them online, and I rather give them the choice of privacy and control.

<comment><USER22> That only helps if your last name isn't relatively unique. Or even worse, the language of origin for your first name and last name don't match, so the pair form an even more unique name.

I'm terrified of ever being in the news for anything.

<comment><USER23> One strategy is to pick a famous name to go with the surname. Look up the child's surname on Wikipedia and choose a first name from the disambiguation page, or put your surname into a search engine and pick from one of the top results. That way if the child wants their 15 minutes fame they have to actually work for it!

<comment><USER24> My parents did that. Long before Wikipedia, but the same idea. So my name is relatively common.

</comment></comment></comment></comment><comment><USER25> When I named my daughter four and a half years ago I had a few goals. Unique but not wacky. Exotic but not obtuse. Clear but not dull. Short. Easy to pronounce in different cultures where certain phonemes are difficult. Easy to spell. Memorable. Story about naming to please both sides of the family. It was an ask!

<comment><USER26> This is pretty much what I did about 10 years ago for my first daughter. I had one additional - have a .com[1] available.

1\. [https://laaija.com](https://laaija.com)

<comment><USER27> She'll get some strange looks if she ever travels to Latvia.

</comment></comment></comment><comment><USER28> My approach was the Chief Justice test: how does "Chief Justice Firstname M. Lastname" sound? Ideally the same name works with "Nickname Lastname, private eye."

<comment><USER29> Agreed. Pretend the kid is a judge or a war hero. Does the name fit?

</comment></comment><comment><USER30> As if planning for a baby wasn't stressful enough, choosing a name feels like a huge responsibility. Especially when you have a small number of peers who either changed their name as adults or choose to be known by a middle name rather than their first name, underlining that sometimes people dislike their names enough to take the matter into their own hands.

My wife and I divided up the responsibility when we were expecting 20 years ago: she would choose a boy's name, I would choose a girl's name. Coincidentally we both ended up choosing Arthurian names: Tristan for a boy, Morgana for a girl.

Clearing firstlastname.com domain names was straightforward, and ultimately we had a girl, so Morgana it was. Unfortunately Morgan was a common enough name that people initially try to pronounce it as Morgan and then get stuck when they see the vowel on the end, but this problem went away after the BBC show Merlin happened.

One additional unplanned bonus was that her full name is alliterative, given both first and last name starts with "M". I do think there's nice stickiness bonus to alliterative names, as evidenced by comic book and other fictional character names. It's just one more factor to consider.

</comment><comment><USER31> Are there any big examples of feminine names becoming masculine? It always seems to go the other way.

<comment><USER32> bunch of examples here: [https://www.jefftk.com/p/name-gender-over- time](https://www.jefftk.com/p/name-gender-over-time)

<comment><USER18> Although part of the transition of "Angel" might come from the relatively uncommon English name "Angel" being displaced by the Spanish name "Ángel", which transliterates as "Angel".

<comment><USER33> That's probably true; see also "Jaime". (And apparently "Joan", if that data is correct.)

</comment></comment></comment></comment><comment><USER34> my rules:

1\. should be pronounceable in every primary languages my family speaks.

2\. no automatic stupid nicknames

3\. not the name of people we know and don't like.

</comment><comment><USER35> And don't forget to make sure that whatever you name them, the associated domain name eg. firstlastname.com is available.

Working as a web developer, occupational reflex made me do a quick check every time my wife and I came up with a name for our kids.

</comment><comment><USER36> We opted for Greek mythology. We named our son Daedalus and besides the fact, people cannot pronounce it properly and we shorten it to just Dae, we love the name. Cool little fact is if you search LinkedIn for the name "Daedalus" nobody comes up with the name.

The best advice I have for anyone choosing a baby name, don't care what other people think. People are surprisingly opinionated when it comes to baby names, most family and sometimes friends.

</comment><comment><USER37> > Not sure who made Utah the name prophecy state, but that's what it > apparently is.

This is not surprising at all. Utah and Idaho Mormon culture is famous for being a veritable stew of bizarre names, everything from derivatives of Book of Mormon characters to alternate spellings unique to a single person in the world. It is the crucible in which new baby names are forged.

Googling for "Utah Baby Namer" is enlightening.

</comment><comment><USER38> I have a crazy first-time (not uncommon but unpronouncable when outside my country).

I lace sure to give my sons simple, common, international first names. And just one per kid (no second, third etc. first names)

</comment><comment><USER39> I was just sick of my internal ear perking up whenever I heard my rather common name, and the call wasn't intended for me.

I always wanted kids with unique names. It's purely a result of that.

</comment><comment><USER40> I named my kid after my middle name, which was my grandfather's name, which was his grandfather's name, and so on until at least the 1700s. Sadly, the name - which admittedly has been generally popular for a few thousand years - had a resurgence in 2002 and 5 years later yelling, "Alex!" at the playground would get at least 3 or 4 boys looking up to see if it was their dad calling to them.

Oh well. At least I personally know I didn't name him after a fad.

</comment><comment><USER41> I remember reading about baby name fads that were caused by names of TV characters. The one I remember is "Emma" catching on after the baby on the TV show Friends.

</comment><comment><USER42> The article talks about naming fads and naming fads appearing in waves.

Isn't that because many people name children to honor relatives/ancesstors of theirs. i.e. unless you are naming someone the second, third, fourth, I'd think its more likely for a name to skip a generation. So jennifer might not be popular now, but it might be again be popular with jennifer's grand children / great grand children.

heck, their data shows thats the case for Emma!

<comment><USER33> I've heard (although there's not really strong data to support this) that names run on something like a 100-year cycle, i. e. somewhat longer than an average lifespan. You don't want to give your kid an old person name, and you may not want to name them after a still-living relative but it's a good way to honor a dead relative.

For example, my daughter's middle name (born 2018) is my grandmother's first name (born 1923).

</comment></comment><comment><USER43> There you go

[1] [https://en.wikipedia.org/wiki/Germanic_name](https://en.wikipedia.org/wiki/Germanic_name) [2] [https://en.wikipedia.org/wiki/Greek_name](https://en.wikipedia.org/wiki/Greek_name)

Some cool (but not so weird) alternatives to popular US names.

</comment><comment><USER44> Don't decide on a name before you see your baby's face and first indications of temperaments. You will be stuck with the name if you picked a wrong name. My strategy was to pick 3-4 potential name but don't get too hung up on any of them. With my second, none of the names matched him. We started searching for a new one. I am glad we did.

<comment><USER45> baby face after birth looks completely different already after one month and dunno how can you judge personality of few days old newborn since i guess you are not gonna wait years to figure out the personality, which should be illegal in most of the countries anyway and you must give name within hours/days maximum usually

</comment></comment><comment><USER46> When my wife was pregnant I programmed a web robot to extract the newborn names from the nearby hospitals. With the list of the babies from the former 2 years I could remove the ones with ambiguous writing, and the most common ones.

But maybe this is an option avaiable just to HN readers. :-)

<comment><USER33> As more of a stats person than a programmer, I used the "babynames" package for R instead.

</comment></comment><comment><USER47> There's probably someone right now generating baby names with a neural network trained on a huge list of every SSN name used in the past twenty years. They'll use one of these and become very minor celebrities for a week while it goes somewhat viral on Twitter.

</comment><comment><USER48> A lot of the comments here seem to assume that a person has only one given name. Where I come from that is almost unheard of, most people have at least two, and this means that the person can choose which one to be known by. My wife used her middle name.

<comment><USER45> middle name cause lot of troubles in databases in countries which use only two names or even better Chinese characters which have very low limit on amount of characters, most of Americans and other middle name nationalities have issues with their bank accounts and other accounts in China which cause a lot of trouble because you never know how they dealt with middle name in their system, i heard this issue countless times in years there and i can imagine issues even in European countries not used to middle names

<comment><USER48> > i can imagine issues even in European countries not used to middle names

Are there any? Pretty much everyone I know in Europe has at least two given name and in some cases also two family names (Spain for instance). Here in Norway it is also common to have a first given name that is actually composed of two separate words without a hyphen, it looks like a name plus a middle name but is in fact what Norwegians call a double name and the person is addressed by both never by just one of them, see [https://no.wikipedia.org/wiki/Liste_over_norske_dobbeltnavn](https://no.wikipedia.org/wiki/Liste_over_norske_dobbeltnavn).

And of course Icelanders don't use family names but instead use patronymics; for instance Björk Guðmundsdóttir where Björk's father's name is Guðmundur Gunnarsson and her mother's is Hildur Rúna Hauksdóttir. They might or might not have middle names.

If you design a user interface that asks for a name please just let the user write the name as they wish with no restrictions on length and please don't try to force a surname into one box and a given name into another and don't forbid hyphens and spaces, etc.

</comment></comment></comment><comment><USER39> They link to "Voyager"; but I'd like to point out SSA's dataset (For the US, of course).

[https://www.ssa.gov/oact/babynames/](https://www.ssa.gov/oact/babynames/)

</comment><comment><USER49> My wife is due in January with our first and we have been struggling to settle on a name. We did do what was advised in the article and have decided not to release our the name we settle on until the baby is born.

<comment><USER50> Seven!

<comment><USER51> One of my friend named her daughter Nana (seven in Japanese) 20 years ago and when daughter was 6+, they got a dog so named him Seven.

</comment></comment></comment><comment><USER45> since my wife it's from China and I am from Europe it makes things more difficult, our rules for both babies were:

\- can't contain R so wife can pronounce it, so no Klara for us

\- can't be in top 10 in countries we are going to settle (since my own name was extremely common when i grew up and didn't want my children to experience other 4 children in their class with same name, i feel pity for my sisters children which both carry names in top 5), but also nothing weird. so my favorites (but sadly also everyone's else) Adam and Anna were out of question

\- length should roughly match my family name for balance (since children carry my family name, combination with Chinese would look a bit odd in Europe)

\- it should be written same way in multiple languages (English/German and my own language) for international use to avoid mistakes (one of benefits of my own name)

\- didn't want certain origins of name to imply nationality, for instance I liked Alina but have to pass after finding it's mostly Russian name

\- nobody in extended family should carry these names (first child name i met twice in my life, second child once in my life though it was my very close female coworker known even by my wife, so it took few weeks to disassociate her from my child name, it helped it's years since we worked together and my wife had always multiple other options though this was my first choice after eliminating many of my favorite names)

\- no infamous celebrities should carry it in countries we are going to settle (we were sure about two countries)

\- i am big fan of names beginning with A and in general beginning of alphabet, so bonus points for beginning, it almost never hurts being on beginning of list if sorted by given name

Things we didn't care about:

\- proximity between birthday and name day (i have like less than 5 days, first child exactly one week, second child months)

\- out of 5/6 letters of their names both children share same 3 letters core, though most of the people would never notice it

\- if someone else carry exactly same given and family name, though combination should be completely unique, pretty sure there is zero people in world carrying same combination as second child, first child extremely rare since also my family name it's very rare

\- not easy to make fun of name, since any name which came to my mind i could ridiculous and i am sure children have even bigger imagination, so unless it's really obvious one should not bother trying to avoid it

<comment><USER33> I work with a Chinese woman who goes by Clara in English-speaking contexts.

<comment><USER45> well their pronunciation of R it's very bad compared to Japanese which can say it perfectly clear, not that English natives would set very high bar for Chinese with R pronunciation, I come from Europe where you can pronounce very clearly and sharp in many languages, so if you can't it seem like you have problems with speaking

and of course i am taking about Chinese Chinese, not american Chinese or CC exposed to English and other foreign languages since early childhood which can improve their R, but usually if you wanna distinguish Japanese and Chinese just ask them to pronounce R or even better RRRRR sound which it's completely impossible for Chinese

</comment></comment></comment><comment><USER52> Not sure if our Atticus Bear Smith is #2 or #3.

</comment><comment><USER53> When a couple tells me they have trouble coming up with a name, I invariably suggest they name him/her after me.

<comment><USER54> How's that going? To the best of my intentions I've only managed a goldfish, a turtle and a horse.

Kirth is a good boy's name, by the way ;). Good training in patience when explaining the pronunciation.</comment></comment>


Deployd: Create RESTful JSON APIs using a GUI interface - <AUTHOR> http://deployd.com/

<comment><USER2> _"By removing the complexity of backend development, Deployd lets you focus on the part of your app that really matters: the front-end"_

/sigh.

<comment><USER3> Why the /sigh?

Is it because you don't agree that backend development is complex? Or do you feel differently about the front-end being the part that really matters?

Personally, I'm impressed by this. It seems to me a compromise between MeteorJS/FireDB and "traditional" stacks. It also comes with its own environment to organize my code? Something about that is a little appealing. Maybe limiting too, but appealing.

<comment><USER4> Probably the /sigh because it looks like a great framework if the problem you're trying to solve is to build the simplest possible TODO-list app.

<comment><USER5> What do you have against TODO-lists? IMHO the world needs more varieties of task management tools.

Actually, the example apps don't really do the platform justice. We (at deployd) use it in consulting projects for building big APIs with complex roles and business requirements. The design of deployd is driven more from lessons learned designing those APIs than from our experiments in TODO-lists.

</comment></comment></comment></comment><comment><USER6> When I see products like this I always feel like I need a "hacker summary" of them. After some digging around it looks like Deployd is a Node.js/JavaScript application server - you download it and run it, it has a self-contained web server with a default interface, a set of command line tools for managing it and ships with a NoSQL-style data store (in bundles MongoDB). Have I missed anything?

<comment><USER7> I had a similar problem before putting it in JavaScript Weekly (which led to this HN submission). Being rather busy, I asked them to resummarize it for me before I realized they had a screencast I could watch instead.. which did a much better job for me than the text on site :-)

</comment></comment><comment><USER8> Great Work.

suggestion: I would frame it differently - the coolness of what you are doing has nothing to do with the GUI part, but rather, the fact that it is a BaaS (backend as a service) open source. It's a simplified meteor, or an open source parse.

BTW - it is funny how things circle back - we are coming back to a client- server era. Much like the VB6 days :)

<comment><USER5> (I work at deployd) Yes, the cycle is funny. We don't usually focus on the GUI when talking about deployd; someone outside the company posted with this headline.

Open source was a no-brainer for us. There are some other key concepts that make it a compelling tool, particularly how easily extensible the platform is.

<comment><USER9> Jeff, has deployd considered adopting a JSON-based media type like Collection+JSON or HAL or JSON-LD (and there are others, or you could roll your own) so that the JSON APIs are properly RESTful?

<comment><USER10> (I work at Deployd) Our goal is first and foremost to generate useful APIs that you can use in your front-end, not necessarily to strictly adhere to the REST pattern. We do tend to use REST terminology when describing Deployd, and maybe that's a mistake that's causing more distraction than necessary.

</comment></comment></comment></comment><comment><USER11> The title here is wrong, I believe. The APIs produced by this tool are not REST APIs. It doesn't seem possible to be able to satisfy the HATEOAS constraint, and a few other REST conditions are not satisfied. See: [http://roy.gbiv.com/untangled/2008/rest-apis-must-be- hyperte...](http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext- driven)

</comment><comment><USER12> GUI Interface. You're kidding right?

<http://www.youtube.com/watch?v=hkDD03yeLnU>

<comment><USER13> That was hilarious! Never seen that clip before.

<comment><USER14> You must not be from reddit.

</comment></comment></comment><comment><USER15> I would love to look at the docs and tutorials but I keep getting:

An error has occurred: {"code":"ENOTFOUND","errno":"ENOTFOUND","syscall":"getaddrinfo"}

Either way, this looks like an awesome product and I can't wait to learn more.

<comment><USER16> Hit f5 when that happens. I get it to come up eventually.

</comment></comment><comment><USER13> I like it. But it would be nice to have the option to deploy on my own server.

<comment><USER5> We made it open source so anyone can run it anywhere. We and others have deployed it to EC2, Heroku, Joyent, Azure, Koding, and I'm sure some others.

<comment><USER13> When you guys have time do you think you could have install instructions for my own env. Or are the instructions for installing from source at the bottom all I need?

<comment><USER10> If you're on Mac or Windows, it's easiest to use the installer. Otherwise (or if you just want to do it yourself), the "install from source" instructions are enough; you'll need both node.js and MongoDB in your PATH.

</comment></comment></comment></comment><comment><USER17> This looks pretty interesting.

A small thing: For cancelled DELETE requests like shown in the video, it would be better to return 403 Forbidden [1] instead of 400 Bad Request [2]:

        10.4.1 400 Bad Request
        The request could not be understood by the server due to malformed syntax.

Vs.

        10.4.4 403 Forbidden
        The server understood the request, but is refusing to fulfill it.

[1] [http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10...](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.4)

[2] [http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10...](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1)

<comment><USER10> That's actually possible, 400 is just the default code: cancel("You're not allowed to do that", 403); I'm not sure why we didn't show that in the video.

Edit: Unless you're saying that 403 should be the default code?

<comment><USER18> Sounds like 400 is the right code for cancelling a request in general.

The way you have it setup is fine in my opinion. Maybe add some sugar like: `needsAuth()` which would check for a user and would return `cancel("You're not allowed to do that", 403)` given the user does not exist.

I don't think that's necessary though. I like how it is right now.

Great work.

</comment></comment></comment><comment><USER19> _An error has occurred: {"code":"ECONNREFUSED","errno":"ECONNREFUSED","syscall":"connect"}_

<comment><USER20> mine is: An error has occurred: {"code":"ENOTFOUND","errno":"ENOTFOUND","syscall":"getaddrinfo"}

<comment><USER21> Try Google cache for now: [http://webcache.googleusercontent.com/search?q=cache:http://...](http://webcache.googleusercontent.com/search?q=cache:http://deployd.com/)

<comment><USER5> The site's up now.

</comment></comment></comment></comment><comment><USER22> This looks like it could be pretty good for prototyping, or maybe a small, low-risk project. It gives the user JS event handlers for server-side events, and there's a simple API for behavior ("protect('model_attr')", "error('the message')"). Not bad.

<comment><USER5> (I work at deployd) Yes, it's perfect for prototyping. We use it extensively for prototyping on projects where the ultimate API has to be supported in another stack. Saves tons of time compared to developing the API as you go in Java or the like.

</comment></comment><comment><USER23> Are you running your website with deployd? Because it's down :)

An error has occurred: {"code":"ECONNREFUSED","errno":"ECONNREFUSED","syscall":"connect"}

<comment><USER24> I'm getting -

An error has occurred: {"code":"ENOTFOUND","errno":"ENOTFOUND","syscall":"getaddrinfo"}

</comment></comment><comment><USER25> Having played around with Parse and StackMob, I agree with fellows HNers that the great importance of Deployd is that it is an open source BaaS. I loved the interface and the custom server side code validation, just like the feature that Parse recently launched. Keep it up!

</comment><comment><USER26> It looks like their server is melting. Their demo video is here: [http://www.youtube.com/watch?v=I_Jq1BVj6D0&feature=playe...](http://www.youtube.com/watch?v=I_Jq1BVj6D0&feature=player_embedded).

</comment><comment><USER27> I feel like you played techphrase roulette to come up with this idea.

</comment><comment><USER28> Where's the hypermedia?</comment>


How IEO (Initial Exchange Offering) Can Change the Crypto World? - <AUTHOR> https://www.allinallspace.com/how-ieo-initial-exchange-offering-can-change-the-crypto-world/ <comment><USER2> It's like a kickstarter with altcoins?

> [...] _ICO, which compromised itself due to the huge amount of scammers and > people willing to cash in on other people's money._

I agree.

> _IEO vs ICO – Why do companies /projects need IEO?_

> [...]

> _There is no need to develop a smart contract (the cost of which can reach $ > 10,000 and distribute tokens)_

> [...]

> _The cost of IEO on major exchanges ranges from $ 150,000.00 to $ 1,000,000. > [...] Therefore, if your budget is limited to $ 30,000.00- $ 200,000.00, it > is better to select the listing on the exchange of the top 100 with a > listing fee under $10 000 and send the rest to the marketing promotion of > the project._

To create a new smart contract for a standard token it is only necessary to change two or three strings in one of the free contracts that are floating around. Why $10000? Also, the exchange alternative is not so cheap after all.</comment>


Stockholm cash depot hit by helicopter heist - <AUTHOR> http://www.thelocal.se/22234/20090923/

<comment><USER2> This should become a textbook example for good planning in all MBA courses!</comment>


The Origins of Hatred for Pigeons (2016) - <AUTHOR> https://www.audubon.org/news/the-origins-our-misguided-hatred-pigeons <comment><USER2> "Poisoning pigeons in the park" by Tom Lehrer

Spring is here A-suh-puh-ring is here Life is skittles and life is beer I think the loveliest time Of the year is the spring I do, don't you? 'Course you do But there's one thing That makes spring complete for me And makes every Sunday A treat for me

All the world seems in tune On a spring afternoon When we're poisoning pigeons in the park Every Sunday you'll see My sweetheart and me As we poison the pigeons in the park When they see us coming The birdies all try an' hide But they still go for peanuts When coated with cyanide

The sun's shining bright Everything seems all right When we're poisoning pigeons in the park We've gained notoriety And caused much anxiety In the Audubon Society With our games They call it impiety And lack of propriety And quite a variety Of unpleasant names But it's not against any religion To want to dispose of a pigeon

So if Sunday you're free Why don't you come with me And we'll poison the pigeons in the park And maybe we'll do In a squirrel or two While we're poisoning pigeons in the park We'll murder them all Amid laughter and merriment Except for the few We take home to experiment

My pulse will be quickenin' With each drop of strych'nine We feed to a pigeon (It just takes a smidgin!) To poison a pigeon in the park

[https://m.youtube.com/watch?v=yhuMLpdnOjY](https://m.youtube.com/watch?v=yhuMLpdnOjY)

<comment><USER3> Apparently it's a popular theme:

Do you ever have that feeling that you want to punch the ceiling

So you stamp down on the floor, you can't take it anymore,

In your search for absolution there is only one solution,

Kick a pigeon in the park.

[https://www.youtube.com/watch?v=YZstUnhT6eI](https://www.youtube.com/watch?v=YZstUnhT6eI)

</comment></comment><comment><USER4> I've been shat on by pigeons about half a dozen times in 3 different countries. It's a consequence of living in cities as Pigeons are mostly urban dwellers, the same way you probably stepped on dog shit cos the owner didn't scoop it. I don't hate pigeons though, I befriended one guy (could be a girl, who knows) in my patio a year ago here in San Francisco. He had a slight cripple from getting his leg run over. He shows up at the same time every morning for his feed. I usually give him leftover rice or bread and sometimes pumpkin seeds.

I love pigeons. Pigeons are very smart birds[1] and are supposed to have understanding of advanced concepts like time and space.[2]. Humans understandably hate them cos no-one likes getting "shit on" like literally. And since we have guns and poison, we find justifications for mass killing of a species that we declare is a 'nuisance' to our lives.

Vaguely related: Mike Tyson Defends the Pigeon: [https://cityroom.blogs.nytimes.com/2011/05/04/bird-week- mike...](https://cityroom.blogs.nytimes.com/2011/05/04/bird-week-mike-tyson- defends-the-pigeon/) ]

[1] How Smart Is This Bird? Let It Count the Ways - [https://www.nytimes.com/2011/12/23/science/pigeons-can- learn...](https://www.nytimes.com/2011/12/23/science/pigeons-can-learn-higher- math-as-well-as-monkeys-study-suggests.html)

[2] Pigeons are smart enough to perceive abstract concepts like time and space - [https://qz.com/1147518/pigeons-are-smart-enough-to- perceive-...](https://qz.com/1147518/pigeons-are-smart-enough-to-perceive- abstract-concepts-like-time-and-space/)

</comment><comment><USER5> I'm one of those people who dislikes pigeons, and it's interesting to read that at least my belief that pigeons can spread disease doesn't hold much truth.

Personally, I can't relate to the explanation that "pigeon haters" don't like nature crossing over into their orderly city environment. For example, I do like the tons of blackbirds and sparrows in my city.

<comment><USER6> I lived in a building which was "affected" by pigeons, they filled the nearby balconies with their feces. It was disgusting. I complained to management, nothing was done. They were loud and annoying early in the morning, crapped all over everything, it was maddening. Although pigeons are pretty smart, you can teach them to fear you and even to fear coming anywhere near your balcony, which is what I did. By constantly scaring the bejeesus out of them every time they came near. They eventually decided that the pleasure of crapping on my balcony wasn't worth the terror I would inflict on them.

<comment><USER7> I had a pigeon problem at one of my previous gigs. The fire escape (where we'd frequently go out to smoke/vape, or try to) was a biohazard area. There was an inches-thick layer of fecal matter coating the ground, it was crackling if you attempted to walk on there, and the smell was toxic. Nevertheless, the pigeons appreciated this situation and were nesting in there. _Something_ was regularly killing them (either a predator or disease) and so someone had to undertake the perilous task of disposing of the bodies otherwise they'd stink up the place even more. I still remember sending an invoice with a "dead pigeon removal" line item.

</comment></comment></comment><comment><USER8> > They're certainly noisy, and they defecate on people and property with > abandon (and in great volume—a pigeon produces a hefty 25 pounds of > excrement per year), but you can say the same about lots of animals.

No you really can't, I have never been shat on by any wild animal besides a pigeon. What animal besides a pigeon shits on a statue so much it visibly coats it in a layer, squirrels certainly don't.

Seriously it's the shit.

<comment><USER9> as anecdotal as it might be I've been shat on by a seagull and let me tell you it isn't pretty.

Dublin has a real problem with those pests.

<comment><USER10> In San Marco square, Venice I saw a seagull fly over a tourist and snatch a pizza right out of his hands. Pretty smart and agile animals, can't say the same of pigeons (although it's somewhat a blessing, considering their numbers)

</comment></comment></comment><comment><USER11> An interesting word I learnt from listening to Daniel Dennett: _synanthrope_. Such creatures include pigeons, rats, barnswallows, bed bugs. They benefit from living around humans without providing much in the way of return service.

There does seem to be a trend for embracing and celebrating animals which formerly have been considered ugly or pestilent. For example my son was recently introduced to a tarantula named Miss Fuzzyboots. In parody we have Hagrid of the Harry Potter films trotting out dangerous and/or repulsive beasts for class appreciation ("They're seriously misunderstood creatures...")

Is this a sort of moral/aesthetic inversion or are we genuinely expanding our 'circle of empathy'?

[http://adami.natsci.msu.edu/blog/2013/04/the-evolution-of- ci...](http://adami.natsci.msu.edu/blog/2013/04/the-evolution-of-circle-of- empathy.html)

</comment><comment><USER12> I don't like pigeons because they overbreed and have become a nuisance. They also poop, a lot. That's reason enough.

<comment><USER13> The geese in Chicago are the same way. They have dominated the lakefront in some areas. Walking in grass is a guaranteed way to step in nasty green bird shit. They also are fairly large and can be intimidating if you get too close to them.

I love having animals around but without any real predators these birds seem to over breed.

<comment><USER14> Even up here in Canada, there are people the government hires to keep the population of our national animal down, which apparently involves going up to them and pulling their heads off (very easy because of their thin necks). Because the alternative is, yes, you can't use any grass area for 5 months out of the year.

<comment><USER15> This sounds like the plot of the book Wringer, but I never imagined it was a thing in real life. Really?

<comment><USER14> After looking at the book, yes, it's the exact same. They can be grounded in groups by shotgun first, like in the book, although I've heard they're stupid enough to be approached and killed barehanded. In other seasons they spray the eggs with oil while the parents are gone, and then replace them in the nest, to starve the eggs of oxygen and prevent the chicks from developing. If you take the eggs outright the geese will just lay more.

It would be nice if we could open hunting season on them and let them all get killed in a sporting way, but they're said to be repulsive and inedible.

Here's a government publication on it dealing with my area specifically (southern BC).

[https://www.ec.gc.ca/mbc- com/6D2B893B-C671-41AF-8439-713305D...](https://www.ec.gc.ca/mbc- com/6D2B893B-C671-41AF-8439-713305DB384C/Handbook_Canada_Cackling_Geese_e%5B1%5D.pdf)

</comment></comment></comment></comment></comment><comment><USER16> Is this an American thing? The author is talking about "hatred for pigeons" as if it's something universal, but that's pretty much strange for me.

<comment><USER17> I'm from Spain and even though we generally despise them and also refer to them as "rats with wings", I don't believe I would say I hate them.

I mean, they can be annoying. But if I see someone feeding a group of pigeons the last thing I'm going to think about is how annoying those pigeons can be. I feel like the article describes the hatred for pigeons as something almost anthropologically interesting because of it's magnitude and lack of actual sense, and I certainly only consider them a little annoyance.

However I don't live in a big city so maybe it has to do with that.

</comment></comment><comment><USER18> I thought this was a solved problem. Is there some reason why we don't have more urban raptors? Are the city pigeons so fouled with urban byproducts that their consumption eventually kills off any unwitting predators?

<comment><USER19> There are several problems, but one is that raptors tend to well, fly off eventually.

There are currently three hawk families in Warsaw - one of them occupying a nest built specifically for this purpose which nevertheless was empty for five years before the new couple moved in.

<comment><USER20> The other is that raptors are very bad at dealing with cars. Their evolutionary strengths are seeing far and killing fast. Traffic? Not so much.

Rock doves and crows on the other hand deal with or even benefit from cars.

</comment></comment></comment><comment><USER20> Pro-tip to not get shat upon by birds: look at the ground and avoid the areas where you see bird poop.</comment>


Bck2brwsr runs Java in the browser - w/o plugin. Demo: JavaFX - <AUTHOR> http://xelfi.cz/fishsim/

<comment><AUTHOR> Here is the official website: [http://wiki.apidesign.org/wiki/Bck2Brwsr](http://wiki.apidesign.org/wiki/Bck2Brwsr)

But also have a look at twitter [https://twitter.com/search?q=bck2brwsr](https://twitter.com/search?q=bck2brwsr)

and here: [https://blogs.oracle.com/geertjan/entry/bck2brwsr_at_javaone...](https://blogs.oracle.com/geertjan/entry/bck2brwsr_at_javaone_2013)</comment>


Era of Jumbo Jet Nears End - <AUTHOR> https://www.wsj.com/articles/airbus-earnings-hit-by-lower-aircraft-deliveries-1501138056?mod=e2fb <comment><USER2> Article is paywalled. What a waste of a perfectly good click.</comment>


Show HN: ThisCouldBeMobile.com – make other people's sites responsive - <AUTHOR> As a front-end developer, when I see a website that doesn't look right on my phone, I think about how I would fix it. If it's something I'd use, such as a restaurant menu, I send their team a stylesheet which could fix it, but it's a really awkward e-mail ("hey, you should add this file to your website for me!")  So I made a simple website that demos what their site will look like with this CSS file.
http://ThisCouldBeMobile.com/and/awesome/1
On desktop: side-by-side comparison of mobile-sized iframes, link to syntax-highlighted CSS file
On mobile: fixed toolbar with two views (original and edited)
Make your own http://ThisCouldBeMobile.com/ <comment><USER2> wonderful</comment>


Show HN: WhatsHelp.io – Zendesk and Intercom for WhatsApp Messenger - <AUTHOR> http://whatshelp.io/ <comment><AUTHOR> Hi there,

I use my WhatsApp accounts for sales and customer support, but actually native iOS app is not very useful for this job. So we're developing a simple web app with help desk functionality for teamwork.

I'm looking for early adopters for private beta-test in few weeks. Any feedback is welcome too.

<comment><USER2> Hi RazTerr,

Looks really good can't wait to try it out.

If you want to quickly get started doing customer care on WhatsApp how about you sign up for a service like Ongair

[https://app.ongair.im](https://app.ongair.im)

They already have a Zendesk integration so you can quickly add WhatsApp to your currently support workflow.</comment></comment>


A Z80 from the Ground Up (2014) - <AUTHOR> http://baltazarstudios.com/z80-ground/ <comment><USER2> AFAIK the Z80 hasn't been publicly reverse-engineered to transistor level completely, it's mostly some important pieces (those that Ken Sherriff did, mentioned in the article) but apparently that was enough...

Notable that one of its direct predecessors, the Intel 8080, was reverse- engineered to transistor level:

[https://zeptobars.com/en/read/KR580VM80A-intel-i8080-verilog...](https://zeptobars.com/en/read/KR580VM80A-intel-i8080-verilog- reverse-engineering)

<comment><USER3> AFAIK Jeri Ellsworth did the same to the 6502.

[https://www.nytimes.com/2004/12/20/technology/a-toy-with- a-s...](https://www.nytimes.com/2004/12/20/technology/a-toy-with-a-story.html)

Can't find it in that article, but IIRC she looked at scans of the silicon to figure out _exactly_ what the chips in a C64 do.

</comment></comment><comment><USER4> Fast-forward to the next year, where he's created Z80 and ZX Spectrum models in Verilog: [http://baltazarstudios.com/z80-cpu/](http://baltazarstudios.com/z80-cpu/)

I find it interesting that he used transparent latches at first, then after experiencing random glitches switched to flip-flops. I guess the Z80 designers had control of and deeply understood their timing, something you don't get with a FPGA :)

</comment><comment><USER5> The author states:

>"A-Z80 is a conceptual implementation of the venerable Zilog Z80 processor targeted to synthesize and run on a modern FPGA device."

Could someone say what exactly "synthesize" means in this context? Is this loading lookup tables in the FPGA in order to implement the code you wrote in your HDL - Verilog, VHDL, something else?

<comment><USER6> Exactly, synthesizable HDL code means code that can be actually translated into logic gates inside an FPGA [1]. Not every HDL instruction is synthesizable.

Verilog and VHDL have extensive support for non-synthesizable code, which are used for verification, simulation, testing, etc - e.g., [2].

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

[2] [https://www.nandland.com/articles/synthesizable-vs-non- synth...](https://www.nandland.com/articles/synthesizable-vs-non- synthesizable-code-fpga-asic.html)

<comment><USER5> Thanks. Your second link looks like a really great resource! Cheers.

</comment></comment></comment><comment><USER7> This is a tour-de-force. The Z80 has an enormous number of instructions, documented and 'undocumented' [https://drive.google.com/file/d/0BykuPmkS9xS3UzFRTlAtTVA0ZHc...](https://drive.google.com/file/d/0BykuPmkS9xS3UzFRTlAtTVA0ZHc/edit) In a sense, the Z80 was the 'VAX' of 8-bit microprocessors.

What I didn't see was performance info -- how fast (clock rate) did the CPU run in the various FPGAs? I see the size (# LUTs etc) at [https://opencores.org/project/a-z80](https://opencores.org/project/a-z80) but not max CPU clock. Alternately, timing for 4-cycle instructions like 'LD A,B'\-- which in the original Z80 took 2 M cycles, 7 T states, 4 MHz execution time = 1.75 uSec.

</comment><comment><USER8> What is going on with the website that makes it so slow to scroll on a PC?

</comment><comment><USER9> Z80 still being manufactured in the form of the eZ80

<comment><USER10> Anyone know what process size is used for them these days? Is it comparable to the original, or is it a more modern, smaller process?

Just curious. I wouldn't expect anyone go to the expense of doing Z80-class microprocessors at 14nm.</comment></comment>


You'll never be Chinese - <AUTHOR> http://www.prospectmagazine.co.uk/politics/mark-kitto-youll-never-be-chinese-leaving-china/

<comment><USER2> Off topic: what is the cultural or psychological meaning of these one-off usernames on Hacker News? Last week I referred to Lisp in the past tense and someone created a username "presenttense" to correct me. Is it suppose to be a clever way of saying something, to create a one-time username? Or is that some people really need that much anonymousness? Should I assume that some of these one-offs are people who work for Ycombinator, who perhaps do not want to attach their normal usernames to something that some might interpret as snarky?

(edit: why downvote this? It is a serious question. I am curious why people create one-off usernames. And I am curious what the Hacker News community thinks of this practice. Another thread today was about how to improve voting on Hacker News. Do one-off accounts throw off the way karma should work, in an ideal system? That's a valid question, when we consider how to make the community better.)

<comment><USER3> I've often thought that some of these one-offs are owned by long-time HN'ers who want to post content or comments across topics they find interesting, but don't fit well into the perceived "right content" moderation buckets. Much like your off-topic (but valid to HN) comment above... I could be wrong, but I've assumed it was a means to provide fringe topics/discussion without "damaging" their more popular personas.

</comment></comment><comment><USER4> <http://news.ycombinator.com/item?id=4366203>

</comment><comment><USER5> The article is very interesting, much more so than the meta discussion here. Mark's thesis is that the middle class have no place to put their money except in real estate which is creating an unsustainable bubble which will lead shortly to a crash and a possibly violent upheaval. The Chinese have many unfulfilled needs, such as health care, which could be funded by their foreign earnings, but this would drive the dollar down and the yuan up, killing the boom.

He states that the consensus driven leadership is hiding from the problems of the bubble economy. Interesting times.

<comment><USER6> I did find it interesting that in 183 comments that were left on this article (not now, as this is a repost, but in the earlier discussion that was linked), there was scant mention of the property bubble, excepting one person who simply said "definitely"; I found the progression fascinating, and am going to now go back through and re-read some of the previous articles I had seen on Chinese property valuations again to learn more.</comment></comment>


Trip planning on Android phone turned off for now - <AUTHOR> https://onebusaway.org/trip-planning-on-android-phone-turned-off-for-now/ <comment><USER2> Don't depend on Google's APIs. Please use OpenStreetMap data with (and contribute to) OpenMapTiles, OpenTripPlanner, Pelias geocoding etc.

<comment><USER3> This seems like a reasonable place to ask this: Is there an alternative available to Google Places Text Search? E.g., I provide a query that's something like "hardware stores" and a location and I get back a list of hardware stores within the location?

As far as I can tell, the geocoding APIs from stuff like MapBox or Pelias aren't intended for this use case (more like finding a specific hardware store).

<comment><USER2> At least Nominatim can answer such queries, for example: [https://nominatim.openstreetmap.org/search.php?q=hardware+st...](https://nominatim.openstreetmap.org/search.php?q=hardware+stores+in+san+francisco)

I don't think it would be difficult to implement in Pelias either considering that it already has the necessary data and can search for results closest to a given point or within an area.

<comment><USER4> We at NetToolKit have implemented arnath's requested functionality using OpenStreetMap data (demo available at [https://www.nettoolkit.com/geo/autocomplete](https://www.nettoolkit.com/geo/autocomplete)). The problem that we have found is that while some categories have great coverage (e.g. restaurants in Portland), many categories do not (e.g. gas stations). Assembling this data is expensive, and hence either the data is available via well-capitalized players (e.g. Facebook Places Search: [https://developers.facebook.com/docs/places/web/search/](https://developers.facebook.com/docs/places/web/search/)) and/or are expensive to use (e.g. Foursquare).

</comment></comment></comment></comment><comment><USER5> Can someone change the title to put some context in? As it is, it does not summarize the key issue here.

Maybe something like: One Bus Away trip planning sunk by Google API Monetization

</comment><comment><USER6> I'm not sure what API they are using. The cheapest Places SDK API call is a plain autocomplete and it's still $2.27 per thousand requests. [https://cloud.google.com/maps- platform/pricing/sheet/](https://cloud.google.com/maps- platform/pricing/sheet/). They say it would cost $1000/mo, but then there are 2.3 million requests in the past 30 days, which would be $5221/mo using the $2.27 price. I guess there could be a volume discount but they don't mention it.

This is the code, not particularly helpful: [https://github.com/OneBusAway/onebusaway- android/blob/7b63b3...](https://github.com/OneBusAway/onebusaway- android/blob/7b63b3650eefc48b323d17e621f26e04406c41cb/onebusaway- android/src/google/java/org/onebusaway/android/map/googlemapsv2/ProprietaryMapHelpV2.java)

<comment> squeaky-clean Google offers Volume pricing for the Geocoder service above 500,000 monthly requests.

[https://developers.google.com/maps/documentation/geocoding/u...](https://developers.google.com/maps/documentation/geocoding/usage- and-billing)

The geocoding API is also the most expensive at $5/1000req normally.

I think this is the Geocoding code?

[https://github.com/OneBusAway/onebusaway- android/blob/8eeda8...](https://github.com/OneBusAway/onebusaway- android/blob/8eeda8586a394d293b3ae8bb99ef5c6df7a93176/onebusaway- android/src/main/java/org/onebusaway/android/report/connection/GeocoderTask.java#L55)

<comment><USER6> The Geocoding API is free on Android: [https://stackoverflow.com/questions/8218764/android- geocoder...](https://stackoverflow.com/questions/8218764/android-geocoder- quota-limits)

Presumably Google would like to change this at some point but it'll be difficult since it's built into Android proper rather than the Play SDK or similar.

<comment> squeaky-clean Those results are from 2011-2013, it is no longer free as of July 29, 2019. [0]

> To translate points-of-interest names (e.g. "Airport") and addresses (e.g., > "1234 Anywhere Dr."), the team selected the Google Places SDK, which was > free to use for Android apps.

> In 2019, Google decided to start charging for use of the Places SDK on > Android – a cost of around $35 per day (around $1000 per month). We pleaded > our case to Google and were directed to apply to the Google for Nonprofits > program

[0] [https://developers.google.com/places/android-sdk/usage- and-b...](https://developers.google.com/places/android-sdk/usage-and-billing)

</comment></comment></comment></comment><comment><USER7> So isn't this what we want? For Google to charge for services instead of funding them with our data? Or is the surprise here about just how much it costs to run these services?

<comment><USER8> >instead of funding them with our data?

What gives you the impression that they're going to stop profiting off our data? If anything, this is them double-dipping. We get the worst of both worlds.

</comment></comment><comment><USER9> > ... thanks to Brian Ferris, who created the popular OneBusAway app before > being hired by Google in 2011.

[https://www.geekwire.com/2015/onebusaway-creator-brings- seat...](https://www.geekwire.com/2015/onebusaway-creator-brings-seattles- real-time-transit-data-to-google-maps)

<comment><USER10> That OneBusAway existed first and provided its technology to Google makes this all the more obnoxiously arrogant, but that's to be expected from Google these days.

OneBusAway should cut off Google's data feed in return; it would only be fair to.

<comment><USER11> OneBusAway doesn't provide data to Google and presumably never did (I don't know and the article doesn't say); the data is provided by the bus service. Both OneBusAway and Google consume it.

<comment><USER12> Obviously the parent meant that the transit providers should do this, since they also use OBA.

More generally, in the same way IXs have peering arrangements for traffic, there could be peering arrangements between data owners (e.g. bus location providers) and location API providers like Google.

</comment></comment></comment></comment><comment><USER13> This is wrong on so many levels. This is anti competitive behavior. Google built their business by scraping data from other websites.

<comment><USER14> They're asking for this API access for free whereas most customers have to pay. I am not sure Google would cut off API access if they were willing to pay.

My experience with the Places API is that it is terrible. We used to use it for our Internet signup form, and there was no way to restrict the address autocompletion to addresses. So people would hedge a little and only type the street, which Google considers a "place", but obviously we don't know if we have availability on a long street or not (it was a per-building service), so we returned "unavailable" when really the answer was "there is no way we can tell you whether or not there's service there". We looked at some OSM-based solutions and those were just as bad. So I have the feeling that there is some opportunity for a competitor here, perhaps that will be their next project.

</comment></comment><comment><USER15> 2.3M trips / 7300 users / 30 days is more than 10 trips per day.

When I took the bus in DC, each trip was 45-75 minutes long (12 mile route, during peak traffic) not counting wait times. Zero transfers.

Who has time for 10 bus trips, plus wait times, per day?

<comment><USER14> It says that's how many trips were "planned", not taken.

It's an interesting UI study to see how many trips were planned vs. taken, though. When I use Google Maps to plan a trip, the leave/arrive times are usually wrong, so I have to adjust those. It's kind of a pain to type in a time, so I hit the "\+ 30 minutes" button a bunch of times until I get to the desired time. So if this is a trip for 6 hours later today, that's going to be 12 trips planned vs. 1 taken.

</comment></comment><comment><USER16> What's ironic is that Google enforced a rule that Apple hasn't had for over eight years but people still falsely accuse Apple of having....

<comment><USER17> Not quite; Google's rule is you can't _use their APIs_ to create a product substantially similar to Google's products.

<comment><USER16> Almost anything you write for Android will be using at least some of their APIs.

When the policy was in affect back in 2010 for Apple, I remember a good podcast player was pulled. It used Apple's open API to their podcast directory. FWIW, anyone on any platform now can use Apple's podcast directory to build their own podcast app without paying Apple a dime.

</comment></comment></comment><comment><USER18> They could show ads to pay for the API usage. I'd be ok with that. After all, it's not free for Google to host its service. Somebody has to pay, and Google really doesn't have an obligation to make it free.

<comment><USER12> The bus companies could provide a free tier of data to Google, like one bus line, and after that Google Maps users would have to watch bus company ads for 30 seconds if they wanted to know where the bus was. After all, it costs money to track all those busses.

<comment><USER19> A lot of cities _don 't_ have any transit timetables at all on Google Maps, let alone realtime bus tracking, simply because the bus company considers it's timetables to be copyright, and wants licensing money to use them commercially, which Google is unwilling to pay.

Those cities usually have local route planning apps, of various levels of craptastic-ness. When travelling round the world, trying to figure out which app is good for local public transit is always on my checklist next to 'buy local data sim' and 'figure out which currency they use here and what the exchange rate is'.

<comment><USER12> That is Google using their network effect to reap the cash, they know everyone has Maps installed.

If the metro transport companies weren't so dumb and greedy they would pool their dev resources more, but I think they get suckered by signing contracts for outsourced app dev where they don't get IP rights, because that company is planning to sell the same code to 10 different customers. It usually gets tied up with the payments system (like Oyster/Octopus etc) and the morass of legacy embedded equipment.

If metro companies could act collectively they could make transit data available with an API key, which would at least allow better apps.</comment></comment></comment></comment>


Improving the quality of conversations in Google+ hangouts - <AUTHOR> https://plus.google.com/106717946845088683921/posts/A1PMNKchcxQ

<comment><USER2> > for those times that you have a great adult math or science joke you have to > tell, we've rolled out the ability for you to create 18+ hangouts.

> for those "other" adult conversations that DO violate our terms of use, > please continue to report them and send evidence when you can. it helps > identify and remove the jerks from our system.

This must win the price for the most hypocritical thing I've ever read in a, albeit semi official, product announcement.</comment>


Ask HN: Co-founder? Seeking co-founder? - <AUTHOR> Please lead with either CO-FOUNDER or SEEKING CO-FOUNDER, your location, skills and high level pitch. <comment><USER2> SEEKING CO-FOUNDER, Columbus, OH, .net developer, some marketing, owned pizza shop and a mortgage company.

I think there's huge opportunity in food, lawn care, cleaning, small warehouse distribution etc services driven by robotics similar to driver-less cars. I think in the short term there's an opportunity to build tele-presence robots that could provide a profitable business model to get a foothold.</comment>


Intel i7 loop performance anomaly (2013) - <AUTHOR> https://eli.thegreenplace.net/2013/12/03/intel-i7-loop-performance-anomaly <comment><USER2> The call shifts the loop from being limited at the backend level (mostly uops not being retired by having to wait for memory) to being limited at the frontend level. The core event to look for here is `IDQ_UOPS_NOT_DELIVERED.CORE`, which tells us whether the frontend is delivering the full 4 uops per cycle it is able to. In the tight loop this is almost always the case, whereas in the call loop this is rarely the case.

CALL, RET, and JNE all share the same execution port (6 in Skylake), so it seems plausible that the added pressure in this port prevents speculative execution from continuing with the loop at the same rate as the tight loop. If you look at the execution port breakdowns of each loop, port 6 dominates in the call loop, whereas the tight loop is bottlenecked at port 4 (the port where stores go).

By delivering fewer uops per cycle, the pressure on the backend is eased. But this is a delicate balance. If you add another call, the loop becomes much slower than the tight loop.

You can get a similar effect by replacing `__asm__("call foo")` with

        __asm__("jmp 1f\n1:\n");
        __asm__("jmp 1f\n1:\n");

which consumes the same amount of port 6.

<comment><USER3> 1\. Where did you learn all of this?

2\. I'm... guessing that gcc/clang are too dumb to be able to be taught this and get the balance right.

<comment><USER4> >2\. I'm... guessing that gcc/clang are too dumb to be able to >be taught this and get the balance right.

No, actually, you could model this and other things exactly. It's just not worth the cost ;)

<comment><USER5> I think you're bluffing. I think this particular case is one that is so deep into the processor that no compiler stands a chance of modeling this exactly. :)

But one optimization I'd like to see is convincing the compilers to do better on "macro-op fusion", which let "INC/JCC" type operations be treated as a single µop if they are one after the other. GCC/Clang don't seem to be aware of the benefit of this, and often gratuitously break it by splitting them up.

It's a reasonably rare case where it makes a big difference, but it almost never hurts, and frequently is a small positive. Who would I need to convince to change this? What sort of benchmark would they need as motivation? Would pointing to Intel documentation possibly be sufficient?

<comment><USER6> I would recommend starting with a test case and a missed optimization bug report.

GCC has some support for macro-ops fusion. [0] is the first message in a gcc- patches thread where the feature was added.

[0] [https://gcc.gnu.org/ml/gcc- patches/2013-09/msg00168.html](https://gcc.gnu.org/ml/gcc- patches/2013-09/msg00168.html)

<comment><USER5> Thanks, this does indeed look like exact issue I'm referring to. I don't think it ever made it in to release, though. Despite apparent agreement that it's a useful optimization, it appears the final result of the two-month 59-message thread is that after many reworks of the patch and lots of feedback, the OP eventually gives up on getting it included due to interactions with another feature: [http://gcc.1065356.n8.nabble.com/Fwd-PATCH-Scheduling- result...](http://gcc.1065356.n8.nabble.com/Fwd-PATCH-Scheduling-result- adjustment-to-enable-macro-fusion-tc965571.html)

<comment><USER6> Sorry about that, I thought it was committed. A comparable patch was committed to LLVM version 5, though. [0] is the macro-op fusion pass for x86.

[0] [https://github.com/llvm- mirror/llvm/blob/master/lib/Target/X...](https://github.com/llvm- mirror/llvm/blob/master/lib/Target/X86/X86MacroFusion.cpp)

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> 99.9% of the time these anomalies are either due to cache/branching or due to alignment.

<comment><USER8> this is like saying 99.9% of the time cause of death is either due to sickness, old age, or accident.

</comment></comment><comment><USER9> Article from 2013

<comment><USER10> And oddly no followup article where he talks about how the branch prediction works in Sandy Bridge CPUs.

<comment><USER5> Although the title is a little confusing, he mentions in the article that he was testing on Sandy Bridge and Haswell: "it manifests on Sandy Bridge and Haswell desktop-class CPUs as well as Sandy Bridge-EP Xeon CPUs".

I just confirmed that the results are the same on Skylake, but I don't have an explanation yet, although I don't think it's branch prediction related.

<comment><USER10> Excellent, my thinking of why it would be branch prediction is that the call in the loop body would force the pipeline fill (the prediction assumption would be set to 'no' rather than 'yes') whereas in the increment loop the prediction pattern would be set to 'yes' which would give a faster exit and a limited stall penalty if it were wrong.

You can prove/disprove that by taking the branch out of the question and just generating N calls to increment. Or N increments interspersed with a call to NOP.

That said, micro-architecture abuse at this level is rarely applicable to non- synthetic workloads in my experience.

The person who could look at this and just whip out an amazingly brilliant and nuanced explanation of what was going on is Ian Taylor over at Google. I am always in awe of some of the amazing ways that he and the gcc team there could increase performance in something already highly optimized.

<comment><USER11> See from the old discussion, I understand it's not about the branch prediction:

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

mgraczyk:

"I think It's because the branch target is a memory access, so the dcache causes the execution pipe to stall on the load. In the tight loop with a call, the branch target is a call and there is time enough to pull from dcache before the load data is needed. I suspect that the i7 can't pull data from dcache immediately the jne instruction, so you get a hiccup. Try adding a second noop in to tightloop as the target for jne."

and

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

pbsd:

"The CPU is using store forwarding to cache the 'memory' accesses in the store buffer, which means most accesses are not even accessing L1 cache (if this were the case, we would not have such a low count of cycles per iteration)"

<comment><USER10> Interesting stuff and I see that Nathan commented there as well [1] where he observed _" what matters is that the store-to-load forwarding does not try to execute in the same cycle."_. The Agner Fog paper on Intel Micro-architecture [2] is probably the most relevant in terms of puzzling it out.

Again the reason I suspect the branch predictor in this sort of case is that when the loops are essentially 100% inside the cache, practically the only thing that varies the actual execution rate is whether or not a branch is not predicted. That said, the flow through these sorts of pipelined execution units is anything but clear.

[1] [https://news.ycombinator.com/item?id=6846257](https://news.ycombinator.com/item?id=6846257)

[2] [http://www.agner.org/optimize/microarchitecture.pdf](http://www.agner.org/optimize/microarchitecture.pdf)

<comment><USER11> IMHO branch prediction here is really irrelevant, it is practically trivial for Intel processors and this kind of loops (jumping back conditionally happens many times, there's nothing to confuse the predictor). The only thing that matters is what the CPU does with the "volatile variable" memory accesses in the loop, in which there is the load and the store which could also be conveniently optimized (or not become penalized) in the CPU between one and another event if there is "just enough" separation in some form. I haven't tested these examples myself and I don't have some exact model that would allow me to be sure, but that is my "approximate" conclusion from that former discussion. Interestingly, regarding the experiments with the loops in the previous discussion, I always believed that the NOPSs don't have to be translated to the uops, but if these tests are true, NOPs are somehow relevant even past the decoder, as I'd expect that the whole loop is in the uops cache (and I also admit I don't know the size or behavior of such cache on the recent Intel CPUs).

</comment></comment></comment></comment></comment></comment></comment><comment><USER12> I wonder what happens if you replace the call with 1-2 noops?

</comment><comment><USER13> Disclaimer: I am not an expert and have not measured. This is armchair theory. But, I would argue two things.

First, the former appears to have at least one unaligned arithmetic:

> _400538: mov 0x200b01(%rip),%rdx # 601040 <counter>_

...while the latter's equivalent instruction is 4-byte aligned:

> _40057d: mov 0x200abc(%rip),%rdx # 601040 <counter>_

So, I would argue that's the biggest source of _speedup_ in the second case. However, I'm really interested in whether that's true since I don't see a memory fence; so the memory should be in L0 cache for both cases; I have trouble believing that an unaligned access can be so much slower with the data in cache.

As for the `callq` to `repz retq`, I would venture a guess that the CPU's able to identify that there are no data dependencies there and the data's never even stored; I'd argue that it probably never even gets executed because the instruction should fit in instruction cache and branch prediction cache and all. Arguably. Like I said, I'm not an expert.

I'd say run it through Intel's code analyzer tool.

[https://software.intel.com/en-us/articles/intel- architecture...](https://software.intel.com/en-us/articles/intel-architecture- code-analyzer)

Tangential video worth watching:

[https://www.youtube.com/watch?v=2EWejmkKlxs&feature=youtu.be...](https://www.youtube.com/watch?v=2EWejmkKlxs&feature=youtu.be&t=2466)

Edit: actually, thinking about it, it's not unaligned _access_ , it's unaligned _math_. I don't think that should affect performance at all? Fun.

<comment><USER5> I'm sorry, but like the other comment at the bottom, your guesses are so far from reality that they are hard to respond to. IACA is great for what it does, but it's a static analyzer and knows nothing about alignment. L0 doesn't even exist on modern Intel processors. Memory fences would change things, but aren't part of the problem as stated. And your guess that "it probably never even gets executed because the instruction should fit in instruction cache and branch prediction cache and all" just doesn't have any bearing on they way processors work.

Your disclaimer does indicate that you have the self-awareness that you are not an expert, but the fact that you are trying to make an argument would normally indicate that you think you understand what's happening to some extent. Rather than just guessing, I think you'd benefit from trying some things out and seeing what the results are. Play with perf, it's fun!

</comment></comment><comment><USER14> Was the exact reason why ever figured out?

</comment><comment><USER15> Educated guess: The processor is trying to prefetch instructions. This loop is much tighter than most code that would typically be written, so an incrementing loop causes a branch misprediction. The processor is still loading instructions, so when it goes to find out what to do next, it takes a cache miss and burns some time trying to figure out its next instruction. However, a function call is very slow, however (even to a nop function) and it could delay the processor just long enough for the prefetch to complete.

<comment><USER5> You are welcome defend your guess with measurements, but your explanation comes across as "not even wrong". Incrementing the loop does not cause a branch prediction error (why would this happen?), the loop is small enough it comes out of the loop cache (so no cache misses), function calls are not slow (as evidenced by the example). Worse, as far as I can tell, your explanation doesn't actually even explain why adding a call would make the loop run faster.

<comment><USER15> What I'm saying is it's possible that because the loop is so small the hardware prefetch is not done loading its page of data yet. This causes a cache miss and forces the hardware to think it has to reload the instructions each loop. A tiny delay might slow it down just enough for the prefetch to complete.

<comment><USER5> I think the main part that you are missing is that there are two layers of cache below the instruction loading that would also have to be defeated. Modern processors don't actually execute assembly instructions, rather than convert these to micro-ops. There is a tiny "loop cache" that holds the tightest loops like this one, and then a larger "decoded instruction cache" that holds a few functions worth.

This means that the second time through a loop you almost never need to reread the binary instructions, and thus in a small loop like this you almost never have the potential for an instruction cache miss. You can check this with 'perf', and you'll see that neither version has any significant number of icache misses.

The other part you are probably misconceiving is that the processor doesn't actually proceed linearly through the instructions, but rather decodes them into µops, and then throws them into a "reorder buffer". They then get "issued" to execution ports as soon their input registers are available, then "executed", and then "retired" once it's confirmed that the inputs were indeed correct. The execution is actually happening at many points at once, based on the processors best guess at to what path the execution will take.

That is to say, current processors are "speculative", "superscalar", and "out- of-order". The net effect is that they don't really "slow down" in the way that you are picturing. Instead, they usually fail by guessing a wrong path and executing it quickly, and then have to throw away the work if they guessed wrong. The case that you mention isn't exactly impossible, but usually only happens with (extremely rare) self-modifying code.</comment></comment></comment></comment>


Elon Musk in union spat after wrongly calling Tesla worker a paid agitator - <AUTHOR> https://www.theguardian.com/technology/2017/feb/11/elon-musk-in-union-spat-after-wrongly-calling-tesla-worker-a-paid-agitator <comment><USER2> > Moran's blog charged that Tesla managers required workers to sign > confidentiality agreements not to speak out about wages or working > conditions.

Isn't that illegal? You are allowed to talk about your wages.</comment>


Show HN: NEXTADDRESS - Prescreen tenants and book rental showings - <AUTHOR> http://nextaddress.us/

<comment><AUTHOR> NEXTADDRESS is a side project I have been working on to improve my own personal experience as a first time landlord. I could not find a good tool to pre-screen renters and book showings without phone calls. If you are interested in testing the app and giving me feedback, send me an email at firstname.lastname@example.com.</comment>


Ask HN: "strcmp" or "if(md5(str1) == md5(str2))"? - <AUTHOR>

I need to compare to strings (hashes consisting of numbers and letters). Now i'm thingking about performance... is it better, to use strcmp or md5 both strings and compare with a if-statement?<p>*edit: it's in a web-app using php <comment><USER2> Is there an md5 function that returns a primitive type?

The ones I know of return structs or arrays, which you can't compare via == in C. (I assume you're using C since strcmp is used for C strings.)

If you already have the md5's precomputed, they're probably less data, so it would be faster in that case. If you include the time to compute md5, then strcmp is definitely faster. Intuitively, strcmp just needs to do one very fast pass over the strings, with just a single comparison per character; while md5 needs to do a lot more work just to compute its output.

</comment><comment><USER3> uhm, strcmp by far. md5 is computationally expensive and strcmp can have many optimizations.</comment>


Using the Monte Carlo Tree Search Algorithm in an AI to Beat 2048 - <AUTHOR> https://xtrp.io/blog/2020/09/12/using-the-monte-carlo-tree-search-algorithm-in-an-ai-to-beat-2048-and-other-games/ <comment><USER2> I think the title is a bit misleading, this is a classic Monte Carlo method, but not MCTS per se. There is no tree structure built, but simply in the current state simulations are run for each action and the best one is picked.

<comment><USER3> I agree, this article is well explained but it's not MCTS. To be more accurate, this is Monte Carlo, and here it is applied to search the tree of game turn possibilities and doing stats on it. But Monte-Carlo Tree Search is a "reserved" name of a specific algorithm, involving more than what is done in the article : some kind of caching, and some optimisations. In fact, it would be a great addition to this article to do a part 2, and explaining how to extend the code to do MCTS. I imagine this two way trip would be a better MCTS presentation than the classic ones describing the algorithm step by step in one shot.

<comment><USER4> It would be very interesting to see proper MCTS applied to 2048. Monte Carlo Tree Search performs well on problems with linear reward. 2048 has exponential reward, with subsequent states having much higher tile scores. This nonlinearity tends to cause MCTS to fall into traps - one rollout will find a state evaluation with a much higher score, and will thereafter bias all subsequent rollouts to that same (potentially suboptimal) path. If there are clever ways around this, such as board evaluation heuristics that scale linearly, then I'd love to see them. In practice, a minimax approach that enumerates all successor states up to a particular depth has worked best for me.

</comment></comment></comment><comment><USER5> I was surprised how article is easy to understand and then I figured out the author is high school student. Impressive knowledge and skills for your age.

<comment><AUTHOR> Thank you, I'm glad you enjoyed the article!

— Gabriel

</comment></comment><comment><USER6> purely MCTS with no reinforcement learning techinques invovled.

I was making something with a actor-critic with MCTS that can assess the board position as well.</comment>


Project from Hell - <AUTHOR> https://projectfailures.wordpress.com/2008/06/24/project-from-hell/ <comment><AUTHOR> Saw this on /r/programming, wondered if anyone here had anything interesting to add.</comment>


Xplain – Explaining X11 for the rest of us (2017) - <AUTHOR> https://magcius.github.io/xplain/article/ <comment><USER3> Author here. I haven't updated this project in a few years. I burned out on it almost immediately. I wrote a little retrospective for it on here before, the last time it was posted: [https://news.ycombinator.com/item?id=21041340](https://news.ycombinator.com/item?id=21041340)

In the days since, I've joined the games industry, fell in love with it there, and am working a bit more on more video game-focused content:

[https://noclip.website](https://noclip.website)

[https://www.youtube.com/watch?v=mnxs6CR6Zrk](https://www.youtube.com/watch?v=mnxs6CR6Zrk)

[https://www.youtube.com/watch?v=8rCRsOLiO7k](https://www.youtube.com/watch?v=8rCRsOLiO7k)

If anybody has any questions about game graphics, Linux graphics, or X11, feel free to ask.

<comment><USER4> I just checked Xplain out and wow, it's a bit expanded from how I remember it from a few years ago, I'm definitely going to be fine-tooth-combing through it at some point, particularly the section on regions which looks like it'll help me crack the overlapping-window problem. The rasterization section also looks like it'll be fun to "??!?" through, thanks for making that!

(Compositing was also interesting to look through; I always thought it was extremely curious how no X11 windowmanagers ever did hybrid compositing, where they only composited minimized windows into thumbnails but left actual open windows alone without inducing ≈1 frame of extra latency. I'm very curious if Wayland can avoid that, but that's just idle curiosity at this point.)

NB. noclip.website is throwing "program not valid" from `this.gl.useProgram(e.gl_program)` (line 100,924 :D) with a HD Graphics 3000 on oldish i5-3360M (HP 8470p). Chances are it needs a beefier GPU.

<comment><USER5> Regarding "hybrid" compositors, I believe there used to be a few that had an "un-redirect fullscreen windows" feature that essentially did what you're suggesting. I think there was some sort of difficulty with doing this for regular/non-fullscreen windows and still having a consistent/smooth experience with the rest of the features you'd want out of a compositor.

These days, at least in KWin land, there's just an "allow applications to block compositing" feature that automatically disables compositing (globally) when it makes sense. I'm not sure exactly what rules trigger it (simply putting, say, FireFox, into fullscreen doesn't do it, but Dota 2 does), but it seems to work pretty well.

<comment><USER6> I implemented fullscreen OpenGL in my 3D engine a few years ago and this was kind of an interesting part. It was one of the hardest to get right, especially if you want to avoid dictating sort of WM your users will have to use (which IMO is one of X11 strengths over pretty much any other desktop GUI).

Some window managers treat any window that covers the entire screen as being fine to bypass composition. Other window managers need hints - which will be ignored by some other window managers. And a few compositors simply seem to ignore any hint or window state, but they will disable composition for fullscreen windows that also bypass window management (which in general is kind of a "nuclear option" for fullscreen modes since it also bypasses other window manager functionality like alt-tab, etc). Also as a cherry on top, i had a window manager which refused to treat the window as a fullscreen window (added borders, etc) unless i set up things in a very specific order (which i found out via trial and error because normally it shouldn't be an issue - <USER2> wasn't in every other window manager i tried).

(that last part was kinda interesting because i downloaded every window manager i could find on Debian and after i tested my code and debugged it with everything i could get my hands on, i sent it to a friend of mine to try it out and he immediately told me that in his computer he got borders :-P)

Should be noted that neither SDL1 nor SDL2 (which are pretty much recommended by people who haven't bothered to create their own engines as "obvious" solutions to not have to bother with OS-specific stuff) handled all the above (SDL1 always bypasses the window manager, which in general works but disables alt-tabbing and other WM functionality whereas SDL2 assumes all window managers support the fullscreen hint, which is certainly not the case - especially with more minimalistic window managers - while compositor support is hit and miss).

</comment></comment></comment></comment><comment><USER7> This is great messaging. I'm happy to enable JavaScript when authors communicate why they use it.

> This article relies a lot of interactive demos that use JavaScript. I > understand you're disabling JavaScript because you've been burned by heavy > scripts and tracking on other sites, but the article really doesn't work > without the ability to play with it. I write every line of code in these > demos from scratch, minus the snippet of Google Analytics that lets me know > when people read these so I can join in the conversation. Feel free to block > Google Analytics.

This is a billion times better than a white screen with the words "JS required to use this app" when you're trying to read a simple document.

</comment><comment><USER8> Very cool, hard to imagine the constraints they had when that was created. Reminds me of an interview I heard with Bill Joy a while back (creator of vi + worked on the Java language in its beginnings).

"We solved problems that do not exist anymore" — Bill Joy.

<comment><USER9> Constraints? It was generally developed on '3-M' machines: more or less around 1MIPS of processing power (68k, VAX), 1M of memory, and 1M pixels (e.g. 1024x1024).

While X11 is pretty grokky these days and definitely showing it's age, I'm not sure that the problems X11 solved don't exist any more. In particular, the idea of running an app on one machine and displaying it more or less transparently. It's just that with very performant desktops, this became the exception rather than the norm.

<comment><USER3> OK, if I really want one meme about X11 to die, it's this "network transparency" one. Nobody has ever explained to me what it means, what its goals are, what constraints it has on the system or the protocol. I can't find any definition of it in any official X11 documentation, protocol or otherwise.

The typical answer I see is "you can send the same bits locally that you do over the wire", but nobody ever explains why that's even desirable for a network protocol. Realities of distributed systems vs. local ones have a wide variety of tradeoffs. Transparent, distributed RPC was tried in the 90s and largely judged a failure. We know how to design much more resilient systems than that.

Not to mention that ever since the introduction of the MIT-SHM protocol, which is used by most everything to transfer image data, it hasn't even been true in practice for the last 20 years. Most modern enhancements to X11 have been about taking the X server out of the loop for as much as possible.

To make X11 usable over the network, even advocates of the principle usually use something like NX which is a network-designed fork of the protocol, which introduces a large number of new features aimed at network that wouldn't be required over a network, things like lossy compression, multiple independent streams so we don't have reach head-of-line blocking with roundtrips, and client-side rendering.

Problems like remote desktop and streaming can be solved by other solutions than "shove the same bits over the wire and hope they're helpful on the other side".

<comment><USER10> Network transparency meant that when I was doing Finite Element Analysis on the beefiest Sun workstation they sold, running a proprietary application, I could log in from home, run the application on the Sun, and see the results of the prior run.

I could edit the model, regenerate the mesh if needed, and kick off another big batch run, and then drop the X11 frontend GUI.

Over _dial-up_ , from a Windows box to a Sun workstation, in the mid 90s. And it was could be secure, tunneled through SSH.

<comment><USER11> I'm assuming that was sending OpenGL 1.0 commands over the network, or doing some kind of equivalent. Using X11 drawing commands for that would have resulted in miserable frame rates over dial-up if you ever tried to rotate or zoom the mesh. In any case that's not really network transparency nor is it really X11, the program likely had to be built in a very specific way using display lists.

<comment><USER12> CAD and Simulation Apps were written in those specific ways.

You are right.

Where that was done, performance was excellent.

<comment><USER11> It just seems wrong in that case to to say that X is network transparent. The real concern is that OpenGL 1.0 was capable of running over the network, and in order to use it effectively application developers had to take network operation into consideration, and the server had to support the non-standard extension required to use it correctly. In some circumstances using display lists locally could actually reduce performance, so the application may not have wanted to take that path in all cases: [https://www.opengl.org/archives/resources/faq/technical/disp...](https://www.opengl.org/archives/resources/faq/technical/displaylist.htm)

Generally if your application has any code that does this:

        if (client is remote)
            ...
        else if (client is local)
            ...

Then I wouldn't say the protocol you're using is network transparent.

<comment><USER12> Open GL could run over the network because X could.

Sgi used X fully. They wrote the book on all that, including GLX, and it was flat out awesome.

The Apps I used all ran display and pick lists. They worked very well over the wire and that use case for used a lot.

The quibbles are really getting past the basic idea of running an app remotely on ones local display.

That happened and worked well and had some advantages. I personally built some pretty big systems for modeling and simulation that were cake to admin and very effective on many other fronts.

Notice I did not say network transparent in my comments above.

Multi-use graphical computing is much more accurate when it comes to how X worked and what it delivered people.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER13> I remember my undergrad graphics class in 1991 or so. We did it in C and X11 on Sun and DEC workstations, and we had to learn X as an implementation detail. Our final project was animated 3-d wireframe models of objects, written in Xlib primitives. No toolkits or modern libraries. One of the assignments was a "game", and I wrote a tetris-like typing game. The projects in that class were insanely hard compared to any other class I'd taken.

The amazing thing is that, at least as of 10 years ago, my projects for that class _STILL_ compiled on 32-bit FreeBSD and Linux.

Oh, and to learn X11, we used [https://www.amazon.com/gp/product/0134999975/ref=x_gr_w_bb_s...](https://www.amazon.com/gp/product/0134999975/ref=x_gr_w_bb_sout?ie=UTF8&tag=x_gr_w_bb_sout-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0134999975&SubscriptionId=1MGPYB6YW3HWK55XCGG2) I still remember sitting on a bench outside the college bookstore, cracking that book open and feeling both excited and hopelessly lost.

<comment><USER14> > The amazing thing is that, at least as of 10 years ago, my projects for that > class STILL compiled on 32-bit FreeBSD and Linux.

i686 binaries from the 90s compiled for then-Linux and linked against then- xlib _still_ run on AMD64 Linux hosts (provided you have the necessary multilib libraries around).

</comment></comment><comment><USER15> I wish hacking on X and getting patches in had the same coolness factor as hacking on the Linux kernel. The hacking complexity is certainly comparable. X is used by a very large number of people, and contributions can make a big difference.

<comment><USER11> There's still a good number of graphics hackers, but a lot of code has moved out of Xorg and as a result most of the hackers have moved on to working on Mesa, Wayland, and in-kernel GPU drivers. So there is some overlap there with the kernel hackers.

</comment></comment><comment><USER16> If curious see also

2019 [https://news.ycombinator.com/item?id=21039848](https://news.ycombinator.com/item?id=21039848)

also 2019 [https://news.ycombinator.com/item?id=21118633](https://news.ycombinator.com/item?id=21118633)

2016 [https://news.ycombinator.com/item?id=12042548](https://news.ycombinator.com/item?id=12042548)

2014 [https://news.ycombinator.com/item?id=8019346](https://news.ycombinator.com/item?id=8019346)

2013 [https://news.ycombinator.com/item?id=6978274](https://news.ycombinator.com/item?id=6978274)

</comment><comment><USER17> Really recommend that speech as well since it's give good understanding what's wrong with X11 and why Wayland was created.

The real story behind Wayland and X:

[https://www.youtube.com/watch?v=GWQh_DmDLKQ](https://www.youtube.com/watch?v=GWQh_DmDLKQ)</comment>


Kim Jong-un's train possibly spotted at North Korean resort - <AUTHOR> https://www.theguardian.com/world/2020/apr/26/kim-jong-uns-train-possibly-spotted-at-north-korean-resort <comment><USER2> He has a private train? What is this 1940?</comment>