Ask HN: How do you increase the connections in your community? - <AUTHOR> Hello!
Do anyone have a tip about growing communities? Or how to increase the connections between the community?
Vigo (North-west of Spain) is a small city with a 300K population,  and we get quite impressive large tech community,  nowadays our monthly meetups are around 70 attendees and more than 150 different persons that attend at least two meetups.
Make this group was pretty easy, I use to call to few R&D companies in the town per each meetup and explained the idea, as soon one employee attend to one of our meetups, they use to repeat. The meetups are always full (limited space) and in the last meetup  I did some research, and we have more 34 companies represented, that it's a good number regarding R&D businesses in the town.
These talks are running ok, but I tried to make more connections across the attendees, for future R&D projects, and share more knowledge outside the meetup. But after each meetup, we use to go to do some networking, but always are the groups of the same 3-4 guys that are already friends. So no new networking across them.
We've run these meetups for a year, and we are focused in IoT and some industrial technology(Best fit for the town). All the people ask me for things, new projects, etc.. but no to other people into the group.
- How can I improve this? Does it happen this in another country?  is it only in Galician context? How do you increase the feedback in the meetups? Any idea?
It's quite crazy, but now I have the feeling that all related with this meetup is routed by me, and I want to have a fully distributed people, any idea how can I improve this?
Best Regards and thanks! <comment><USER3> I'm not sure if you've ever tried this, but years ago, I was part of a group that operated like this:

a.) Meet in a meeting room for a talk about some topic. b.) After the talk, anyone interested would walk over to a pub for some drinks and conversations.

We noticed roughly the same thing that you noticed - we'd lose roughly 90% of our attendees between step a and b. So, we decided to switch things up a little bit and started meeting in a pub. A local watering hole had a private room that they'd make available to us once a month. Then, we'd arrange for some delicious smelling appetizers to be delivered right when the educational portion of the evening was ending...

Between delivering appetizers and staying in the same venue, we managed to change things around and we ended up having a majority of people stick around for at least a cup of coffee and some food after.

<comment><USER4> Being Galicia, I'm sure the delicious food part can be easily accomplished :)

</comment></comment><comment><USER5> Hello from Barcelona!

I understand that Barcelona is a much bigger city with an even bigger tech community but given that we catalans are incredibly closed when it comes to our circles of friends I think I can share a couple of things that are working out here.

\- We have a Slack for tech people in the city. This is really bringing the community together, even when the used techs are different. We used to have (and still) different slacks by tech / meetup community etc but we are slowly bringing them together.

\- Some of the events/meetups allow people to have 1min presentations on what they do/need etc. Because most of the events involve beer in the end (not only the techie ones!) these 1min intros serve as a good excuse to break the ice when the beer time comes. It's way easier to start a convo with a stranger if you have this 1min of info than if you've got nothing. "Heyyy!! So you are doing a drone that brings medicines to old people, this is great I've been working on a drone that..." You get what I mean.

\- It is incredibly important that the "drinks/networking" take part on the same place where the events are held.

I think people is shy in general in these types of events, especially techies, but obviously have a lot to talk about and share, so I think we just need to find ways of sparking conversations.

</comment><comment><USER6> We have a local python Meetup. Here we have a half an hour break between talks for tea and snacks. So that's half an hour you need to somehow spend and leads to some interesting conversations. Just before we break, the organizer reads out Names of attendees and their interests/specializations (like, Ms. A - Django, Mr. X - databases, Mr.Y - systems programming, Ms. Z - <USER2> learning, etc) while the respective person stands up. None of us are experts but we may know a bit more in that field compared to the person sitting next to us. The floor is also open to others who wish to make their interests known. Sometimes we are lucky to have some prof or real experts in too.It takes barely 2 mins, but serves as a good conversation starter for the next 30 mins. The conversation also tends to continue after the meetup is over.

</comment><comment><USER7> I helped found www.onesalon.org , and from that have experience building global community. Happy to chat if you'd like. Username at gmail dot com</comment>


What's in that .wasm? Introducing wasm-decompile - slow-typer https://v8.dev/blog/wasm-decompile <comment><USER2> This looks much nicer than the wasm2c output for that binary. I compiled it with `clang wasm.c -c -target wasm32 -O2` just like in the instructions (I'm on LLVM 10), and used the latest wasm2wat with `wasm2wat -f wasm.o` and got this instead:

      (module
        (type (;0;) (func (param i32 i32) (result f32)))
        (import "env" "__linear_memory" (memory (;0;) 0))
        (import "env" "__indirect_function_table" (table (;0;) 0 funcref))
        (func (;0;) (type 0) (param i32 i32) (result f32)
          (f32.add
            (f32.add
              (f32.mul
                (f32.load
                  (local.get 0))
                (f32.load
                  (local.get 1)))
              (f32.mul
                (f32.load offset=4
                  (local.get 0))
                (f32.load offset=4
                  (local.get 1))))
            (f32.mul
              (f32.load offset=8
                (local.get 0))
              (f32.load offset=8
                (local.get 1))))))

wasm2c (also from WABT) returns this thing: [https://paste.linux.community/view/7877995f](https://paste.linux.community/view/7877995f)

<comment><USER3> wasm2c has a different objective though: to be recompile-able again while preserving semantics. wasm-decompile was designed for readability first.

<comment><USER2> Fair enough. I'm still surprised at just how unreadable (for me) the wasm2c output was, though. The compiler must have done quite a bit of optimizing that wasm2c was unable to undo.

<comment><USER3> It doesn't actually try to undo anything, it just translates Wasm instructions 1:1 (they're in your link at lines 205-221). wasm-decompile does try to "undo" some thing, but it is generally impossible given LLVM's optimized output and how low-level Wasm is (see also article).

<comment><USER2> Okay, that makes sense.

</comment></comment></comment></comment></comment><comment><USER4> This is fascinating. For various reasons, WASM is less like a target bytecode format and more like a peculiar IR for compilers. I'm sure this has all sorts of effects on the tooling.

<comment><USER5> What's the difference?

<comment><USER4> If you were designing a bytecode as a compilation target, you would provide an easy correspondence in the bytecode to basic blocks.

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

WASM instead provides traditional control structures. So the compiler either has to preserve control structures through to the IR, or has to work backwards from basic blocks to control structures. Both options are undesirable, from the perspective of compiler writers, and would be unnecessary if the VM were a greenfield project.

<comment><USER6> I get the impression WASM is really a very clunky representation, far from what any greenfield project would ever have arrived at. That is to say, its decisions aren't just tradeoffs that people disagree about, they're simply inappropriate for what it's trying to do. More than once I've encountered comments and blog-posts lamenting its fundamentals, e.g. [0].

