Taking your laptop into the US? Be sure to hide all your data first - <AUTHOR> http://www.guardian.co.uk/technology/2008/may/15/computing.security?skljds

<comment><USER2> One thing I wonder, there have been a slew of these articles which probably push (at least somewhat) people to use online services to store their life. Will customs agents ask for passwords to your gmail, facebook, etc? If they aren't doing that now, how long before they do?

<comment><USER3> They start asking for your gmail password? The criminals will just stop using gmail.

The fact that you can just send any incriminating data over the internet instead of carrying it into the country on a laptop/HDD/etc. shows how pointless these searches are. Did I say pointless? Violating.

So basically the only people who get screwed by this are the people who haven't actually done anything wrong but forgot to delete any sensitive/embarrassing content from their drives. The criminals will just use a normal internet connection. Just as with everything else these days: violate the privacy of innocent people as much as possible so they won't notice that they're incapable or too lazy to do any real law enforcement.

</comment></comment><comment><USER4> Has anyone ever actually had this happen, or is this just plain ol' Guardian- style anti-American paranoia? I've carried computers through US customs as a noncitizen many times, and they've never shown any interest in searching 'em. Of course they have the power to, in theory, just like the customs of just about any other country you might enter. But are they actually exercising this power routinely?

</comment><comment><USER5> About this subject, checkout the latest cryptogram:

<http://www.schneier.com/crypto-gram-0805.html#3>

As usual, Bruce Schneier has solid advice.

</comment><comment><USER6> #$%# how many times do ppl/agencies have to post this article? I've seen it at least 15x in other places already.

<comment><USER7> Go outside.</comment></comment>


Ask HN: Prepping for a Javascript Interview - <AUTHOR>

