Hacker Newsnew | past | comments | ask | show | jobs | submit | TheLoneTechNerd's commentslogin

Yeah I'm honestly not sure why people would be surprised at this comparison - Whole Foods and Trader Joe's are specialty stores. Nobody goes into them just to buy a head of lettuce.

Trader Joe's has their own in-store brands for tons of products, which has spawned various guides on what should/shouldn't be bough there (https://www.thepennyhoarder.com/save-money/what-to-buy-at-tr... for example). CVS, on the other hand, is a far more general store. They both sell food, but they're not in the same market segment - so the comparison is strange.


>Nobody goes into them just to buy a head of lettuce.

wtf are you talking about? I do this (with other greens and vegetables). If anything, the people shopping at WF/TJ don't want a head of lettuce because it's a stupid product, but I think you're using that as an example...but using head of lettuce just makes me believe you don't understand the demographic.


I don't live in the US, but I've been to Whole Foods when visiting and certainly felt like a perfectly normal grocery store, not too different from most other grocery stores I've been to. What makes it a specialty store and why wouldn't you go there to buy a head of lettuce?


"Whole Foods" has earned its nickname of "Whole Paycheck" (https://www.fastcompany.com/90305918/whole-foods-is-becoming...) although they've tried various ways of combating this, some mentioned in that article


Whole Foods started out as an upscale/organic grocery store, but now they're mostly just Amazon's grocery store.


I know a lot of people who do all their shopping at Trader Joe’s.


I know a lot of people that don't. Now we can have an anecdote duel!


The claim was “nobody does.” I responded with “someone does.” An anecdote is sufficient proof here.


Does CVS have lettuce?


Honestly? That would be awesome. I already have security cameras set up like that (although not wireless) - just home devices that do things for me and report back to a central server in my home. That server can connect to the internet (when I want it to), grab new firmware for the cameras, then disconnect and send out the firmware.

That's pretty much all I want from home automation as well. I see the value in being able to say "Alexa, turn down the lights" and having AWS do the voice recognition - but given that I can't trust services to stay more than a few years, I'm not going to invest in it.


Level 1: The people who just go to the site/download the APK

Level 2: The people who realize that the requested actions are likely unsafe, and complain about it

Level 3: People who realize that this is part of the challenge and just use a VM

Nobody on HN is "this dumb", if you want to participate in a challenge with an intelligence agency, take the proper precautions


The majority of the population is Level 1. Consider what that means for Mossad.

Enjoy your challenge.


"The majority of the population is Level 1"

Yes, and those people might visit a website, which asks for...shudder...cookies. If you can show that the cookies do something nefarious, I'd be interested. Do you think they general population would even get to the point of installing an APK?

"Consider what that means for Mossad"

At this point, you can't even prove that the APK does anything nefarious - and it would be dangerous for the Mossad if it did, because the challenge is literally to decompile the APK.


I thought the majority of the population was level 4.

Level 4: Ignore it.


Level 5: You've downloaded Droid4X extra because of it, installed Java and everything and then you come back on HN to look if somebody is already on the next challenge (in order to save time) and then you start again, but with the new challenge :)


Of course not, it would be prohibitively difficult to deconstruct the apk from the phone itself.


Does anyone have insight on why they're making this change? All they say in this post is "In our effort to continuously improve customer experience". From my point of view as a customer, I don't really see an experiential difference between a subdomain style and a path style - one's a ".", the other's a "/" - but I imagine there's a good reason for the change.


Three reasons -

First to allow them to shard more effectively. With different subdomains, they can route requests to various different servers with DNS.

Second, it allows them to route you directly to the correct region the bucket lives in, rather than having to accept you in any region and re-route.

Third, to ensure proper separation between websites by making sure their origins are separate. This is less AWS's direct concern and more of a best practice, but doesn't hurt.

I'd say #2 is probably the key reason and perhaps #1 to a lesser extent. Actively costs them money to have to proxy the traffic along.


I think they should explain this a bit better. That said

For core services like compute and storage a lot of the price to consumers is based on the cost of providing the raw infrastructure. If these path style requests cost more money, everyone else ends up paying. It seems likely any genuine cost saving will be at least partly passed through.

I wouldn't underestimate #1 not just for availability but for scalability. The challenge of building some system that knows about every bucket (as whatever sits behind these requests must) isnt going to get any easier over time.

Makes me wonder when/if dynamodb will do something similar


So "improving customer experience" is really Amazon speak for "saving us money"


Makes it faster, reduces complexity and would allow them to reduce prices too


Pricing is set by markets based on competitors' offerings. Reduced costs could simply result in monopoly rents.


reduces incentive for them to raise prices


And reduces chances of outages... which is good for both customers and AWS.


Do they not charge for network costs anyway?

A more optimistic view is that this allows them to provide a better service.


They charge for data transfer. They don't charge based on the level of complexity needed for their internal network operations.


Everything is a tradeoff.


With Software defined networking you don't need the subdomain to do that.


Yeah you basically do. Sure you can reroute the traffic internally over the private global network to the relevant server, but that's going to use unnecessary bandwidth and add cost.

By sharding/routing with DNS, the client and public internet deal with that and allow AWS to save some cash.

Bear in mind, S3 is not a CDN. It doesn't have anycast, PoPs, etc.

In fact, even _with_ the subdomain setup, you'll notice that before the bucket has fully propagated into their DNS servers, it will initially return 307 redirects to https ://<bucket>.s3-<region>.amazonaws.com

This is for exactly the same reason - S3 doesn't want to be your CDN and it saves them money. See: https://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosti...


I'm not sure you understand how anycast works. It would be very shocking if Amazon didn't make use of it and it's likely the reason they do need to split into subdomains.

Anycast will pull in traffic to the closest (hop distance) datacenter for a client, which won't be the right datacenter a lot of the time if everything lives under one domain. In that case they will have to route it over their backbone or re-egress it over the internet, which does cost them money.


AWS in general are not fans of Anycast. Interesting thread from one of their principal engineers on the topic.

https://twitter.com/colmmacc/status/1067265693681311744

Google Cloud took a different approach based on their existing GFE infrastructure. It does not really seem to have worked out, there have been a couple of global outages due to bad changes to this single point of failure, and they introduced a cheaper networking tier that is more like AWS.


> AWS in general are not fans of Anycast.

I don't think that's true. Route53 has been using Anycast since its inception [0].

The Twitter thread you linked simply points out that fault isolation is tricky with Anycast, and so I am not sure how you arrived at the conclusion that you did.

[0] https://aws.amazon.com/blogs/architecture/a-case-study-in-gl...


Route53 is the exception, compared to Google Cloud where the vast majority of api's are anycast through googleapis.com

It's a good choice for DNS because DNS i a single point of failure anyway, see yesterdays multi hour Azure/Microsoft outage!


Got it, thanks. Are there research papers or blog posts by Google that reveal how they resume transport layer connections when network layer routing changes underneath it (a problem inherent to Anycast)?


I do understand how it works and can confirm that AWS does not use it for the IPs served for the subdomain-style S3 hostnames.

Their DNS nameservers which resolve those subdomains do of course.

S3 isn't designed to be super low latency. It doesn't need to be the closest distance to client - all that would do is cost AWS more to handle the traffic. (Since the actual content only lives in specific regions.)


Huh? If the DNS doesnt see the bucket name how can it hand back the right IP of where the bucket lives?


How does that work? My browser is going to send all requests to the same domain to the same place.


Anycast ip.

You have a sole ip address. All traffix routed to nearest PoP. The PoP makes the call on where and how to route the request.

Lookup google front end (GFE) whitepaper. Or thd google cloud global load balancer

That front end server that lives in the PoP can also inspect the http packets for layer 7 load balancing.

https://cloud.google.com/load-balancing/docs/load-balancing-...


Added to my comment, but basically S3 is not a CDN - it doesn't have PoPs/anycast.

They _do_ use anycast and PoPs for the DNS services though. So that's basically how they handle the routing for buckets - but relies entirely on having separate subdomains.

What you're saying is correct for Cloudfront though.


With SDN the PoP would only need to receive the TCP request and proxy TCP acks.

Raw data could flow from a different PoP that's closer to DC.

Aka user->Closest PoP-> backhaul fiber -> dc->user


Presumably Amazon has PoPs for CloudFront; why couldn't S3 share the same infrastructure?


They could do that, but they have absolutely no incentive to do so - all it would do is cost them more. S3 isn't a CDN and isn't designed to work like one.


It means two hops not one. S3 gets can be cached but then you have a whole host off issues. Better to get to the origin.


One big reason to me: cookie security

Currently all buckets share a domain and therefore share cookies. I've seen attacks (search for cookie bomb + fallback manifest) that leverage shared cookies to allow an attacker to exfiltrate data from other buckets


Cookies support URL path restrictions.


That doesn't prevent unauthorized reading of the cookies. The only way to properly prevent it is using a different domain/subdomain.

https://developer.mozilla.org/en-US/docs/Web/API/document/co...


The only obvious thing that occurs to me is that bringing the bucket into the domain name puts it under the same-origin policy in the browser security model. Perhaps there are a significant number of people hosting their buckets and compromising security this way? Not something I have heard of but it seems possible. Makes me wonder if they are specifically not mentioning it because this is the reason and they know there are vulnerable applications in the wild and they don't want to draw attention to it?


Removing my comments because I can't seem to delete them...


Does it bother you the domain is amazon.com and not com.amazon?


I can't read what you're replying to, but it absolutely bothers me. The current scheme has this completely random double reversal in the middle of the URL; it would have been so trivial to just make it actually big-endian, but instead we have this big-little-big endian nonsense. Far too late to change it now, but it is ugly and annoying.


Probably because they want to improve the response time with a more precise DNS answer.

With s3.amazonaws.com, they need to have a proxy near you that download the content from the real region. With yourbucket.s3.amazonaws.com, they can give an IP of an edge in the same region as your bucket.


I would guess cookies and other domain scoped spam/masking 'tricks'? I've never tried but perhaps getting a webpush auth on that shared domain could cause problems


It’s a known trick for spammers to leverage the amazon domain to rank higher in search rankings.


That's a search engine problem, not a hosting problem.


Virtual and path style share the same domain suffix. It's also *.amazonaws.com, not amazon.com.


Public suffix list: https://publicsuffix.org

s3.amazonaws.com subdomains are as distinct from each other as co.uk subdomains.


I have no visibility into Amazon, but using subdomains let you shard across multiple IP addresses.


At 32 seconds into the video, you can see a few frames of a Google Sheet where one column is the name of the sport (you can see "Quidditch" quite a few times) and a second column is a rule, like "The Chasers are there to try and keep posession of the Quaffle...". Looks like one row per rule. Teh filename is "AKQA AI SPORT".

No idea if that's what they used for the actual training, though.


Baseball is represented by 6 rules. Ultimate Frisbee is represented by 18. Quidditch is represented by 20+.

Wikipedias list of sports is in the neighborhood of 1200 sports: https://en.wikipedia.org/wiki/List_of_sports Excluding an extra list of 150 or so ball games.

So Baseball has about an average representation of rules, whereas quidditch is weighted way higher than the average sport.


> So Baseball has about an average representation of rules, whereas quidditch is weighted way higher than the average sport.

I'm sorry, I'm having trouble following what you mean here. Could you explain it a bit further?


First, amazing post, I want to see a blog post of someone's day entirely like this.

> That isolation is great though because I went straight back to enjoying my beer.

Second, I find the isolation to be a bit leaky - rarely am I immediately back to my normal operation. Maybe I need to reimplement my VM.

Third, isolation in theory is great, but in practice requires far too many resources. I agree that the "internal virtual machine" metaphor is fantastic, but if everyone is running it to fit in with society...we're wasting a ton of brain space at the societal level.


I think you'd get far more traffic if you linked to a page that actually has information (https://code.headmelted.com/) instead of to the list of builds!

In any case, this is awesome and I'll definitely give it a try


Thanks, we've updated the link from https://github.com/headmelted/codebuilds/releases.


Thanks for this, wasn't sure which was best to use.


Ah, I see we're still doing "run the output of this url as root" installation..


That's how all executable code is distributed outside of a package manager.

Ever downloaded an EXE on Windows or DMG on Mac? It's the same, except you can inspect the code doing it this way if you were worried.


Good thing nothing bad ever happened because someone ran an EXE they downloaded off a Web site...


Windows will complain if you download and try to run an unsigned exe. While APT packages can be signed, wget|sh can't be, so it's comparatively easier for someone to trojan the website and distribute malware.


I've written this type of script before - I didn't need too much in the way of debugging. Mine (similar to GP, it seems) didn't actually do the registration, just save the current state of known divs or even the whole page. Then it would send me an update if that changed.

So, I didn't need to debug what happens when the class shows "open" - I just saved the div that said "closed" and sent myself an email/text any time it didn't say exactly that.


You could test it by having it sign up for undesirable classes like underwater basket weaving that had plenty of openings. The terminal interface was kind of gross to script, but the underlying data was pretty easy.

You basically had to just send the correct number of arrow key presses to get the cursor to the correct field, send the digits, and then send the enter key. Parse the data that comes back, and add the routine to cursor over to the "add course" prompt when it says there is an availability. The script was totally gross looking but it worked.


Clickbait title - the "this" referenced is Instagram, and other social media accounts.

"...hiring managers are more likely to check your Instagram account."

"...38% search for social media accounts..."

"When evaluating a candidate, I check for a Twitter profile to see what types of articles are shared, where he or she gets news, what content is of value to the candidate, and how he or she engages with other people"


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: