The Strong Free Will Theorem [pdf] - <AUTHOR> http://www.ams.org/notices/200902/rtx090200226p.pdf <comment><USER2> For those encountering this paper for the first time I thought it would could helpful to point out some stuff:

"The Strong Free Will Theorem" is a successor paper to an earlier paper called "The Free Will Theorem" (easily found via a search engine or Wikipedia). Both papers are fairly accessible to the typical hacker. Both are somewhat profound. It might be easier to start with the earlier paper.

Traditionally, people debate "interpretations" of QM especially and relativity to an extent. E.g., the "many world" interpretation of QM. These papers take a novel and interesting approach to analyzing such questions. They are quite refreshing, in terms of avoiding needless metaphysical claptrap.

Finally, I don't recall if the papers themselves mention this but at least in speaking appearances Conway has said that he doesn't mean for people to read too much (or too little) into the word "Will", here. Fundamentally, the theorems are about how the history of the universe up to some point (taking into account a relativistic view of history) does or does not relate to the future action of the universe. They formulate things in particularly poignant anthropomorphic terms but the result is more general. If you would rather not locate "will" in these results, Conway is happy to concede that the theorems could as well be dubbed the "free whimsy" theorems... implying meaningless rather than meaningful randomness in certain human choices.

<comment><USER3> What is the difference between meaningful and meaningless randomness?

<comment><USER4> One reflects our ignorance of the underlying mechanisms, and could be predicted with more information and/or a better model, one is intrinsically stochastic and theoretically impossible to predict.

<comment><USER3> You mean it's "meaningful" if it wasn't actually random in the first place.

</comment></comment></comment></comment><comment><USER5> What if there's nothing deterministic in this universe? The notion of determinism deduced from God, Nature, or whatever is the key behind the concept of free will. Otherwise, how can we identify free will, which is essentially a fancy term for "non-determinism"? The concept of free will cannot stand by itself without the notion of determinism. In other words, if everything is truly random, then there's no room for both determinism and free will. However, I don't think the structured randomness described by quantum mechanics counts for the randomness that truly goes beyond both determinism and free will. It may be incomprehensible for any of internal observers of this universe.

</comment><comment><USER6> Lack of determinism is not the same as free will. Being constrained to the past to include the future (i.e. some probability distribution over possible choice states) is still a mechanism embedding stochastic processes, and can be modelled algorithmically.

To really get to free will we also need teleological causation:

danielnolanphil.googlepages.com/TeleologyHawthorneNolan.pdf

Also, here are empirical results from my research showing we are capable of teleological causation and thus have free will:

<http://www.box.net/shared/u13u3agxqg>

</comment><comment><USER7> To quote Douglas Hofstadter: There is no free will.

<comment><USER8> Since he didn't write it by free will, I wonder what it's worth.

<comment><USER7> "When a male dog gets a whiff of a female dog in heat, it has certain extremely intense desires, which it will try to extremely hard to satisfy. We see the intensity only too clearly, and when the desire is thwarted (for instance, by fence or a leash), it pains us to to identify with that poor animal, trapped by its innate drivers, pushed by an abstract force that it doesn't int the least understand. This poignant sight clearly exemplifies will, but is it free will?" - Douglas Hofstadter (I Am A Strange Loop)

</comment></comment></comment><comment><USER9> Very interesting.

If I'm reading this correctly, he says that the idea that human will is deterministic is obsolete. The idea came because it was thought the universe is deterministic, but modern quantum mechanics shows the universe is not deterministic, and neither is human will.

<comment><USER10> I'm not sure how you got that. In both the original theorem and the new "strong" theorem, the theory is a conditional statement (if-then), and that humans have free will is part of the condition, not part of the conclusion.

In describing the original theorem they write: "It asserts, roughly, that if indeed we humans have free will, then elementary particles already have their own small share of this valuable commodity."

And in describing the new theorem, they write: "The axioms SPIN, TWIN and MIN imply that..." Where the axiom MIN is: "Assume that the experiments performed by A and B are space-like separated. Then experimenter B can freely choose..." That "then" clause occurs inside the axiom, so is part of what is assumed. The axioms are assumed - in particular, the free will of experimenter B is assumed - and a conclusion is drawn.

<comment><USER9> "It asserts, roughly, that if indeed we humans have free will, then elementary particles already have their own small share of this valuable commodity."

He goes on to show the reverse of this. This line is a teaser, not a conclusion.

It doesn't really make sense than human free will should affect elementary particles, but the reverse does make (some) sense.

The experimental setup of having a human choose something is to correlate the two, not to mean that a human choosing the setup give the particles free will. (Unless I totally misunderstood this article, which is certainly possible.)</comment></comment></comment>


McCarthy's Ambiguous Operator (2005) - <AUTHOR> http://www.randomhacks.net/2005/10/11/amb-operator/ <comment><USER2> Author here. It's fun to see this post 14 years later!

If you like this, you might also enjoy:

\- Prolog: This is an entire language built around choice and backtracking. [https://en.wikipedia.org/wiki/Prolog](https://en.wikipedia.org/wiki/Prolog)

\- _The Reasoned Schemer_ , which builds a Prolog-in-Scheme from first principles. This book is excellent, or even mind-blowing if you're never seen this before. [https://mitpress.mit.edu/books/reasoned- schemer](https://mitpress.mit.edu/books/reasoned-schemer)

\- Oz/Mozart: This language takes the basic idea even further, adding concurrency and constraint solving. There's an older book about this that's nice: [https://www.info.ucl.ac.be/~pvr/book.html](https://www.info.ucl.ac.be/~pvr/book.html) It feels like Oz was an evolutionary dead end, but an interesting one.

\- Probability monads. You can extend this general idea to include probability distributions over values. I have an older series of blog posts at [http://www.randomhacks.net/probability- monads/](http://www.randomhacks.net/probability-monads/) that explains this idea piece-by-piece, but there's been a ton of research in the past decade on probabilistic languages: [http://www.probabilistic- programming.org/wiki/Home](http://www.probabilistic-programming.org/wiki/Home)

It's definitely a fun topic!

<comment><USER3> There are also icon and txr. I always liked the icon approach where backtracking is fairly explicit, but still tightly integrated into the language. Txr is more for text analysis.

</comment></comment><comment><AUTHOR> The McCarthy '63 paper referred to seems to be here: [http://www- formal.stanford.edu/jmc/basis1/basis1.html](http://www- formal.stanford.edu/jmc/basis1/basis1.html)

<comment><USER4> A brilliant paper. IMHO one of the cornerstones of computer science. I can warmly recommend it. 'pg has a good explanation of it here: [http://www.paulgraham.com/rootsoflisp.html?viewfullsite=1](http://www.paulgraham.com/rootsoflisp.html?viewfullsite=1) (Windows users might want to use an online converter to convert it from Postscript to PDF.)

</comment></comment><comment><USER5> I suppose this is a good time to point out the toy Lisp interpreter I wrote a while ago: [http://patient0.github.io/FirstClassLisp/](http://patient0.github.io/FirstClassLisp/)

It supports first class macros, continuations, and has the amb "operator" (implemented using a macro of course!): [https://github.com/Patient0/FirstClassLisp/blob/master/Lisp/...](https://github.com/Patient0/FirstClassLisp/blob/master/Lisp/LispEngine/Bootstrap/Library.lisp)

</comment><comment><USER6> amb without side-effects can also be expressed in terms of the List monad, e.g.:

        do x <- [1, 2, 3]
           y <- [4, 5, 6]
           if x * y == 8 then pure (x, y)
                         else []

which can be equivalently reworded as the list comprehension:

        [(x, y) | x <- [1, 2, 3], y <- [4, 5, 6], x * y == 8]

i.e., the underlying structure of amb without side-effects can also be understood as just a search of the input space for values that fulfill some criteria, rather than as backtracking via continuations.

<comment><USER7> This analogy misses something fundamental. See how the assignments to x and y are of very different character than the predicate? Notice the return path (`else []`). `amb` doesn't need this.

`amb` merges the assignments and predicate - this is important because you may not know your argument count statically, i.e. if your arguments are a list. But beyond that, `amb` may backtrack an arbitrarily deep call stack, so the the error return does not need to be expressed explicitly. You may think that is good or bad but it is not the same as the Haskell solution.

<comment><USER6> We can implement it with a single `amb` function, too (I took some shortcuts that might have hidden some of the nature of the implementation)!

        -- Lifts a list into Amb.
        amb :: [a] -> Amb a

If we assume Amb is just List, then:

        amb = id

If we write the example in the original article in desugared style, we get:

        amb [1, 2, 3] >>= \x ->
        amb [4, 5, 6] >>= \y ->
        if x * y /= 8 then amb [] else pure () >>
        pure (x, y)

(we are forced to use an awkward condition with `pure ()` on the else branch when calling `amb` because Haskell requires us to return values on all branches. We can rewrite it equivalently in terms of `when` to hide that detail:

        amb [1, 2, 3] >>= \x ->
        amb [4, 5, 6] >>= \y ->
        when (x * y /= 8) (amb []) >>
        pure (x, y)

It now looks more similar to the original example.)

It ends up looking like continuation-passing style: conceptually, if we encounter `amb []` in the nested function, the nested computation ends and we start examining the next value in the list values being assigned to `x`: the implementation given in the original post does end up using callcc, so with some imagination you might be able to derive some kind of equivalence here :)

<comment><USER8> That's not an amb function. That's a builtin type that's inherently amb-y.

You still get credit for solving the basic problem but let's not be misleading.

Also don't forget to call head.

<comment><USER9> In Haskell monads, you define a monadic type and then "bind" is the function that does something specific for that type. "It's a type" because Haskell uses static types and polymorphism to factor out common logic used by different functions.

Of course Haskell list is a built-in type, but it's not magical except for the special bracket syntax. You can make a sugar-free user-defined type

        data List a = Nil | Cons a (List a)

if you want.

<comment><USER8> Yes, I know all of that. I wasn't saying it was magical, I was saying that in that particular code "amb expressed in terms of the List monad" is an accurate description, but "amb function" isn't really true. The monad is doing 100% of the ambiguous operation and the "amb function" does 0%.

As an analogy let's say I define "(" to do write to stdout, and "print" as id. Even though "print(4)" works as expected, my "print function" is a lie.

Or in C source code where adjacent strings get merged, I could [#define CONCAT ] so that ["ab" CONCAT "cd"] gets preprocessed to ["ab" "cd"] and parsed as ["abcd"]. But I didn't actually write a concatenation operator. The concatenation happens because of something else, it would happen even if you didn't use CONCAT, and you can sprinkle CONCAT all over your source code with no effect.

</comment></comment></comment></comment></comment></comment><comment> phoe-krk This actually sounds very Prologesque.

"Here, have some inputs. From those, find me the ones that satisfy this goal."

<comment><USER10> AMB is a very handy primitive to implement prolog.

<comment><USER11> Hmmm... AMB probably is sufficient for a toy version of Prolog.

I feel like anyone actually implementing prolog will need to fully understand horn logic. AMB is a useful operator when the specifics of the backtracking search can be abstracted away.

But an "actual" prolog implementation needs to have a well-defined depth-first search over the horn-logic clauses. There are a lot of optimizations to make horn-logic solvers way faster.

</comment></comment></comment><comment><USER12> I envy the languages with continuations. That makes the implementation of backtracking so much easier.

<comment><USER13> Continuations also allowed me to implement python's yield/send in 16 lines of Scheme code :-)

[http://billsix.github.io/bug.html#_make_generator](http://billsix.github.io/bug.html#_make_generator)

<comment><USER9> You can also implement scheme's call/cc with python's yield/send, right?

<comment><USER13> Incorrect. In c terms, you can think of callcc as a procedure which memcpy s the stack onto the heap for later application. And when it is later applied, the heap allocated stack is memcpy ed back into the stack region of memory, destroying the current stack.

Python and c#'s yield are nothing like that. It's just syntactic sugar for iterators.

<comment><USER14> Python yield actually supports coroutines with bidirectional communication, not just unidirectional iterators; while not as full featured as callcc, these cover quite a lot of the use cases.

<comment><USER13> Agreed regarding use cases. My scheme implementation does both yield and send, cleanly imho, because of call/cc.

</comment></comment></comment></comment></comment></comment><comment><USER10> SICP spends many pages on this.

<comment><USER15> right, actually one of the topics were i stopped on my first readings.

[https://mitpress.mit.edu/sites/default/files/sicp/full- text/...](https://mitpress.mit.edu/sites/default/files/sicp/full- text/book/book-Z-H-28.html)

<comment><USER10> Contextualizing this with Hoare's work on pre and post conditions helped me to understand this chapter. Predication is fundamental to advanced computer science.

</comment></comment></comment><comment><USER16> So it's a base operator for prolog unification?

<comment><USER17> No. From an implementation POV, Prolog adds two pieces to ordinary programming languages: backtracking plus unification. This post talks about backtracking, but doesn't touch upon unification at all.

</comment></comment><comment><USER18> [https://www.rosettacode.org/wiki/Amb](https://www.rosettacode.org/wiki/Amb)

</comment><comment><USER19> I had been wondering what the `amb` operator in Rx is named after. It takes any number of reactive streams and evaluates to the one that first emits a value, discarding the others. I presume the analogy here is that because it doesn't block, it figuratively has to "look into the future" to figure out which stream to return. But is there a deeper theoretical connection there?

</comment><comment><USER20> Regarding the ruby example, thinking about the performance of such a (non-)feature makes my head spin. Not to mention the possibility of side- effects wrecking the program state and the complexity of debugging code like that without making Rubys error handling aware of such a construct.

All in all, this seems like a fun hack, but a catastrophically bad idea in practice.

<comment><USER21> This is an NP-complete problem, so performance will be an issue anyway.

</comment></comment><comment><USER22> For me it looks like this in JavaScript: const [a, b] = permutations(array1, array2).filter(([a, b]) => a*b === 8).slice(0,2);

</comment><comment><USER21> It sounds a lot like constraint programming.</comment>


Zinc – Order products with a few lines of code - <AUTHOR> https://zinc.io <comment><USER2> This fee structure (3-5%) will not work. Exactly why does Zinc need $50 to process my HDTV order but only $0.15 for my banana slicer?

Funding has no transaction fees due to Dwolla transfers and Zinc is most likely taking a cut from Amazon Affiliate program as well (which pays 5-15% commissions depending on category)

Make it a fixed per-order fee.

<comment><AUTHOR> Thank you for your feedback. While we do not earn any commission on sales, we are considering moving to a fixed-fee system.

I also want to point out that Zinc is free if you are placing fewer than 10 orders/month, which is most of our users.

<comment><USER2> Maybe I'm just having a tough time figuring out the use case for your free tier, but if I make less than 10 orders/month, exactly why would I go to the trouble of implementing an API?

<comment><USER3> I'm guessing people that are just tinkering with the API for the fun of automation. For example, I could use this to order new socks every few months. Just because, yay, unexpected socks in the mail.

<comment><USER4> It might be the case that people are just tinkering with this service for fun, but the "yay, unexpected socks" use case seems like a solved problem with Amazon Subscribe and Save lists ([http://www.amazon.com/Subscribe/b/?_encoding=UTF8&camp=1789&...](http://www.amazon.com/Subscribe/b/?_encoding=UTF8&camp=1789&creative=390957&linkCode=ur2&node=979895011&pf_rd_i=subscribe%20and%20save&pf_rd_m=ATVPDKIKX0DER&pf_rd_p=1542108682&pf_rd_r=2FB7714E2588456CAAE1&pf_rd_s=auto- sparkle&pf_rd_t=301&tag=books07059-20)). To each their own, but I just don't see myself reinventing the wheel with this API (not to mention paying an additional 5%) to buy socks/paper towels, when Amazon has already done that leg work for me.

I do, however, agree with meritt's sentiment above...zinc.io could be used to create some valuable services for existing businesses (rewards programs, et al), but as a user of this API, I think it'd be much more cost effective as a fixed per-order fee structure.

</comment></comment></comment></comment></comment><comment><USER5> As Amazon doesn't offer an API for this, how's it done? Scraping? Hordes of low-wage folks filing orders manually? What's stopping Amazon from blocking this?

<comment><USER6> If its manually done... then this an example of how not to do automation.

<comment><USER7> If done manually, it would also a great example of identifying a need before building a product. As long as it looks automatic why would the API user care.

</comment></comment></comment><comment><AUTHOR> Thanks to everyone for your comments and feedback. As we shared on our site, we've been automating ecommerce tasks for a while, but this is our first attempt to open our tools up to the public--and we're learning.

We recognize that our current pricing might not make us suitable for all uses, but we think it will work for enough applications to support us as we build out a killer product.

We really appreciate your feedback as we work to improve what we view as a very flawed ecommerce environment.

<comment><USER8> Looks like a fascinating product. What do you envisage a typical use case to be?

<comment><AUTHOR> We can't share all the specifics of what integrators are building, but some are very clever and surprising. Some are automating business processes and other are creating niche resale stores, but the most fun are the creative/novelty uses we've seen.

</comment></comment></comment><comment><USER9> How exactly do I identify the product I want to purchase? There can be many slightly distinct versions of the same product on amazon. It sounds like I would have to pre-select the products that my users would be purchasing, because for them to search for what they want they'd have to use the amazon website anyway.

I'm just having trouble seeing the value in this, except for the very specific use case of regular, event-driven, identical, automatic orders (eg, I have my lights hooked up to an intelligent system that notices that the bulb blows out, so it then submits the pre-prepared order for the correct bulb via zinc.io).

</comment><comment><USER10> I've been waiting for someone to build this for a while but wow, that's stiff pricing.

<comment><USER11> I'm surprised they're not able to give you money off on each order. Amazon gives up to 8.5% of each order to affiliates (and at least 4%).

<comment><USER12> I was thinking the same thing. Why isn't this a free service that collects an affiliate fee instead. Seems like it would lower the barrier for adoption.

<comment><USER13> The end-user is not clicking through a referral link, going to the Amazon site and making a purchase. How would Zinc earn the affiliate fee? If you're suggesting they negotiate a custom referral arrangement with Amazon, that's probably impossible at the MVP stage.

<comment><USER8> They might be filling orders manually as some suggested. A Turker working for Zinc.io and placing the orders via their affiliate links would do the trick. No need for negotiations etc.

<comment><USER13> You can't refer yourself, else the program wouldn't work -- everyone would sign up, everyone would click their own links, and Amazon would effectively have dropped its prices across the board while adding a rebate-processing overhead to every order. That's why program agreements virtually always prohibit this.

<comment><USER8> Amazon is careful about this with their affiliate program - but most other retailers aren't in my experience.

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> What's with all these startups taking so much design inspiration from Stripe?

[https://www.shirts.io/](https://www.shirts.io/)

[https://zinc.io/](https://zinc.io/)

<comment><USER15> Stripe is a hit with developers because of their easy API and great documentation. It's not a surprise that other "by techies for techies" API startups are taking inspiration from a leader in the industry.

</comment></comment><comment><USER16> Has anybody else noticed the similarities between this design and Stripe?

</comment><comment><USER17> Why would you send "A Million Random Digits with 100,000 Normal Deviates" to Norman Borlaug, the inventor of Dwarf Wheat? Is this some kind of hipster pranking?

</comment><comment><USER18> I can imagine a company using this to implement an employee incentive system where employees can get any book from Amazon for free.

</comment><comment><USER19> Front page needs an editorial review:

Zinc let's you build things... -> Zinc lets you build things...

(``let's'' = ``let us'')

</comment><comment><USER20> Nice to see a shout out to the great man that was Norman Borlaug in their order.

And the book they chose looks like a fascinating read.

</comment><comment><USER21> the 3% and 5% fees seem like complete BS

<comment><USER22> I think they fill out the Amazon order forms manually so they're just trying to recoup costs.

<comment><USER23> But what's stopping them from collecting the affiliate fee?

This narrows the use-cases for this quite a bit. Not only are they forcing you to forgo collecting the fee yourself for somebody you referred to Amazon to make a purchase (assuming this is a service/app you've created), you have to pay _more_? So really, depending on the model, you'd have to mark up the Amazon product ~10-13% just to cut even.

<comment><USER15> Amazon Associate's TOS. You can't get affiliate fees for products you purchase (technically they are still the purchasing agent--you even contact Zinc for a return label).

</comment></comment></comment></comment><comment><USER22> Why does `gift_ship` default to true?

<comment><USER24> So the customer doesn't know the order came from amazon, or the true price of the product?

I'm guessing this is aimed at resellers. They likely wouldn't want the end- user knowing this info.</comment></comment>


Stanford's social robot 'Jackrabbot' seeks to understand pedestrian behavior - <AUTHOR> https://news.stanford.edu/2016/06/01/stanfords-social-robot-jackrabbot-seeks-understand-pedestrian-behavior/ <comment><USER2> There's a classic paper on this: "Go ahead, make my day: Robot conflict resolution by aggressive competition"[1] The idea is that robots should use "aggressive signaling" to get other robots and humans out of the way.

Some mobile robots used in hospitals have been programmed to be slightly pushy in their movements when obstructed. Otherwise, they stall out whenever they encounter a corridor blocked by two people standing and talking.

[1] [http://robotics.usc.edu/publications/downloads/pub/127/](http://robotics.usc.edu/publications/downloads/pub/127/)

</comment><comment><USER3> Understand unexceptional behavior?</comment>


Show HN: We built a popular plugin-based social app using HTML5 - <AUTHOR> https://happening.im/hn <comment><AUTHOR> Hi HN, one of the app's creators here. We wanted to show you guys Happening - an app that makes damn sure you have fun with your group of friends :)

Interesting to you guys should be that it's a hybrid app that uses HTML5 for almost everything. Our users don't seem to mind: it's been downloaded almost a million times already in our (tiny!) country the Netherlands.

We'd really appreciate your feedback: please join the special 'HNers' group by visiting [https://happening.im/t/ARHMUENYF](https://happening.im/t/ARHMUENYF) \- or take a crack at developing your own plugin on [https://platform.happening.im](https://platform.happening.im) . Thanks!

<comment><USER2> It would be nice to have a public group that I could try out without having to sign up. I wanted to checkout the HN group but I don't want to go through the hassle of signing up.

<comment><AUTHOR> We wouldn't have a way of reaching you to tell you about things that happened in the group. Also, it would result in a lot of anonymous users joining the HN-group. Or would you be fine with us just asking for your name?

</comment></comment></comment><comment><USER3> I like the concept a lot. I feel like it needs a bit more polish but I can't put my finger on what it is. Maybe there is too much color or the interface is too busy. Try adding some padding.

<comment><AUTHOR> Yeah it's a busy app for sure; lots of things to do (did you take a look at the plugin store?) and discover - and I agree: some of it could use some more love with regard to design.

We wanted a playful look for the app, hence its colorfulness. Maybe we took it a little too far?

<comment><USER4> "did you take a look at the plugin store?"

There is no link to any plugin store from your website.

<comment><AUTHOR> The plugin store can currently only be viewed from within the app.

</comment></comment></comment></comment><comment><USER5> Cool to see howmuch you guys have grown. I'm from Belgium and it became a mini hype here ~1.5y ago. What's your current DAU nowadays? And do you run any underlying framework?

</comment><comment><USER6> I really like your document explaining when and when not to develop apps for happening: [https://platform.happening.im/docs/introduction.html#when- to...](https://platform.happening.im/docs/introduction.html#when-to-use- happening)

</comment><comment><USER7> Nicely animated "Loading...".

( Firefox user here, with messages like "The Application Cache API (AppCache) is deprecated and will be removed at a future date. Please consider using ServiceWorker for offline support." in the console when trying to load the site. Chrome is fine. )

<comment><USER8> We have primarily focused on our iOS/Android apps. That's where 99% of our funnel takes place.

Because everything was already built with HTML5 (or actually: WebKit's HTML5), we got Chrome/Safari support almost for free and that's why the web version exists.

Getting firefox and IE to behave is something that still needs some attention. Thanks for trying out!

</comment></comment><comment><USER6> This is really interesting. It actually reminds me a lot of the chinese messaging app weChat.

Accidentally, weChat announced their app platform yesterday, which allows developers to develop apps run inside weChat messenger.

</comment><comment><USER9> Cool to see you're still at it!

I think I wrote one of the few first real third party plugins when this was hot in Holland last year.

</comment><comment><USER10> HTML5 for the frontend, right? Backend?

<comment><USER8> Happening Plugins use Javascript (or Coffeescript compiled to Javascript) for backend logic with simple APIs for Push notifications/HTTP calls/Timers/group management (see for instance [https://platform.happening.im/docs/server- app.html#app-data](https://platform.happening.im/docs/server-app.html#app- data), or the server.coffee code on the platform page). This server-side javascript runs in custom V8 instances and calls out to the core Happening backend (which is implemented in PHP/Go/C++).

<comment><USER11> Wonderful concise description of your tech stack. Thanks for sharing! Love it when people actually describe this on HN</comment></comment></comment>


Apigee Strips Facebook Naked, Letting You Play With Its Innards - <AUTHOR> http://thenextweb.com/apps/2010/06/29/apigee-strips-facebook-naked-letting-you-play-with-its-innards

<comment><USER2> _5 points by scottregan 1 minute ago_

5 upvotes in a minute? Flagged

<comment><USER3> Interesting. Are you suggesting a voting ring or something? Is flagging usually used as a way to let the moderators know that something fishy might be going on?

<comment><USER4> No, that is not the way flagging should be used. My understanding is that flagging leads to automatic killing of stories. If people were to flag the story based on this insignificant evidence, it would get killed even if there isn't anything malicious going on.

Voting rings shouldn't lead to a story getting killed anyway. It's technologically trivial to negate the effects of simple voting rings (e.g. a voting ring that would lead to five votes in a minute), so if it's something that is frowned upon, that should be taken into consideration when ranking stories.

Can we talk about the actual story now?

</comment></comment></comment><comment><USER4> I needed something like this 30 minutes ago, and I found Apigee when I Googled for "facebook graph api console". I didn't know it was new. I wonder what else I can will into existence by Googling it...

</comment><comment><USER5> Would love to try this, but I'm hesitant to give any 3rd party complete access to my account.

Does anyone here work for Apigee? Can someone vouch for their trustworthiness?</comment>


Half-Life: Alyx isn't VR's killer app – but it's modding community could be - <AUTHOR> https://nwn.blogs.com/nwn/2020/04/hammer-valve-source-2-level-editor-alyx.html <comment><USER2> VR already has a killer app: Beat Saber. As for Half-Life: Alyx, it's very well done, but dear god is it intense. I'm playing through it a few minutes at a time because that's all I can handle. VR is incredibly immersive, but as it turns out, there are worlds I just don't enjoy being immersed in, and the oozy, drippy, terrifying world of Half-Life (much as I love the previous games), is one of them. The new gravity gloves are a delight, however.

<comment><USER3> I've been watching playthroughs because I don't want to purchase the setup for Alyx at the moment for several reasons. My impression matches yours. It seems like a great game, but in watching it, I realized it's basically all the urban City 17 setting of HL2, which was my least favorite setting of the previous HL2 episodes. It reminds me of a very well-done variant of HL2:E1, which I found very intense and claustrophobic. I'm very interested in playing it but maybe less so than if the game involved a wider range of environments. I can't fault Valve for focusing on what they did, but at the moment something more relaxing or casual is more commensurate with my mood.

</comment></comment><comment><USER4> fwiw, there is VR support fo Garry's Mod: [https://steamcommunity.com/sharedfiles/filedetails/?id=16784...](https://steamcommunity.com/sharedfiles/filedetails/?id=1678408548)

<comment><USER5> Darkrp VR, i can't wait!</comment></comment>


Tesla can change so much with OTA updates that it's messing with owners' heads - <AUTHOR> https://www.theverge.com/2018/6/2/17413732/tesla-over-the-air-software-updates-brakes <comment><USER2> Dear XXX,

We found your online 3 star review of your new Tesla inadequate, and are removing your right to air conditioning in your Tesla. Please notify us when you've updated your review.

<comment> Digital-Citizen I think that's entirely possible and likely to happen if not with Tesla than with some other proprietor. We've already seen something like this happen with a flight simulator (the proprietor indiscriminately distributed password- reading malware to all of their users as part of the standard install, and alleges that they only used the power of that malware against those who shared copies with others. Those users were smeared with the propaganda term "pirates"). It happens with each DRM story (for example: Neverwinter Nights 1 & 2, Microsoft Flight Simulator X, Swat 4, Sniper Elite, Hidden and Dangerous 2, Wings of War, Star Wars: Battlefront are no longer able to find and/or host multiplayer games. Proprietor, UK game developer Rebellion, tried to pass blame for this off onto their provider GLU Mobile instead of recognizing how they set the stage for this to happen early on by selling their users free software which would have allowed users to host their own multiplayer servers or pick another server).

I hope Tesla releases free software for all of the software in Tesla vehicles and thus frees Tesla car owners to protect themselves from precisely what you describe.

The only thing I think might play out differently: the proprietor won't be so forthcoming about why as you describe. The use of structurally abusive power (such as pulling people's purchased books from their eBook readers via DRM as was done with "1984") often happens with no explanation and some users are naive enough to not demand better.

That's the power of proprietary software and a big part of the practical reason why we should all value software freedom for its own sake, run free software systems, and champion software freedom to others.

</comment></comment><comment><USER3> Oh come on. It's likely that almost every product is released with a huge number of flaws. Over the air updates just makes it more apparent.

<comment><USER4> Agreed. Better an OTA update than having to wait at a dealer for recall work.

</comment></comment><comment><USER5> Opposed to manufacturers still doing updates over USB hell who take years to patch vulnerabilities. Why the NTSB doesn't demand source code is beyond me.

<comment><USER6> There is nothing wrong with being required to take you car in to get an update for something that need to pass certain safety standards.

Do you want OTA updates from Boeing or Airbus?

From what I have read on another post on HN, Waymo specifically does not have the ability to do OTA updates although the car is connected all the time.

<comment><USER7> The more difficult an update is, the fewer cars get it. Many people unknowingly buy used cars that have outstanding maintenance notes and recalls.

<comment><USER6> Isn't that what state vehicle inspections are for? If you don't have the latest safety update you should not pass the inspection and not be able to continue to drive until you get the update.

<comment><USER7> I don't know about your state, but in California, they have absolutely no fucking clue about whether your car has outstanding recalls or maintenance notes, all they check is smog. If your car isn't electric, and is sufficiently old.

Back when I lived in South Carolina, they'd check that the blinkers and brake lights were working. Not in California.</comment></comment></comment></comment></comment>


The missing Samsung EVO 840 – 250 GB SSD Repair Manual [pdf] - <AUTHOR> http://www2.futureware.at/~philipp/ssd/TheMissingManual.pdf <comment><AUTHOR> This was far more in-depth than I expected. Interesting read if only for the hardware/software interfaces.</comment>


Human life will likely be extendable by gene "hacking" - <AUTHOR> http://www.youtube.com/watch?v=1kyZ_jGYl50

<comment><AUTHOR> Anyone up for some testing?

(found the video after reading this article. [http://www.dailymail.co.uk/health/article-1323758/Can- cuttin...](http://www.dailymail.co.uk/health/article-1323758/Can-cutting- Carbohydrates-diet-make-live-longer.html))

Will be cool to live longer for most I assume but also I would guess that many would have an issue with messing with "mother nature"...</comment>


Show HN: An automated company naming platform, released a free naming tool - <AUTHOR> https://www.appellita.com/company-name-generator <comment><AUTHOR> Hi Everyone, I built Appellita. I used an extensive dictionary, natural language processing, and startup naming techniques to form the names. All the names are pre-checked for domain availability as well. Check out the free Name Ideation Lab while it's still free. Feedback is appreciated!</comment>


AWS S3 vs. Azure vs. Google storage market share - <AUTHOR> http://blog.filestack.com/thoughts-and-knowledge/aws-s3-vs-azure-vs-google-storage/ <comment><AUTHOR> Not surprising that s3 is in the lead, but somewhat that Azure is growing so fast, while Google is not. Of course, not representative of all use cases, but still, probably a pretty good proxy for overall cloud market share.</comment>


Hulu debuts $40-per-month live TV streaming service with over 50 channels - <AUTHOR> https://arstechnica.com/business/2017/05/hulu-debuts-40-per-month-live-tv-streaming-service-with-over-50-channels/ <comment><USER2> On a quick survey of it, it seems like the offering and pricing is similar to Sling TV but 1) you can't customize what you get, and 2) you get all of non- live Hulu bundled in the price.</comment>


The Case vs Ad-Supported Platforms - <AUTHOR> http://www.digiday.com/platforms/the-case-vs-ad-supported-platforms/ <comment><USER2> Dalton's definition of a platform is excellent. It doesn't reach up and mess with your application.

</comment><comment><USER3> > They'll never charge you a percentage of business or threaten to get into > your business. That's a true platform because they're getting paid to > provide a service.

Just because they're charging you a percentage doesn't make them not a true platform.

Oracle and Gemstone used to (and probably still do) as for a percentage of your budget/estimated sales rather than a strict rate.

</comment><comment><USER4> Is the author using "vs" as a synonym for "Against" in the headline?

The two expressions cannot be used interchangeably.

"X vs Y" seems to require that X and Y be "of the same type", whatever that means.

"X against Y" has no such restrictions.

When I read this headline, I come away thinking that there is some product with the proper name "The Case".

<comment><USER5> Same here. Hard to take an author seriously with such a boneheaded illiteracy in the title.</comment></comment>


Make America Great Again by Cracking Down on Tax Havens - <AUTHOR> https://www.theamericanconservative.com/articles/make-america-great-again-by-cracking-down-on-tax-havens/ <comment><USER2> Prediction: on detailed analysis, this measure will turn out to have the ("unexpected!") effect of reducing the taxes of billionaires, and raising mine.

Just like last year's "tax cut".</comment>


The ideal startup career path - tomh- http://cdixon.org/2009/10/22/the-ideal-startup-career-path/

<comment><AUTHOR> In todays time there is no guarantee anywhere so why not pursue your dream.If your dream is to work in a startup, create something that is used by millions then there is no point holding back.last year has shown that even elephants can collapse.False sense of security that was provided by bigger companies is no longer there. I do agree though that for many people money is a driving factor and there is nothing wrong with that.One thing is there atleast in a startup there is hope that you can make big some time.Also based on your skills if the startup collapses you can always get a new job if you want to shift back then why not try.

</comment><comment><USER2> It is true that most early startup employee will not become financially independent if/when the startup sells.

However, if you take away this dream, I suspect a lot of non-founding, startup employees would not risk leaving a stable job to work at a startup. They know they're too risk adverse to startup their own company, they're not interested in being mentored or eventually funded, and they prefer stability over excitement.

What leads them to working at a startup is the promise of making it big someday, maybe they know people who have done it. Or read about it.

I'm not really judging this, but more so just pointing out what I've seen. I am not recommending that you, as a founder, lie or deceive them,. However, the truth is that if you take away their hopes and dreams (and people can be very imaginative), you'll have a much smaller talent pool to choose from.

<comment><USER3> We actually tell people this, and work through a few example exits to educate them on what it would mean for them financially. Then we tell them that we'll have a great time working with unbelievably excellent people on a supremely meaningful problem, that they get a better education in how startups work that anywhere else, and that they'll actually be paid pretty well for it. And then we tell them that big companies are impersonal, and routinely fire great contributors for stupid reasons, and that if we go out of business the founding team will personally work our utmost to find our employees good jobs.

It does convince people, most of the time. More importantly I think I sets the right tone for our relationship going forward. This is not a big company. Startups are a family.

<comment><USER2> That's great to hear, and it sounds like that's helping build a strong, honest culture.

What bothers me are when I see good, capable people who stay with a sinking ship only because they're holding onto hope. I feel like some startups exploit that hope in a negative way. I don't know how often this happens, but I have seen it a couple times.

</comment></comment></comment><comment> tomh- As student I joined a startup which has shown me a lot of insight which will definitely useful in case I ever join another one. I can also recommend joining startups which operate in slightly different industries to get a broader understanding of different aspects of a startup.

</comment><comment><USER4> So when is one too considered too old to begin a startup company? Do most folks consider a 30-year old to be a bad fit for his first startup job?

<comment><AUTHOR> Adobe was started by their founders when they were in their fiftees. KFC was founded by the founder when he had retired. It is never too late to pursue your dream.</comment></comment>


"The worst factory reset process I've ever seen" - <AUTHOR> https://twitter.com/security_craig/status/1141708213001293825 <comment><USER2> While I agree that the method is pretty bad, I think the video is about as top notch as it could have been given the reset method choice.

You're meant to use the video at the same time as you're performing the reset, and it gives you a timer to help out. Also, the changes are synced with the moments he says "on" or "off."

</comment><comment><USER3> Dear god I thought that video would never end... Turn off for 2 seconds, Turn on for 8 seconds, Turn off for 2 seconds, Turn on for 8 seconds, Turn off for 2 seconds, Turn on for 8 seconds, Turn off for 2 seconds, Turn on for 8 seconds, Turn off for 2 seconds, Turn on for 8 seconds, Turn off for 2 seconds, Turn on for 8 seconds, Turn off for 2 seconds, Turn on for 8 seconds......

My Sengled bulbs just require I essentially strobe the light like 5 times or something like that which isn't great but it's better than this.

<comment><USER4> > My Sengled bulbs just require I essentially strobe the light like 5 times or > something like that which isn't great but it's better than this.

unless you have kids tall enough to reach the light switch

</comment></comment><comment><USER5> This video caused a good amount of lost productivity in my engineering department yesterday. It was worth it tho haha

</comment><comment><USER6> This is absurd, the bulbs don't need to be hermetically sealed like incandescents were, so just put a tiny little 'reset' button somewhere rather than all this stupidity.

<comment><USER7> While the reset procedure is too much there does need to be a way to reset bulbs are out of reach.

</comment></comment><comment><USER8> Did they pay the guy to say it that many times or just put it on repeat to save money?

</comment><comment><USER9> Usually this is called "Easter egg".

</comment><comment><USER10> Not everybody with access to the light switch should be able to take control. This is a security problem.

</comment><comment><USER11> "You need to complete this procedure after the new moon, during waxing crescent!"</comment>


Ask HN: What benefits might come with an economy based on a cryptocurrency? - <AUTHOR> I'm genuinely curious in different people's answers to this question about a hypothetical far off circumstance where a cryptocurrency would replace the US dollar- I personally have been having trouble seeing the benefits that many people seem to implicitly assume in discussions.
The negatives I see:
1. Inability of a central bank to regulate the econony through quantitative easing and other economic policy. An economy based on cryptocurrency seems like it'd have the same problems with return to a gold standard, mostly financial instability. I understand that for some ideologues this is a plus,  most mainstream Americans and economists and basically the government of every developed country would tend to disagree.
2. It could feasibly become more difficult to enforce tax policy. As an alternative positive, an open ledger monitored by a savy IRS might actually make enforcing tax policy easier. Again, understand that for some ideologues an untaxable currency is a plus, but most people would disagree strongly.
3. The transition from fiat to cryptocurrency would likely be chaotic and result in a transfer of wealth along uncertain lines - who would gain? Who would lose? Somehow I doubt the working poor would be the big winners.
So what do other people see as the key longterm economic positives from cryptocurrency? <comment><USER2> I would say:

1\. Decentralized

2\. Anonymous depending on the coin

3\. Less fees (once scaling is fixed) for international needs

4\. Non-government / state-controlled currency</comment>


Digital Privacy Is a Class Issue - <AUTHOR> https://newrepublic.com/article/154026/digital-privacy-class-issue <comment><USER2> (1) This isn't new at all. Turn on the television near Syracuse NY and you'd get the idea that there isn't anything to the economy than collecting Medicare benefits and getting a hit by a car so you can get a big payout with the help of a personal injury lawyer. Once in a while you get an ad for a car dealer because if there weren't any cars then you couldn't get hit by one.

Not all cities are like that; in Binghamton you might see an ad for something you can buy with your own money from time to time.

(2) If 10% of the population has 70% of the wealth or whatever it still seems that 70% of the marketing effort will be aimed at 10% of the people, even if 90% of people don't ever see it.</comment>


Recruitment to Resignation: My Four Months at Microsoft - <AUTHOR> https://medium.com/@bob_parks1/recruitment-to-resignation-my-four-months-at-microsoft-41ad863f1591 <comment><USER2> Certainly sounds like your manager had decided he did not like you/want you on his team, before you even started. Maybe he didn't like something about your resume. After moving across the country it seems like you could have tried harder to get into another team. Maybe in the new team you would have had the star treatment. Companies as big as Microsoft are not uniform, one team might have been a perfect fit and a great experience, another team could be a disaster.

If you are on the verge of resigning then you no longer have anything to lose and so you should have gone to your bosses boss. Point out what happened and why you are leaving. Doubt it would have solved the issue but it does mean that his behaviour was flagged up to another level. Otherwise there is no downside to his treating people the way he did.

</comment><comment><USER3> Sounds like a terrible experience. It is probably best that you got out of the situation. That being said, waiting two weeks for him to invite you into his office for a one-on-one is crazy. You have to be direct with people and make yourself visible. Believe it or not, it is possible to do without 'driving over people'. Hang in there, you will bounce back.

</comment><comment><USER4> There's some more information by the author in the reddit chat on the same topic: [https://www.reddit.com/r/programming/comments/3mqngu/recruit...](https://www.reddit.com/r/programming/comments/3mqngu/recruitment_to_resignation_my_four_months_at/)

</comment><comment><USER5> Sounds like he dodged a bullet.</comment>


Brushing up on Computer Science Part 1, Big O - <AUTHOR> http://www.victusspiritus.com/2011/03/14/brushing-up-on-computer-science-part-1-big-o/ <comment><USER2> Personally, I think everyone who writes code for fun or profit should have a copy of the CLRS[0] nearby. The first few chapters are enough of have an excellent understanding of the topic of Big O. I would not recommend reading the book cover to cover, but each chapter is pretty self contained and after you get used to reading the book, makes for great weekend reading.

The thing with algorithms is you don't always see how they are useful if you aren't familiar with them, being able to quickly identify a hard problem as hard and have a solution already available is very valuable (even if you have to research the solution). If you code for fun, these are the funnest problems to think about. If you code for profit, even if you almost never need to use sophisticated algorithms in real software, making use of them even just once should give you a pretty good advantage over your competitors (since truth be told, outside of Google and the like most software developers do not have a copy of CLRS on their desk)

[0] [http://mitpress.mit.edu/catalog/item/default.asp?ttype=2&...](http://mitpress.mit.edu/catalog/item/default.asp?ttype=2&tid=11866)

<comment><USER3> That's one of the few hard-copy books I keep around (I don't like wasting dead trees for something that will be outdated in a few years). I don't think it makes for a good self-teaching book for many people, because it's very long and dry, though it's still a great reference.

</comment></comment><comment><USER4> For those looking to actually practice calculating Big O for functions, here are some useful problem sets, with answers:

<http://www.cs.wustl.edu/~sg/CSE241_SP08/hw.html>

Problem set for Big O and recursion:

[http://www-cs-faculty.stanford.edu/~eroberts/courses/cs106b/...](http://www- cs-faculty.stanford.edu/~eroberts/courses/cs106b/handouts/23-section-3.pdf) (see last page)

and answers:

[http://www-cs-faculty.stanford.edu/~eroberts/courses/cs106b/...](http://www- cs- faculty.stanford.edu/~eroberts/courses/cs106b/handouts/23a-section-3-solutions.pdf)

I also recommend the algorithms course from ArsDigita,

<http://aduni.org/courses/algorithms/>

</comment><comment><USER5> The link to the "Plain English Explanation of Big O" is the best part of this article.

<comment><AUTHOR> I concur, and I'm the author. It's a wonderful introduction to Big O for folks that struggle with it. My post is merely a tool to help refresh my knowledge of fundamental concepts. William Shields does an excellent job of making Big O approachable to non-CS majors.

The only passage I take issue with is his description of O(n) arithmetic examples. In my thinking addition/multiplication are O(1) but I blame that view on years of thinking about FLOPs and letting thoughts of # of operations conflate with big O notation. In practicethe example of adding two large integers is a single operation, or at least a fixed size handful operations for arbitrary precision.

</comment></comment><comment><USER6> Nowhere does this article provide a definition for big-O notation. Also some important details seem to be missed - in particular the fact that O(f(n)) describes an asymptotic _upper bound_ on f(n). For example, searching on an unsorted array is O(n!), it's just not a very tight bound.

The linked-through article is much better.

edit: more precise wording

</comment><comment><USER7> Next up? Big-Omega and little-o.

[http://en.wikipedia.org/wiki/Big_O_notation#Family_of_Bachma...](http://en.wikipedia.org/wiki/Big_O_notation#Family_of_Bachmann.E2.80.93Landau_notations) [http://en.wikipedia.org/wiki/Big_O_notation#Little- o_notatio...](http://en.wikipedia.org/wiki/Big_O_notation#Little-o_notation)

The information on wikipedia is hopelessly inadequate for the layman to learn from. I'd suggest somebody should edit it but it'd probably just get reverted.

Big-O is one of those concepts that is fantastically important for anyone doing algorithm design. I wouldn't go so far as to say that one has to master it, but thinking deep thoughts about the complexity of your algorithm can have amazing results.

This is one of those topics that, in my experience, few self-taught developers know about. A little story to illustrate. My wife was not really much into typical computer developer stuff (nerd things, programming for fun, playing with legos, etc.), but she was very strong in math and managed to work through a B.S. in C.S. During college she interned for a fantastic self-taught developer. I say fantastic because he managed to write a rock solid, very scalable e-commerce back-end for a very large and very active site. It was seriously impressive stuff.

Where he was struggling was with writing the reporting system. His system was gathering tremendous amounts of data, but aggregating and pooling that data into a meaningful and interactive reporting system had him completely lost. His best shot at it took somewhere between 11 to 12 hours to compile the results...or crash sometime during the night.

Eventually management wisely put the project on a backburner over other front- end tasks with a strong desire to revisit it soon. My wife was given the task to look at the code and see if she could do anything with it. After going through the code and experimenting for a few days, she discovered that the developer, in keeping things simple for himself was storing all of the data for aggregation in associative arrays (this was his convention and it actually really did make the code easy to maintain the way he used them). She dug into the associative arrays a bit and started calculating on a notepad the complexity of allocating millions of these things in memory. Very quickly she realized that there were two issues.

1) The associative arrays took a long time to allocate in memory, lots of bookkeeping variables and pointers were allocated with each one.

2) Each associative array ate up x bytes in memory. As they were allocated, in about 11 or 12 hours they would consume all available system memory, explaining the observed behavior.

So she set out, with a notepad to come up with a data structure and algorithm to do the task as optimally as possible and without consuming system memory.

Before ever writing any more code, she had come up with a solution. Then she went about rewriting a bunch of the system and it worked! In fact it was so fast that it could complete the task in about 30-45 seconds...meaning that it was feasible to make the process interactive rather than a nightly batch process.

When asked to explain how she arrived at the solution, my wife went into a discussion of Big-O and how she realized the old system showed growth that was far too fast to work, so she tried to set out and come up with a solution on a slower growth curve. Her developer boss had never heard of Big-O before, but the real-life example he had just seen blew him away.

He ended up learning the topic and applying it back to the rest of his work. A couple years later they spoke again and he said it was probably the single most important thing he had ever learned as it had opened up entire new projects for him that he thought were undoable as well as entirely new ways of analyzing data structured and algorithms that he had never considered.

<comment><USER8> I'm having difficulty reconciling these two statements,

 _His best shot at it took somewhere between 11 to 12 hours to compile the results...or crash sometime during the night._

 _the developer, in keeping things simple for himself was storing all of the data for aggregation in associative arrays_

With this one,

 _I say fantastic because he managed to write a rock solid, very scalable e-commerce back-end for a very large and very active site. It was seriously impressive stuff._

My reason is that I have difficulty calling someone a "fantastic developer" if they don't have a basic understanding of algorithms, data structures and systems. (If something takes a long time or crashes, run-away memory usage should be high on the list of suspects if you have basic systems knowledge.)

<comment><USER7> Yeah, I can understand why that might seem off. I'm using "fantastic" to mean "built really rock solid stuff, from scratch, on his own without any formal education". The e-commerce site, being a bunch of smallish transactions was much easier and more obvious to scale than a huge numbers crunch on a single system (this all predates the common usage of map-reduce algorithms which probably would have been an even better fit in the end).

Plus there's tons of great tech out there that helps with scaling a site (load balancers, sharding databases, etc.) that he didn't have to come up with, but not a lot for building custom reporting tools to spec for business types. Most of the requirements for the reporting tool weren't too bad -- "how many of this sku did we sell in the last 24 hrs, 7 days, 30 days, year, forever?" and could be solved pretty quickly and trivially. But scale something like that up, across all skus, correlated to individual users, or user locations, or supplier/warehouse availability, or whatever of another 100 variables and things get complicated very very fast, then aggregate those results and provide meaningful output to business types, and we're starting to talk Computer Science vs. Development.

The story wasn't mean to pump my wife up over her boss, at the end of the day, she solved one problem using her education, but she probably wouldn't be able to sit down and build what he built elsewhere. There's a tremendous amount of practical engineering knowledge that she (and I) just don't have (and don't learn in school) that her boss did have -- mostly things you just have to learn that kind of thing on the job.

I guess it really comes down to the semantics of developer. He's a great software engineer type, he can plug components together to build bewilderingly complex systems, but at the time he had a very naive view of algorithm design...which is a very different discipline.

<comment><USER8> It is a semantics issue, but just like I expect mechanical engineers to have a strong grasp of Newtonian mechanics, I expect software engineers to have a strong grasp of algorithms and data structures.

<comment><USER7> I suspect at some point the development community is going to have to come up with better names to call people.

A person who is fantastic with web technologies may not be great with real- time audio processing tools or graphics processing tools or Natural Language systems. But a person who is a genius at with NLP may not be able to cobble together a website or write an algorithm for fast approximations of an inverse square function. A developer who understands how to squeeze every last cycle out of an embedded system will likely be lost in a massive enterprise environment and a person who specializes in machine learning may stink at writing efficient database and storage systems. A developer great at crypto systems might be laughed at if he wrote a video game. Someone who specializes in low level cache optimization may have absolutely no clue how to write an e-commerce system. And a lifelong mainframe developer would be lost writing device drivers.

I suspect that most people aren't _great_ at everything, even top-notch developers. More likely people are really great at one thing, and pretty good at a couple others and lousy at the rest.

There's a few exceptions I'm sure, but if your definition of "great developer" only includes those people who are great at every bit of software development trivia then we're probably talking about only a handful of people on the planet.

Algorithm optimization is _hard_ and often not-obvious (how many people really understood the algorithm for the fast inverse square root? I bet thousands of developers used it, even plenty of great ones, but groking it is so rare that a series of articles was actually written to explain it)

There are plenty of perfectly competent and solid developers (even great) who can hack together great stuff in their domain, but struggle with even the basics just outside of that. An autodidact will probably be pragmatic with what they learn, and most of that will probably be plumbing work since that's what's strictly required to get something up and working.

I see looking at your page that you specialize in high-performance computing and parallel systems. Are only developers who understand those topics great developers? Because most developers don't do well with those topics. Even the dev shop at Valve has struggled with parallelizing their software.

Saying "I expect mechanical engineers to have a strong grasp of Newtonian mechanics", do you also expect them to have a strong grasp of non-Newtonian mechanics? Since Newton's equations are simply a special case of relativity, why shouldn't they know how to calculate the load stresses on a mechanism using Einstein's much more precise work? Shouldn't they really have a fantastic understanding of particle physics and quantum mechanics too? I mean, the binding forces that hold together the materials they work with every day are subject to that basic knowledge!

Alas! Now I'm concerned that the plucky civil engineer, when designing the overpass I take to get home from work today, didn't quite get the section on QCD Color Charge because he mistook the professor's sloppy handwriting of lambda for an 'A'!

Perhaps my downtrodden electrical engineer is hiding a secret shame, he's never understood how to accurately calculate ballistic trajectories over the surface of the Earth! Oh sure it looked so simple in class, but they never went over how to actually do it, taking into account variable atmospheric resistance, and a suitable model of the Earth's actual shape, and GRAVITY! Oh gravity...why do you have to subtly change as the mistargetted missile drifts lazily across your forlorn belly! It's just dif-EQ after all! Why then, did his water ballon slingshot fail to hit his neighbors house precisely where he wanted it?

I suddenly feel a great pity for these noble engineers, overcoming such obstacles, such gaps in their basic knowledge! Yet still my overpass stands, and still my car works, and still my lights turn on. Only because of this spark of competence shall their secret, their hidden failings, remain safe with me.

<comment><USER8> While I agree that more accurate terms would be a good thing, I don't think my expectations are all that high - nor does it only include "people who are great at every bit of modern software development." And I _certainly_ did not imply that only people who are good in what I'm good at are good developers.

What I do expect is for "good developers" to have, _at least_ , a firm grasp of the material covered in most undergraduate Computer Science curriculums. It's funny that you also use "real" engineers as an example, because we know that any practicing engineer does have a firm grasp of the fundamentals of their discipline: they had to take a licensing exam which ensured so.

<comment><USER7> Maybe we should do a poll of HN? How many people know the details of algorithm design w/r to the Family of Bachmann–Landau notations?

"It's funny that you also use "real" engineers as an example, because we know that any practicing engineer does have a firm grasp of the fundamentals of their discipline: they had to take a licensing exam which ensured so."

But do they understand the fundamentals in the examples I provided? My Civil Engineering friend (with a PhD such) doesn't know the first thing about QCD and he'll gladly tell you that. It's all just physics though right?

 _edit_ poll is submitted.

<comment><USER8> I never said details. I just expect a firm grasp of the fundamentals. If I say "This algorithm is linear," or "This algorithm is quadratic," or even, "This algorithm is linear in the worst case, but constant in the average case," I expect them to know what I mean. Anyone who pulls a B average in an undergrad CS program should be able to do that.

I find your example with civil engineering and QCD disingenuous, because one doesn't need quantum theory when building buildings, bridges and roads. My point in mentioning Newtonian mechanics is that it is the _foundation_ of mechanical engineering. I never said "it's all just physics," so I don't know why you did.

<comment><USER7> Considering that the developer in question was described as an autodidact and lacked formal training, your rebuttals are just becoming pedantic.

 _I find your example with civil engineering and QCD disingenuous, because one doesn't need quantum theory when building buildings, bridges and roads._

You conflate fundamental academics with fundamental knowledge.

People were building all kinds of great things before Newton. Lots of that stuff is still standing, some of it is still functioning.

Here's some examples:

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

<http://en.wikipedia.org/wiki/Pantheon,_Rome>

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

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

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

[http://en.wikipedia.org/wiki/List_of_aqueducts_in_the_Roman_...](http://en.wikipedia.org/wiki/List_of_aqueducts_in_the_Roman_Empire)

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

Civil Engineering not your thing? Here's some mechanical engineering

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

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

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

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

<http://en.wikipedia.org/wiki/Catapult> \-- you couldn't _possibly_ make one of these without knowing Newton's laws of motion...

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

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

<http://en.wikipedia.org/wiki/Crank_(mechanism)>

Here's some pre-Newton celestial mechanics

<http://en.wikipedia.org/wiki/Armillary_sphere> \-- some even hydraulically powered!

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

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

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

These guys got along more or less alright without fundamental Newtonian mechanics

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

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

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

I could go on, but you probably get the point.

To hear you tell it, humans were just scratching around in the dirt until Newton lifted us into civilization on the wings of F=ma.

One doesn't _need_ big-O to write software either -- even great software. I know that in academia these kinds of things are seen as absolutely fundamental, every published algorithm paper should at _least_ show complexity for big-O (at a minimum) to be taken seriously. And that's great for your milieu, but you need to come down from Mt. Olympus and mix with the rest of us mere mortals and just build stuff. I guarantee you can build all sorts of wondrous, magical things without ever even _considering_ big-O.

<comment><USER8> I'm sorry if you find me pedantic, but I'm honestly trying to get a point across - and obviously failing. This discussion has been frustrating for me because I thought my point was self-evident, but most of your responses seem like non-sequiturs to me. I also think you're being unnecessarily sarcastic and antagonistic - Mt. Olympus and the like.

<comment><USER7> ahh, I'm just ribbing ya.

You _do_ have a point, which I agree with, learning about complexity theory is a tremendously useful skill to have as a developer.

Is it required to be a good one? You say yes (absolutely), I say no (but it doesn't hurt).

Fair enough?

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> Big-O...one of those things I never managed (or cared?) to pickup regardless of how many times it'd been drummed into me in school. Any article that explains it in an approachable way is fine by me.

<comment><USER10> More or less strict definition of O() requires limits first which isn't exactly an easy topic in high school.</comment></comment>


Local news' experiment in mail-in voting ends in disaster [video] - <AUTHOR> https://www.youtube.com/watch?v=BBqzKjTTYyY <comment><AUTHOR> Why not take the next step and vote by email? XD</comment>


Amazon Aurora: Avoiding Distributed Consensus for I/Os, Commits, Membership - <AUTHOR> https://blog.acolyer.org/2019/03/27/amazon-aurora:-on-avoiding-distributed-consensus-for-i-os,-commits,-and-membership-changes/ <comment><USER2> This is just one of those solutions that was beautiful and simple and why didn't we think of that. The goal of distributed consensus can be viewed as something to do with creating a transitive order A < B < C < D out of individual ordering judgments: so I might know A < B and C < D, someone else knows B < C, eventually everybody can know the full sequence of items. Making this sequence contain metaïnformation about the entities that it contains has been a well-known trick for just about forever, usually done by using that metadata to elect a "leader" who handles the writes personally, for speed's sake.

But the idea of switching from a single leader to a quorum and _then using the metadata to commit to overlapping quorum groups_ in order to preserve this transitive property between orderings was just really really slick.

About three years ago there was an early presentation about the backend [https://www.youtube.com/watch?v=-TbRxwcux3c](https://www.youtube.com/watch?v=-TbRxwcux3c) which made it just seem like the 4/6 thing just had to do with a normal replicated database or so, it seemed like a fixed topology to do with their availability zones—I didn't realize that they were also dealing with some sort of consensus overhead to enable swapping new nodes in or out.

There was also a somewhat marketingy presentation about this technology in the deep dive at [https://www.youtube.com/watch?v=U42mC_iKSBg](https://www.youtube.com/watch?v=U42mC_iKSBg) which I confess kinda went over my head at the time, so these two blog articles are a wonderful condensing of the heart of the service for me. None of the companies I've worked for has made much use of Amazon but it's a really clever idea that certainly deserves to kick around in the back of folks' heads.

</comment><comment><USER3> Another, related paper describing rather easily why this separation of consensus-requiring and consensus-free computation/data-writing is the right separation is the CALM paper: [https://blog.acolyer.org/2019/03/06/keeping- calm-when-distri...](https://blog.acolyer.org/2019/03/06/keeping-calm-when- distributed-consistency-is-easy/)

<comment><USER4> Yes, a single coordinator using other machines to do a lot of the work does make some otherwise very difficult problems seem more tractable.

An interesting unit for this kind of design outside the cloud would be a single rack of servers (or however much you can hook up to one switch)--assure pretty low latency to your remote RAM/disk.

</comment></comment><comment><USER5> Whenever I see someone tout the magical properties of their distributed systems, I always want to see a report from Jepsen, which takes their system apart like a rotisserie chicken.

<comment><USER6> Jepsen is about consistency and doesn't address most of the things the paper is focused on, real world production things.

<comment><USER5> In a distributed system consistency _is_ "real world production things", unless you want to lose customer data.

<comment><USER6> If only that was true. Consistency is a design constraint, not a production problem. Making things work well in real world in production is the hard part, this is what distributed systems are actually about. And I like that about Aurora, focusing on the hard part.

<comment><USER7> Jepsen has done a good job of showing that a lot of systems that focused on the hard part failed to do the "easy" part.

</comment></comment></comment></comment></comment><comment><USER8> Adrian had also reviewed a paper on design considerations of Amazon Aurora: [https://blog.acolyer.org/2019/03/25/amazon-aurora-design- con...](https://blog.acolyer.org/2019/03/25/amazon-aurora-design- considerations-for-high-throughput-cloud-native-relational-databases/)

</comment><comment><USER9> I like how it has almost become the norm to post the link to Adrian Colyers blog about any paper on Distributed Systems than a link to the paper itself. :)

(I'm not complaining, I love his blog)

<comment><USER10> Re: distsys: You might also like [https://muratbuffalo.blogspot.com/](https://muratbuffalo.blogspot.com/)

</comment></comment><comment><USER11> Surprised there wasn't any mentioned of [1] in the paper's citations. This notion of articulating the internal sub-systems of a DB as first class elements of a distributed realization has been emerging (from various quarters) for the past few years. I would also include Apache Pulsar in this category. Aurora itself seems very interesting from an architectural point of view and definitely worth studying.

[1]: [https://www.confluent.io/blog/turning-the-database-inside- ou...](https://www.confluent.io/blog/turning-the-database-inside-out-with- apache-samza/)

<comment><USER6> This talk is completely irrelevant to the paper in question.</comment></comment>


'Viking sunstone' found in shipwreck? - <AUTHOR> http://www.bbc.co.uk/news/world-europe-21693140#TWEET647219 <comment><USER2> The BBC article mentioned refraction, but Iceland Spar makes it possible to see the direction of polarization of skylight, which means it could be used on small, clear patches of sky on an otherwise overcast day to find the direction to the sun. This is another way it could act as a "sunstone" for navigation. Whether it actually was used this way is unfortunately not known.

</comment><comment><USER3> I love when believed 'mythology' is shown to be fact. We write off our ancestors too often and they were great hackers in their own right.

Now the Mythbusters just need to get Archimedes mirror working one day!

<comment><USER4> I do not think that this paper proves anything about _Viking_ navigation.

While the researchers seem to have been able to prove that the found crystal is Iceland spar, it was recovered from a Elizabethan shipwreck in the English channel from 1592, centuries after the magnetic compass started being used in Europe. While other articles on the topic claim that they suggest that sunstones would have been destroyed in Viking burials, I think that the lack of similar crystals from known Viking ruins is troublesome.

<comment><USER5> Fair concerns. An interesting and not entirely unrelated tangent is that of the nearby Basques. In _Salt: A World History_ , Mark Kurlansky presents a theory that the Basques preserved their ancient and linguistically disconnected culture by bartering salt-preserved fish gained from the vast stocks on the Atlantic coast as protein stocks to neighbouring peoples during the European winters. Evidence of such tools may lend some further support to this theory.

(Edit: I just noticed he has also written _The Basque History of the World: The Story of a Nation_... that's definitely on my list now!)

<comment><USER6> Even if you concede that the basques did have an early start on exploiting the Newfoundland fisheries, that would have given them an edge for a few centuries after the year 1000 (more like 1400 if you wait for the necessary navigation technology). By the 3rd century AD, all of Iberia except for the Basque was speaking a romance language.

So, this theory -- very poorly documented in itself -- fails to explain at the very least these mere 7 to 10 centuries of preservation of Basque identity.

EDIT: by the way, I totally buy that Europeans were fishing for cod in Newfoundland before Columbus, and that at least some of those were basques. 15th century Portuguese maps calling those waters "Mare Baccalearum" are proof enough for me.

</comment></comment></comment></comment><comment><USER7> In the book 'Emergency Navigation' by David Burch ( [http://www.amazon.com/Emergency-Navigation-Improvised-No- Ins...](http://www.amazon.com/Emergency-Navigation-Improvised-No-Instrument- Methods/dp/0071481842) ), the method is explained more clearly. With a clear Iceland spar crystal 1 to 2 inches on a side, the direction of the sun can be pinpointed to within a few degrees. You can also get the same effect using a piece of cellophane and the lens of a pair op polarized sunglasses. You do need a patch of clear sky at a 90 degrees angle from the sun direction to observe the change in intensity.

</comment><comment><USER8> This is kind of old news. This Ouest-France article from November 5th, 2011 even has two pictures of the 'Viking sunstone'

[http://www.ouest-france.fr/actu/actuLocale_-Des- physiciens-p...](http://www.ouest-france.fr/actu/actuLocale_-Des-physiciens- percent-le-secret-des-Vikings-_-2007955</comment><comment>35238-aud_actu.Htm)

<comment><USER9> Yeah, the op was lame - a picture of some sailing ship, and not the sunstone. Why do bloggers to that?

Your link also does not seem to have a picture?

<comment><USER10> page 2

</comment></comment></comment><comment><USER11> Exactly how would this work when the sun has set?

<comment><USER12> The sun below the horizon is still a source of diffuse light, the crystal is used to find the angle to a source of light and in northern latitudes with long twilights the sun produces a glow long after it has set.

See: [http://www.livescience.com/16831-viking-sunstone-crystal- com...](http://www.livescience.com/16831-viking-sunstone-crystal-compass.html)

<comment><USER5> Nice. First 3D-printed replica wins my vote as a teaching aid and generally cool retro hack. We need more of this offline tech stuff.

Combine a compass and other navigational tools, and I see an interesting evolution as a sort of retro, creative-commons, git-forkable hacker-army object.

<comment><USER13> When you figure out how to 3d print a birefringent material, let me know. In fact, when you get a hobby-grade 3d printer to print something you can actually see through, let me know.

<comment><USER5> Sure. Obviously not everything comes from a machine. One can probably rely on people finding some crystal separately and/or if feasible order bulk-printed 3D transparent material (no idea of light properties of those, though I know they exist... just saw some this morning!).

<comment><USER13> If you find the crystal separately, there's nothing left to print. The tool is fully functional as nothing more than a lump of crystal.

<comment><USER5> My understanding from the image is that the operation is based upon the combination of two directional light beams through holes driven by an opaque piece with a rotating disc. Whether this was used at the time or not, it still seems a clear way to demonstrate the concepts.

At the very least the operation could perhaps be usefully modelled three dimensionally using raytracing, perhaps also with the capacity to vary basic optical properties of the transparent crystal feature such as reflectiveness, refractiveness and average opacity, as well as atmospheric conditions encountered in the seas ancient European seafaring peoples are known to have sailed.

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> A little off topic, but Iceland Spar features prominently in Pynchon's "Against the Day"[1]. It is a pretty amazing book that might appeal to this audience.

[1] <http://en.wikipedia.org/wiki/Against_the_Day#Doubling>

</comment><comment><USER15> And of course, no image is available.

</comment><comment><USER16> I can't wait to evolve my Sunkern!

</comment><comment><USER17> This sounds like the MacGuffin from a video game.</comment>


How To Use Calepin, the Easiest Blog Tool in the World - <AUTHOR> http://www.readwriteweb.com/archives/how_to_use_calepin_the_easiest_blog_tool_in_the_wo.php#.Ts1OqKhzC3U.hackernews <comment><AUTHOR> This thing is so great. The solution is so easy. I wish top-heavy, Web-based CMS people would take a hint.</comment>


There's an iMessage "Text Bomb" That Will Freeze Your iPhone - <AUTHOR> https://www.buzzfeed.com/nicolenguyen/chaios-imessage-bug <comment><AUTHOR> "Software developer Abraham Masri found the bug, called "chaiOS," and posted it on GitHub Tuesday afternoon. Masri told BuzzFeed News that he found the vulnerability while "fuzzing with the operating system." In other words, he was trying to break the operating system by inputting random characters into its internal code."

...hm, and then later: "The chaiOS GitHub page has been taken down and Masri's account was suspended. But that doesn't mean iOS users are safe."</comment>


Moves are afoot to extend copyright to fashion design - <AUTHOR> http://www.abajournal.com/magazine/article/the_genuine_article/

<comment><USER2> Lack of copyright for the fashion industry has been _great_ so far. Copyright in the fashion industry will only benefit the big brands, which I assume are behind this, anyway.

The video from TED on this:

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

<comment><USER3> Except, as the article says, for the big brands that are built entirely on copied designs.</comment></comment>


184.108.40.206: The Story Behind a DNS Legend - <AUTHOR> http://www.tummy.com/articles/famous-dns-server/ <comment><USER2> This comes up about once a year. The previous ones with many comments, including further context, are [https://news.ycombinator.com/item?id=1282213](https://news.ycombinator.com/item?id=1282213) and [https://news.ycombinator.com/item?id=6426605](https://news.ycombinator.com/item?id=6426605) .

<comment><AUTHOR> Oh thanks!

I'm intrigued. Today you have found two dupe posts coming from me.

How can you be so fast finding the dupes and replying with this info?

It has to be a very time consuming task if it is not automated (appreciated anyway).

If you have automated the task I want to know how! :-) (If you could briefly explain)

In both cases I've just posted it and expected to upvote the most recent thread, but a new post was created and I have directly supposed that the stories were new (from the forum perspective).

I don't understand the mechanics by which the forum allows dupe posts. Maybe it should only allow to dupe a previous post when it's very recent (less than a day) and don't have any upvotes, or automatically show the previous discussions when is old (months)

<comment><USER2> Didn't realize it was you both times.

I recognized the posts. The packing one was only last week, and this DNS Legend one, while older, was written by someone I know.

When that happens, I go to the search link at the bottom of HN, and look for the title, or use the key words. That finds the hits. I then check to see if there were many comments.

The FAQ says "If a story has had significant attention in the last year or so, we kill reposts as duplicates. If not, a small number of reposts is ok."

Duplicate posts are hard to detect. The packing one from last week has a tracer on it, as "?src=hn", so the URL is different than the one you submitted. Also, due to the vagaries of voting, sometimes the moderators think a post didn't get the notice it should have, and don't weed out duplicates even if there haven't (yet) been any comments. There's also a problem if a dozen sources report the same topic, like when Citizenfour recently won the Academy Award.</comment></comment></comment>