I am interviewing with Khan Academy for a software internship in two weeks. It was suggested that I brush up on my javascript. Herr Resig works there so I imagine they are pretty handy with the language.
I've read The Good Parts, most of Pro Javascript, and working through MEAP JS Ninja now. I am thinking of browsing through the jQuery source in addition to making some neat things to get into the groove again.
Is there a better way to prep than reading books, writing code, and reading code? Perhaps better put: is there anything else that I can do that might be useful?
Thank you for any/all suggestions. <comment><USER2> Perhaps browsing items on Stackoverflow tagged "Javascript"? If you've read The Good Parts (&etc.) and you're comfortable with closures in JS, you'll already be familiar with a lot of the stuff there. Still, you'll find things like [http://stackoverflow.com/questions/2628672/what-should- every...](http://stackoverflow.com/questions/2628672/what-should-every- javascript-programmer-know) , which probably contains something you might not know or have seen before.

Good luck to you! Khan Academy is amazing.

<comment><AUTHOR> Sweet, that stackoverflow article really hit all the stuff I had forgotten. Thank you very much!

</comment></comment><comment><USER3> JSMentors Mailing list is good. I also found the discussion of how the language works in Section 2 of the TDDJS book really good. ( <http://www.tddjs.com/> ). The TDDJS discussion of the language design is really good because it uses testing to show all the ways to create objects and has you test quirky behaviors and oddities each method to really get you to understand the finer points of the language. Think of it as Crockford's "Javascript: The Good Parts, Applied".

</comment><comment><USER4> Closures, closures, closures. Also, know how JS handles floating point arithmetic, type coercion, threading and the difference between async and sync.

<comment><AUTHOR> Excellent. Thank you.

By threading, do you mean web workers or using node somehow?

<comment><USER4> Sorry, should have been more specific. they _might_ ask you if and how JS handles general threading concepts. The correct answer, as you alluded to, is that aside from web workers, JS is not multi-threaded. You could then talk about the challenges of creating complex applications in an asynchronous event driven structure.

In other words, as an interviewer I would ask about threading to filter out the "huh?" type applicants and give them a chance to talk about some of the nuances of working with JS.</comment></comment></comment>


Ask HN: How much bigger while maintaining profits can the big tech companies get? - <AUTHOR> <comment><AUTHOR> Seems like most profits are either based on a transportation play, entertainment delivery or Cloud services.

Seems like those don't end up in monopolies. so wouldn't profits be eroded?</comment>


How I built a hoverboard company and then blew it up - <AUTHOR> http://techcrunch.com/2016/03/01/how-i-built-a-hoverboard-company-and-then-blew-it-up/?ncid=rss <comment><USER2> The author is awfully self-congratulatory, given that he sold hoverboards that were falsely claimed to be U.L listed:

[http://self-balancing-scooter.en.alibaba.com/product/6040148...](http://self- balancing- scooter.en.alibaba.com/product/60401485367-801015008/Experienced_factory_TUV_CE_UL_certificated_2_wheel_bluetooth_hoverboard_with_samsung_battery.html)

Likewise, his article is completely silent on hoverboard safety issues and resulting tragedies (and in that light, referring to "blowing up" the company seems a bit crass).</comment>


First Public Use of What Became Proxima Nova - <AUTHOR> http://www.marksimonson.com/notebook/view/first-public-use-of-what-became-proxima-nova <comment><USER2> Great read. The first thing I noticed is that the box design looks modern even 20 years later, mainly because of the font.

</comment><comment><USER3> I bought this font last year because it immediately struck me as timeless. 20-year old packaging with the same font is a good indication to me that the font will stay current over the next twenty.</comment>


Vector icons with Raphaël - <AUTHOR> http://raphaeljs.com/icons/ <comment><USER2> Do your math based on your use case:

This is the top-left question mark icon.

M16,1.466C7.973,1.466,1.466,7.973,1.466,16c0,8.027,6.507,14.534,14.534,14.534c8.027,0,14.534-6.507,14.534-14.534C30.534,7.973,24.027,1.466,16,1.466z M17.328,24.371h-2.707v-2.596h2.707V24.371zM17.328,19.003v0.858h-2.707v-1.057c0-3.19,3.63-3.696,3.63-5.963c0-1.034-0.924-1.826-2.134-1.826c-1.254,0-2.354,0.924-2.354,0.924l-1.541-1.915c0,0,1.519-1.584,4.137-1.584c2.487,0,4.796,1.54,4.796,4.136C21.156,16.208,17.328,16.627,17.328,19.003z

It's around 430 bytes. Cropped from a screenshot, Photoshop says 705 bytes for gif, 643 bytes for 8 bit png (without transparency or scalability or anything).

Raphael.js from the page is >50KB. There's also an onload function to initialize the path, around 1KB (includes loops etc. specific to this page).

<comment><USER3> Your PNG compressor is garbage.

PNG, 339 bytes: <http://i.imgur.com/68vR8.png>

Also don't forget that the path string will be gzipped (to around 220 bytes).

<comment><USER4> PNG, 313 bytes: <http://i.imgur.com/2ULm8.png>

</comment></comment></comment><comment><USER5> These are really going to come in handy. All these wonderful icon sets that people have made available for free are really making the web a better place. And this one is live resizable vector... Quite fantastic.

</comment><comment><USER6> That's very impressive; but what are the accessibility implications? Can a vector icon have ALT text, for example?

<comment><USER7> <http://www.w3.org/TR/SVG-access/#Equivalent>

<comment><USER6> Excellent! Thanks for sharing.

</comment></comment></comment><comment><USER8> To be honest, I'm a bit more impressed by the flash-like capabilities of raphael.js rather than the icon set itself. It's great stuff. <http://raphaeljs.com/>

<comment><USER9> Last time I checked it out, it was intolerably slow on a low-end machine. Now, on that same machine but with the latest Chrome beta, the performance is perfectly tolerable. Looks like gRaphaël is going to be something I might want to use someday after all, so thanks for making me look again.

<comment><USER10> FWIW, I just tried some of their demos on the iPad and.. feels pretty normal. I know the iPad isn't the slowest of the slow but it's JavaScript engine is miles behind even the slowest ones on desktop machines.

</comment></comment></comment><comment><USER11> What is the trade off between hosting icon/picture image files versus drawing them? Is there one? Is this method (drawing through js) better if client download speeds are really slow?

<comment><USER12> The trade-off is between client-side CPU and bandwidth/connections. A vector graphic is going to be much smaller for icons and other non-photo images. The downside is that instead of just shoving some bits onto the page, the client has to run a script to tell it what the bits are supposed to be.

<comment><USER13> Vectors are great kb savers if they are fairly simple. In this case they are ultra simple.

But if you want to do much more complex vector graphics you should probably consider using .png or .gif instead

<comment><USER12> And where the trade-off is depends on the size of image you want to display.

</comment></comment></comment></comment><comment><USER14> How do you convert your existing vector icons to this (pathstring) format? Or did he use some custom tool to draw them?

<comment><USER15> It's in the SVG path data format. Inkscape, Illustrator etc. will export it.

<http://raphaeljs.com/reference.html#path> <http://www.w3.org/TR/SVG/paths.html#PathData>

</comment></comment><comment><USER16> This is just SVG though right?

<comment><USER17> yes and no.

While the icons themselves are not SVG, Raphaeljs draws these icons as SVG (VML under IE) in Javascript.

</comment></comment><comment><USER18> Anyone got an idea how to easily rasterize these?

Is there an easier way than building a web page with the image and screenshotting it?

<comment><USER15> 1\. Get the path string for an icon from the page

2\. paste it into this template (taken from the same page) <http://gist.github.com/432341>

3\. save it with the .svg extension

4\. open it in inkscape <http://www.inkscape.org/> (or probably illustrator etc.)

5\. file -> export

<comment><USER10> You could also replace steps 4 and 5 with ImageMagick if doing it on the command line was of importance. You could probably automate the entire process actually..

<comment><USER19> You can use inkscape from the command line:

        inkscape --export-png=x.png x.svg

</comment></comment></comment></comment><comment><USER20> How is Raphael.js (and svg tags) for cross-browser compatibility?

<comment><USER21> Pretty good really. I havn't dabbled with complex animation, but I was building a Visio style workflow editor that worked in IE6, IE7, IE8, Chrome, Safari + Firefox. It has drag + drop and what I believe to be critically missing, the arrow() function. Documentation is pretty thin, so I had to write my own: [http://taitems.tumblr.com/post/549973287/drawing-arrows- in-r...](http://taitems.tumblr.com/post/549973287/drawing-arrows-in-raphaeljs)</comment></comment>


MIT Sloa Management Review is free for 60 days - <AUTHOR> http://sloanreview.mit.edu/60-days-free <comment><USER2> Title should be "MIT _Sloan_.."</comment>


Web fonts and CSS features - a simple demonstration - <AUTHOR> http://hacks.mozilla.org/2009/06/fonts-css-layout/

<comment><USER2> This is how simple it should have been from the beginning.

<comment><USER3> Lets all thank M$ for holding the web in darkness for a decade.

Lets all thank Mozilla for giving the web back to the users.

Lets all thank safari, opera and chrome for their support.

(Special thanks to opera for always being a step forward)

Now, lets all keep working on improving the web more, we already lost a decade and we can not spend another one mourning the time lost.

Lets get rid of css -moz and -webkit hacks already.

Lets move SVG forward, canvas is already here.

And bring WebSockets to live, there is a whole new world awaiting...

<comment><USER4> M$ deserves some credit for supporting CSS long before other browsers did, as well as AJAX. But launching IE8 without canvas, border-radius, and web fonts is pretty sad.

</comment></comment></comment><comment><USER5> The demo also works in Safari 4 on a Mac.

<comment><USER6> and on Windows.

</comment></comment><comment><USER7> <blink>Aren't browser-specific features one of the things that mozilla was supposed to cure?</blink>

<comment><USER8> this is in the css3 spec and is already implemented by ie and webkit.

<http://webkit.org/blog/124/downloadable-fonts/> <http://www.css3.info/preview/web-fonts-with-font-face/>

<comment><USER9> I think blhack is referring to the -moz-border-radius selector that only works in Firefox. One could use the CSS3 selector, border-radius, but that is not in the article.

</comment></comment></comment><comment><USER10> Is it just me, or does the second font there give an optical illusion that it's moving?

</comment><comment><USER11> Yes, the demo works in Safari 4 too. Opera 10 on a Mac only changes the third font from the left, though. Wonder why?</comment>


Video Games in East Germany: The Stasi Played Along - <AUTHOR> https://www.zeit.de/digital/games/2018-11/computer-games-gdr-stasi-surveillance-gamer-crowd/komplettansicht <comment><USER2> I was on a vintage computer exhibition in Berlin a few weeks ago. These fairs are awesome, as the people there are really eager to share their stories. I talked to a member of the still active Atari Bit Byter User Club ([http://www.abbuc.de/](http://www.abbuc.de/)). He told me that he was one of the few Atari enthusiasts in East Berlin, and it was always quite an adventure to get your hands on hardware, software and magazines. Improvisation was the key, as in many situations in former East Germany.

Also, there is an East German gaming machine called Poly Play ([https://en.wikipedia.org/wiki/Poly_Play](https://en.wikipedia.org/wiki/Poly_Play)). You can actually play on one of these in the Computer Games Museum in Berlin. But of all East Germans that I asked, nobody had ever heard about this before, so probably was something produced in very low quantities.</comment>


Working with Errors in Go 1.13 - <AUTHOR> https://blog.golang.org/go1.13-errors <comment><USER4> It's poignant to watch Go slowly realize the why other languages have more powerful, more useful error types. The `error` interface is anemic to the point of uselessness. Making it unwrappable is step forward, but all that does is progress it the level of 1995 Java with their "cause" field. It still can't express suppressed errors (like those from `defer f.Close()`). There is no standard mechanism to include an optional stack trace. Worst of all, rolling your own error type and trying to use it everywhere is near impossible. Every method signature has to use `error` due to lack of covariant return types, and heaven help you if you return a nil struct pointer, which will be auto promoted to a non-nil interface. Perhaps in Go 3 they'll get it right.

<comment><USER5> I honestly don't understand where you're coming from.

Rolling your own error library is trivial. We have a great one at work that works great, prints stack traces, interops with normal error handlers, and does a lot of custom work for translating errors into external customer- visible messages and internal developer messages. We use it at every layer of a 50-60 grpc microservice ecosystem without much headache.

Catching deferred errors is trivial, not sure what you mean there:

defer func () {

      err := f.Close()

      ...

}()

Printing stack traces is like 4 lines, I was able to implement ours in 60 minutes of doc skimming. Now it'd be 5 minutes.

I don't understand your last two sentences. It doesn't reflect anything I've run into in the real world, I don't think.

I have a few gripes about golang, but the minimalist error interface is not one of them.

<comment><USER6> >Rolling your own error library is trivial.

And right there is where you're going to lose most people.

If it's is trivial, why isn't in the standard library? If everyone needs to do it, why not standardize? I love Go, but i have to agree with grandparent poster.

<comment><USER7> You can't standardize until people agree. The trivial part isn't the code it's what is acceptable to everyone.

If people don't agree then it by definition does not belong in the stdlib.

<comment><USER8> People disagreeing is even more the reason to standardize for things that matter to the broad ecosystem.

For example, no one likes gofmt (tabs, eww), but everyone likes code across packages looking the same. And so we use it.

<comment><USER9> Speak for yourself, Go is a bastion of formatting sanity for me cause they chose (correctly) to use tabs. Tabs for indentation are the obvious choice to improve code readability and accessibility for people that want different indent sizes. I don't need it (usually), but I've met people that prefer everything from 2, 4 or 8 spaces, and have heard of people wanting everything from 1 to 8. It also handles far more sanely then spaces for people using proportional fonts instead of monospace, another common readability/accessibility tweak.

</comment></comment></comment></comment></comment></comment><comment><USER10> Stack traces are desperately needed to give errors context, and I was very disappointed to see that proposal dropped from Go 1.13. At the same time, I'm hesitant to use xerrors in production code because it's likely to change rapidly in the future.

I had a situation recently where a fairly complicated API was returning an HTTP 403 in production. Once the error bubbled down to a level where it was actually logged, all that was left was "403 Forbidden". I spent days echo debugging and could not reproduce the problem. Finally, by chance, I happened on the problem while working on something completely unrelated. With a stack trace, 3 days of work would have taken 5 minutes. Wrapping would not help in this situation unless every single error was wrapped with a unique string, which frankly is ridiculous.

<comment><USER11> I feel like, in Go, the ideal is to handle the error in situ. If it has to be passed up, it goes the shortest possible distance before reaching code that can handle it. This is a difference from exception-throwing languages and so it changes the importance of a stack trace. You don't need to know where it broke because it broke _here_. The same approach as in C. You test the result where you made the call.

<comment><USER10> On the surface this sounds logical. But going back to the case I dealt with recently, all errors during authentication lead back to an HTTP 403 workflow. Errors themselves can occur a long distance from any sane central place to handle them. Unless you pass the http.ResponseWriter all the way up the stack, the only "in place" handling you could do is to log every error along with a unique string.

Is this really the best we can do?

        if err := frobulate(); err != nil {
            log.Printf("Error on line 123: %+v", err)
            return err
        }

<comment><USER12> You example is code smell.

When dealing with error handling in Go (and many other languages), you should do one _and only one_ of the following:

\- if you have enough context to handle the error (eg. retry, or degrade gracefully, or perform whatever other application logic to recover, possibly returning a more friendly error to your caller), do that, possibly logging the source error and do not return it further up the stack directly - you have now healed the error condition, and the application code can continue.

\- otherwise, return the error, decorating it with extra context if possible.

Doing both, ie. logging (which is a case of handling the error) and returning it up the stack leads to extremely chatty and difficult to debug code. Errors are a fact of life, and your path of handling them should be as well engineered as the happy life. That's one of the most important things in writing reliable software.

That's also one of the reasons there's no generic stack unwinding/exceptions on Go: it forces you to _think_ about error cases and at least reminds you to handle them gracefully. You might not like this approach of treating programmers this way, but that's one of the cornerstones of Go.

<comment><USER13> > \- if you have enough context to handle the error (eg. retry, or degrade > gracefully, or perform whatever other application logic to recover, possibly > returning a more friendly error to your caller), do that, possibly logging > the source error and do not return it further up the stack directly - <USER2> > have now healed the error condition, and the application code can continue.

> \- otherwise, return the error, decorating it with extra context if > possible.

This is precisely how checked exception handling works in Java, and yet there's no shortage of people complaining about it and praising how Go "makes you deal with it the way you're supposed to."

> it forces you to _think_ about error cases and at least reminds you to > handle them gracefully.

So do checked exceptions. And 99% of the time, the solution to an error popping up in Java is to blindly re-throw it because hey, I'm just a component buried a couple levels deep in a REST call, what could I possibly do to fix the problem?

<comment><USER14> Error handling is hard. Checked exceptions and Go's error returns are both good attempts to solve it. They both have plenty of drawbacks but they're really different approaches here.

> This is precisely how checked exception handling works in Java, and yet > there's no shortage of people complaining about it and praising how Go > "makes you deal with it the way you're supposed to."

Just because people complain about Java's checked exceptions does't mean that their complaints are correct or that they somehow apply to Go's errors.

The main complaints I hear about checked exceptions are that they force you to expose the types of all possible exceptions in the method signature. This creates unexpected API churn and design difficulties, because it's difficult to predict which exception types you would want to expose from a particular interface.

You also have to choose which errors are programming errors and which are not when you declare the error type. This turned out to cause problems. NumberFormatException is an example.

> So do checked exceptions. And 99% of the time, the solution to an error > popping up in Java is to blindly re-throw it because hey, I'm just a > component buried a couple levels deep in a REST call, what could I possibly > do to fix the problem?

In Go, blindly returning an error is done much less than 99% of the time, at least in the code bases I've worked on or read.

</comment></comment></comment></comment></comment></comment><comment><USER15> I love Go, but error handling feels like hand-carried, checked exceptions. And now they figured adding a "cause" field is practical. I'm getting deja-vu with Java exceptions 15-20 years ago.

<comment><USER16> I consider checked exceptions in Java quite a nightmare. You have to specify the classes of exception you might throw as part of your function signature and in all methods which might propagate. This is quite a buerocratic monster, which requires quite a bit of refactoring if your exception signature changes. Alternatively, all methods in the chain tend to catch all and then rethrow others.

The described changes could have been added by anyone in earlier Go versions. These are not things which can be only implemented by the language or compiler implementor, these are just APIs, which are standardized.

<comment><USER17> You could just use throws Exception instead and check the error like Go does. Its a code smell in Java but so is a million exceptions in your method signature. Most libraries and apis will use a base exception type so keep this to a minimum.

</comment></comment></comment><comment><USER18> The way Go handled errors is why I made the decision to go with rust as my hobby/personal-open-source-projects language. It was just extremely tedious, despite Go being nice overall.

I love how error handling is done in Rust. Yes, implementing the From<T> trait can get verbose, but wrapper libraries like Failure or Snafu exist now as well.

Being able to propagate errors down the line seamlessly with the ? operator and Result<T, E> type is nothing short of phenomenal. It looks like the next version of Rust will seamlessly allow using ? on None types as well.

<comment><USER19> Look at the failure crate.

For lots of errors, just treating them as a generic failure makes code a lot better.

<comment><USER20> Which is supposed to be replaced by [https://github.com/withoutboats/fehler](https://github.com/withoutboats/fehler)

<comment><USER18> Fehler is highly opinionated and I'm not sure it's worth it. IIRC the author posted on the /r/rust subreddit and was unable to take criticism at all.

I don't like having to put decorators on functions and manually throw!()'ing. I would rather be explicit about returning Ok(T) or Err(E).

</comment></comment></comment></comment><comment><USER21> _Go's treatment of errors as values has served us well over the last decade._

Has it? As a Java developer who needed to write something in Go, this has been quite a frustration for me, personally. In Java, when I get a 100-line stacktrace error, my IDE analyzes it for me and I can click through the code and follow what's happening. In Go, I get a string from the developer. Hmm...

<comment><USER11> That's bad Go design. An API where the particular nature of the error matters, should declare error constants and use the "Is" mechanism. You shouldn't be unpicking the internals with an IDE, you should be getting something you can work with, right there.

<comment><USER22> > That's bad Go design. An API where the particular nature of the error > matters, should declare error constants and use the "Is" mechanism. You > shouldn't be unpicking the internals with an IDE, you should be getting > something you can work with, right there.

AKA roll your own stack trace library. That's what "errors" package and co are. That's not "bad God design". It's just not Go's problem, as deemed by Go designers.

Thus criticizing that trade-off is fair, like any trade-offs.

<comment><USER23> So we're back to C where each project rolls out its own string implementation. This really shows the mentality of the golang authors.

<comment><USER22> I mean at that point if you are still using Go, then you agree with whatever Golang authors tell you.

Most people who were sceptical about Go or were vocal about trying to improve the language moved on to something else, because they faced a wall of contempt. The whole Go 2 stunt is more an "idea parking lot" than anything else.

</comment></comment></comment></comment></comment><comment><USER24> Oh I wish Golang had something similar to Rust's Options and Results. This `nil` value is the source of many crashes in applications I've audited (due to applications forgetting to verify if the value is `nil` before acting on it).

Maybe something like this could be supported natively in Golang:

        func thing(arg bool) Error.Result(bool, error) {
            if arg {
                return Error.Ok(false)
            }
            return Error.Error(fmt.Errof("nope"))
        }

        func main() {

            if thing() == true {} // doesn't compile

            match thing(false) {
                Error.Ok(value) => {
                    fmt.Println(value)
                },
                Error.Error(err) => {
                    log.Panic(err)
                }
            }
        }

just for fun I wrote an ugly PoC for bool options: [https://github.com/mimoo/Bool](https://github.com/mimoo/Bool)

<comment><USER25> similar to [https://golang.org/pkg/database/sql/#NullBool](https://golang.org/pkg/database/sql/#NullBool)

<comment><USER24> this has a Value() getter though, but at least you would probably not make the mistake of not checking the error here.

</comment></comment></comment><comment><USER26> Can someone help me with what seems to be a basic problem? How are you supposed to get stack traces for errors in Go? You can wrap an error every time you return one, but this omits useful information like the line numbers. Not to mention, a significant amount of the code you are writing is going only to providing helpful error messages.

Alternatively, it looks like there are libraries out there[0] that will include stack traces for you. It seems weird to me that it's necessary to use an external library to get what seems like it should be built into the language.

Can anyone enlighten me?

Edit: Forgot to include the reference:

[0] [https://github.com/pkg/errors](https://github.com/pkg/errors)

<comment><USER10> As far as I'm aware, there are only two native ways to make an error unique enough to trace: Wrapping it with a unique string, or throwing a panic. You might be able to do something clever with panics by throwing them and then catching them to resume the thread, but I've never seen this done outside a few places in the Go standard library.

<comment><USER27> IIRC this is the suggested way to get a stacktrace. Panic and either recover or fail.

<comment><USER10> What? You're gonna need to link a source for that, because everything I've ever read is that panics are for catastrophic failure and should not be used for routine error handling.

Rob Pike has this to say:

Our proposal instead ties the handling to a function - a dying function - <USER3> thereby, deliberately, makes it harder to use. We want you think of panics as, well, panics! They are rare events that very few functions should ever need to think about. If you want to protect your code, one or two recover calls should do it for the whole program. If you're already worrying about discriminating different kinds of panics, you've lost sight of the ball.

<comment><USER28> Unless edited, I don't think that's what GP said. Panics are the way to get stacktraces, not the way to routinely handle errors.

Your top level comment about 403 errors made me assume you did not know about panic. Obviously your particular situation may have prevented it but I've always built Go programs from source (not linking binaries) which means I could always panic whenever I needed a stack trace.

<comment><USER25> Panics provide stacktraces, but are not the way to get stack traces. runtime/debug has the API to generate stacktraces.

github.com/pkg/errors is the ubiquitous library for seamlessly including stacktraces in errors

</comment></comment></comment></comment></comment></comment><comment><USER29> Great to see this getting standardized!

I maintain an error package that lets users use structured types for errors and error codes [1]. It is critical to be able to wrap errors without information loss. I used one standard, a Causer interface, but I will be switching to Unwrap.

I see complaints about stacktraces here in the comments. I recommend always using pkg/errors or some error package with stack traces.

[1] [https://github.com/pingcap/errcode](https://github.com/pingcap/errcode)

</comment><comment><USER30> After years of using Go, I came to realize that the ONLY people that complain about errors in Go are those who actually do not write any Go code and those who write Go code less than a year(ie. juniors). There is absolutely nothing wrong with errors in Go and the creators got it right form the start. Nobody is forcing you to use errors. You can use booleans if you want. You can panic(throw exception) if that is what you wish. To each its own. If you want more syntactic sugar, move to Java, it has plenty of it for you.

<comment><USER31> Do have have experience using a language with sum types and exhaustive case analysis?

</comment></comment><comment><USER32> Almost every language supporting inheritance suffers from lack of ability to check if an error is part of the derivation chain. I have implemented this using expensive dynamic cast in C++ and instanceof in Java.

Finally Go gets it ahead of the other languages!

<comment><USER23> `instanceof` in Java can be surprisingly fast. Plus, it seems that errors.Is and As rely on reflection, which is slow in golang.

</comment></comment><comment><USER33> Check the original proposal [1] and discussion [2] as well as the unofficial package [3][4].

[1] [https://go.googlesource.com/proposal/+/master/design/29934-e...](https://go.googlesource.com/proposal/+/master/design/29934-error- values.md)

[2] [https://github.com/golang/go/issues/29934](https://github.com/golang/go/issues/29934)

[3] [https://github.com/pkg/errors](https://github.com/pkg/errors)

[4] [https://github.com/pkg/errors/tree/c978824](https://github.com/pkg/errors/tree/c978824)</comment>


Ask HN: What is your social cause & what will you do? - <AUTHOR>

I was impressed when 2 members of our community initiated action on social causes important to them...
John Graham-Cumming on the apology to Alan Turing here
http://www.usatoday.com/news/world/2009-09-11-enigma_N.htm?csp=34
Aaron Swartz on the Massachusettes senate vacancy here
http://www.capecodonline.com/apps/pbcs.dll/article?AID=/20090901/NEWS/909010310
Then I realized that I'm so busy with my own projects that I don't spend any time on issues important to me.  I'm not even sure what they might be.  I always thought if I did my job, that was my part.  Now I'm beginning to wonder...
What about you? <comment><USER2> My websites:

<http://www.healthgazelle.com>

<http://www.kidslikemine.com>

<http://www.solanorail.com>

I can't seem to escape social causes, in spite of sometimes wishing I could. My hope is to someday figure out how to monetize some of what I do.</comment>


Marketplace for Deep Learning Models - <AUTHOR> https://simpleintelligence.com/ <comment><AUTHOR> I'm coding together an easy way to serve deep learning models in production and create a market place around it. Right now I have a private beta out, please do sign up and let me know your feedback.

We have released with tensorflow, we will be releasing with Keras in the coming week

[http://mailchi.mp/6fa3ff560252/video-tutorial-for-serving- yo...](http://mailchi.mp/6fa3ff560252/video-tutorial-for-serving-your-model)</comment>


U.S. Tech Stocks Are Now Worth Over $9T, Eclipsing Entire European Stock Market - <AUTHOR> https://www.forbes.com/sites/sergeiklebnikov/2020/08/28/us-tech-stocks-are-now-worth-more-than-9-trillion-eclipsing-the-entire-european-stock-market <comment><USER2> Since the us finance authorities are willing to prop up the stock market forever, it would be foolish not to join the ride. Lets see how far they can push it

<comment><USER3> Just be out of it by cob on Election Day.

<comment><USER4> According to the top result of Google (super reliable barometer of course), some trades might not be executed on election day for some mysterious reason despite the market being open.

I would suggest the day before for those who don't want to eek out every penny :)</comment></comment></comment>


Jaws: HTML5 Javascript game engine / development library - <AUTHOR> http://jawsjs.com/

<comment><USER2> Not saying this isn't awesome... but don't there seem to be more HTML5/Javascript engines/libraries/toolkits than there are actual decent products or games?

<comment><USER3> The problem is, none of the engines so far even come close to the quality of decent game engines on other platforms. They've all got seriously rough edges, bugs, missing features, etc., to a point where there's not even a clear winner yet where further community development efforts get funneled.

Until there's a clear "winner" in the space, I'm happy to see more engines come out, maybe one of them will finally get close enough to a general purpose game engine that it will see some community involvement.

<comment><USER4> What are your thoughts on impactjs? I know it's not a general purpose game engine, but I'm just curious to see what people think it's missing. A lot, I'm sure, in terms of general purpose gaming, but how could it be improved for it's target games; tile-based platformers and top-downs?

<comment><USER5> I've created a couple of games with ImpactJS and have really enjoyed it. I think it's great for tile-based platformer games in particular. But (with enough programming skill), you can bend it to make virtually any type of 2D game. The code is very well thought out and organized. It's a pleasure to work with generally. Haven't used any of the other HTML5 engines though.

</comment></comment></comment></comment><comment><USER6> Sigh. No sound.

I kindof understand why. If my recent forays into in-browser audio are any indication, it's kindof a mess. You need Flash fallbacks for older versions of IE, there are latency/seeking problems on browsers that do support the audio element, mobile support is even sketchier and limited to a single element, and that's just for playback of pre-generated media...

<comment><USER7> The documentation briefly mentioned supporting audio assets [1], but I haven't been able to find obvious examples of how to use them once they've been loaded. One of the provided sample games [2] had a soundtrack, so I dug through the source [3] a bit and discovered that there is an "Audio" class and some other undocumented functions that can be used with an "Assets" object to achieve playback. Looks like he's just coding to fast to keep everything written down. :)

[1] <http://jawsjs.com/docs/symbols/jaws.Assets.html> [2] <http://ippa.se/webgames/unexpected_outcome/> [3] <http://ippa.se/webgames/unexpected_outcome/game.js>

<comment><USER8> HTML5 audio is kind of weaksauce atm yes. To support all major browsers I need to ship both oggs and mp3s for example.

Jaws creates instances of Audio() for each sound, loading them by setting the src-attribute and listening for the canplay event before making the asset as fully loaded.

Just google the Audio-tag, you have play(), pause() etc.

</comment></comment></comment><comment><USER8> Ah, I was wondering where all the new github watchers were comming from, now I know. JawsJS is very much alive! I've had sort of a pause from development after working _A lot_ on it for a period. I'm always fixing bugs and accepting patches.

I got documentation at <http://jawsjs.com/docs/index.html> but I know it could be better. I've tried to make up for it with tons of examples.. I know I personally love examples when learning new stuff.

About sound, I would say it's HTML5 weakest point. I think both chrome and ff are working on new sound APIs so this might change.

JawsJS now support basic playing of sounds through the Audio()-element. Last time I checked in safari there was a delay though, making it slightly sucky for shooting-sounds and so on.

</comment><comment><USER9> The "Jaws is very much work in progress, so expect big changes within the first months of 2011." is outdated or has a typo. <https://github.com/ippa/jaws/commits/master> appears to have active development.

<comment><USER8> Ye, github, the source and the examples is where it's at. The homepage has become less relevant. Thanks for reminding me to remove that line.

</comment></comment><comment><USER10> Looks nice! The code looks easy enough to get started. And I love the setup(); update(); draw(); game state methods. That's how I used to do it in ActionScript3 before.

I'm actually now diving into HTML5 game development as well and I was wondering what's the advantage of Jaws.js over Easel.js?

<comment><USER11> Looking over the documentation for the two libraries it seems like they have different goals with minimal overlap. Easel.js is basically a clone of a subset of the Flash API, while Jaws.js is a small game engine for building HTML5 platformers and is comparable to Flashpunk. It has classes for tile maps, parallax, etc.

<comment><USER10> Thanks for the reply. I just checked Jaws' documentation, and it seems to be perfect for my little turn-based strategy game. I've had experience using EaselJS before but the problem is that I'll also need to build something on top of it to make it work as a game.

</comment></comment></comment><comment><USER12> Myself (and a couple others) used JawsJS to do our first Ludum Dare (<http://www.ludumdare.com/compo/ludum-dare-22/> ) entry. It's a great basic framework -- the examples on the site is what sold it for us.

</comment><comment><USER13> StrikeDisplay, <http://strikedisplay.blogspot.com> went to version 1.0 today, with a lot of capabilities, filters, multiline text justification, etc. It's not so much a game engine as an all-purpose interactivity kit/screen graph, with a display/event model based on AS3.</comment>


Modern Microprocessors – A 90 Minute Guide - <AUTHOR> http://www.lighterra.com/papers/modernmicroprocessors/ <comment><USER2> Previous discussions of this article:

[https://news.ycombinator.com/item?id=7174513](https://news.ycombinator.com/item?id=7174513) (743 days ago, 226 points, 37 comments)

[https://news.ycombinator.com/item?id=2428403](https://news.ycombinator.com/item?id=2428403) (1774 days ago, 283 points, 30 comments)

<comment><USER3> People should note however, this appears to have been updated since the last posting - there are references to things that have happened since 743 days ago (e.g. "Today (early 2015)") and discussions of Haswell.

</comment></comment><comment><USER4> Frequent thing I see here on HN and many other sites is the immediate dismissal of VLIW... This sort of archtiecture has had a bad rap since it was first talked about (over 30 years ago now), to the present day. This is really encouraging me to write a post on why VLIWs have been unjustly shit on, and why what most people think of VLIWs (E.g. Itanium) is not a true VLIW.

At least the linked article gives a mostly fair (but very brief) description of VLIW, but then inappropriately compares it to Intel/HP's EPIC, which while inspired by VLIW, went so far off the rails, which in my opinion, led it to be a failed architecture.

<comment><USER5> Ok. Just link to examples where it works vs modern processors while avoiding failures of Itanium etc. Outside of embedded space or constraints: HPC or at least desktop-grade stuff. That should either strongly support your claim or settle the debate depending on quality of evidence.

<comment><USER4> I'm actually going to commit to writing this over the weekend... I'll post it on HN, aiming for Monday.

</comment></comment></comment><comment><USER6> Given the self-imposed limitation of being a "90 Minute Guide", this is great stuff. Very readable, even entertaining (at least to me), without giving me the impression of being talked down to.

</comment><comment><USER7> > by Jason Robert Carey Patterson

Is the author related to David Patterson?

(Known from [1])

[1] [http://www.amazon.com/Computer-Architecture-Fifth- Quantitati...](http://www.amazon.com/Computer-Architecture-Fifth-Quantitative- Approach/dp/012383872X)

<comment><USER8> I don't think so, Jason Robert Carey Patterson is from Australia.

</comment></comment><comment> J-dawg Can anyone recommend a really basic intro to microprocessors? For someone who hasn't done a CS degree or studied hardware at all. This article seems very readable, but I feel like I'm missing the basics.

<comment><USER9> This is the basic intro to current used cpu's and I must say this is the best short description of how a cpu works. Determine what you want to do and try to tweak it to your performance level and learn on the way. Don't forget checking your motherboard manual and tuning your extra devices to it.</comment></comment>


AWS VPC Core Concepts in an Analogy and Guide - <AUTHOR> http://start.jcolemorrison.com/aws-vpc-core-concepts-analogy-guide/ <comment><AUTHOR> The base analogy - Building a VPC like building a Sim City

\- The AWS Account: The Landscape

\- The VPC: The City (Range of Postal Codes)

\- Subnets: Individual Postal Codes

\- Route Tables: The Road Infrastructure

\- Network ACLs: The Security Gates around Postal Codes

\- Servers/Services: The Buildings

\- Security Groups: The Security Guards for Buildings

\- Availability Zones: Parallel Dimensions

\- Regions: Alternate Realities</comment>


Blurring of MVC lines: Programming the Web Browser. - <AUTHOR> http://advogato.org/article/993.html <comment><USER2> There is a major, fundamental problem with moving the definition of web applications to being JavaScript/Python/Java-centered. It offends one of Berners-Lee's principles of web architecture: the 'principle of least power' <http://www.w3.org/DesignIssues/Principles.html#PLP>. That allows the substance of the web to be accessed, analysed, processed by other unforeseen applications. But encoding everything around a full procedural programming language is very opposite to that.

There is certainly a place for JavaScript-like power -- very specialised, low- level tasks, perhaps like the core of google maps interface. But there needs to be a larger, general framework of a simple, declarative form to express web apps. Something like SMIL and XUL. Actually, W3C has begun to develop something that might form the basis: CDF, but probably few have heard of it even, and it lacks the most important stuff...

<comment><USER3> What if the client is fully in the browser and the server is simply serving up JSON or XML? Seems like as long as the verbs and nouns served are appropriate, you've got a good RESTian solution in the end, with interactive (browser client) and batch (server) interfaces available.

<comment><USER4> that's _precisely_ the architecture that i use for the two web sites i've done, so far, and i'm currently working on two more.

the only exception to the use of JSON has to be the uploading of files, where you're forced to use HTTP POST. and, for the same reason, when _downloading_ the file (e.g. an Image, a PDF) i don't use JSON, i use an HTTP GET.

the reason for using the HTTP GET instead of JSON is because it's necessary to set a "Content-Type" header, in order to get the browser to load the file (Image etc.) correctly.

other than file upload / download, yes, you can design your Pyjamas / GWT / RubyJS-rwt web site as a totally-compiled-to-javascript site that loads data _exclusively_ using JSONRPC.

</comment></comment></comment><comment><USER5> Ok survey of the terrain, but WAY biased, and not very well-written.

 _If it wasn't for the fact that programming in Javascript is so obtuse_

If Javascript is obtuse, You're Doing It Wrong. Javascript is a very powerful and expressive language—it's the browser API that's a piece of garbage.

 _data fields must involve a round-robin trip to the server_

Wait, there are scheduling algorithms involved? <http://en.wikipedia.org/wiki/Round_robin>

Word salad anyone?

<comment><USER6> "it's the browser API that's a piece of garbage."

And that's the real purpose of Prototype, JQuery and friends. To glom over the unholy mess that is cross browser DOM compatibility.

Another question: is MVC still a suitable design pattern for web application development? We have HTML to model structure, CSS to model appearance, and Javascript/DOM to model interaction, and JSON to transfer structured data over the network. This suggests a design where each language plays to its respective strength, instead of trying to find "one language to bind them all."

This suggests a different model than what Xerox PARC had in mind when they came up with MVC for SmallTalk. I'm not sure what that model is, but I believe that the unstated assumption that MVC is a good pattern for web applications needs to be defended.

<comment><USER7> The sensible way to build more complex web apps these days is to have a (invisible) client side model, and have the controller communicate with the server as is required (typically to fetch data, sometimes to poll). The server becomes more of a router and data repository, with less intelligence. It is sometimes easier to think of the server as a secondary, dumb user with a huge amount of data on tap. And the more intelligence you can push out to the client side the better the system will scale.

<comment><USER6> I like where you're going with that. Now we just need a catchy acronym. :)

REST may be the applicable acronym for the server side (or at least, one design for implementing what you describe). But I haven't heard any design patterns with a catchy acronym for what all the cool kids are doing in the browser with Javascript. Perhaps that's for the best. Often a catchy acronym is a sign that a technology will soon either stagnate or be considered passe.

<comment><USER5> jimbokun and dmaclay,

It really depends on the application. Remember, the client is _always untrustworthy_. You can trust them with _their_ data, but nothing else. In three-legged cases, like an ad or some other third-party developed app hosted in your page, you can't even trust the client-side to have unlimited access to the client's data! Plus, there are remote script hacks that potentially will compromise the user's state or other information.

 _a catchy acronym for what all the cool kids are doing in the browser with Javascript_

At Yahoo, we call it Progressive Layered Enhancement. Start with working markup and server-side logic, and then enhance it in layers to add functionality for the browsers that can handle it, so that it always works, even if a layer is missing or broken.

Having worked on a Microsoft stack in the past, I can say that it was nice to have a single language from end to end. It just really sucked that the language was VisualBasic. So, I get the excitement behind GWT and Pyjamas. Not that the author is _wrong_ , I just think he doesn't really treat the material very well.

<comment><USER6> "At Yahoo, we call it Progressive Layered Enhancement."

PLE! We have our catchy acronym :).

Good point about the security implications. That must be an integral part of any web application design methodology. For traditional kinds of desktop applications, that wasn't so much of a concern.

In my day job, we have a Java back end with a lot of user interaction implemented with Javascript in the browser. Data access server side stuff actually plays to a lot of Java's strengths, I think, and the more dynamic nature of Javascript is a good fit for DOM manipulation in the browser. I'm not sure I would want to pick one of them to run both places.

<comment><USER7> We use Adobe Flex, and at times have the Flex app write to a HTML page in the browser (for the vastly better markup). The .swf format makes things a bit more secure, although you can decompile Flex apps. For the most part we are targeting the flash engine for performance and functionality.

</comment></comment></comment></comment></comment></comment></comment><comment><USER3> He fails to mention Cappucino, which seems even more ambitious than the MVC projects included.

<comment><USER4> thanks for the link. cappuccino looks interesting - except that it also looks _way_ out of most people's league. by that, i mean that you appear to have to abandon everything you've learned - the server-side languages you're used to - and go the whole hog into both a new language _and_ a new framework. i've included it for reference, on the original article at advogato.

</comment></comment><comment><USER8> I think MVC was always blurred, even in established contexts.</comment>


Tech IPO Market Shows Signs of Warming - <AUTHOR> https://www.wsj.com/articles/eventbrite-and-upwork-prepare-to-go-public-1523525401 <comment><USER2> [http://archive.is/ZoWhw](http://archive.is/ZoWhw).

But [https://news.ycombinator.com/item?id=16845177](https://news.ycombinator.com/item?id=16845177) is already on the front page.</comment>


Show HN: TapBeyond, the future of discovery and conversations - <AUTHOR> http://tapbeyond.com/HackerNews

<comment><AUTHOR> We're applying to YC with this for YC'14 and would love your feedback. The end goal for the product is to use all your interest and conversation data to create a personalised feed for you. Over a period of time, publishers would be able to write to it and hence you shall see a feed where information would come to you without the need to search, follow or like anything. We're still a few weeks away from launch but would really like some honest feedback so that we can work it into development than the other way around.</comment>


Show HN: React-rethink-datepicker: A datepicker for humans first public release - <AUTHOR> https://rajasegar.github.io/react-rethink-datepicker/ <comment><AUTHOR> This is the first public beta version of a datepicker component i have written in React with input data entry and i18n support. Comments and feedbacks are welcome.</comment>


Apple Threatened to Abandon Intel Chips over Power Consumption - <AUTHOR> http://www.macrumors.com/2011/08/11/apple-threatened-to-abandon-intel-chips-over-power-consumption/ <comment><USER2> Intel needs to be competing against ARM anyway. With Windows 8 capable of running on ARM chips, Intel needs to stay relevant. Most consumers don't need more processing power, they another core or a faster processor doesn't mean anything to them. Tell them the battery will last two days or that it is xmm thick (because the battery is smaller) and you've got something people care about.

I suspect Apple will move the MacBook Air to one of their own ARM chips in the coming years. Apple likes to control the supply chain, even if at this point the A processors are not really a product differentiator.</comment>


Four Text Editors No Developer Can Live Without - <AUTHOR> https://nickersf.wordpress.com/2015/02/04/four-text-editors-no-developer-can-live-without/

<comment><USER2> Spoiler: Emacs is not on the list and he says the following about Vi

 _For users not comfortable with command lines, and deep levels of customization this tool will feel esoteric and convoluted._

Cracked me up.

</comment><comment><USER3> That article reads like an average teenager preaching the true meaning of life.</comment>


China hacked a Navy contractor and secured sensitive data on submarine warfare - <AUTHOR> https://www.washingtonpost.com/world/national-security/china-hacked-a-navy-contractor-and-secured-a-trove-of-highly-sensitive-data-on-submarine-warfare/2018/06/08/6cc396fa-68e6-11e8-bea7-c8eb28bc52b1_story.html?noredirect=on&utm_term=.cb0833275b64 <comment><USER2> > The data stolen was of a highly sensitive nature despite being housed on the > contractor's unclassified network.

Former government contractor here: Dumbasses need to keep their sensitive data air gapped and inside a SCIF.

If you need to network stuff, there are ways for contractors to implement NSA- approved "type 1" crypto with the appropriate personnel and infrastructure.

Also, I think whoever improperly classified that as not requiring SECRET level protections is going to have a hard time justifying it to their bosses.

<comment><USER3> Are there penalties written into contracts to address failures like this? ISTR when China got loads of F-35 data, Lockheed was "punished" by getting to spend another year and hundreds of millions more dollars "fixing" the plane.

<comment><USER4> So it's not like you're going to take the F-35 and move it over to another contractor. More likely, you'll just cancel it and start gain.

The other aspect is that it's not really the contractor's fault if the exploit was done with a zero-day.

<comment><USER3> Wow I really disagree with that. 0-days are a fact of life. If billions of dollars aren't enough to set up a secure supply chain and air gaps, what would be?

<comment><USER4> You conflate the way the world is with the world you wish it would be.

<comment><USER3> No, I wish we didn't spend trillions of dollars on killing machines for no reason. It's pretty difficult to confuse that world with this one.

Your magical phrase "zero-day" doesn't "win this argument" for you... You're imagining some Stuxnet-level pyramid of remote BIOS and NIC firmware hacks when we all know this was just a poorly configured firewall. That's why "TOP SECRET" exists, CYA.

</comment></comment></comment></comment></comment></comment><comment><USER5> There's a fantastic book called "Blind Man's Bluff" about submarine spying during the Cold War, including a lot of antics like this one. Gripping storytelling, highly recommended read if you're interested in submarines or spying or both.

</comment><comment><USER6> Why doesn't the US do something about that? China almost seems overt about stealing secrets like that.

<comment><USER7> Are you implying that the US are not actively doing the same against nations they see as a threat? It's basically how and why any intelligence service operates - know your enemy and keep up with their technological advances.

<comment><USER8> The difference is that China has been stealing in order to copy, while the China itself has nothing that the US want to copy.

This has been true since the birth of the US. But the future may be different. China is advancing very fast through copying, and years from now we might stop thinking of them as a copycat.

<comment><USER9> > The difference is that China has been stealing in order to copy, while the > China itself has nothing that the US want to copy.

The US may not care to copy Chinese submarines, but it would love to get its hands on all sorts of information surrounding them.

</comment></comment></comment></comment><comment><USER4> I blame the classifiers in this one. The data should have been classified from the start.

The key words in the article were:

> The officials said the material, when aggregated, could be considered > classified

So, the problem is that the material was probably designated as FOUO, but should have been classified as secret.

The difference is that FOUO is okay to be left on desks and the like, but confidential and above needs a safe, and document control.

</comment><comment><USER10> So it's pretty obvious by now that we are actively at war with China and Russia on the cyber front. The question is, are we winning? Are we even fighting back?

<comment><USER11> > So it's pretty obvious by now that we are actively at war with China and > Russia on the cyber front.

We are actively fighting a cyber war with every country. The nations who we spy on the most are our allies. And the nations who spy on us the most are our allies. I know it's counterintuitive but it's international politics, geopolitics and intelligence 101.

For example, israel, Britain, Canada, germany, japan, south korea, etc spy on us the most. And naturally we spy on them too.

And taken a step even further, every nation's government spies the most on their own people. It's almost a certainty that intranational spying makes up most of the spying budgets of china, russia, britain, israel, US, germany, etc.

> The question is, are we winning?

Considering we are the epicenter of tech, what do you think? Considering our intelligence budgets dwarf both china and russia's budget combined, what do you think?

> Are we even fighting back?

Are you serious? Who do you think invented cyber spying? The internet was a DARPA project.

Do you really think only china and russia are spying?

<comment><USER12> Citations needed.

I know some intelligence people. This isn't what they tell me. They tell me that western governments are obsessed with following the law and limiting what their cyber operations touch. It's born out by what I understand from non- classified sources. For example, I read through the source code of Stuxnet when it first came out. There was a ton of guards put in to limit the potential damage it made.

That Canada spies on the USA more than Russia is the biggest bullshit I've ever heard. Read the Snowden leaks and listen to natsec podcasts. The Russians are in a ton of the US infrastructure and the CIA is freaking out about it to the point where they consider cyber to be a bigger existential threat than a nuclear armed DPRK.

<comment><USER13> Just because the microcosm that your contacts happen to see within our compartmentalized and super secret intelligence agencies happens to (supposedly, through two levels of rumor) be on the up and up, doesn't make that a rule for these organizations.

In fact, most everything published besides your testimony suggests the opposite.

<comment><USER12> Just saw this.

I'm happy to change my view when I encounter new evidence, but I see absolutely no evidence that the Canadians (or anyone else outside of Russia / China) have hacked the shit out of the entire USA.

</comment></comment></comment></comment></comment><comment><USER14> The US nuclear triad currently rests dangerously on the US Ohio-class submarines. If the Chinese military develops technology that can eliminate these subs in a surprise attack, they would potentially have the ability to take over the world.

Step 1. Target the 1950s era US ICBM fleet in their static bunkers. This only requires making the POTUS hesitate for ~7 minutes to "use or lose" them.

Step 2. Destroy the few dozen 1950s era upgraded B-52s and a few misc aircraft. Some might slip through but maybe not.

Step 3. Take out the ~14 outdated US ballistic missile subs using new supersonic anti-ship missiles.

Hopefully the US military will be able to upgrade the nuclear triad in time to maintain MAD and eliminate this potential threat. But I think the best solution would be for the entire G7 to develop independent MAD systems so there's never any doubt that it remains in effect.

<comment><USER15> Everything you say is true, but extremely misleading. China's nuclear posture uses what's called the "minimum means of reprisal", which means they have an extremely small nuclear force that is incapable of completing the scenario you outline.

Let me just quote the abstract from Jeffery Lewis's phd dissertation on the topic:

 _Among the 5 states authorized under the NPT to possess nuclear weapons, China has the most restrained pattern of deployment: The People "s Republic of China (PRC) operationally deploys about 80 nuclear warheads exclusively for usewith land"based ballistic missiles. Its declaratory doctrine rejects the initiation of nuclear war under any circumstance. The PRC does not maintain tactical nuclear forces of any kind, and its strategic forces are kept off alert, with warheads in storage. This posture has been sustained over time and changes in threat perception, suggesting restraint is the result of choice and not expediency._

Furthermore, most of the land based ballistic missiles China has deployed are targeted at India, and not capable of hitting the mainland US.

While the dissertation was written in 2004, essentially nothing substantial has changed since then.

<comment><USER16> Nothing has changed in 14 years with China's nuclear arsenal?

Based on what evidence?

<comment><USER15> There have been no _substantive_ changes, but of course there have been minor changes. If you're actually interested in learning more, there's a lot of open source information available. Lewis's blog [http://armscontrolwonk.com](http://armscontrolwonk.com) is a great starting point, but covers a much greater scope.

</comment></comment></comment></comment><comment><USER17> Simply bar them from defense department work/contracts for 5 years and put any current contracts on hold. The other contractors will get the hint. Nothing ever gets done about this stuff, so the status quo remains.

<comment><USER18> Compare this to Facebook effectively selling a Chinese firm the entire social graph. Not any firm, a firm the US Government indicated should be regarded with caution.

That social graph will pay dividends decades after these missiles are decommissioned.

Conversely, if DoD contracts are sufficient, why aren't Facebook contracts? China doesn't care about contracts in either case. If you think a Chinese firm is going to honor a contract with an American company, you need to look up the Organization Department.

</comment></comment><comment><USER19> If China did then so did Russia. But let's give Putin a seat at G table.</comment>


Is Uber getting too vital to fail? - <AUTHOR> http://www.bbc.co.uk/news/technology-38252405 <comment><USER2> I belive Uber is not special in its technical/innovative ways. It is just like a matchmaking application, connecting the people who 'drive' with the people who 'go' somewhere.

The major problem Uber solved is about the laws and culture. When this culture is established and lawmakers recognise this "everyone can become a taxi driver, without a licence or a yellow car" thing, coming up with an Uber-like system is pretty easy.

In short terms, it is not the Uber being too vital but the culture and laws that make it happen.</comment>


Australian Bank Anonymizes and Releases Billions of Records - <AUTHOR> http://peoplelikeu.com.au/ <comment><USER2> I punched in my details and there are approximately 100 people like me. What has occurred to me is that people like me (20's, single) that live in rich mobile areas of Sydney spend less than the national average across most things, and overall. But also, compared to people like me, I get away with about 1/8th of what everybody else spends, and do not feel poor. To the contrary in fact.

What is going on here? I am inclined to believe the data.

What this has really reinforced for me is the extent to which other people must spend their income as it comes in. It has also reinforced the importance of my friends, connections, values & personal knowledge. My friends who enable me to live a life that feels rich whilst, apparently, spending about 1/8th of what everybody else does.

I really am surprised. I was not raised frugally and if I want something and have the money, I generally buy it & I don't need more than I have.

<comment><USER3> A couple of guesses:

\- single does not mean no kids

\- once you are in debt, you may have problems getting out of it (you spend a lot on credit repayment rates)

\- does spending include investment? for example would a life insurance / retirement fund count towards "spending"?

</comment></comment><comment><USER4> Given the history of people being identified from "anonymous" records (thanks a _lot_ , information theory) ... well, I'm glad I'm not banking with the NAB.

<comment><USER5> You misunderstand. This is not an anonymous data-dump like the AOL fiasco, and there is no way to get any raw data.

Basically you just pick a few things like your age, salary and where you live, and then out of all of the people out there "like you", you're shown an average of where people like you tend to spend their money (travel, food, etc.).

Even if you spent a lot of time manipulating the data to try and get it to tell you one person's spending by category (assuming it were possible), the data would be relatively meaningless.

<comment><USER4> Thanks; I was thrown by the title.

</comment></comment></comment><comment><USER6> For what its worth they have not "released" the data. I cannot copy any of the text from the FAQ section but if you browse the FAQs and "about this site" it looks like the whole site is basically an ad/demo of Market Blueprint[1]. But I could be wrong. estromiund, do you know where they released the data?

[1] <http://www.quantium.com.au/market-blueprint>

<comment><USER7> That's correct. It is Market Blueprint in a pretty, consumer skin.

</comment></comment><comment><USER8> I wonder how accurate this actually is... I punched in my details and apparently for my details there are less then 10 people like me. Considering where I live, age etc... that seems unlikely.

<comment><USER9> Same. It is clear now that I am a beautiful snowflake.

</comment></comment><comment><USER10> If they didn't acknowledge the well-known risks and how they got around them, they will have some concerned customers and questions from regulators.

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

Robust De-anonymization of Large Sparse Datasets <http://www.cs.utexas.edu/~shmat/shmat_oak08netflix.pdf> Regarding Netflix's competition: "We demonstrate that an adversary who knows only a little bit about an individual subscriber can easily identify this subscriber's record in the dataset."

</comment><comment> hn-miw-i Interesting, as a customer of ubank I was concerned with the concept, especially after the data deanonymization techniques developed post AOL and Netflix.

However after using the site and entering my demographics (all public properties) I could see that I was like 56 people in area; their base spending patterns did not reflect me at all and I felt like a snowflake. Sometimes big data makes you feel special.

At no time was I shown transactions, merely aggrigate figures in categories. No privacy issue here, keep being decent and ethical national bank!

</comment><comment><USER11> I'd say the initial 6 questions are modelled on Census data, not anonymous bank records.

<comment><USER12> I agree. I am with this bank, and after seeing this was curious as to what information they actually have about me. Looking at the "My Details" section of the site shows only the following info:

\- Name

\- Phone

\- Email

\- Address

\- Tax File Number (not unlike a US social security number)

I came to the same conclusion that its probably based on census data.

</comment></comment><comment><USER13> Is anyone aware of what method they used to make the data anonymous? I'm currently doing research in data masking tools and would be interested to know about the techniques used and the performance of the tool.

</comment><comment><USER14> Kind of cool, but I bank with the bank in question (Ubank / National Australia Bank) and I'm not sure I'm completely comfortable that they'd use my transaction history like this.

<comment><USER15> If your identity isn't attached... it isn't your history. It's just 'a' history.

<comment><USER16> I work for an Australian Bank. We had an internal competition where they didn't sanitise the data for this competition well enough. After a week of analysing the data one of the people in competing in the competition knew who's data we were looking at. It was a friend of theirs.

All identifying information had been removed/sanitised, they could tell from looking at the spending habits.

I disagree with your statement.

<comment><USER15> ... So they knew, because they already knew. So really they just confirmed.

Ask that person to go and find my details, and they will surely fail. Because they know nothing about me, and the transaction history doesn't tell them anything... thus it is not 'identifying'.

</comment></comment></comment></comment><comment><USER17> I put in my numbers to see what it would be like living on the other side of the world (I'm in Dublin, Ireland - it is currently 9C and raining) using the Sydney postcode 2000.

It says my expected house & home costs are $2000, which seems rather high for me. In London and here in Dublin, pretty much everyone my age (mid twenties) is in a houseshare, so we would pay that for the whole property, but split it three ways or so. Is housing just that much more expensive, or what?

<comment><USER18> You only picked one of the most expensive postcodes - that's the Sydney CBD! Yes, it is VERY expensive. In fact, it is _very_ expensive to live in Sydney, full stop.

Try using a 40?? postcode for Queensland.

</comment></comment><comment><USER19> If we go by the history of such anonymization attempts (AOL, Netflix) it is only a matter of time that someone figures out how to get PII from this data.

<comment><USER20> I think the title is misleading for the purposes of catching people's attention. The data is not available to download, and is in aggregate form. The AOL data was not in aggregate form, so it was possible to get personalized details.

They probably constructed a simple decision tree aggregate which is probably less than 10kb of data. I doubt anyone could extrapolate 10kb data into personalized details of an individual.

</comment></comment><comment><USER21> Spooky. Tried it out and found it's prediction accurate for brands and companies I might use. Which was disappointing in a way, I was hoping I might find something new to try. Instead I'm well, just like me....

<comment><USER22> Wasnt even close for me. Not sure if the data's poor for my demographic or I'm atypical.

</comment></comment><comment><USER23> Nice idea but an absolute terrible website. E.g. If you go into the about section and expand one the questions you get this weirdo scroll bar. Seems like they're forcing the layout into a fixed dimension.

</comment><comment><USER24> You can see where rich people eat.</comment>


New Amazon terms amount to 'assisted suicide' for book industry, experts claim - <AUTHOR> http://www.theguardian.com/books/2014/jun/25/new-amazon-terms-book-industry-report-concessions

<comment><USER2> All they really need to do is stop dealing with Amazon. At all. Make their own books-only retail outlet. Amazon's not the only group that can play hardball.

Anti-trust means they have to be careful, but they could form an independent group. It could be done.</comment>


Show HN: Fact check last night's Presidential debate with Quip - <AUTHOR> http://debate.quipvideo.com

<comment><AUTHOR> Developer here. Feedback would be much appreciated. I should also shout out to Firebase for the realtime backend, and Backbone.js, for making my javascript a little less of spaghetti code.

<comment><USER2> The factcheck.org references are neat, though I kind of wish there were more of them. Is this supposed to be crowdsourced?

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

Scrolling the notes is a little difficult. I keep trying to do it, and sometimes it works. Sometimes nothing happens, or I just highlight text; that target's pretty small. (It's particularly annoying when it cuts off a comment I'd like to read.)

Tried to leave a reply, and then it said "Enter a username". Changed my mind, couldn't get back to the commentary without reloading the page.

Chrome / Windows 7

<comment><AUTHOR> Thanks for the feedback! Scrolling works best by using a mousewheel or trackpad. I agree it's not ergonomic for the click and drag approach, and adding width would help that.

We ask for a username only to give a unique identifier for a comment, and so that you can see which comments are yours. We don't ask for an email or social network link because frankly, I dislike demos that do :-P

<comment><USER2> Makes sense. Maybe put the username and comment together? It scared me off and I forgot what I was going to reply to.

I do love the idea of these annotated debates. I wish the last half was pre- annotated, at least with the questions and factcheck.org references. It's a nice way to watch.

<comment><USER2> The scrolling works well. It's a little weird, though, that it takes the mousewheel scrolling when I'm mousing over the comments. It makes sense, now that I've used it, it was just unexpected enough that I didn't think to try it the first time -- I wanted to focus on the element first.

I see now that it's acknowledging the mouseover focus by making the scrollbar visible, but maybe that should be more visually obvious. I didn't see it at first.

</comment></comment></comment></comment><comment><USER3> _bob writes (0:00) i farted_

(in case it's not obvious, that's directly from the site)

seriously?

<comment><AUTHOR> deleted. thanks

<comment><USER4>
      Quip writes (26:45)
      Thanks for participating in this demo of Quip. Click the next video (part 2) to keep watching the debates. Sign up for the beta if you're interested in getting Quip on your site!

      Anonymous writes (26:54)
      Poop

Unfortunately, about as much as can be expected from anonymous comments.

</comment></comment></comment><comment><USER2> Overall, I'm pretty unimpressed with the quality of the crowdsourced comments -- which shouldn't come as any surprise to someone who's spent time on the internet.

I love the format of viewing with factcheck.org references off to the side, but I think it might be a better experience if you had a couple skilled people do and present the research -- or maybe moderate it? The crowd puts in a lot of dumb comments.

</comment><comment><USER5> In projects like these, I wish more of the front end design put more attention on the generated content. I would like to see the latest (or latest and most upvoted) annotations so far and be able to click through to the relevant video part. I am not interested in scrolling through in hopes of finding content, especially as I watched the debate already.</comment>


What If You Only Invested at Market Peaks? - <AUTHOR> http://awealthofcommonsense.com/worlds-worst-market-timer/ <comment><USER2> The problem with these analyses is that nobody invests in "the market". What I have wanted to see for a while is returns on an average investment.

I've seen charts, for example, showing the Dow Jones from the 1929 crash to the present day, showing better returns over the long run than other investments.

However, nobody invests in the Dow Jones as a whole for 80 years. More likely, an average investor invests in a mroe or less random retail mutual fund for 20-30 year.

So, I would like to see the returns on the most popular mutual funds, or stock investment vehicles, over a shorter period of years. I think that would give us a more realistic pictures of what returns on "investing in the stock market" are likely to be like.

</comment><comment><USER3> Would have been nice if each investment was broken out. basically if you don't invest in your 20s your screwed.

</comment><comment><USER4> Adjusted for inflation, he ends up with 480k relative to his original investment.

<comment><USER5> Sure, but part of the point of investing is so your money at least keeps up with inflation. Because by not investing anything and keeping it in savings, your money will eventually trend toward worthless.

<comment><USER6> Except you can buy inflation adjusted bonds, right?

</comment></comment></comment><comment><USER7> What I would like to see is "What if Bob only invested after a big crash."

<comment><USER8> What I would like to see is "What if Bob only invested using advice from the interwebs?"

<comment><USER9> Bob ends up with 4.4 billion dogecoins.</comment></comment></comment>


Amazon's "Two-Day Shipping" Is No Longer Two-Day Shipping - <AUTHOR> https://medium.com/@cwgriffin23/amazons-two-day-shipping-is-no-longer-two-day-shipping-b8051b25d00a#.kch2ygyqz <comment><USER2> Agree this is rapidly turning into false advertising in my opinion. Basically the problem is that when it shows the "Prime" logo, its becoming much less meaningful. 2-day shipping but ships out in 2 days from now, but the 2 day delay is not visible anywhere until you are about to check-out, then what does that "Prime" logo really mean?? Will ship in 2 days after anywhere between 1-7 days of "handling time"?? I mean, honestly that is roughly how I'm interpreting it now..

</comment><comment><USER3> I'll add that this past year, multiple times the site told me my Prime shipping delivery date would be X. No further communication to indicate a delay. Indeed, the system shows the product shipped from whatever source. X would come and pass with no package. It would arrive on Y or even Z.

I no longer trust Amazon's committed _and communicated_ delivery dates.

I suppose I could be all pro-active and self-advocating and repeatedly complain until I get some credits or whatever -- or at least an acknowledgment of the individual situation.

But, that's not really the point of Prime, is it? It's supposed to _reduce_ my hassle.

Not this year, Amazon.

Maybe before you continue your relentless expansion, you should shore up your extant services that built you your current position.

As for me, I'm debating whether I allow or kill my 12/1 Prime auto-renewal.

It's also more than a bit insulting to see new members getting Prime sign up deals for $80, year after year, while you're charging me $100. Who's been the loyal customer? Are you focused solely on growth? Are you such a "monster", "too big to fail", that you don't need to and don't worry about retention?

I'm starting to more actively consider and use alternate purchasing vectors, despite Amazon's erstwhile convenience and payment data security.

P.S. The Bluetooth speaker I order came with a small dent. A lot of items now ship "rattling" around inside a poorly packed shipping box. And the Amazon Basics USB C cable whose page says it supports fast charging, doesn't.

My Amazon experience has been increasingly crappy. The one thing that's improved is that Prime video doesn't pixelate and stutter especially after first starting, like it used to.

<comment><USER4> _I 'll add that this past year, multiple times the site told me my Prime shipping delivery date would be X. No further communication to indicate a delay._

Well, that's disappointing. Myself, I find myself being notified of the delay almost immediately. Let me walk you through it: 1\. Page for the item says, "Order in the next 4 hours and get it by Tuesday". 2\. Sounds sweet, I _really_ need it by Tuesday. Order now with 1-Click, please 3\. Email shows up seconds later: "Your item will arrive on Wednesday!"

Fuckers. That's not a one-off, either, I'm finding it to happen pretty regularly these days.

<comment><USER5> Yeah, I don't do 1-Click (e.g. didn't start Prime until 2 years ago), and I've seen that sort of thing on my consolidated orders when I check out.

 _Sometimes_ I can get it isolated to one of the items in my cart, although it can't remember if they then came from different warehouses.

Don't know about this being a Dark Pattern, though, vs. Amazon regressing to the mean, as others have noted in this context in other HN discussions, there are bound to be consequences to treating your technical staff horribly, with search's eternal awfulness being front and center.

<comment><USER4> _Don 't know about this being a Dark Pattern, though_

I don't know, either. Frankly, of late I'm content to write it off as either apathy, incompetence, or left-hand-doesn't-know-what-the-right-is-doing.

In the end, I don't care other than intellectual curiosity so that I don't slide into the same cesspool in my work. What matters, in a world of nearly infinite online vendors, is Amazon's reputation. Without that, they're nothing in my book. And in my book, Amazon's reputation isn't anything near what it was ten years ago. Nothing major, I guess, but that reputation is being chipped away one hammer stroke at a time. Knock-off items, okay, I can mitigate that. Blatantly lied about when my item will be delivered? Bah, I grew up in an age of "allow 4-6 weeks for delivery", one more day won't kill me. But those things start to add up. Which is why I continue to seek out other vendors, and don't see myself doing much business with them in the next couple of years.

<comment><USER5> Good point, and for that matter, a Dark Pattern they _could_ decide is a bad idea (especially if it's not authorized at a high enough level) would be a lot better than a regression to the mean, which is much harder if not impossible to fix.

I still have a higher trust in them than pretty much any other general on-line merchant (a finely honed BS detector and general suspicious nature about anything "too good to be true" makes a difference, plus watching my father get burned on an iPhone purchase on eBay where the merchant played eBay like a fiddle) ... but they're getting me to start to look at others, which is not what I think they want....

</comment></comment></comment></comment></comment><comment><USER4> Whatever explanations might be bandied about both here and on Amazon's explanatory pages, no explanation will be sufficient to explain away my personal experience: used to be that when Amazon said "two day shipping", it would show up on my doorstep in two days. That no longer happens, not even regularly. Now it means "it'll get here sometime this week". So when my Prime renewal comes up again, it won't be getting renewed.

</comment><comment><USER6> I wonder how much of this depends on where the user lives. I'm in the Dallas/Fort Worth area, and Amazon has several large sized warehouses. I frequently find things showing up the next day, even though I have Prime and left it at 2 day shipping. A few items have even arrived on Sunday.

<comment><USER7> Same here, but we are close to the New Castle DE Amazon location.

We get stuff on Sunday, but it's now delivered by a truck/van with an Amazon logo on it.

Maybe what we are buying, but things ordered via Prime are here in two days. Most recent was bathroom fans. Builder on Friday said the ones we ordered wouldn't fit, ordered the smaller version, said come back Monday. UPS dropped them off at 10AM and they were installed by noon.

</comment></comment><comment><USER8> I had the same question so I looked it up on the amazon site.

According to the site 2 day shipping is 2 days from the time of shipping. It does not mean it will get to the purchaser in 2 days - Saturday and Sunday don't count.

Here's the link: [https://www.amazon.com/gp/help/customer/display.html?nodeId=...](https://www.amazon.com/gp/help/customer/display.html?nodeId=3043211)

Anyway I look at it, prime works for me. I've even gotten stuff next day even though they predicted more days. It's amazing since sometimes it takes me few day to get to my local target to get the stuff I need.

<comment><USER9> Whenever I ask customer-support about it, they always just refund me, and let me keep the item. It's only been items that are <$100, so YMMV. I've personally always thought that they were just making it up in volume from people who don't verify.

</comment></comment><comment><USER10> Their help page, unless recently modified, explains why this is. I agree it is a 'dark pattern' however.

 _> If the item you're ordering is out of stock or unavailable to ship immediately, the shipping method time starts when the item ships. For example, it will take two business days after an item ships to reach you with Two-Day Shipping._

Simply put - the item does not ship immediately. If you read the 'Guaranteed delivery date' message it gives you an "If you order in the next x hours and y minutes". That is when the shipment is expected to be made.

Why are the boots 4 day shipping? Because the next guaranteed delivery time is in 61 hours (>48 hours, so 2 days to ship then 2 days to deliver = 4 day delivery). If it was "in the next 73 hours" it would be a 5 day delivery.

The exploding kittens is 3 days because the order is within the next 24 hours. I wager if they waited 17 minutes one of two things would happen: it would estimate 2 day shipping or the date would be pushed back an additional 24 hours (never falling under 24 hours).

I imagine this is because the companies selling these items can only guarantee shipment within 24/48/72 hours of receiving an order. If they set this to 72 then "2 day shipping" is really 4-5 days.

My personal experience, nearly all of my 2 day shipping comes within 2 days, even when the guaranteed date is 3-4 days out. Items with 12-15 business day shipping often arrive in just a few days. I'm a bit forgiving when my 2 day shipment comes in 3 days when my 2 week shipments frequently come in 3-5 days...

<comment><AUTHOR> Yes agreed, but the real question is why can they guarantee that your item will ship sooner if you select one-day shipping. They can conveniently get your item on the truck much more quickly (1 vs 3 days) if you are willing to pay extra for one-day shipping.

For example for the boots:

One-Day Shipping -> 1 day of processing + 1 day of shipping = 2 day turnaround

Two-Day Shipping -> 3 days of processing + 2 days of shipping = 5 day turnaround

<comment><USER11> Because when paying for 1-day shipping, the cost is astronomical. It would be _unacceptable_ to pay that price and not have it next business day. If they couldn't actually do real one-day shipping, then they would not be able to offer it. It exists only because we have to pay a large fee on every individual delivery. You pay the high cost for a guaranteed service.

Amazon Prime simply cannot scale at the given price point. People who place >= 100 orders a year are paying <= $1 per shipment. The $100/year Prime subscription is not sustainable if people use it. I'm sure they claw back a significant profit from people who buy Prime and then only order 10-20 times a year, but it's possible it doesn't earn back what excessive users are costing them.

Is it a little shady that they offer 2-day shipping with caveats? Yes. They should either make it much more clear that there are no guarantees, or increase the cost of heavy Prime users to be profitable enough to scale it properly.

</comment></comment></comment><comment><USER12> If you accept the fact that 2 day shipping doesn't necessarily mean 2 days given the proper circumstances, the same should apply to 1 day shipping. And probably in an inconsistent manner.

</comment><comment><USER13> I heard a rumor if it took more than 2 days you could contact support and get a free month of prime or something??

</comment><comment><USER14> I've noticed this as well -- that Amazon's 2-day shipping doesn't really mean what it used to mean.

</comment><comment><USER15> I feel like that Amazon stopped selling stuff on there own anyway.

It is all third party now. Rarely delivered by Amazon...

</comment><comment><USER16> 2 day, 3 day, even 4 day - I don't really care that much. I don't have to care about cost of shipping, it shows up "pretty fast" and that's what counts. I'm not trying to choose one vendor over another based on shipping cost, shipping time, etc. I just buy it and don't worry.

<comment><USER17> Not a comparable nor relevant statement. Almost like saying I paid for a first class ticket, landed 2 days latter and flew coach with everyone else.

Give your head a shake man.

If we pay for 2-day shipping and the service isn't being provided as promised that's IS the topic, not whether you care about the arrival speed or not.

Not everything is about you.

<comment><USER18> Right, but if it matters to you, cancel your prime membership. Vote with your dollars. My hunch is that people just want to complain though, and the number of people who would actually quit prime is insignificant.

Like OP, I don't care if it's 2-4 days; I can order from the iOS app with a few taps, and that's worth not ever having to shop other online retailers or drive to a store.

</comment></comment></comment><comment><USER19> If I wrote a blog post every time something's wrong with a shipment...</comment>