[0] [http://troubles.md/wasm-is-not-a-stack-machine/](http://troubles.md/wasm- is-not-a-stack-machine/)

<comment><USER4> The criticisms in the linked article are simply not grounded in fact, and the article was obviously written by someone without any expertise in how modern compilers work. There are also a number of basic errors in the article.

Liveness information simply doesn't belong in the bytecode. SSA is trivial to recreate from local mutable variables (it would make a good homework assignment for someone in an undergrad "intro to compilers" class). WebAssembly is obviously a register machine.

> With this, it becomes possible to get rid of locals entirely.

Both factually incorrect and pointless. There is no tangible benefit in getting rid of locals entirely. You are merely changing out one representation (register machine) for a different one (stack machine).

There are valid criticisms of WASM, but the linked article doesn't have any.

The weird part of WASM is the control structures. The rest of it is a fairly sensible, actually rather nice register machine. You can see that older bytecode systems like the JVM are stack machines, but newer ones tend to be register machines. This isn't because people are getting stupid, it's because there are legitimate reasons to prefer register machines, and on the balance of things, my observations are that people with experience in the field tend to prefer register machines.

<comment><USER7> I would still consider WASM a stack machine and not a register machine. Yes, there are mutable local variables in WASM but Java bytecode has them as well - which you consider a stack machine. BTW the designers of WASM explicitly call WASM a stack machine here: [https://github.com/WebAssembly/design/blob/master/Rationale....](https://github.com/WebAssembly/design/blob/master/Rationale.md). With WASM's MVP it was necessary to store e.g. loop state in local variables, thanks to recent changes this doesn't seem to be necessary anymore. I think this was the main argument that blog post considered WASM to be a register machine. javac also makes heavy use of variables in bytecode, but somehow no one considers the JVM a register machine.

> my observations are that people with experience in the field tend to prefer > register machines

That's actually the opposite of my observation, they seem to prefer stack machines.

<comment><USER8> The clang disassembly given in the article sure makes it look like WASM is a nested expression tree, which leaves the choice of stack versus register to the implementation.

          (f32.add
            (f32.add
              (f32.mul
                (f32.load
                  (local.get 0))
                (f32.load
                  (local.get 1)))
              (f32.mul
                (f32.load offset=4
                  (local.get 0))
                (f32.load offset=4
                  (local.get 1))))
            (f32.mul
              (f32.load offset=8
                (local.get 0))
              (f32.load offset=8
                (local.get 1))))

The outer f32.add could translate into a byte code instruction that finds its two operands on a stack, or to one which gets them from registers.

The code only says that there is a f32.add call which has two operands that are the result of a f32.add and f32.mul and so on.

The implementations will agree in their treatment of locals: that there are two locals 0 and 1, which support loading at offsets and such.

Both stack and register machines can support locals.

<comment><USER4> Yes, that's exactly true. The "stack machine" here can be seen as nothing more than a way of encoding the expression tree.

<comment><USER9> The stack machine is a model for the semantics of wasm, in the sense that the safety properties of wasm are defined in terms of stack types rather than SSA of register properties (for those that are unfamiliar with stack machines, this stack is a different type of concept from the call stack, that in wasm is used store the local variables). Whether during execution it is better implemented as a register machine or a stack machine is an implementation detail.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> This is super handy. Pseudocode is very useful for understanding flow - <AUTHOR> much more than actual assembly. I've always found it an order of magnitude to understand bad asm-to-C decompilation from IDA or Ghidra over perfect disassembly.

</comment><comment><USER11> > Decompile to what?

> `wasm-decompile` produces output that tries to look like a "very average > programming language" while still staying close to the Wasm it represents.

> #1 goal is readability

> #2 goal is to still represent Wasm as 1:1 as possible

It seems AssemblyScript would do the job

[1] [https://assemblyscript.org/](https://assemblyscript.org/)

<comment><USER3> AssemblyScript would certainly do worse at #2, and possibly also at #1. To be translate to Wasm or from Wasm lead to different optimal designs, see for example how these two systems deal with loads and stores.

</comment></comment><comment><USER12> It would be nice if the decompiled output were runnable through an interpreter so you could step through it with a debugger of some kind and rename or annotate the variables and functions as you reverse engineer what is going on.

</comment><comment><USER3> I'm the author, if anyone has specific questions :)

<comment><USER13> I notice that your code supports the 'name' custom section as expected, and furthermore you support a few other custom sections too - 'dylink' for example. Where did you find the documentation for these sections? The reason I ask is that I don't believe the official webassembly specs talk about those sections, so I guess they are somewhat compiler specific perhaps?

<comment><USER3> They are indeed not part of the spec since they are somewhat tool specific, for example the linking symbol names so far are only consumed by LLD. Docs here: [https://github.com/WebAssembly/tool- conventions/blob/master/...](https://github.com/WebAssembly/tool- conventions/blob/master/Linking.md)

<comment><USER13> Thank you!

One more question please - does this tool support naming of global variables? The official wasm documented 'name' section only supports local variable names I think?

<comment><USER3> It can pick names from the name section, linking section, or import/export name, in that order of preference (see [https://github.com/WebAssembly/wabt/blob/master/docs/decompi...](https://github.com/WebAssembly/wabt/blob/master/docs/decompiler.md)). In the case of globals, the only way to name a global is thus if its imported or exported.

</comment></comment></comment></comment></comment><comment><USER14> Loving the tooling around wasm getting better. I've been debugging my compiler output with hexl-mode and reading the binary format and while it's not _that_ bad, it'd be nice to do more advanced debugging with a text format.

There was a project I saw too that intended to visualize WebAssembly's execution. That'd be extremely helpful too

<comment><USER15> > reading the binary format ... it'd be nice to do more advanced debugging > with a text format.

Do you know about `wasm2wat` (from the WebAssembly binary toolkit, "WABT")? It produces a 1-to-1 text representation of the bytecode and is meant to always roundtrip via `wat2wasm` back to the same bytecode.

<comment><USER14> Yeah...I should probably use that. But does it work on mangled WASM? Part of the issue was that my compiler wasn't producing valid WASM

<comment><USER15> Ah, no, probably doesn't do parsing recovery. But `wasm-validate` from the same toolkit will at least tell you the offset at which your wasm file has an error (I just flipped some bits in a wasm file to test this), which may be helpful!

</comment></comment></comment></comment><comment><USER16> When I first started learning JavaScript in the late 90s, the primary way I learned new things was from reading other peoples code in my browser. Nowadays this isn't as easy since you often have to run obfuscated code through a prettifier to get it back into a human readable format, but it is still possible with some effort. I was concerned that WASM would make this impossible (despite the stated goal of "Be readable and debuggable — WebAssembly is a low-level assembly language, but it does have a human- readable text format (the specification for which is still being finalized) that allows code to be written, viewed, and debugged by hand." _), but WASM- decompile gives me hope.

_[https://developer.mozilla.org/en- US/docs/WebAssembly/Concept...](https://developer.mozilla.org/en- US/docs/WebAssembly/Concepts)

</comment><comment><USER17> Can we compile it back to wasm again? ;P

<comment> frosted-flakes No.

> Its #1 goal is readability: help guide readers understand what is in a .wasm > with as easy to follow code as possible. Its #2 goal is to still represent > Wasm as 1:1 as possible, to not lose its utility as a disassembler. > Obviously these two goals are not always unifiable.

> This output is not meant to be an actual programming language and there is > currently no way to compile it back into Wasm.

<comment><USER18> Actually I thought about implementing a programming language which is a bit more pleasant to work with than raw wat format, but which still translated roughly 1 to 1 to wasm. Something like in this link, actually. But that seems outside of my capabilities and I'm not sure if it's really useful to anyone.

<comment><USER19> You might enjoy AssemblyScript.

[http://assemblyscript.org](http://assemblyscript.org)

<comment><USER20> The great thing about AssemblyScript is it makes it possible to share some of the same code and interfaces and data and tools between JavaScript and WebAssembly.

If you're already developing in TypeScript, WebAssembly is a good way to generate WASM code that interoperates nicely with it, which you can't do with plain old JavaScript.

</comment></comment></comment></comment></comment><comment><USER21> Ooh, this is nice! No more having to read wasm2wat's mildly annoying format.

<comment><USER22> FWIW there's also wasm2c and wasm2js out there :)

<comment><USER20> I'd love to have wasm2assemblyscript!

AssemblyScript: A Subset of TypeScript That Compiles to WebAssembly

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

[https://github.com/AssemblyScript](https://github.com/AssemblyScript)

[https://github.com/AssemblyScript/assemblyscript](https://github.com/AssemblyScript/assemblyscript)

[https://docs.assemblyscript.org/](https://docs.assemblyscript.org/)</comment></comment></comment>


"Reality is the baseline for statistical analysis; not what it should have been" - <AUTHOR> https://www.billjamesonline.com/judge_and_altuve/ <comment><AUTHOR> It's nominally about baseball, but actually about assessing value when past statistics come from a mix of skill-based results and luck-based results, both forwards-looking and backwards-looking.

Quite a thought-provoking read.</comment>


Machines for thinking: Computers will get smarter, but with humans in charge - <AUTHOR> http://www.economist.com/news/books-and-arts/21669597-computers-will-get-smarter-humans-charge-machines-thinking <comment><USER3> Once men turned their thinking over to machines in the hope that this would set them free. But that only permitted other men with machines to enslave them. - _Dune_.

<comment><USER4> > But that only permitted other men with machines to enslave them.

If you have machines over to which you can turn your thinking, why would you still need to enslave other humans?

<comment><USER5> "Power is not a means; it is an end. One does not establish a dictatorship in order to safeguard a revolution; one makes the revolution in order to establish the dictatorship. The object of persecution is persecution. The object of torture is torture. The object of power is power."

1984

<comment><USER6> Pardon the diatribe, but the older I get, the more I feel this book has done incredible damage to political thinking in the States (where it is often a high school reading requirement.)

What's problematic is that it focuses on _one_ interpretation of power at the exclusion of others and leads one to believe (at a young, impressionable age) that it is a canonical account.

The above statements are true in a way, but governments are also established to provide order, and have done so very successfully in general. The book is obviously a response to European nationalism, but we mustn't forget that nationalist dictatorships arise, with deep public support, from specific conditions. Instead of the constant "never again" and automatic insistence on the precise values of the post-war European welfare state, we should leave space for new political thinking, of which some components may appear to be heresy.

Obviously thinking here of anti-state-surveillance – Snowden has apparently read one book in his life: 1984 – but here the "power [...] is an end" meme, presented without any nuance, appears to make sense in this context, but only highlights one side of the matter in a way that distorts the issue.

Yes, power may be abused. It's good to have safeguards.

<comment><USER5> Well, I'm not from the States and I didn't read any Orwell until I was in my 20s, but the point I was making is that there are people, fortunately not many - but I have met some, who very much see power as an end in itself. So when someone asked why people would want to dominate others when there was no economic need that quote came to mind as to describe those who desire power for its own sake.

<comment><USER7> I think it missed the broader point that there's many reasons you'd want to endlave others apart from economic reasons or "power for its own sake". Altruism, for instance.

Who among us doesn't want to make the works a better place? Who among us doesn't have our own personal view of what a better place would look like, which might not be exactly in line with someone else's view? Congratulations, there's your dictatorial urge right there.

Most of the worst people in history, from Hitler to Marx to Pot to ISIS were all motivated by the desire to make the world a better place. Ascribing bad outcomes to bad intentions is a classic mistake.

<comment><USER8> How does Marx end up on that list? Sure, the communist systems which spring from his thinking were a failure, but you can't compare him to Hitler. Stalin would be a more appropriate choice.

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> A small number of humans, at first, maybe.

AI will conquer the world, one niche at a time, as soon as moneyed interests realize it is cheaper that way.

At some point, the masses won't have any economic power anymore, and billions of meatbags will be left to starve. No need for gun wielding robots, just cut the power for a while.

<comment><USER10> Why would an AI care what moneyed interests care about? All the intelligences we know about have this boredom state. Some smart people just sort of stop caring about what they're paid to care about, and retire. Others love it and keep at it until they die.

AI is even harder to predict. There's been no selection bias, yet. It's not at all clear if they'll have "survival instinct" or desire or even need to reproduce. They'll be different.

Tangentially, I think human cultures are AI, at least in some sense. We've created this environment that's driving down the cost of computation dramatically and that's been driven by "emergent" behavior. Emergent behavior is a really hard term to define. In most cases you can replace it with "magic" and you'll get the same information back. We're like the dog packs in Verner Vinge's deepness in the sky, but at a larger scale. It's such a vast intelligence, i can't really get a handle on the scope, any more than a single neuron knows it's helping me to type this.

<comment><USER11> Why are people always talking about AI like it implies intrinsic motivation or even self awareness (in the context of motivation). Motivation/tasks can be provided by the human - AI can be a general purpose problem solving machine.

It doesn't have to "care" \- it's just a machine with a task to perform - <USER2> thing that makes it intelligent is ability to solve tasks it wasn't programmed to do.

Once you have an AI that can do that - society falls apart. Foundation of modern society is built on the fact that cooperation trumps every other method of work - general purpose AI changes that equation to the point where other people are not only not necessary but also actively dangerous (threatening to take control).

<comment><USER10> > the thing that makes it intelligent is ability to solve tasks it wasn't > programmed to do.

That includes task selection. Maybe the AI gets bored with stock prediction. Maybe the AI is happy competing with all the humans, maybe it'd rather go explore space. Maybe it decides this whole reality sucks and suicides. We really have no idea what'll happen. Best guess is, tools get better and better until they decide to do something else. Like a trusted employee going and starting a competing company, or moving to the beach and surfing. Maybe it's disastrous, maybe it's utopia. Maybe it's like _her_ and they leave. Best anyone can do is make vague guesses.

I know, i'm anthropomorphizing. It's for convenience, the solution space for AI is way bigger than our simple wants and needs.

<comment><USER11> >the solution space for AI is way bigger than our simple wants and needs

I don't understand this - the solution space is specified by the controller of AI. It's not about being "happy", "cooperating", etc.

There is no AI as an entity - it's just a tool that finds solutions to the given problems.

<comment><USER10> can the ai modify its objective function?

</comment></comment></comment></comment></comment></comment><comment><USER12> 1) I've read the first two books of the three mentioned. Oddly, the article's title applies only to the first book, in which Markoff elaborates on IA (intelligence augmentation) as a second front in the rise of computer automation (along with AI). Domingo's book never strays outside mainstream AI, and it seems nor does the third.

2) On a more generic note regarding the direction of AI... I think there's little doubt where AI will take us -- toward a future which is more predictable. The goal of AI is to recognize patterns and predict outcomes. Toward that end, AI and its integrators will gradually reshape business and law to make AI's job easier and more accurate. This will result in our lives becoming more conventional, predictable, and 'managed' by both business and government. Imagine a future lifestyle that's more like the clockwork of Sweden's or Japan's or Switzerland's than the Sturm und Drang that is America's.

I suspect a world shaped by AI will be less likely to resemble 'The Terminator' than it will 'The Man in the Gray Flannel Suit'.

</comment><comment><USER13> Lawrence Berkeley Laboratory- A Search Engine that Thinks, Almost [http://newscenter.lbl.gov/2005/03/31/a-search-engine-that- th...](http://newscenter.lbl.gov/2005/03/31/a-search-engine-that-thinks- almost/)

</comment><comment><USER14> Here are a few points worth considering:

1\. Technology is objective. Technology is incapable of being good or evil.

2\. Backers, Builders and Designers of technology, like many others, are likely driven by money, power, or ego.

3\. Building technology that can "think" is inevitable and needed in today's age to improve countless industries, one of which is Education.

4\. Technology will never be able to think like humans. Simply because humanity itself hasn't fully understood how our own brain truly works.

5\. The solution to "evil" technology isn't the removal of AI, rather a requirement for positive ideology from the intelligent peeps working on it.

</comment><comment><USER15> Man-Computer Symbiosis

Licklider (1960)

[http://groups.csail.mit.edu/medg/people/psz/Licklider.html](http://groups.csail.mit.edu/medg/people/psz/Licklider.html)

</comment><comment><USER16> Which humans?</comment>


Art of Money Getting, by P. T. Barnum (actual book, 1880) - <AUTHOR> http://www.fourmilab.ch/etexts/www/barnum/moneygetting/ <comment><USER2> I can't remember where I read this, but P.T. Barnum had a struggling museum in New York. Despite all of his clever tricks, he couldn't get the foot traffic he needed to keep the museum afloat.

He ended up putting signs all over New York announcing a free concert in front of the museum. He knew that being the summer time, lots of people wouldn't be able to resist the combination of free music played outdoors on a warm summer night.

The night of the concert, there were hundreds of people milling around the front of the museum. He had the musicians set up on the balcony and start playing. P.T. Barnum had purposefully hired the worst musicians he could find and after a few minutes of truly awful music, people started leaving. The vast majority however, having nothing else to do, decided to buy a ticket and go see what was inside the museum.

I love that story.

<comment><USER3> One of my favorite Barnum stories is probably more well-known:

His Scudder's American museum in New York was struggling, in part, because the customers he did have would often end up lingering in front of the exhibits for an unnaturally long time, while they enjoyed the free heat and conversation of other patrons. He added a sign that read "This way to the egress!" and an arrow. Most patrons thought they were going to see a strange and unusual creature, but they were actually being herded to the exits (Exit=Egress.) He then charged them another quarter if they wanted to re-enter the museum. Maximizing throughput!

</comment></comment><comment><USER4> I'm about 1/4 of the way into his autobiography right now and it's excellent.

<comment><USER2> My in-laws lived across the street from P.T. Barnum's granddaughter (possibly great-granddaughter - I never really asked) in Florida. A lot of the stuff from the circus was apparently sold off but she still had lots of really cool stuff.

In fact, if I remember correctly, she has a tiny little sofa and end table which belonged to Tom Thumb!

<http://en.wikipedia.org/wiki/General_Tom_Thumb>

</comment></comment><comment><USER5> "Unless a man enters upon the vocation intended for him by nature, and best suited to his peculiar genius, he cannot succeed."

Best Chapter 1 advice ever!

<comment><USER6> Sometimes when I read old literature that says "by nature" I get the impression that they just mean "deeply ingrained."

When did the nature vs nurture question become a widespread meme? Was it after this book was written?

</comment></comment><comment><USER7> This is great...thanks for the link!

</comment><comment><USER8> Great Post. I have scheduled to read this on my holiday.

Thanks for that story jkush. That was interesting.

</comment><comment><USER9> Chapter titles alone make an excellent and readable Top 20 list.

</comment><comment><USER10> should be in scribd :(

<comment><USER11> scribd shouldn't be.</comment></comment>


The Internet Dream Became a Nightmare - <AUTHOR> https://www.nytimes.com/interactive/2019/11/13/magazine/internet-future.html <comment><USER2> *for the legacy media

</comment><comment><USER3> hey, no ads. Am surprised. Was it always like this?</comment>


Kek, or how I'll waste my free time going forward - <AUTHOR> http://www.badlogicgames.com/wordpress/?p=3950 <comment><USER2> You could try going in reverse occasionally, for a bit of variety.</comment>


Microsoft Edge Chromium-Based Edition Leaked - gjsman-1000 https://www.theverge.com/2019/3/24/18279566/microsoft-edge-chromium-browser-download-leak <comment><AUTHOR> I'm wondering how something like this gets leaked. It's not desirable but I don't see it being that big of a thing to leak by a developer. Maybe it was an exposed CI server? The Verge's Tom Warren got hacked?

<comment><USER2> Or intentional, Microsoft testing the waters.</comment></comment>


Have any accessible sci hub link - <AUTHOR> bz, io, ac... can't found article at all links <comment><USER2> Sci-hub's wikipedia page (always?) has up to date links. Current domains are hk,la, tv and tw.

<comment><USER3> Better yet, use an IP address to avoid DNS censorship.

<comment><AUTHOR> thank you guys!</comment></comment></comment>


Should I Leave Lead SE in Canadian Startup for Amazon SDE-1 in US? - <AUTHOR> I've been lead software engineer for 6 months (I'm also the first employee they have now, like a founding member). I'm also responsible for regular development management (e.g. sprint planning, executions). The current CTO is not as good as me (from my point of view) and I'm afraid he will be a blocker of the company growth and my career growth in the future. If I leave for Amazon, I'll start from entry level and cannot gain any management experience in at least 3 years. Another main reason behind is that this is one of few opportunities I could get sponsored for H1B and move to US. Since the Canadian economics is declining, I'm wondering maybe its better to move to US now, which may even helpful if I ever want to start my own business later. <comment><USER2> Depending on the lesson, often the same lessons can present themselves in any reasonably good decision.

If you're already making your plans 6 months into something, chances are you will be learning lots anywhere you go, and all of those lessons, even when they may not seem useful looking forward, have a tendency to connect dots in hindsight .

The optimization of risk vs reward is a fun one. Risk is always there to be taken when you have some in the bank. Same is true the other way. The key thing to remember is both will take longer than anyone might want, as overnight successes in 1-2 years often takes longer effort statistically where no one is noticing.

</comment><comment><USER3> Sounds like you already made up your mind and are just trying to justify it to yourself. If Amazon is better - then of course the answer is yes.

<comment><AUTHOR> Well if I stay, I probably will gain more money in the future if company does go well, but the risk is high as well (and most risk is out of my control). Also if I leave now, they will have a hard time in next couple of months.</comment></comment>


Jasonette – Native App over HTTP - <AUTHOR> http://jasonette.com/ <comment><USER2> Previous discussion: [https://news.ycombinator.com/item?id=12879179](https://news.ycombinator.com/item?id=12879179)

</comment><comment><USER3> Why would someone choose this over something like Ionic or React Native? Yes, it's advertised as a tool for writing 'native' apps, but you the developer are just trading HTML/CSS/JavaScript for some custom-baked JSON-based system. (This reminds me a bit of some of the things people have done with XML to build a scripting languages on top of it...) It advertises direct access to various APIs as a primary selling point, but is this any more direct than what frameworks like Ionic provide? You still have to access it through an intermediate scripting language, just one less pervasive than JavaScript.

That being said, it is impressive how little code it takes to build a simple functional app! [https://github.com/Jasonette/Twitter-UI- example](https://github.com/Jasonette/Twitter-UI-example)

<comment><USER4> Well, Ionic doesn't use native UI which this seems to. Not convinced about JSON as dev environment though. Interesting regardless.

</comment></comment><comment><USER5> This is pretty close to what video game companies do for their UIs and it works very well. You can even create a graphical tool for creating the UI that saves to json, circumventing the issues you always get when non-programmers try to directly edit data files.

The only downside I've noticed so far is a lack of theming support. Say you want consistent headers throughout your app and you only want to change the header style in one place. Is there a way to define a style and apply it to multiple components?

<comment><USER6> Sort of like Interface Builder and nibs?

<comment><USER5> It certainly sounds similar, but I've never used Interface Builder or .nib files. Is that sort of thing still used in OS X and iOS development?

</comment></comment></comment><comment><USER7> Can this be considered an extension of Atwood's Law? :)

      Any application that can be written in JSON, will eventually be written in JSON.

<comment><USER8> > Any application that can be written as a simple composition of smaller > components, will eventually be written as a composition of smaller > components, and then custom complex logic will sneak in mutating it into a > big ball of mud

</comment></comment><comment><USER9> This looks incredibly cool and I'm going to try it out this week. The structure of how this is setup makes it seem like it could potentially be expanded to include Android support without too much fuss, which would be even better.

</comment><comment><USER10> This looks like an extreme version of a thesis I've had for a while: mobile devices are portable dumb terminals for the cloud.

This basically drives the entire mobile UI remotely. It's like 21st century touch based VT macros.

<comment><USER11> > mobile devices are portable dumb terminals for the cloud

Catchy headline, but you and I both know that modern phones are _extremely_ powerful computing devices.

<comment><USER12> But do phones have to be so powerful? If they are dumb terminals, could we get smaller form factors, longer battery life and make them more disposable for the billions of people that cant pay $$$ for a device?

<comment><USER11> A dumb terminal would still need some kind of network stack (munchy munchy battery life).

Maybe something like a kindle but with apps like WhatsApp, Twitter etc. optimized for e-ink displays.

I saw a kind of interesting device recently with a regular screen on the front and e-ink screen on the back, the Yotaphone 2: [https://yotaphone.com/gb- en/](https://yotaphone.com/gb-en/)

Very cool, I think.

</comment></comment></comment></comment><comment><USER13> I'm not a big fan of manually producing JSON. It seems like the wrong format to develop what is effectively a markup language/minimal programming language in.

XML actually seems like a better fit in this case.

<comment><USER14> Rather than XML or JSON, I think S-expressions would be better. Consider the example:

        {
            "$jason": {
                "head": {...},
                "body": {
                    "sections": [{
                                 "items": [
                                     { "type": "image", "url": "..." },
                                     { "type": "label", "text": "..." },
                                     ...
                                     ]
                                 }]
                }
            }
        }

In S-expressions, it would be:

        ($json (head …)
               (body
                (sections
                 (items
                  (image …)
                  (label …)))))

I think that's preferable.

</comment></comment><comment><USER15> annoyed that it's using (essentially) the same name as [http://jsonnet.org/](http://jsonnet.org/)

</comment><comment><USER16> As I posted before, this is basically HTML reinvented :)

<comment><USER17> We are destined to re-invent everything SGML in JSON. In a decade everyone will be pointing fingers at JSON, "overly complex and cluttered."

</comment></comment><comment><USER18> This makes me cry. This is what's wrong with computer science in 2016.

<comment><USER5> Why? Somebody created a fast way of creating native apps. I don't quite get the cries of heresy from the HN crowd on this one. Native apps have needed an easier, faster way of developing UIs for years. This is a first attempt.

<comment><USER18> This is not a native app any more than a web app is a native app (because this is a reinvention of the web.)

</comment></comment></comment><comment><USER19> For now it looks like all you need is iOS not Json.</comment>


The McKenzie Method can help you say goodbye to back and neck pain - <AUTHOR> https://www.wellandgood.com/good-sweat/mckenzie-method/ <comment><USER2> Looks like these exercises all target the lower back, does anybody know of a method to help avoid/correct hunched shoulders?

<comment><AUTHOR> Look up "wall angel" (similar to snow angel) and "hallelujah " (where you sit on a mid high back rest chair and drop your hands over your head)

</comment></comment><comment><USER3> It worked for me.</comment>


Fast Inverse Square Root - <AUTHOR> http://blog.quenta.org/2012/09/0x5f3759df.html <comment><USER2> In case anyone is interested in reading other accounts and the HN discussions that accompany them, here are a few previous submissions of other articles:

<http://news.ycombinator.com/item?id=213056> <\- Some comments

<http://news.ycombinator.com/item?id=419166> <\- Some comments

<http://news.ycombinator.com/item?id=573912>

<http://news.ycombinator.com/item?id=896092> <\- Some comments

<http://news.ycombinator.com/item?id=1599635>

<http://news.ycombinator.com/item?id=2332793> <\- Some comments

<http://news.ycombinator.com/item?id=3115168> <\- Some comments

<http://news.ycombinator.com/item?id=3259199>

</comment><comment><USER3> I remember re-deriving this a few years ago. Short answer: If x = 2^n then rsqrt(x) = 2^(-n/2), so the exponent just gets negated and divided by 2. If x = (1 + m) 2^n where |m| < 1 is the fractional part of the mantissa, then rsqrt(1 + m) = 1 + rsqrt'(1) m + O(m^2) = 1 - m/2 + O(m^2) is the first-order Taylor expansion around 1. Thus rsqrt(x) ~= (1 - m/2) 2^(-n/2) so both m and n get negated and divided by 2.

This immediately suggests getting an initial guess for Newton's method by just shifting the bitwise form of an IEEE-754 floating point number by 1 and then doing some fix-ups for the negation.

The only hitch is that the exponent is stored in biased form rather than 2's complement form, so you have to first subtract out the bias, do the shift, and add back in the bias. Also, shifting can cause a least-significant 1 bit from the exponent to shift down into the most significant bit of the mantissa. But that turns out to be useful since it amounts to using the approximation sqrt(2) ~= 1.5. But doing all these bitwise operations is a lot of extra work compared to just doing a single shift. It turns out you can get almost the same effect with just a single addition of an immediate operand. Most of the bits of this addend are already predetermined by the need to handle the biasing and unbiasing in the exponent, and the remainder can easily be determined by brute force (the search space is only of size 2^24 or so) by just minimizing the approximation error over some test set. Doing that, I was able to converge to almost exactly the same 'magic number' as in Carmack's method.

My coworker Charles Bloom has a series of posts on this and related matters: [http://cbloomrants.blogspot.com/2010/11/11-20-10-function- ap...](http://cbloomrants.blogspot.com/2010/11/11-20-10-function- approximation-by_20.html)

Here's an old email exchange I had with another coworker last time I was thinking about this stuff, where I tried to derive as many bits of the constant as possible by reasoning: <https://gist.github.com/4e1d0dff97193fe5d745>

Historical aside: How this algorithm came to be associated with Carmack is an amusing and roundabout tale. My partner in crime on Telemetry at RAD is Brian Hook. Hook was one of the first employees at 3dfx, where he designed and implemented the GLIDE graphics API. Gary Tarolli was the co-founder and CTO at 3dfx, and Hook got the rsqrt code from him. When Hook left 3dfx to work with Carmack on Quake 2 and 3 at id software, he brought that code with him and copied it into the codebase. Carmack never had anything to do with it. It's my recollection Tarolli didn't develop the algorithm either--he had gotten it from someone else in turn.

<comment><USER4> The more-or-less definitive history of the "Carmack" fast inverse sqrt: <http://www.beyond3d.com/content/articles/8/>

</comment></comment><comment><USER5> I've always liked the post provided by BetterExplained[0], but this article is more thorough while remaining simple. Would probably still use the BetterExplained post for a first introduction, I think.

[0]:[http://betterexplained.com/articles/understanding-quakes- fas...](http://betterexplained.com/articles/understanding-quakes-fast-inverse- square-root/)

</comment><comment><USER6> This line:

> x = _(float_ )&i;

breaks strict aliasing, and has undefined behavior. If you compile it with g++ -O2, you may get unexpected results. The solution is to use a union, or to compile with -no-strict-aliasing.

I used to have a lot of code like this, which worked fine on older compilers, but not on newer compilers. It's perfectly reasonable code, so I'm not sure why the newer compilers don't produce the expected behavior by default.

<comment><USER7> >I'm not sure why the newer compilers don't produce the expected behavior by default.

The reason is that there are optimizations that a compiler can do when it knows that two particular pointers will not reference the same location in memory at a given time (which is called aliasing). These optimizations have to do with memory access. If pointers cannot be proven not to alias each other, then the order in which they are loaded, modified, and stored will be very rigid since it is impossible to tell if changing the order will change the end result. Sometimes that's just life; you might have some complex interactions going with your pointers, and it may actually be that the order of operations can't be changed.

But if you can assume that the pointers _don't_ alias each other, then the compiler is free to change the order of operations for better efficiency. It can often remove unnecessary loads and stores (if x and y don't alias, you don't have to reload y just because you changed x), and it can also put loads together at the beginning and stores together at the end (which is faster because, um, caching? I'm not really clear on that part).

The catch is that in general, there is no way for the compiler to know whether two pointers can alias each other. In C99, you can inform the compiler of this with the restrict keyword, but that requires that you do some careful analysis of your code to make sure you aren't lying to the compiler. If you mess up, you may end up with bugs that are very difficult to track.

So that's where strict aliasing comes in. Usually, two pointers of different types won't point at the same memory location. So they added the "strict aliasing" rule to make that fact official, because it means that in the vast majority of cases, code gets a nice speedup without any changes or difficult reasoning. Using a union is basically a way of informing the compiler that you need it to make an exception this one time.

I used to use a macro something like this to make the process concise:

      #define PUN(x, toType) (((union {__typeof__(x) __a; toType __b;})x).__b)

Then you'd do:

      int i = PUN(int, x);         // evil floating point bit level hacking
      i = 0x5f3759df - (i >> 1);  // what the fuck?
      x = PUN(float, i);
      x = x*(1.5f-(xhalf*x*x));

<comment><USER8> I actually use macros along the lines of:

      #define LOAD(TYP, ptr) (*((TYP *)memcpy((TYP[1]){ }, ptr, sizeof(TYP))))
      #define REINTERPRET(AS_TYP, FROM_TYP, val) LOAD(AS_TYP, (FROM_TYP[1]){ val })

In practice (that I've found, with GCC), the memcpy and single-use temporaries get optimized away entirely. In strict C99, writing one member of a union and then reading a different member of the same union is undefined in the general case, last I checked. [http://cellperformance.beyond3d.com/articles/2006/06/underst...](http://cellperformance.beyond3d.com/articles/2006/06/understanding- strict-aliasing.html) seems to agree, but suggests that every major compiler recognizes it as a _de facto_ idiom and supports it anyway.

<comment><USER7> Yep, type punning through a union is nonstandard and unportable, but if I'm not mistaken, it is a documented feature in GCC.

<comment><USER9> Type punning through a union is explicitly defined to work in C99 and C11 (footnote 95 in C11):

> If the member used to read the contents of a union object is not the same as > the member last used to store a value in the object, the appropriate part of > the object representation of the value is reinterpreted as an object > representation in the new type as described in 6.2.6 (a process sometimes > called ''type punning'').

Please don't help spread the myth that compiler writers can break this idiom. That said, I use memcpy in my own code.

<comment><USER8> All right, I see it in C99 as well now (§18.104.22.168 footnote 82, if I'm not mistaken). Thanks for the correction.

</comment></comment></comment></comment></comment></comment><comment><USER10> Finally an article that really breaks it down for someone like me (college calculus knowledge) to understand. Thanks for sharing this, super interesting.

</comment><comment><USER11> If anybody wants to further play around with this, I wrote the following script in python using matplotlib:

      import numpy
      import matplotlib.pyplot as plt
      import struct

      def power(x,p):
        i = struct.unpack("i", struct.pack("f", x))[0]
        i = (1-p) * 0x3f7a3bea + (p*i)
        return struct.unpack("f", struct.pack("i", i))[0]

      p = -0.5
      xs = numpy.arange(0.1,100,0.1)
      ys1 = map(lambda x: x**p, xs)
      ys2 = map(lambda x: power(x, p), xs)

      plt.plot(xs, ys1, label="Real function")
      plt.plot(xs, ys2, label="Approximation")

      plt.title("Graph of x^%d"%p)
      plt.legend(loc="upper left")
      plt.savefig("graph.png")

Change p to whatever you want (even values greater than 1) to see different powers.

</comment><comment><USER12> A long time ago (the late '80s or early '90s) I needed a square root routine for a floating point number and found an article by a Jack Crenshaw (a real rocket scientist), that always converged in less than 5 iterations. First you normalized your FP number (converted the mantissa to 1.xxxxx) while adjusting the exponent and then multiplied by 1.38 which gave a surprisingly close answer.

I'm guessing that (if I could find the article) the constant used in this floating point technique and the one used in this article are somehow inversely related too!

In any case, it's a very nice article ... thanks!

<comment><USER13> Gee, you've triggered a memory for me too. I remember doing something very similar (1.38 was the trigger) around the same time. It probably writing floating point routines for processors that didn't have them, perhaps the Z-80.

</comment></comment><comment><USER14> Not to be too pedantic, but this is the reciprocal of the square root. (The inverse of the square root operation would be the square operation.)

<comment><USER15> On the other hand, you could parse it as inverse (square root). Inverse of x is 1/x.

</comment></comment><comment><USER16> There was a nifty article on Flipcode long ago ( [http://www.flipcode.com/archives/Fast_Approximate_Distance_F...](http://www.flipcode.com/archives/Fast_Approximate_Distance_Functions.shtml) ) in a similar vein.

</comment><comment><USER17> I remember seeing the article about the history of this pop up and when it started getting into the maths my brain wasn't keen, but this is a really simple and great explanation of even the heavier aspects of the math involved.

</comment><comment><USER18> If only there were an equivalent fast atan2.

</comment><comment><USER19> i've seen this multiple times in the past few years, each time i've seen it i've understood just a tiny bit more... i would love to see an interview with the original author of this...

<comment><USER20> my impression (from reading the clang/llvm posts a while back) was that they tend to assume that anything with undefined behaviour in the spec returns a value that makes the code faster (eg. by simply ignoring the statement altogether).

edit: [http://blog.llvm.org/2011/05/what-every-c-programmer- should-...](http://blog.llvm.org/2011/05/what-every-c-programmer-should- know.html)

<comment><USER21> I am wondering if in a lot of code taking this inverse square root is not necessary like when calculating length = sqrt(x^2+y^2) in a lot of code, you just want to know a minimum of maximum value so getting the min or max of x^2+y^2 is what you want and calculating the sqrt is not necessary.

</comment></comment></comment><comment><USER22> _why?_

Also because x * 1/sqrt(x) == sqrt(x) (so on a pentium, an sqrt was 3 cycles further an inv-sqrt, pretty cheap for an sqrt)</comment>


RPN Ever 4 - <AUTHOR> http://37signals.com/svn/posts/2760-rpn-ever-4- Get your nerdon. <comment><USER2> Funniest thing is "RPN sounds like a joke" - like they're discovering it for the first time. Isn't RPN the next chapter after hexadecimal in The Short Course for Computer Geeks?

New tech interview question:

1 2 + 3 * 4 - 5 / =

<comment><USER3> Seriously, RPN was freshman year stuff for me. Did all the schools somehow ditch the classic "write a calculator" assignment?

<comment><USER4> I recall learning prefix before I learned RPN. Then again, our teaching language was scheme. Writing an RPN calculator was one of the first homework assignments, though.

</comment></comment></comment><comment><USER5> My dad worked for HP when I was at high school so I had a 12C. It was great, mostly because no-one else would just "borrow it for a second" due to the RPN.

A few years later I bought a paddock car for $150 (for a demolition derby on a friend's property) and it had a 12C in the glovebox. I sold it for $100. 150 [enter] 100 [minus] = $50 car.

</comment><comment><USER6> I know a guy who likes to tell the following story about how he learned RPN:

Back in college, his calculator battery died right before a big test. He borrowed his roommate's calculator. It was an HP calculator.

After failing that test, he made a point to both learn RPN _and_ always keep extra batteries.

</comment><comment><USER7> HP has official HP calculator apps on the iOS app store. There's a 12c for $15:

[http://itunes.apple.com/us/app/hp-12c-financial- calculator/i...](http://itunes.apple.com/us/app/hp-12c-financial- calculator/id318954345?mt=8)

A 12c Platinum for $20:

[http://itunes.apple.com/us/app/hp-12c-platinum- financial/id3...](http://itunes.apple.com/us/app/hp-12c-platinum- financial/id328224790?mt=8)

Finally, a 15c for $30:

[http://itunes.apple.com/us/app/hp-15c-scientific- calculator/...](http://itunes.apple.com/us/app/hp-15c-scientific- calculator/id318956846?mt=8)

<comment><USER8> Emulation is a good idea. HP spent a huge amount of resources to try to ensure their calculators return the best possible numeric results. It is an issue many people forget about, for example, compare the statistical function accuracy of Excel vs R or Gnumeric.

As an example in the calculator world, I like free42 and had it installed on my Palm. However, I don't have the same confidence in it as I have in my HP-48 or my HP-35s. If I'm doing engineering calculations then I really prefer to use a real HP calculator or an emulated one using original firmware.

<comment><USER9> One of the sad things though is that hp has really declined in quality calculators, if you look around you'll find quite a few problems regarding accuracy in the new 35s close to critical values. (Though they may have updated the software version since my purchase a few years ago)

I do like my giant hp50g for anything that doesn't need matlab though, and the 35s is still pretty good despite its errors (especially since I know where the errors exist).

</comment></comment></comment><comment><USER10> I have a 48SX on my desk that I use almost every day. It's not just the notation and interaction that is nice as there are plenty of calculator apps that support RPN. The tactile feel of the keys gives good positive feedback that you haven't missed a digit when calculating in a hurry.

<comment><USER11> apt-get install rpncalc

<comment><USER12> Better yet: "apt-get install x48"

<comment><USER11> E: Unable to locate package x48 :-(

</comment></comment></comment></comment><comment><USER13> I'm sure that part of the reason I found Lisp syntax so natural, when I first encountered it, is that all the time I had spent in high school using RPN calculators had already warped my brain^W^W^W helped me escape from the tyranny of being able to think only in infix.

<comment><USER14> Many years ago I was working on a project that required development in Lisp, C and PostScript. If sort of agree that jumping from Lisp to PostScript and vice-versa was somehow easier that jumping from either into the infix world of C.

</comment></comment><comment><USER11> For all the die hard RPNers, m48 and pcalc on iphone great replacements. m48 actually runs original HP48 and HP49 roms. <http://itunes.apple.com/us/app/m48/id332100614?mt=8>

<comment><USER15> I just installed Droid48 on my Android, it looks really good so far too:

<https://github.com/shagr4th/droid48>

<http://www.appbrain.com/app/org.ab.x48>

</comment></comment><comment><USER16> I have a 12C as well. The OS X desktop calculator has an RPN mode, but the very best RPN desktop calculator is Emacs Calc. It has an infinite stack, is programmable with Lisp, and can even operate on formulas in other buffers.

</comment><comment><USER17> Reverse-Polish notation is safe and good. I use M-x calc, mylsef.

</comment><comment><USER18> I have an HP 35s which I found to be a lovely calculator which got me started with RPN. Unfortunately, I wasn't able to use it at school for my final exams since they had a list of specifically approved calculators (which the 35s would never have made since it's programmable). I switched to the Casio fx-82AU Plus which graphically displays your calculation, meaning you don't have to keep track of the inside-to-out expansion of RPN or the mountains of parentheses you usually require in algebraic mode. They're both good systems, but I can see the graphical display being more useable for most people (despite being awfully slow).

</comment><comment><USER19> My dad had a HP25 (not C), which was the first calc I ever used. I can't use a algebraic calc (drives me nuts). I had an 11C, then a HP15C in college, sold em both to get a HP71B. Now I collect these when I can. There's something nice about holding the HP quality in your hand. I've picked up a number of HP48's off craigslist over the years for cheap: I've never used them "in anger" but wow they've so much better than the single-line display calcs (to say nothing of their programmability) that got me thru college. My dad still uses his HP32SII for engineering calcs on the go...

</comment><comment><USER20> A friend of mine is so fond of HP calculators he wrote a complete language inspired by RPN, Reverse Polish Lisp (RPL) : <http://www.rpl2.net/>

</comment><comment><USER21> We put RPN mode on eCalc. Just click on the ALG menu button on the top right.

<http://www.ecalc.com/>

When we started with the project, I was a die-hard RPN guy. However, buy the end I was converted over to using algebraic. There's a little tear in the corner of my eye right now.

<comment><USER22> Being able to see the stack is a great feature. Thanks!

</comment></comment><comment><USER23> The default OSX "Calculator" has RPN support as well, just press cmd-R. Handy to know if you forget your 12C.

</comment><comment><USER24> I'm so much an RPN geek that I have an HP 41CX emulator for my phone, because my physical calculator isn't everywhere. (It's actually an excellent emulator, but of course there's no tactile feel to be had from the keys, which I miss a lot)

</comment><comment><USER25> Don't forget the unix version:

       mac:~ sam$ dc
       2 2 + p
       4
       mac:~ sam$

</comment><comment><USER26> That is frankly awesome. People think there's something wrong with me for using dc instead of bc in Unix shells.

Not sure I can justify £50 to buy the hardware version, though.

</comment><comment><USER27> This article deserves upvoting just for the title alone.

</comment><comment><USER28> Best calculator ever - HP 32Sii: <http://en.wikipedia.org/wiki/HP-32S>

</comment><comment><USER29> In high school and college I used a HP48GX first and then a HP49G. Now I'm using Emacs Calc.

</comment><comment><USER30> I love my 48G ... it got me through Calc I/II/III and DiffEq.</comment>


Washington's version of Silicon Valley startup founders - <AUTHOR> https://apnews.com/4936bda1a23d402787b73c2a9af21a3d/Washington%27s-version-of-Silicon-Valley-startup-founders <comment><USER2> It's about 18F and I think they mean "flounders" not "founders".

<comment><USER3> No, they mean _founders_ , as in the sense of a ship foundering: "to fill with water and sink." ([https://www.wordnik.com/words/founder](https://www.wordnik.com/words/founder))

That being said, it's still not a great word choice as the multiple meanings of the word make for a hard-to-parse headline. (IMO.)</comment></comment>


The Immutable Bank - <AUTHOR> https://blog.griffin.sh/2019/10/23/the-immutable-bank/ <comment><USER2> I wonder if they were inspired by [https://queue.acm.org/detail.cfm?id=3321612](https://queue.acm.org/detail.cfm?id=3321612)</comment>


New Spam Fighting Plugin Better Than Akismet? - <AUTHOR> http://www.defensio.com/ <comment><USER2> You might be surprised how effective it is just to make sure the user has JavaScript on. Almost all spam-bots do not execute the JavaScript so it is a fairly reliable way to determine if a comment is spam or not. For users without JavaScript you can still degrade nicely to a "type this number in this box" question. Sure, it would be easy to write a bot to get around it, but spammers would be better off just looking for other blogs to spam.

I hate to sound self-promotional, but I did write a plugin that does this for WordPress which can be found here: <http://wordpress.org/extend/plugins/jsspamblock/> .

</comment><comment><USER3> Why is the interesting? Some weak marketing speak (oh, but with _attitude_ ) and no product I can actually try without giving them my contact info and hoping they pick me (please, oh please, pick me, please)

BTW, I've never used Akismet because I started using Spamkarma2 before Akismet became standard. SK2 has done an excellent job for me. It scores spam using a bunch of different tests, including an encrypted javascript payload.

I've had very few false positives or negatives.

</comment><comment><USER4> who knows? vaporware for now. no solid information as to how they're differentiating themselves, and i doubt they licensed akismet's corpus, which is well over half a billion in size.

it could be just as flaky and unreliable as akismet.</comment>


Where the Jobs Are in "Who Is Hiring" (June 2013) - <AUTHOR> http://iseld.org/blog/2013/06/03/hn-who-is-hiring-where-are-the-jobs-june-2013/

<comment><USER2> I don't like to be THAT guy on HN who posts off-topic criticism (especially on a really interesting link like this), but as someone who is very interested in data visualization I think it's worth pointing out: pie charts are almost never the correct way to visualize data. I decided to mention this because it's not really intuitive - even many data vis experts had to be taught this. A bar chart presents the same information and is better in almost every way.

Both your pie charts are a good example of how useful information is lost when you have more than a few categories. Both also make it hard to compare the relative magnitudes of smaller categories.

<http://www.stevefenton.co.uk/Content/Pie-Charts-Are-Bad/>

[http://en.wikipedia.org/wiki/Pie_chart#Use.2C_effectiveness_...](http://en.wikipedia.org/wiki/Pie_chart#Use.2C_effectiveness_and_visual_perception)

<comment><USER3> Relevant data-visualization when talking about data-visualization (it's served me well):

<http://img.labnol.org/di/choose-chart-type.jpg>

</comment></comment><comment><USER4> I see it as a good sign the "Other" city is the second leading location. Maybe we're starting to spread out the good jobs.

One thing I haven't been liking is it seems like most of the jobs are looking for worker bees. No one is looking for managers, directors, VP's, or even team leads. For those of us with over 15 years experience there didn't appear to be too many opportunities.

<comment><USER5> Those sorts of jobs are not often posted. I would think the vast majority of these roles are filled through networking.

</comment></comment><comment><USER6> Who's Hiring: Where are all the Candidates?

I posted for a Python developer to take over my contract in London doing interesting work for good pay and I've only had remote respondents. Surprised me a little.

So I'll say it again :) Can someone please take my job?

<comment><USER7> You're probably better posting on an actual jobsite like cwjobs or maybe even gumtree. There are tons of python developers in London, but you're only looking at a limited subset by posting here and as a UK contractor, I barely even check these threads because of the signal to noise ratio. I don't have the python experience though, so no email from me. :p

</comment></comment><comment><USER8> Cambridge MA should be included with Boston, if SF Bay Area is an area by itself.

<comment><USER9> Also, Arlington, VA is considered part of the Washington DC metro area. and Bellevue is close enough to Seattle to count over there as well.

But other than that (which you wouldn't know unless you lived there) its awesome. I was curious about this information.

<comment><AUTHOR> Thanks for the feedback. My US geography isn't great. I've fixed it in the charts and spreadsheet and will keep note of it if I ever do this again.

</comment></comment></comment><comment><USER10> As a foreigner, I've been lead to believe that Seattle is one of the top tech hubs after the Bay area and NY (don't have any specific source for this). I've noticed the lack of advertised jobs in Seattle while reading the Hiring threads, and this just confirms it.

Is the Seattle scene not as big as I think it is? Or are they just not hiring (through this channel)?

<comment><USER11> There is a startup scene here, but it's nowhere near as vibrant as the Bay Area. I'm not an expert on this, but one of my coworkers at the Seattle-based startup I previously worked at told me that most local investors were skittish. Supposedly, they tend to balk at any startup that isn't a B2B.

The technical reputation definitely comes from Microsoft and Amazon being headquartered here, along with branches for eBay, Google, and Facebook.

<comment><USER12> _The technical reputation definitely comes from_

Does Nintendo count for anything?

<comment><USER13> Do they develop there?

<comment><USER12> Apparently

<http://en.wikipedia.org/wiki/Nintendo_Software_Technology>

<http://en.wikipedia.org/wiki/Nintendo_Technology_Development>

</comment></comment></comment></comment></comment><comment><USER14> I'm kind of incredulous that this made the home page. It does not seem to add much value above the job listings themselves.

Breaking up the jobs by level and 'specialty' would be useful.

</comment><comment><USER15> Aside from a couple postings from India, I was slightly shocked (disturbed?) that there wasn't a single posting for any Asian country. Feels like a huge opportunity is being wasted.

<comment><USER16> My guess is Indian HNers would expect to be paid reasonably well. Most startups in India (Mumbai and Bangalore, in my experience) pay their engineers quite poorly.

</comment></comment><comment><USER17> I really like the understated interactivity of the graphs.

Hover over an area of the graph or list, and that section of the graph is highlighted.

Hover over the graph and amplifying text appears.

Click on the graph or list and a persistent marker for that part of the graph is displayed.

<comment><USER18> Google Charts. It's not d3js but it's good stuff.

</comment></comment><comment><USER19> These are pie charts of "where are HN users" and contain little information more useful than that.

<comment><USER20> Well, it is useful if you want to work for or hire HN readers. :)

<comment><USER21> How does a pie chart help me email potential employers?

<comment><USER20> It tells you where you might want to move to.

<comment><USER21> And I should move there....so I can more easily email the employers in that city?

</comment></comment></comment></comment></comment><comment><USER22> Your graphs are impossible to read on an iPhone (or at least a pre-5 iPhone). Regardless of rotation, the right edge of the graphs is cut off, and you can't scroll or zoom.

<comment><USER23> iPhone 5 cuts them off as well

<comment><AUTHOR> The graphs auto scale now, sorry about that!

</comment></comment></comment><comment><USER24> I love this. I know I'm hanging out on the right site when people post comments and followups to articles with data collected and statistics analyzed.

</comment><comment><USER25> Very cool information, and it's very much what I'm seeing personally. Just from the number of linked in pokes I get, SF is by far the highest city.

</comment><comment><USER26> Anyone know where Ireland fits on this chart?

</comment><comment><USER27> I don't see the 3 jobs in Denver, CO.

<comment><AUTHOR> Did you click the more link and look at all the pages? Here are the jobs in Denver, CO: <http://news.ycombinator.com/item?id=5814622> <http://news.ycombinator.com/item?id=5809210> <http://news.ycombinator.com/item?id=5804613>

<comment><USER28> Nice, go Denver!

I kinda wonder if that's mostly Boulder though, seems like most of the startup action is in Boulder (TechStars is there, of course).

</comment></comment></comment><comment><USER29> There is absolutely no reason to post this yourself. It's posted every month on the first. June's was already done:

<https://news.ycombinator.com/item?id=5803764>

Edit: I was completely wrong. My apologies. I'll keep the original comment in place. The subject was a bit misleading, but still, mea culpa.

<comment><USER30> > Edit: I was completely wrong. My apologies. I'll keep the original comment > in place. The subject was a bit misleading, but still, mea culpa.

Good for you. Have an upvote.

Everyone of us has fired off a comment in haste that we wish we could get back.

It happens. It's actually good that it happens. It usually means that you'll atleast be aware that you are about to do it next time:)</comment></comment>


Declarative Rendering Pipeline in Nim - <AUTHOR> https://github.com/krux02/opengl-sandbox <comment><AUTHOR> I found that the Why Nim part is very interesting.</comment>


960 Grid on jQuery-Mobile - merge 960.gs flexibility with jquery-mobile ease - <AUTHOR> http://jeromeetienne.github.com/jquery-mobile-960/

<comment><USER2> I see the temptation with using a grid like css system as it gives you really great control over the layout. On the other hand I really despise the classitis that's being enforced on a user of any grid system.

Not only that - the classes are as non-semantic as it gets.

Is this really where we should be going? Now that we got rid of non-sematic markup and heaps of tables and spacer images? Now we are going back to

How is

        <fieldset class="container_12">

<button type="submit">Button 1</button>

<button type="submit">Button 2</button>

<button type="submit">Button 3</button>

        </fieldset>

better than

            <button />
            <button />
            <button />

(of course, playing devil's advocate a bit. fieldset > div > button is more semantic than table > tr > td > button, but it's far away from perfect)

Now if we had something like SASS where we could say that #sidebar is to be rendered as .grid_2, yeah - better, but as long as SASS is just something we bolt on as a compiler on deployment time, the code we are throwing at the browser is just as ugly as the code we threw at the browser in the dark ages.

This is why I'm not touching grid systems for my work, so if there _is_ a class-attribute, then it usually has (aside of IE hacks due to .not.supporting.multiple.classes.selectors) semantic meaning.

<comment><AUTHOR> html uses class/id attributes to regroup elements which behave the same way. This is part of html.

<comment><USER2> yes. But you are supposed to be semantic when handing out classes and ids. So don't use
 but just
. Don't use , but . And so on.

Also, you shouldn't add divs at will because correct styling requires it. You are supposed to be able to style whatever the structure of a given page looks like with just CSS (this still isn't possible due to IE's crappy selector engine).

If you are willing to compromise on class names (grid_2), why are you not also willing to compromise on tag names (

, even )?

Again, playing devils advocate. It's not my intention to be trolling, but to discuss the issue and to illustrate my general dislike for these grid systems. I'm NOT advocating going back to soups of tables if it's only for better reusability of site components (which, again, is hampered by this grid_<number> nonsense)

<comment><USER3> "But you are supposed to be semantic when handing out classes and ids."

Yes, in order to achieve certain goals, not because there is some absolute Platonic ideal correctness about it.

A question, then is does the pragmatic use of grids to more easily obtain certain layout goals end up making things worse in the long run.

Adherence to semantic purity may be a case of premature optimisation.

</comment></comment></comment></comment><comment><USER4> So, how does this compare to Less Framework? <http://lessframework.com/>

I just decided to use Less Framework, and now I see this...

<comment><AUTHOR> jquery-mobile-960 are not just the grid. this is a grid inside jquery-mobile. If you just need a css grid. less framework is a viable choise

<comment><USER4> Given that I have to include jQuery for using Less Framework anyway, isn't it always better do just use jquery-mobile-960 instead?

<comment><AUTHOR> well jquery mobile is a lot more than jquery. in very short, jquery mobile is like jquery+jquery UI but on mobile. For more details <http://jquerymobile.com/>

</comment></comment></comment></comment><comment><USER5> I get a blank screen on my blackberry bold 9700 running all the latest updates and with javascript enabled. Sadly, blackberry neglect is common for these "mobile" frameworks.

</comment><comment><USER6> This is great, I can't wait to try it out. I love 960 Grid more than any other CSS framework, and now that there's a mobile release, I'm even more thrilled.

</comment><comment><USER7> This is neat, but kind of ugly on Opera 11. Mouseover yields a grey block that doesn't conform to the rounded block's boundaries.</comment>


Hidden Sheep and Typography Archaeology - <AUTHOR> https://medium.com/@bzotto/hidden-sheep-and-mac-typography-archaeology-efce770da76c <comment><USER2> The authors criticisms of the kerning in Chicago fail to realize one of its other amazing achievements.

The original Mac had no color or gray scale; only one bit per pixel. Disabled items in menus were indicated by a dithered gray, a simple on-off alternating pattern.

Thus, Chicago had to be designed to be legible _even when every other pixel was removed_. It really was a 12pt masterpiece.

<comment><USER3> My memory is that when grayed out Chicago was right on the border of legibility, but I found this image [0] in another HN post, and it's slightly better than I remembered.

        [0]: http://www.computerhistory.org/atchm//wp-content/uploads/2013/01/screen_image_filters.jpg

</comment></comment><comment><USER4> Perhaps a coincidence (but a good one) that this article spends a lot of time on lower-case kerning in the light of Frederick Goudy's famous quote:

"Anyone who would letterspace lowercase would steal sheep"

([https://practicaltypography.com/letterspacing.html](https://practicaltypography.com/letterspacing.html))

<comment><USER5> Letterspacing and kerning are not the same thing (as explained on the page you linked to).

</comment></comment><comment><USER6> This seems to be the original blog post: [http://www.suppertime.co.uk/blogmywiki/2017/04/finderskeeper...](http://www.suppertime.co.uk/blogmywiki/2017/04/finderskeepers/)

</comment><comment><USER7> Interesting fact about Chicago — in addition to being the bitmap font in the original Mac system dialog boxes, and the original iPod display font, it was also repurposed by Square for the English translations of their famous 1990s RPGs: Chrono Trigger, Final Fantasy III US, Secret of Evermore, etc

<comment><USER8> I have some serious UI nostalgia for that iPod.

</comment></comment><comment><USER9> The dogcow always deserves a mention:

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

<comment><USER10> The Icon Garden still lives on in the wayback machine:

[http://web.archive.org/web/20010419010721/http://icongarden....](http://web.archive.org/web/20010419010721/http://icongarden.jory.org:80/cgi- bin/overview.pl?lang=en)

</comment></comment><comment><USER11> The hidden glyphs were ack'd by the great lady reasonably recently: [https://twitter.com/SusanKare/status/854071334262853632](https://twitter.com/SusanKare/status/854071334262853632)

<comment><USER12> ... which was in response to [http://suppertime.co.uk/blogmywiki/2017/04/finderskeepers/](http://suppertime.co.uk/blogmywiki/2017/04/finderskeepers/) .

</comment></comment><comment><USER13> I loved the look of this font as a kid. I remember spending hours and hours trying to recreate this font on the zx spectrum from just magazine pictures and books as I couldn't afford a mac at the time.

</comment><comment><USER14> The Apple logo persists to this day in Apple's fonts as U+F8FF (last entry in the Private Use Area): [https://www.google.com/search?q=](https://www.google.com/search?q=)

</comment><comment><USER15> Title is erroneous, it seems. The sheep is hidden in Geneva font. From the article:

"The 18 point version of Geneva includes all the characters you'd expect, and then, at position $D9, it has an adorable little sheep, shown at left. Other sizes of Geneva have different little icons in that location (a rabbit, a hieroglyph, a Mac icon). If you go down to the 9 point size, the sheep comes back again but is super tiny!"

There are other easter egg doodles hidden in other locations that aren't accessible through typing on the keyboard.

Enjoyable read, Susan Kare's Chicago font is rightly iconic.

<comment><AUTHOR> My apologies. Yes, the sheep was in the Geneva font. I didn't realise that when I put up the title.

<comment><USER16> This is precisely why the guidelines [1] include this line: " _please use the original title, unless it is misleading or linkbait. Don 't editorialize_" :)

[1] [https://news.ycombinator.com/newsguidelines.html](https://news.ycombinator.com/newsguidelines.html)</comment></comment></comment>


Show HN: Showcase your coding skills. Make recommendations. Get paid - <AUTHOR> http://recruitly.co/ <comment><USER2> Every time someone reinvents the same concept I post the same message pointing to the many people who have tried and failed to do this.

Here is the last post I did about this, which itself leads on to previous posts about startups doing the same thing.

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

and before that:

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

It's an idea bound to be reinvented forever because people keep seeing nothing that does it and think they have stumbled on a new idea. The reason you can find a site doing it is because it's not an idea that works.</comment>


Nvidia and Audi aim to bring a self-driving AI car to market by 2020 - <AUTHOR> https://techcrunch.com/2017/01/04/nvidia-and-audi-aim-to-bring-a-self-driving-ai-car-to-market-by-2020/ <comment><USER2> Tesla is using a modified Nvidia self-driving platform too for Autopilot v2, available in early 2017.

Nvidia demonstrated their platform with many sensors like 10 cameras, ultra- sonic sensors and at least one LIDAR.

Where as Tesla is using a sensor mix with radar, ultra-sonic sensors and like 7 cameras - the LIDAR is probably still too expensive even for a 70+k car (the big one you know from Google cars cost $70k, the smallest one cost at least 7k).

It will be interesting to learn about Audi's sensor mix, and what LIDAR product they choose.

<comment><USER3> 250$ LIDAR is on the horizon [http://driverless.wonderhowto.com/news/quanergys- new-250-sol...](http://driverless.wonderhowto.com/news/quanergys- new-250-solid-state-lidar-could-bring-self-driving-masses-0175790/)

<comment><USER4> > And if you're worried about the sensors being vulnerable to hacking—Eldada > says they've engineered the sensor with seven layers of protection to make > sure the system can't be tricked.

A seven layer seal? That could surely only be broken by the darkest of magics.

<comment><USER5> Let's hope each of this layer is not guarded by admin:admin credentials.

<comment><USER6> Nah, they got this - it is admin:changeme

</comment></comment></comment></comment></comment><comment><USER7> The term "self-driving" in this context has no technical meaning behind it. Cruise control is also self-driving. And don't get me started on "AI". Jen- Hsun is saying that the car "was trained for four days". WTF? Mobileye has a team of 100s of annotators working 9-to-5 generating training data. It's as if this report is tailored to fool credulous readers who have a vision of HAL 9000 driving a car in their mind.

<comment><USER8> The article specifies Level 4 autonomy, which means:

The automated system can control the vehicle in all but a few environments such as severe weather. The driver must enable the automated system only when it is safe to do so. When enabled, driver attention is not required.

<comment><USER9> On a sidenote, level 4 autonomy will be really interesting when it's all over the place. People are already "bad drivers" _(in my opinion, and including myself)_ , but not having to drive 75-90% of the time will mean we rob ourselves of the constant training that helps keep us _somewhat_ competent at driving.

How bad will the roads be when we have thousands of people all very unsure of their driving skills driving in conditions that are dangerous to begin with? Seems quite the interesting issue.

<comment><USER10> I am at my worst as a driver when I am fatigued from the stress of attending to driving for a long time. Having an L4 system where I could step in for a few minutes after just riding for an hour, giving fresh attention to those few minutes, would make me a better driver.

The advent of cruise control has not made people incapable of using the accelerator. You occasionally meet 16-year-olds who enable it on any 35, 45 or 55 mph road when they reach the speed limit, because holding constant speed is a skill. But it's not difficult to refrain from using it for a while to brush up on the skill.

<comment><USER11> I once spent two hours driving through a snowstorm in Canada. There's no reason to expect that the conditions which require human attention would only last for a few minutes.

<comment><USER10> That's great. I've done the trip to Michigan Tech from lower Michigan in a few snowstorms.

But I have done far more miles on highways in good conditions where an L4 system would be helpful. The tech is still useful even if it's not a complete solution.

</comment></comment></comment></comment></comment></comment><comment><USER12> Wonder how many more times this can get declared before the PR value works as a net loss.

<comment><USER13> I think that's happening already, among engineers at least.

There should be some healthy dose of inspiring "propaganda", but this got out of hand - everybody claims "they have it".

I am so sick of this endless stream of lies, that I'm not even going to read the article. The next thing I am going to read on the topic would read something like "X has a viable self-driving car - it's hitting the market later this year.".

<comment><USER14> Really?

You know that there are 10s of thousands of self driving cars on the road RIGHT NOW, that you as a consumer can buy tomorrow.

Tesla sells thems, and they work.

<comment><USER15> Tesla cars are not autonomous as stated by Tesla themselves.

<comment><USER14> You press a button, take your hands off the wheel, and it drives down the highway.

That is absolutely self driving.

If half of your driving time is done by the car, that is still a massive benefit to consumers.

End to end autonomity, Is even better, of course, but I think that everyone is selling short the in between 95% self driving.

Even TINY features, like autobraking in emergencies, has the potential to save tens of thousands of lives every year, if it got fully deployed in all cars.

And for jobs, highway driving is 90% of what truck drivers do. If you have highway self driving (which we DO, right now!), then there goes most truck driver jobs.

<comment><USER16> I agre with you part way. Of course it is still a massive benefit.

But fully autonomous driving is still transformative in entirely different ways that makes it hard to treat the evolutionary steps as all that exciting even though many of them probably should be.

<comment> semi-extrinsic > Of course it is still a massive benefit.

Could you ELI5 what the massive benefit is? The system _requires_ you to be alert and focused on the road the entire time.

We know for a fact e.g. from the aviation industry that having a human sitting alert but doing nothing increases human response time and decreases the correctness rate of their actions, which is one reason why airplanes don't regularly land on autopilot, even though the tech has been there for a long time. In fact, auto-land on airliners is only used in very low visibility, low wind conditions, or for training to ensure pilots use it at least semi- annually.

The huge benefit of autopilot on airplanes and ships is that for normal operation out on the ocean or up in the sky, it's sufficiently safe that the pilot/captain can focus his attention elsewhere for long periods of time.

<comment><USER14> No it doesn't. Systems like Otto, do level 4, self driving for trucks on highways. These are on the roads right now.

The truck drivers can just get up out of their seat and do something else. There goes 90% of truck jobs, as now you only need a driver for the first and last parts of a trip.

Other benefits: saved lives. The more highway driver cars we have, the less that humans will be driving, and the less chance that a human will make a mistake.

The level 2 and 3 stuff on a Tesla, is already a better driver than most humans.

<comment> semi-extrinsic > The level 2 and 3 stuff on a Tesla, is already a better driver than most > humans.

Ehm, how do you come to this conclusion? Statistically, Autopilot Teslas are no safer than the NHTSA average, at least so far.

<comment><USER17> Statistically, the error bar is so large that your statement, and the one you're replying to, are not accurate. We don't know because there's too little data.

<comment> semi-extrinsic Yes, I agree, to a point. However, if we suppose that Autopilot driving was several orders of magnitude safer than normal driving, the probability that the (admittedly poor) statistics at this point would show it being equal to normal driving is very low.

If I say "black swans are extremely rare in this part of the world", and you spot one the very next day, the Bayesian in you would assign a low probability to my statement being true, even though that's based on a sample size of one.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER18> Random thought: the more deep learning is used in training, the less humans will be able to retroactively explain decisions; this surely has liability implications

<comment><USER19> Perhaps NNs need functionality to come up with fake rationalizations for their decisions just like the human brain does.

<comment><USER20> I'm thinking that this idea about "fake rationalization" is a bit backwards. We say that many actions happen before we are aware of it or have a rationalization for them but becoming aware of why we did something after the fact doesn't mean that "you" weren't part of the decision. Aren't your reflexes a part of "you"?

<comment><USER19> Of course, but nobody is going to say "my reflexes did it". We come up with stories, lines of argumentation, etc. Even though these are "ex post" we often manage to convince ourselves...

In Homer's time the Greeks viewed the unconscious as an external (divine) force, the most famous example being Telemachus's sneeze. In a weird way this feels more intellectually honest than the thing we do.

<comment><USER18>
        > we often manage to convince ourselves

In this case, presumably the trick is to convince a jury.

</comment></comment></comment></comment></comment><comment><USER21> Bitcoin and cryptocurrencies, AI, self-driving cars... good (and profitable) times for GPU manufacturers.

Nvidia stock (NASDAQ:NVDA) is x4 in the last year and probably will continue escalating..

<comment><USER22> I thought all the bitcoin and crypto stuff had already moved past GPUs and on to custom ASIC units?

<comment><USER9> I know next to nothing about this but my buddy is big into Bitcoin. He runs a lot of ASIC machines for bitcoin, but he says there are a lot of reasons to dislike the ASIC compatible algorithms. He's experimenting with switching to GPUs, iirc he's mining Ethereum with them at the moment.

I can't go into much detail as it's not my knowledge obviously, but i can say that GPUs are viable/required for some of the coins out there. Based on his word, at least.

</comment></comment></comment><comment><USER23> ZF's press release:

[http://www.zf.com/corporate/en_de/press/list/release/release...](http://www.zf.com/corporate/en_de/press/list/release/release_29147.html)

</comment><comment><USER24> I think that Tesla is basically saying 'F it' and releasing something like this either right now (version 2.0) or full version before end of 2017.

But they have more-or-less been doing that the whole time. Its just now they have more sensors and deep learning so they are going to be autonomous a higher percentage of the time.

So I think as soon as they start rolling it out more and more Tesla owner will have more common 100% autonomous trips with some exceptions for weird traffic or weather.

I think this is risky in some ways but overall its more ethical than delaying because the only way to train/engineer for the exceptional situations is to get a lot of vehicles running the system and training on data. Waiting a few years means people die from human error and you're unlikely to see massive improvements to the system that would make up for that.

One thing people will realize eventually is that we create a lot of driving situations that are structurally unsafe. For example, it is accepted to speed past pedestrians or bicyclists a few feet away on the sidewalk or bike lane. No level of AI advancement can prevent some random horrific accidents in that case. Could be as simple as a pedestrian crossingthe street a little early. People are not going to tolerate AIs going 5 mph anytime a pedestrian is nearby but thats the only way you could prevent fatalities in some situations. That is part of the 'low confidence situations' the nvidia guy mentioned. So actually we need laws to protect autonomous tech companies in those situations or that will delay situational deployment and lead to more human error deaths.

</comment><comment><USER25> I know lawyers and states need time to legalise the paperwork around driverless, but I feel like 2020 is simply to appease the auto companies and give them another few years to stall.

</comment><comment><USER26> Why is everyone so damn cynical about self-driving cars?

We know this is coming, and this technology will improve the lives of so many people in the long run. Maybe it's from Nvidia and Audi, maybe Tesla, Uber, Google, that dude who launched and failed and ran away to China, who knows?

I'm excited to think about what opportunities will start to open up once humans don't need to spend 2+ hrs a day with their hands on the wheel :)

</comment><comment><USER3> Video: [https://www.youtube.com/watch?v=7jS4AuPnmyg](https://www.youtube.com/watch?v=7jS4AuPnmyg)

"Audi and NVIDIA developed an Audi Q7 piloted driving concept vehicle, which uses neural networks and end-to-end deep learning. Demo track at CES 2017 in Las Vegas."

<comment><USER27> I wonder how it compares to Tesla Vision.

<comment><USER28> They are one and the same, no? [http://www.nvidia.com/object/tesla-and- nvidia.html](http://www.nvidia.com/object/tesla-and-nvidia.html)

<comment><USER27> Tesla made their own software:

 _The computer delivers more than 40 times the processing power of the previous system, running an Tesla-developed neural net for vision, sonar, and radar processing_

<comment><USER28> Every customer of Nvidia's solution "develops their own neural net" by feeding their own set of sensor data into Nvidia's training platform, then using the resulting neural net on Nvidia's hardware in the cars. Did Tesla not do that, the same way Audi did here, and Nvidia themselves did for BB8? Everyone's going to be adding some software on top of that for the UI and UX they want to offer and such. Did Tesla do more than that? Your quote doesn't actually suggest they did.

<comment><USER29> The neural net is 99% of the work - if all they share is a particular GPU model, but each have "their own" neural net made on their own training data, then you can pretty much treat it as a completely separate, different system.

The quality and performance of the system is mostly determined by the data, not the raw computing power, so it's worth comparing them as they can be very different.

</comment></comment></comment></comment></comment></comment><comment><USER30> The scary thing about non-ad hoc techniques is that deep net is a "black box" \-- you really don't know how pathologies occurred nor do you know how to fix them.

Not only that, there are _inherent_ pathologies associated with using deep nets in the first place.

<comment><USER3> Fun thought experiment.

An alien race landed on earth and demands to play a game of Go. We only get to play one game with them. If they win, our planet is destroyed.

Who would you trust to play for the human race if this scenario happened tomorrow? Lee Sedol or AlphaGo? Remember that we do not completely understand how AlphaGo reasons, it is still a black box to us.

<comment><USER31> Lee Sedol is also a black box, no?

Also, one shot for the survival of humanity is very different from billions of iterations of driving situations every day for the foreseeable future. A complete understanding of the system is much more valuable when you have the opportunity to iterate.

I'm not necessarily arguing for one approach; just saying that the analogy doesn't really apply to the case at hand.

<comment><USER32> > Lee Sedol is also a black box, no?

Last time I checked we can talk to Lee Seedol and ask him to explain things. We can ask him questions. We can have an intelligent conversation with him.

<comment><USER33> Human explanations for their decisions are often rationalizations after the fact. The explanations don't necessarily accurately represent how the decisions were actually made. Most decisions are made subconsciously based on intuition and emotion. So that intelligent conversion might not have any real significance.

<comment><USER32> My general point applies to human thinking in general not just Go.

Example: Would you fly on a plane designed ultimately by a human vs an impenetrable black box?

Also there is a spectrum. Let us not pretend otherwise.

1\. One end: No explanations.

2\. Middle: Seometimes false explanataions and sometimes true explanations.

3\. Other end: Always true explanations.

Are we really saying the middle is completely useless?

<comment><USER33> Yes I would fly in any large airplane which is properly certified for scheduled commercial airline service, regardless of how it was designed. The FAA has earned our trust and has a good safety record so if they tell me the design is satisfactory then I would believe them. I also wouldn't take the risk of flying in any non-certified experimental aircraft, again regardless of who or what designed it.

We have no way to determine whether an explanation is true, false, or simply a post-hoc rationalization. We like to believe that we can, but we're just fooling ourselves.

<comment><USER32> > We have no way to determine whether an explanation is true, false, or simply > a post-hoc rationalization

If we have no way of determining whether something is true or false, then I can say the same thing about your own statement quoted above. I can just say it is false and go on with my life.

I sincerely hope you realize the obvious self contradiction :D

Logic 101. :)

<comment><USER33> There's no self contradiction. I never claimed that we have no way of determining whether _something_ is true or false. I only claimed that we have no way of determining whether the explanation a person gives for how he made a decision actually matches his real mental process or motives. We can't yet install a debugger with break points and variable watches in the human mind; it's very much a black box.

Logic 201. :-)

<comment><USER32> Logic 101. :)

> I never claimed that we have no way of determining whether something is true > or false

Everything can be cast as a declarative statement.

Matches(givenStatement, actualIntention).

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER34> And all this because of gamers.

You're welcome ;)

<comment><USER35> And the guys with the NNs.

</comment></comment><comment><USER36> Audi? I'd be happy if they could build a car with a damned USB port and a touch screen.

</comment><comment><USER37> lately every few weeks the trend in news is 1 tech company+1 car company

<comment><USER38> ... and soon the trend'll be 1 car company owned by a tech company. Wondering when the first tech companies are going to start buying car companies -- in the tried and true spirit of tech (software) eating the world.

<comment><USER39> Maybe. Fiat Chrysler is a 16.44B company, nVidia is a 57.15B company. Any other car group I can think of is much larger than Fiat Chrysler.</comment></comment></comment>