JavaScript's internal character encoding: UCS-2 or UTF-16? - <AUTHOR> http://mathiasbynens.be/notes/javascript-encoding <comment><USER2> > Both UCS-2 and UTF-16 are character encodings for Unicode.

UCS-2 is not an encoding that is generally compatible with Unicode. It's kind of like saying that 7-bit ASCII and UTF-8 are character encodings for Unicode.

<comment><AUTHOR> > It's kind of like saying that 7-bit ASCII and UTF-8 are character encodings > for Unicode.

They can only encode a subset of Unicode, sure, but they're still character encodings for Unicode, right?

<comment><USER2> Sure, but if I buy a product released in 2012 that advertises "Unicode" support, and it turns out that it only supports a version of it from the era of IE4, I'm probably going to whine.

</comment></comment></comment><comment><USER3> "It produces a variable-length result of either one or two 16-bit code units per code point"

      from the article.

"It produces a variable-length result of either one or two 16-bit code units per code point"

      from wikipedia.org

I feel this should have been quoted or referenced in some way in the article. Or it might just be a very rare case of coincidence.

</comment><comment><USER4> The encoding is UTF-16, but what it calls "characters" are code units <http://unicode.org/glossary/#code_unit>, not code points <http://unicode.org/glossary/#code_point>.

<comment><AUTHOR> Exactly. This makes it more like UCS-2 than like UTF-16.

</comment></comment><comment><USER5> For all the gory details about TC-39 work to possibly get rid of this restriction in ECMAScript and support full Unicode, venture to the TC-39 wiki:

[http://wiki.ecmascript.org/doku.php?id=strawman:support_full...](http://wiki.ecmascript.org/doku.php?id=strawman:support_full_unicode_in_strings)

</comment><comment><USER6> Why doesn't everybody use UTF-8? How much overhead is incurred in encoding a non-ascii language (say Chinese) in UTF-8 compared to UTF-16?

<comment><USER7> Because Windows uses UTF-16 as its Unicode encoding. Why? Because Unicode support in Windows started in NT, and that used UCS2. Why? Because when NT was first being developed in 1989/1990, UTF-8 hadn't been invented yet, and wouldn't be for another few years. And UTF-8 didn't have much traction at all until after 2000, by which time it was too late.

Also, Windows has some problems with UTF-8 due to MB_LEN_MAX[0] being 2. Which cannot be changed because that would break the ABI. (e.g. "char foo[MB_LEN_MAX * len + 1];") Those problems aren't totally insurmountable as Windows does have UTF-8 code pages which work, but it's not totally plain sailing.

In any case, going back now would be an admission of a mistake.

Thus, Windows is UTF-16. And the infection spreads....

[0] [http://www.kernel.org/doc/man- pages/online/pages/man3/MB_LEN...](http://www.kernel.org/doc/man- pages/online/pages/man3/MB_LEN_MAX.3.html)

</comment></comment><comment><USER8> Very nice write up. I was actually looking for something like this about a week ago, and was referred to the ECMAScript spec (section 8.4) which talked about "UTF-16 code units" - which I believe is just UCS-2. If this is the case, I kind of wonder if the spec should be updated to make things a little more clear, since the issue isn't straight forward for those who don't know a lot about unicode.

<comment><USER9> Not quite. Surrogates (<http://stackoverflow.com/q/5178202/12048>) are UTF-16 code units but they are not UCS-2 code units.

<comment><AUTHOR> This.

JavaScript's internal encoding is closer to UCS-2 than it is to UTF-16, but it doesn't guarantee that a string is valid UCS-2 (or valid UTF-16).

</comment></comment></comment><comment><USER10> This means that for applications that want to store binary data as efficiently as possible in localStorage (e.g. Offline Wikipedia <https://news.ycombinator.com/item?id=3409512>), you can pack two bytes into each string character. ECMAScript strings are just arrays of 16-bit unsigned integers (e.g., '\ud800' is a valid JS string but is not valid UTF-16).

<comment><AUTHOR> It's worth pointing out that `'\ud800'` is not valid UCS-2 either, since UCS-2 technically doesn't allow surrogate characters.

JavaScript strings are like UCS-2, except that they allow surrogate characters.</comment></comment>


Ask HN: Why do Amazon gift cards sell for more than face value? - <AUTHOR> http://cgi.ebay.com/Amazon-com-75-Gift-Card-Certificate-Free-Ship-Amazon_W0QQitemZ190281526272QQcmdZViewItemQQptZUS_Gift_Certificates?hash=item190281526272&_trksid=p3286.c0.m14&_trkparms=72%3A1205%7C66%3A2%7C65%3A12%7C39%3A1%7C240%3A1318%7C301%3A1%7C293%3A1%7C294%3A50 <comment><USER2> In high school I used to sell this kind of stuff on eBay. Some of the reasons people buy cards/certs online:

1\. Foreigners. People in Europe want to buy products off US Amazon but don't want to deal with credit card or banking currency conversion fees or the address verification.

2\. Lack of credit cards. Kids or something can use checking-backed PayPal but not credit cards.

3\. Leveraging promotions. Microsoft cashback for buyers (10-30% discount on Buy It Now prices) was pretty popular and it completely fucked up eBay economy for awhile so thank god they stopped it. People also often get PayPal or eBay or credit card promotional coupons.

4\. People are just stupid. This tends to apply to eBayers.

5\. Fencing credit cards. Somewhat rare nowadays.

People also buy physical Staples and OfficeMax because they're percentage- based.

This is actually really shitty business for the seller since eBay/PayPal takes about 25% with their fees.

<comment><USER3> With some account-a-magic it might be used as some sort of tax evasion, too.

<comment><USER4> Its a way to get around VAT for euros isn't it?

</comment></comment></comment><comment><USER5> It's due to a Microsoft cashback programme that rewards users for locating ebay items using Live search.

[https://cashbackaccount.search.live.com/cashback/welcome.asp...](https://cashbackaccount.search.live.com/cashback/welcome.aspx)

<comment><USER6> That explains why they are _selling_ ; Why would anyone _buy_ them at more than face value?

<comment><USER7> No - the _buyers_ got the 30% off. But the eBay/Cashback experiment was reported to have ended after the holiday.

Anyway, I'm sure auction psychology and the Winners Curse still has a lot to do with this.

</comment></comment></comment><comment><USER8> Maybe when you buy an Amazon gift card there is a fee. During Christmas I noticed that a bunch of cards for $X cost you $X+5 to actually purchase. Or maybe sipping is $2 from Amazon.com in which case you are still saving right now by getting free shipping.

</comment><comment><USER9> My first thought was money laundering, but maybe that's just crazy :-p. If you were to launder money through gift cards though, Amazon would be the right choice.

<comment><USER10> Probably not that crazy... maybe carders converting stolen cards to cash?

<comment><USER3> Sounds right. The key problem for carders is the drop place and buying this way disconnects the card with physical address. Plus it could be used as a black market currency. Oh, and ideal for tax evasion at the micro level. The taxman is much better at tracking this type of scams than FBI, no CSI magic but plain old "follow the money."

Now, if I were an US three-letter agency agent, I'd be the top seller of this cards and track the hell out of it. I mean, it even gives a profit, no budget issues. Tracking email, IP, and making contacts would be trivial. Could even be done without a court order to PayPal or anything. Selling gift cards isn't a crime, so it wouldn't be entrapment by itself, AFAIK and IANAL.

</comment></comment></comment><comment><AUTHOR> I should clarify that a valid explanation would account for the fact that gift cards _other_ than Amazon's consistently net below face value.

</comment><comment><USER11> I don't know for amazon card, but I sold japanese itunes card to people who wanted to have access to japanese music on itunes. I guess that for foreigners who want to buy a kindle it could be interesting to get a us amazon gift card. (not that I understand why one would buy a kindle instead of the sony reader....)

</comment><comment><USER12> Just guessing but maybe because it's a way of buying things on Amazon dot com without having a CC with a US address?

<comment><USER13> I've purchased a ton of books off Amazon without having an address in the USA. I know I cannot purchase electronics, but this is more of an import/ taxation issue... I don't see how a voucher would overcome this.

<comment><USER14> And I've bought a DVD off of amazon.co.uk that wasn't available in R1 at the time.

</comment></comment></comment><comment><USER15> And why does Roku sell for more on eBay than you can buy one for online from Roku?

[http://shop.ebay.com/?_from=R40&_trksid=m38&_nkw=rok...](http://shop.ebay.com/?_from=R40&_trksid=m38&_nkw=roku&_sacat=See- All-Categories)

vs.

<http://www.roku.com/default.aspx>

</comment><comment><USER16> _Maybe_ it's also the psychological thrill of winning an auction? Less-likely so, but possible.

</comment><comment><USER17> Maybe people from outside of the US buy them in order to be able to shop at the Amazon MP3 store?

</comment><comment><USER18> It's probably also a cheap/easy way to rack up good feedback for both the buyer and seller. I can think of easier ways, but I suppose this could work too.

</comment><comment><USER19> [http://www.theatlantic.com/doc/print/200812/financial- bubble...](http://www.theatlantic.com/doc/print/200812/financial-bubbles)

</comment><comment><USER20> My guess would be scammers trying to get a free gift card. Who wouldn't enthusiastically send a $75 gift card to someone willing to pay $80 for it?

<comment><USER21> I'm sure at least some of these are going to people who are buying them with stolen credit cards or other scams. But it seems that there would be less fraud with gift cards, since they could be remotely disabled and are traceable. That having been said, who knows if Amazon and others actually help victims of fraud recover their gift cards or not..

</comment></comment><comment><USER22> Because a 75$ Amazon Gift Card is a better gift than 75$</comment>


Controversial Australian encryption laws could pass parliament soon - <AUTHOR> https://www.news.com.au/technology/online/security/inprinciple-deal-struck-on-controversial-encryption-bill/news-story/75492c0ee5a389a0ada7955733529af4 <comment><USER2> We are under unprecedented levels of surveillance, with drones, street cameras (possibly with automatic face and gait identification), credit card transactions monitored, phone location logged via cell towers, cars via license plate scanners, pervasive internet monitoring by numerous actors, etc. And that's all -before- someone is actively targeted by the police, which can result in bugs placed in the home, car, and on computers, recording conversations, recording passwords as they're typed in through compromised keyboards or usb cables, or using telescopic lens and a camera, or one of those fancy through-wall-radars. Forensic science has also advanced, allowing traces of suspicious chemicals to be detected on a person, their DNA identified anywhere they shed dead skin cells,

Almost the only scrap of privacy left is due to encryption (easily circumvented by planting bugs), yet they want to strip away even that, claiming we have so much _more_ privacy than ever before, that it's making police work impossible??

</comment><comment><USER3> As an insight into how well thought out these laws are, then-PM Malcolm Turnbull said the following when announcing these laws in 2017:

"The laws of mathematics are very commendable, but the only laws that apply in Australia is the law of Australia."

A disappointing case of "let's just make a law, then the nerds can figure it out."

<comment><USER4> It honestly sounds like satire.

He's not entirely dumb and I've always got the impression that he's not a fan of his own party.

I suspect he knows exactly what he was saying and how stupid it was. But behind him everyone was aggressively nodding their heads.

<comment><USER5> He's a very intelligent man who as a barrister understands the power of language.

When a very intelligent man who understands the power of language says something so obviously false, it makes me almost certain there is something larger at play here.

</comment></comment></comment><comment><USER6> The thing that smells bad to me is the combination of

1\. They want it to be rushed through

2\. It's unprecedented in the western world

3\. Australian Governments never do anything unprecedented

Something else is at work, be it straight-up politics, an actual valid suspected terrorist threat, pressure from the US / 5-eyes. Whatever it is, there's no way that unprecedented legislation should be rushed through. EVER.

<comment><USER7> The same recipe is used in trade agreements and by 5-eyes:

1 - get someone else to write it into local law (if they're small like AUS) or a trade agreement

2 - then get the folks "back home" to pass the same laws because "our international partners demanded it"

You can see that blatantly in TPP: as soon as the US dropped out the other participants ripped out some of (sadly not all of) the worst crap the US was trying to cram into it and passed a much better (IMHO) agreement.

Clearly in this case the US and/or UK are leaning on AUS to do this. There's no significant domestic call for it.

<comment><USER6> Yes, that's also odd. Australia has been relatively un-touched by terrorism. We've had some lone crazies, but they're just individual mental cases as opposed to a semi-organised cell.

There was a group of three people recently arrested for planning some kind of shooting, but the point is they were discovered and arrested. With the current set of laws.

</comment></comment></comment><comment><USER8> So some Australian law enforcement entity tells Apple to push an update to a suspects phone that borks the encryption. Apple pretty much has to say no, otherwise they would get in trouble with the US government, which they are currently at odds with for the same refusal.

Then what?

</comment><comment><USER5> Ignoring the obvious and _gigantic_ privacy implications of this...

This will kill the Australian software industry because Australian software cannot be trusted worldwide from now on.

</comment><comment><USER9> I suspect Australian politicians are doing what is demanded as a price for retaining the countries current intelligence, military and trade status.</comment>


AmiKit X – An emulator engine to run Amiga on Windows or Mac - <AUTHOR> https://www.amikit.amiga.sk <comment><USER2> If you don't need the bundled software and already have a legal copy of the ROM (you can extract it from a physical Amiga, for example), FS-UAE is free and Free:

[https://fs-uae.net](https://fs-uae.net)

[https://github.com/FrodeSolheim/fs-uae](https://github.com/FrodeSolheim/fs- uae)

If you don't have a legal copy of the ROM you can buy "Amiga Forever", which includes the ROM, a license to use it, and a bunch of bundled Amiga stuff.

[https://www.amigaforever.com](https://www.amigaforever.com)

<comment><USER3> If you're super cheap, you can buy just the ROMs on the Google Play store [https://www.amigaforever.com/android/](https://www.amigaforever.com/android/)

</comment></comment><comment><USER4> It's really sad that Amiga retro ecosystem always tries to put a price on everything. For example, MUI is still "shareware" with some silly license files. Come on, give it away as freeware or open source already!

UPDATE: [http://www.sasg.com/](http://www.sasg.com/)

Keeping this stuff closed source is of course their right as copyright holders but it cannot be a good business and just pisses people off.

<comment><USER5> Zune is the open-source reimplementation of MUI:

[http://aros.sourceforge.net/introduction/status/zune.php](http://aros.sourceforge.net/introduction/status/zune.php)

</comment></comment><comment><USER6> I love the Amiga... but no Linux support? And I probably wouldn't buy it without a trial first.

<comment><USER7> The last free version supporst also Android and Linux: Here is the Linux version: [https://www.amikit.amiga.sk/linux](https://www.amikit.amiga.sk/linux)

</comment></comment><comment><USER8> So, you need an Amiga ROM to make this work. To get an Amiga ROM, it recommends purchasing one of two things, one of which is... Amiga Forever, a different Amiga emulator. If I have to buy an Amiga emulator anyway, what's the value prop of AmiKit?

<comment><USER2> Amiga Forever is a bundle that includes an emulator, as well as ROMs, and a bunch of software.

Not that that makes it much better. I _think_ the difference is that AmiKit is designed for running "current" Amiga software, but Amiga Forever is designed for Commodore-era software.

But I'm not sure. It's not clear.

<comment><USER7> AmiKit is a modern configuration and a curated collection of software for the Amiga, set up as environment for the UAE emulator. If UAE is the application, then AmiKit is the document it loads. So to say...

AmiKit was always free. It seems to have gone commercial now.

Some Shareware soft is regsitered here, for example, MUI5, which is _the_ Amiga OOP GUI library. Never has been a UI library that configurable on any system! It is the current version, in active development.

Another World, the game, is also pre-installed. A HD version sells on Steam and others.

Several freeware tools have an "Exclusive Update". That is surprising, because the m68k Amiga (the one which gets emulated here) is, basically, out of business since 1994-1996. If it would not be for AmiKit, these updates, most probably, would have never happened. Also "Rabbit Hole" let's you start host (Win/Mac) applications from within the emulator. This is all pretty cool. For people like me, who still have their old Amigas (and OS disks) the price is bearable. Please note, that this is not so much about playing old games and demos. For that you will be fine with AmigaForever. This is for using AmigaOS as a modern Workstation, as much as possible.

Here is a quote from their website:

      It includes more than 380 Amiga programs (and games)
      enriching the default system with exciting features and
      add-ons.

      We've done all the hard work for you so that your modern
      retro experience can begin right away.

So, it's basically an installation on top of AmigaOS 3.9 (the last legacy version). If I remember correctly, one needs to own the original AmigaOS 3.9 DVD or an image, the ROM. AmiKit will then install everything into a consumable system, ready to go, with some modern drivers, that have been created for AmiKit.

<comment><USER9> Is there any reason to use AmigaOS on a workstation?

<comment><USER7> Well, that depends. I have never used a better OS. Period. I have never used a better Filemanager (Directory Opus5 Magellan II, now available as Directory Opus 12 on Windows, which is birlliant, too), Texteditor (GoldED Studio), IRC client (AmIRC), email and news system (UMS), YAM, NewsRog. Raster-image painting is, especially if you want to work at the single pixel, unreached.

Now, web-browsing and office is another story... :-(

The OS came with a default scripting language, a Rexx derivate, called ARexx. Most applications would support it, meaning, you could fully automate them, extend them to do things, the programmer never dreamed about. Since all was using the same scripting language (and Rexx was purposedly designed for inter application scripting, its creator called it a language for job-control, you had access to all environments (DOS, Application Hosts, shared libs) within the same script. Man, did I create workflows... :-)

You could mount FTP, HTTP, your audio-speakers, raw memory, or whatever you wrote a device-driver for, as a disk. No need for any VFS library/framework. I've never seen such good ramdisk implementations. The system default one was volatile and dynamic, it was always there as a volume on your desktop. The other ones were configurable in block/tracksize, non-volatile and you could boot from them, if you wanted (nice for games back then, when floppies were slow and you had a game, that ran from 4 floppies. You would unarch them to the Ram Disks (which was quicker than loading them hard) and reset the machine. Voila!)

And now, that you can run host-applications via AmiKit, it seems to make sense, to run it as your main environment. I did not test this part of AmiKit, however, so I only can assume.

<comment><USER10> Back in the day I ran a 4 line BBS using CNet Amiga BBS software, and I used to make amazing script doors using ARexx. The way you could hook into the BBS and do things I've not seen since.

I just did purchase this AmiKit X and installed it. Perfect, flawless install.

The UI makes Win10 look plain, and yet retains the old style of window borders. It mounted all my Windows network drives automatically. I could ALT- Tab out of it back and forth between it and Windows.

Only thing it doesn't seem to handle is my multiple screen system. If it would work across multiple screens I'd be in heaven.

<comment><USER7> CNet! So beautiful! Best BBS system I ever came around! I even had it installed on my system to be able to develop ARexx doors, just for fun and learning.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> For those who do not want to pay money for this, older versions tended to be free and the last release, which is 8.5, is still. Scroll down to the bottom of this page: [https://www.amikit.amiga.sk/store](https://www.amikit.amiga.sk/store)

Also there you may find the Linux and Android version.

</comment><comment><USER11> I was a bit confused by what AmiKit X actually is, but I think I understand it now and it does certainly make sense in order to get a turnkey Amiga environment up and running, as opposed to going the bare bones hardcore route of doing everything yourself. All in all it's pretty impressive.

</comment><comment><USER12> OK, so this is simply amazing on so many levels. Amiga was truly an awesome beast. The music in the amikit videos is really good too!

</comment><comment><USER13> Will this let me play Shadow Of The Beast or Blood Money or any other Psygnosis games?

<comment><USER7> You don't need this for that. What you need for those games is WinUAE (on Windows) or eUAE on other OS'. Both are free. Then you need Kickstart ROMs, 1.3 should suffice (get them legally via the AmigaForever product, the Android version seems to be the cheapest). And, of course, disk images (ADF files) of the games from your favorite abandonware site.

</comment></comment><comment><USER14> What does this one do that others don't?

</comment><comment><USER15> No trial?

<comment><USER7> It's a distro. Not a programm.

Also, the version 8.5 is still free and will stay so. Scroll down at [https://www.amikit.amiga.sk/store](https://www.amikit.amiga.sk/store)

</comment></comment><comment><USER16> Not running on windows makes this effectively useless

<comment><USER17> It does say it supports Windows.</comment></comment>


Google To Launch Amazon S3 Competitor 'Google Storage' At I/O - <AUTHOR> http://techcrunch.com/2010/05/18/google-to-launch-amazon-s3-competitor-google-storage-at-io/

<comment><USER3> Btw, Google already has a BlobStore API which is in beta. Maybe they're releasing it at the conf. If so, not big news. It's the exact same price as Amazon and has a clunkier API (IMHO).

Competition is sorely needed in this space. I hope Google undercuts Amazon pricing. IIRC, Amazon has maintained the 15c per GB-Month pricing for 4+ years. I would have expected them to pass along at least some of the price reductions of bare HDDs.

I'm hoping for something like the $5 for 20 gig they offer for photos. I'll keep dreaming. :)

<comment><USER4> $5/20 GB = 25c/GB - that's more than 15c/GB at Amazon. Are you dreaming about price increases? :-)

<comment><USER5> That's 25c/GB/year compared to 15c/GB/month.

<comment><USER6> Isn't that also with free bandwidth? ~$0.02/GB/month with free transfer. I'm in.

<comment><USER7> It's an App Engine API, so unless you're running your application on App Engine you're out of luck. Of course, you could write a wrapper around it to make it accessible over a RESTful API, but what's the point now that Google Storage has been announced?

</comment></comment></comment></comment></comment><comment><USER8> This can only be good. More competition will probably mean better prices, more features, higher reliability and more innovation. And if someone can compete with Amazon on this, it's certainly Google.

<comment><USER9> The only question is - why did it take them so long?

<comment><USER8> My first guess would be that Google has a lot more cool things to do with its datacenters than Amazon, so up to now any extra capacity was used for a new product/project. Only now did they have enough spare to start leasing it to outsiders (which either says something about Moore's Law, or about a decline in the rate of innovation at Google).

</comment></comment></comment><comment><USER10> I hope the bit about easy migration from S3 means a compatible API, just change the base URL. Would that make the S3 API the de facto standard for cloud storage APIs?

<comment><USER6> Eucalyptus also uses this interface. It would seem that it is becoming the de facto standard. Being able to immediately use all of the existing tools would go a long way for adoption.

<http://open.eucalyptus.com/>

</comment></comment><comment><USER11> "Google To Buy Dropbox For An Undisclosed Amount" does not sound far-fetched to me given this announcement. From a strategic viewpoint it makes perfect sense.

It would provide their new storage service with the necessary intial momentum at the expense of S3.

<comment><USER12> Yep. I mentioned that Amazon should buy Dropbox recently for similar reasons.

Of course it remains to be seen if the Dropbox people would be interested in selling out.

<comment><USER13> They've taken investment. They are by definition interested in either a) selling or b) going public. While I would happily buy shares in a DropBox IPO, I'm afraid option a is much more likely.

EDIT: taken _VC investment from Sequoia_.

<comment><USER14> _They've taken investment. They are by definition interested in either a) selling or b) going public._

That doesn't follow "by definition" -- although I agree that the former generally implies the latter.

</comment></comment></comment></comment><comment><USER15> Now what needs to happen is Heroku seamlessly using Google Storage concurrently with S3.

</comment><comment><USER16> I hope they get the interface right this time. App Engine has an awkward interface that's not nearly as flexible and powerful as EC2.

<comment><USER17> App Engine and EC2 don't really compete in my mind for this reason. App Engine seems to compete more with things like Heroku, although the interface complaint certainly applies there too.

<comment><USER18> I find App Engine and Heroku to be in stark contrast in this respect.

App Engine requires you to code your app in a particular way to work on their platform, and that way will (to a large extent) _only_ work on App Engine.

Heroku, on the other hand, requires you to code your app in what is pretty much the recommended way to do Rails apps anyway. While they do impose a few _limitations_ that aren't present on other platforms (e.g. no local writable storage), accommodating those limitations wouldn't prevent you from moving to another platform. There's no proprietary Heroku Database API that you'd have to reimplement in order to move to a physical-server-colo setup, for example.

<comment><USER19> _App Engine requires you to code your app in a particular way to work on their platform, and that way will (to a large extent) only work on App Engine._

This is true, but it does make for a very nice deployment story; and Ian Bicking's silver lining (<http://cloudsilverlining.org/>) is (I think) a very interesting attempt to tell that story in a more generic way.

</comment></comment></comment></comment><comment><USER20> Interesting! It had just occurred to me that I could write a competitor to s3 using app engine and blobstore. I guess someone at Google realized that too.

<comment><USER21> This is what I had thought about. If you don't care that the API is published/sorta-standard, it's not a big deal to deploy a lightweight pass- thru app to AppEngine.

The pricing model is what will be most interesting about the announcement.

</comment></comment><comment><USER22> I'm excited about this, especially the possibility of including other services (like video encoding).

<comment><USER23> Could not agree more. Video encoding is still damn expensive. We're using encoding.com and although they have great customer support, we're still paying roughly $1/video to encode. 5% of these videos will account for 95% of the views.

Why pay $1 to encode an unpopular video then $0.001 for the bandwidth?

Encoding is the only piece of our video model that currently doesn't scale directly.

<comment><USER24> A hacker I know (who has I team I believe - the debuggable.com guys - <USER2> successful bloggers and core teamembers of the cakephp community) has been working on transload.it for a while, it's a pretty good service despite still being in beta, but I haven't put it through its paces like I'm sure you would. (I was working on a wordpress plugin.) It sits on ec2 and will save right into your s3.

<http://transloadit.com>

I don't know their plans for the full release, but they could be a way to break out of your lock in with encoding.com.

<comment><USER23> Thanks! I'll check them out :)

We actually offload right to Akamai so the s3 integration isn't a big deal for us, but anything to drop the price of bandwidth or encoding is a win these days :(

Tho I must say the encoding guys are awesome so it will take a damn good product to make me leave them.

</comment></comment></comment></comment><comment><USER25> That is great. I'll alternate backups between S3 and GS.

</comment><comment><USER26> This reminds me of "Googlezon": <http://robinsloan.com/epic/>

</comment><comment><USER27> The previous time there were rumours about Google Storage, we've got AppEngine instead. Hm, what we've get how?...

</comment><comment><USER28> From a business WHY are they doing this?

The vast majority of their revenue comes from selling advertising on Google OWNED sites eg google.com:

[http://www.businessinsider.com/chart-of-the-day-in-case- you-...](http://www.businessinsider.com/chart-of-the-day-in-case-you-had-any- doubts-about-where-googles-revenue-comes-from-2010-2)

Google is the industry leader at monetizing search, but nothing else they do comes close.

I am truly curious - is the reason that Google keeps investing time and money in "line-extension" businesses to distract competitors, keep the antitrust police away, what?

<comment><USER29> _Google is the industry leader at monetizing search_

Google's stated mission is to "organize the world's information".

There is tremendous power in information. Not so much in your own, but on the correlation of your data to everyone else's; the collective statistics about anything is where the power lies.

In gmail, google reading my email tells them to sell me product x and we think that's the end of it. But there is so much more available in terms of how the aggregate masses behave with regards to product x and its correlated points.

This extends right into file storage. Yes I am saying that Google will "read" your data. Even better, I'm saying that Amazon more than likely is already doing this.

They're doing it not because they give a damn about you, but because they want the data points that come from the analysis of many separate instances of unrelated bits and bytes. That analysis is worth a fortune. It's a modern day gold rush.

This makes perfect sense for Google.

<comment><USER30> "In gmail, google reading my email tells them to sell me product x and we think that's the end of it."

I don't want to put on a tin-foil beret, but how much revenue do they actually make from ad-words on the side of GMail? I can't imagine it's much, but then I'm probably biased in that I don't even notice they're there.

The pragmatic part of me realizes GMail is a service that improves 'lock-in' to the 'Google Ecosystem'... the paranoid part of me thinks about how valuable a "search everyone's inbox" rather than a "search my inbox" feature would be.

<comment><USER31> It's not about getting clicks while you're reading gmail (the adwords on the side), it's about mass gathering data about you and others.

Re-read run4yourlives message. He does not say gmail tries to sell you product X, but gmail tells Google you might be in a buying mood for product X.</comment></comment></comment></comment>


Ask HN: Startup Conferences for Students in 2010? - <AUTHOR>

I run the Entrepreneurs Society at Georgia Tech and I am looking for some good startup conferences to send our members to (the college pays for the trip).
Please suggest.
PS: No, the money for the conference can not be given as seed capital to the startups
Also, know if any of these conferences would be willing to offer a student discount? <comment><USER2> There will likely be another Startup School in the fall. <http://startupschool.org/></comment>


Tor 0day: Burning Bridges - <AUTHOR> https://www.hackerfactor.com/blog/index.php?/archives/889-Tor-0day-Burning-Bridges.html <comment><USER2> The Tor Project argues that the reported issues are not bad as they're made out to be: [https://www.theregister.com/2020/07/30/tor_bugs_obfs4/](https://www.theregister.com/2020/07/30/tor_bugs_obfs4/)

<comment><USER3> Wrongly. The critical feature of obfs4 is that it is not full TLS or especially HTTPS.

This means it is worthless on any corporate network using a full HTTPS proxy. (Not even MITMing.) Or equivalent DPI approach.

</comment></comment><comment><USER4> Leaves me wondering about alternatives. Does I2P suffer from these problems? Is there anything else?</comment>


ES6: The features I'm most excited about - <AUTHOR> http://justicen.com/#/posts/74046fea9a4c61477db9 <comment><USER3> Wow. I can't believe template strings ([https://developer.mozilla.org/en- US/docs/Web/JavaScript/Refe...](https://developer.mozilla.org/en- US/docs/Web/JavaScript/Reference/template_strings)) aren't in this list. I'm incredibly excited to start having those at my disposal.

<comment><USER4> Hm, at first glance I am as well, especially with tagged template strings. Those look particularly simple but powerful.

Generally though, is it reasonable for features such as these to be included at the language level? I primarily use ES5 JavaScript so I'm used to pulling in a decent amount of modules (in this case handlebars, underscore, etc.) for things like templating.

But I will be relieved to have a language-standard solution to what feels like such a common problem for the environments in which JS is used primarily, despite the tradeoff that's made in accessibility due to feature bloat.

<comment><USER5> I too was reluctant of using many of the new ES6 features, but as I've begun to adapt them I've come to appreciate them a lot! In fact, when using Babel to compile ES2015/2016 you can in many cases rid yourself of things like Underscore/lodash[1], Promise libraries, etc.

I've recently started a new project in React/Flux, and I've cut away 3 or 4 dependencies compared to previous projects by fully embracing ES2015/2016, as Babel automatically provides the necessary polyfills and compilation.

As for template strings, I think they make sense. Most programming languages have them in someway or another, like Ruby "hello #{world}" or Python 'Hello {world}'.format(world='World').

[1] [https://www.reindex.io/blog/you-might-not-need- underscore/](https://www.reindex.io/blog/you-might-not-need-underscore/)

<comment><USER6> lodash has ~200 modular methods. That means it covers much more ground than the handful of ES5/6 built-ins provided and because it's modular you can use what you need without the stuff you don't.

</comment></comment></comment></comment><comment><USER7> I don't understand why everyone considers classes controversial. If you look at code in the wild, it already does what classes desugar to: everyone already writes constructor function and attaches properties to their prototypes.

At least now with classes, users coming from other languages wont be as tempted to make their own completely incompatible object systems.

<comment><USER8> While my example isn't an issue in ES6, most of the controversial came from CoffeeScript. Using classes comes with classical inheritance expectations. In CoffeeScript, changing class variables would carry through all instances, and that is unexpected from a classical inheritance point of view. However, it made complete sense in the compiled JS.

<comment><USER9> Maybe I'm misunderstanding, but isn't that the same as static properties on classes in Java?

</comment></comment></comment><comment><USER10> My favourite feature is promises, while it doesn't add a new syntax and you can probably add a library for it, the fact it's standardised makes a world of difference. Now that it's standardised

1\. It will become the common interface for deferred operations and library authors can make assumptions that it's there.

2\. ES7 Async/Await will be able to leverage this common interface.

<comment><USER11> My problem with promises is that delivering it without async/await is just awkward. Because, yes, in the ES7 async/await world, you're going to want to use promises heavily because they'll work so great with that.

But in the ES6 world, making your API promise-based makes it heavier-feeling and more awkward than simple, clean callbacks. (Which get an unnecessarily bad rap from people who don't work primarily in JS; there are cases when callbacks get awkward, but just looking at code that's four levels of indent deep and declaring it "callback hell" \-- as you so frequently see -- is a super- shallow analysis. That code is clean and easy to understand, as often as not.)

<comment><USER12> For the near term, you have to use something like babel anyway. Beyond that, generators and promises need to be implemented ahead of async/await as they are prerequisites for it.

</comment></comment></comment><comment><USER13> Even better: The arrow function example used the statement form of an arrow function, instead of the expression form, which allows you to omit the return:

      // using arrow
      var adder = {
        num: 2,
        nums: [1,2,3,4,5],
        addIt() {
          return this.nums.map(n => this.num + n)
        }
      };

      console.log(adder.addIt()); // [3, 4, 5, 6, 7]

I'll concede that the arrow function is a bit overly complicated, with this, sometimes-optional argument list parenthesis, and object literal/function body syntax ambiguity.

</comment><comment><USER14> The first module example is incorrect:

        // myModule.js
        export function myModule(someArg) {
          return someArg;
        }

        // main.js
        import myModule from 'myModule';

The import is importing a non-existent default export. Either the export needs to be changed to a default export:

        export default function myModule(someArg) {

-or- the import needs to be changed to importing a member:

        import {myModule} from 'myModule';

<comment><AUTHOR> Thanks, fixed.

</comment></comment><comment><USER15> I was just talking to my friend who works at NetFlix on the frontend team about ES6, he is most excited about destructuring `let { name, age, gender } = user;`. I however advocate that the new class syntax is the best part of ES6. Take the following trivial OOP example, which I think reads so much easier a lot like PHP.

        "use strict";

        class Vehicle {
            constructor(name) {
                this.kind = 'Vehicle';
                this.name = name;
            }

            printName() {
                console.log(this.name);
            }
        }

        class Car extends Vehicle {
            constructor(name) {
                super(name); //call the parent method with super
                this.kind = 'Car';
            }
        }

        let myCar = new Vehicle('Mercedes');
        console.log(myCar);

<comment><USER11> I think it's fair to say that people who want to write object-oriented Javascript are very excited by class. Those of us who have found that the non- OO nature of Javascript is part of what makes it so productive are... much less excited.

<comment><USER16> JavaScript is object oriented just like any other language. The difference is that it is prototype-based OO instead of class-based OO.

I would say that JavaScript's OO is actually more powerful/flexible than other languages but it is less readable and more error prone if you're not careful - For example, the fact that objects can 'borrow' a method from other object an apply it to themselves is a common source of issues for beginners.

<comment><USER17> It's possible to get power without flexibility. Flexibility is bad -- it creates code that is idiomatic to the person who wrote it.

Rust and Go are so exciting because they've intentionally rejected flexibility without compromising power.

<comment><USER18> Flexibility is not 'bad' \- it's a tradeoff. More flexible languages are better for writing DSLs, etc; but using them means a lot of self discipline regarding code style.

One thing I wish JS had is a PEP8-style canonical style document. I would find that more useful than classes.

On classes, I am among the less excited about them; however, we are in a ridiculous situation where there are about 500 different library implementations of class inheritance. Backbone has one. Ember has one. Node has util.inherits. Various transpile-to-JS languages (CS, TS) all have their own slightly-different implementations of the resulting prototype code. There is plainly a need for classes in JS, felt by some of the leading projects in JS land.

ES6 classes at least gives all these disparate implementations a refactoring target. How many of them will get there is another matter.

<comment><USER19> > More flexible languages are better for writing DSLs, etc;

Citation needed, or, I'm not quite sure I agree with you there. In fact, I think I believe the exact opposite (to a degree).

</comment></comment></comment></comment></comment></comment><comment><USER20> ES6 is a mixed bag for me.

I'm against block scope in a way. It's semi-useful, but it's just sugar. So many features of ES6 seem to be designed for people who don't want to bother learning javascript: classes, block scope, arrow syntax, etc. It's just trying to shoehorn javascript into the template every other language follows when javascript is _not_ every other language.

That being said, I like iterators, weak maps, typed arrays, TCO, and so on.

<comment><USER21> Fat arrows are increasingly becoming one of my favourite additions.

No more `function() {}.bind(this);` since `() => {};` is equivalent. It makes it clearer for the reader that the code block inherits scope.

</comment></comment><comment><USER22> I'm a bit worried about ES6 making the language harder to understand.

For example, scoping: For backwards compatibility reasons, var has to stay function scoped. But now we also have let, which has different scoping rules. Also, Symbols: [Symbol.iterator]() - what? Why?!

On the other hand, stuff like arrow functions, template strings, modules and tail optimization are awesome.

<comment><USER23> Can someone explain the reasoning behind having any kind of backwards compatibility? Who would pick a worse-but-compatible ES6 over a better incompatible version?

For example, the scoping rules: why have two separate scoping rules for let and var? To put it another way, would ES6 have let and var with differing scoping rules if it was designed today? If not, then it's a flaw (any difference from what a clean redesign would look like I consider a flaw).

Why not just make a simple and consistent syntax?

<comment><USER24> > Can someone explain the reasoning behind having any kind of backwards > compatibility?

Not breaking millions of websites.

<comment><USER23> In what way would a cleaner ES6 break websites? Browsers aren't going to stop supporting ES5.

<comment><USER25> Browsers aren't likely to implement two separate languages either. Furthermore, forcing people to pick between "ES5" and "ES6" if they just want to use a single ES6 feature is pretty bad.

So your fundamental choices are really an ES6 that is backwards-compatible or an ES6 that is not used.

<comment><USER23> On the other hand forcing newcomers to learn the warts of ES5 when they could learn what is becoming a reasonably elegant language isn't ideal either. Two scoping rules, for example.

An ES-latest runtime + transpilers would be all that browsers needed.

<comment><USER25> This has in fact been debated back and forth on the es-discuss mailing list and in TC39, especially given experiences with strict mode. The decision was generally made to not have more modes and to just have a single JS language.

You don't have to agree with that decision obviously, but this isn't something that happened willy-nilly.

</comment></comment></comment></comment></comment></comment></comment><comment><USER26> I agree with this list completely, but it doesn't mention one of the best reasons generators and promises are awesome: async/await-style asynchronous programming eliminates callback hell by letting you write asynchronous code as if it were synchronous, including using control structures like conditionals, loops, and try/catch.

And you can do it in (most) browsers today using a transpiler like Babel and a library like Blurebird, Q, co, or task.js.

The rest of the things are nice, but promises/generators (and eventually async/await) are game-changers.

<comment><USER27> The problem with Javascript generators, however, is that you're not allowed to call other functions from them, which yield. This very much limits the kind of async stuff you can do with them.

<comment><USER26> Not really (at least not the kind of stuff I mentioned), those functions can just return promises which the caller yields: [http://codepen.io/anon/pen/WvzGLa](http://codepen.io/anon/pen/WvzGLa)

Granted async/await syntax will make this a bit nicer:

        async function funcA() {
          await sleep(1000);
          // ...

<comment><USER27> But then the called functions have to be written async style.

</comment></comment></comment></comment><comment><USER28> I think .bind(this) could be added as a (more common?) alternative example to var self = this;

Personally I'm most excited about the module system. It's by far the most confusing thing for our students (and hard to google since you end up going down the rabbit hole of build systems etc.)

<comment><USER29> With the introduction of arrow function you won't need to use .bind(this) as arrow functions capture in their lexical scope the variables/keywords: this, arguments, super.

e.g.

setTimeout(function(){alert(this.a)}.bind(this));

becomes simply

setTimeout(() => alert(this.a));

<comment><USER28> Yes, maybe my comment wasn't clear. I meant to say add ".bind(this)" as a case that is replaced by => just like "var self = this;" or (...)(); for that matter.

</comment></comment></comment><comment><USER30> Coroutines are the game changer imo. I wrote a little presentation to illustrate code flow: [http://afc.neurosnap.net](http://afc.neurosnap.net)

</comment><comment><USER31> I've just been playing with Promises and like them a lot. But one thing I find strange is that ".then()" creates a new promise, but with no way to reject it.

ie. I can't write:

      return new Promise((resolve, reject) => {
        // Do some stuff, call resolve()/reject() on success/failure.
      }).then((step1Val, resolve, reject) => {
        // Do some stuff, call resolve()/reject() on success/failure.
        // But this doesn't actually work, because the "then" callback
        // doesn't get resolve/reject as args.
      });

Instead I'm having to write this as the following, which is more verbose:

      return new Promise((resolve, reject) => {
        // Do some stuff, call resolve()/reject() on success/failure.
      }).then(new Promise((resolve, reject) = {
        // Do some stuff, call resolve()/reject() on success/failure.
        // But this way I don't get access to step1Val.
      }));

Another bummer of this style is that that the second step doesn't get access to the first step's value.

<comment><USER32> async/await solves error handling and hanging onto values quite nicely.

IMO you should use Babel and take advantage.

<comment><USER33> link to example please

<comment><USER32>
      async function foo() {
        try {
          const valueOne = await promiseReturningFunction();
          const valueTwo = await anotherAsyncFunction(valueOne);

          return valueTwo;
        } catch (err) {
          alert(err);
        }
      }

      foo(); //Returns a Promise.

\----

In this example, I've sequenced the resolution of two promises (async functions return Promises when invoked)

If either of these Promises reject or throw an error, or if any of the code within the try {} block throws an error, the error will be caught inline in the catch block (one area only).

You can also see that both Promise's return values are in-scope and continually usable (vs. losing scope with 'then' chains).

<comment><USER33> I see. Not sure what the best practice is for the losing scope in then chains issue with promises. I ended up creating something along the lines of a message object designed for each chain, which felt like a smell.

<comment><USER32> Feels like an un-compiler-assisted State monad.

IMO threading an object through is probably the best method, unfortunately. You could use an Immutable Record or something to help keep it under control.

I would personally just use async/await to more explicitly handle the sequencing/binding.

<comment><USER33> Agreed. I think I'll refactor... thanks for the example.

</comment></comment></comment></comment></comment></comment></comment><comment><USER34> Although arrow functions are nice, they've been around in the form of lambda expressions in C# and other languages for some time, so the initial reaction was more of a "about time" rather than a "wow!" for me. Same goes for generators/yield keyword.

Thanks for pointing out the key difference between arrow functions and inline functions being the context of 'this'. 'this' is going to be a source of confusion for a lot of people.

<comment><USER35> Yes, a lot of the new features are very "about time" but that doesn't remove the excitement to now have them as a part of JavaScript.

'this' without arrow functions is currently a huge source of confusion. I feel like the arrow functions will help to alleviate a lot of that confusion.

<comment><USER34> My biggest excitement is that in the past few years JavaScript is now regarded as a first class language, and we're seeing these new versions i.e ES 5,6,7 in a rapid development cycle. I remember being told in the 2000-2002 era that JS was a kiddle language and it was worthless on a resume.

</comment></comment></comment><comment><USER36> Now just throw away the DOM, replace it with something more suitable for applications instead of documents, and we can have something akin to Smalltalk back.

</comment><comment><USER37> Promises I find rather ugly to read. So far Im liking arrow functions and template strings. Async/await I'm looking forward to in ES7.

<comment><USER38> What exactly did you have in mind other than "new Promise()" to create a promise?

<comment><USER39> new Promise(function(resolve, reject){ /* code */ })

it's a little much

<comment><USER40> Ideally, if you're writing business logic, you shouldn't be creating promises but consuming/combining/chaining them from libraries.

<comment><USER41> What would make you say that? Why wouldn't you use promises in your business logic?

<comment><USER42> The idea isn't "don't use promises", it's more "use/chain the promises you already got from libraries (e.g. AJAX calls), don't construct new promises yourself". See the StackOverflow question inglor linked to: [https://stackoverflow.com/questions/23803743/what-is-the- exp...](https://stackoverflow.com/questions/23803743/what-is-the-explicit- promise-construction-antipattern-and-how-do-i-avoid-it)

</comment></comment></comment></comment></comment></comment><comment><USER43> I'm new to Javascript, and am wondering if I be writing ES6 instead of ES5. Is that a good idea, or should I wait a few months/years?

<comment><AUTHOR> There is no harm in either. Overall, just have fun and learn JavaScript :)

ES5 is the current standard in all major browsers, so using its functionality could be considered "safe". Thankfully we have transpilers (will convert your ES6 code to ES5), so you can use ES6 features in production today - <USER2> remember they are converted to an ES5 implementation of said functionality.

</comment></comment><comment><USER44> I was a little confused by the constructor for Player in the class example. Wouldn't the following be more appropriate:

      constructor(x = 0, y = 0) {
        this.x = x;
        this.y = y;
      }

(i.e. this way if "new Archer('Legolas', 5, 6);" the x and y values will not be ignored.)

<comment><AUTHOR> Sure that works too, plus its a great way to point out initializing default arguments.

</comment></comment><comment><USER45> What's the point of promises being part of ES6?

I understand them and use them quite a bit. I just don't understand why they're in the language spec. They don't add anything new to the language ( _vs say generators or symbols_ ).

Is it purely for performance?

<comment><USER46> It allows web APIs built-in to the browser to return a promise, e.g. audioContext.decodeAudioData(data).then(...). If you just used a library, the browser wouldn't know how to wrap the returned value in a promise. It also guarantees interoperability between all APIs using promises, avoiding any incompatibility between different libraries.

</comment></comment><comment><USER47> Catching up a bit with C#, I see.

</comment><comment><USER48> The example quoted under "Arrow functions" is NOT "arrow function". It's an enhanced object literal.

<comment><USER49> There is one in the addIt function.

</comment></comment><comment><USER50> When will browsers start to implement these features? I'm looking forward to being able to use modules in Chrome.

<comment><USER51> The other features? Already being done: [https://kangax.github.io/compat- table/es6/](https://kangax.github.io/compat-table/es6/)

Modules? That may be a while, and isn't a big concern since until HTTP2 is in wide effect (which may be really soon anyways) it makes more sense to just package the files in to one file (which you can do right now) using Browersify, JSPM, Webpack, or what have you than having the client request a whole bunch of javascript files at once.

</comment></comment><comment><USER52> I hope our IDEs get smart enough so that destructuring features result in pseudo named function parameters.

<comment><USER53> I'm working on a JavaScript editor. But doesn't understand. Can you be more elaborate!?

</comment></comment><comment> github-cat So will someday there be interface in JavaScript?

</comment><comment><USER54> I've used ES6 and prefer coffeescript - IMHO more concise, easier to read, and has been place for years.

<comment><USER55> Yup. It's as if coffeescript was created by one person (and a bunch of great PRs!), while ES6 came out of a committee.

<comment><USER56> That's exactly what I like about ES6 (the fact that it has come out of a committee and is now a standard).

<comment><USER55> Leaving aside the committee preference, what value do you perceive in the fact that it's a standard? It can't be that browsers support it, because they don't. Sure Mozilla will probably get there within the next several years, and Chrome won't be too far behind, but forget about Safari and IE. So you'll still have to use Babel or something like it. Please note, _there 's nothing wrong with requiring a tool chain_, which we already need anyway for minimization, compression, cdns, etc. But once we realize that, we realize that coffeescript is just the same as ES6 in that respect.

<comment><USER54> Well said. Many who rejected coffeescript because it required a tool chain now embrace ES6 which requires a toolchain. People rave about ES6 features like classes, arrow functions, destructuring, variable interpolation - as if they are something new. Maybe the best thing about ES6 is that it helped transpiling to be accepted as a mainstream technique.</comment></comment></comment></comment></comment>


KeystoneJS – an open source Node.js cms / web app platform built on express - <AUTHOR> http://keystonejs.com

<comment><USER2> It's a bit surprising that there aren't that many good CMSs for node given how itd adoption is going. KeystoneJS is really cool.

Pros: really easy to get started (yeoman generator), bootstrap, jquery etc included in the box, auto-generated admin UI. Does a lot of the boring stuff for your at the start.

Cons: the content management could be better. Apparently it's this side of things is under active development, but for now its more geared to managing list of things, rather than static page content.

Worth a look in any case.

</comment><comment><USER3> Keystone is great for quickly bootstrapping a NodeJS project. It makes it super-easy to get cracking, and I particularly like its nice generated data admin UI, field types, DB update framework and relationships for MongoDB. Still quite a few rough edges, but it already does a lot and the community is very active.</comment>


Shown HN: Cats On Me - <AUTHOR> http://123.cats-on.me

<comment><USER2> I don't get it.. Description please?

It seems to randomly place cats on a picture.. what the... Doesn't make any sense at all to me..

<comment><USER3> You can also tweak the subdomain to change the number of cats.

<comment><USER4> lol. Upper limit?

<comment><AUTHOR> 999999999 made my Chrome ACCESS teh BAD

</comment></comment></comment></comment><comment><AUTHOR> Found src. Seems legit. <https://github.com/richo/catson.me>

</comment><comment><USER4> Lol. but I'd like to be able to download the photo. Any chance of a download button?

<comment><USER3> No.

</comment></comment><comment><USER5> not enough cats.</comment>


Daylight Saving Time: Why Does It Exist? (It's Not for Farming) - <AUTHOR> http://www.nytimes.com/2016/03/12/us/daylight-saving-time-farmers.html <comment><USER2> > "Daylight saving increases gasoline consumption."

But it also makes us more active (going places in the evening)</comment>


Cypherpunk Research Repository - <AUTHOR> https://github.com/tombusby/cypherpunk-research#technical-sources <comment><AUTHOR> Note from the author: This repository is essentially for compiling information about Cypherpunks, the history of the movement, and the people/events of note.</comment>


Apollo 11 in Pictures - <AUTHOR> http://www.boston.com/bigpicture/2009/07/remembering_apollo_11.html

<comment><AUTHOR> The "Big Picture" feature there has a lot of interesting themes but not all of them are "hacker" quality. I still suggest exploring it though.

<comment><USER2> One that I think would qualify for HN is their set from last August on the Large Hadron Collider:

[http://www.boston.com/bigpicture/2008/08/the_large_hadron_co...](http://www.boston.com/bigpicture/2008/08/the_large_hadron_collider.html)

<comment><USER3> When is that coming back online?

<comment><USER2> Latest news suggests mid-November: <http://user.web.cern.ch/user/news/2009/090716.html>

</comment></comment></comment></comment><comment><USER4> Well I was 15, working in a pizza shop. The owner was grousing about all that tax money spent and they couldn't get the g*d-damned door open... typical government project...

Can you imagine the guts it takes to strap yourself down on top of that much liquid fuel? Trust me guys, it's all lined up, should work fine..

But the real question for HN is: Was all that IBM 360 software at mission control GPL or BSD?

</comment><comment><USER5> Apollo 11 (that landed in the moon) has a very small size compared to the rocket that was launched from the earth.

Can someone explain to me, how it got the sufficient energy to escape from the moon gravity? (photo35)

photo32: is there wind in the moon?

<comment><USER6> The engineers at Grumman went to extraordinary lengths to trim weight from the Lunar Module so that its single ascent engine could boost it from the lunar surface. The book Moon Lander by chief engineer Thomas J. Kelly tells the story.

The flag was extended by a wire along the top.

</comment></comment><comment><USER7> Does anyone know if that original tape footage that was recently found has been released yet? And if it's available for viewing anywhere?

<comment><USER8> It was not found. Daily Express report was fiction: <http://twitter.com/bnjacobs/status/2374782343> Bob Jacobs is NASA Deputy Assistant Administrator for Public Affairs.

<comment><USER9> It was found.

"NASA will hold a media briefing at 11 a.m. EDT on Thursday, July 16, at the Newseum in Washington to release greatly improved video imagery from the July 1969 live broadcast of the Apollo 11 moonwalk."

[http://www.nasa.gov/home/hqnews/2009/jul/HQ_M09-125_Newseum_...](http://www.nasa.gov/home/hqnews/2009/jul/HQ_M09-125_Newseum_Apollo_tapes.html)

<comment> brown9-2 NPR claims some of them were erased: [http://www.npr.org/templates/story/story.php?storyId=1066370...](http://www.npr.org/templates/story/story.php?storyId=106637066)

</comment></comment></comment></comment><comment><USER10> You see it was all fake? Buzz Aldrin wasn't really posing in front of the moon. It was just a picture.

</comment><comment><USER11> Where's the set?</comment>


Bypassing website anti-scraping protections - <AUTHOR> https://kb.apify.com/tips-and-tricks/several-tips-how-to-bypass-website-anti-scraping-protections <comment><USER2> _For example, for google.com, you can typically make only around 300 requests per day, and if you reach this limit, you will see a CAPTCHA instead of search results._

300 is pretty easy to achieve if you're "Googling hard enough" (make 5 slightly different queries, go through the 20 pages of results it's willing to show you, repeat 3 times...), and I've seen it trigger far before that if you are searching for more obscure things. It seems almost hostile to those searching for IC part numbers, specific and very exact phrases, and just "non mainstream" content in general.

How sad it is then, that we are told and have internalised the notion that we should use search engines like Google to find things, and yet it prevents us from "trying too hard" to find what we're looking for...

<comment><USER3> From my experience at blekko, 99.9% of the "people" who go deep into the results pages for a single query are actually bots. You're a very unusual user, and there are a lot of bots.

<comment><USER4> There's a difference between going deep into the results, and progressively refining a query. The former is pretty indicative of bot behavior -- humans rarely go past even the first page of results. I do the latter all the time, and this frequently gets me Google's captcha, especially if I'm doing something like using site: and inurl: operators.

</comment></comment></comment><comment><USER5> There is an irony in google preventing web scraping given that their business is pretty much built on web scraping.

<comment><USER6> Why is there irony in that? Anyone can go build a crawler and scrape the web the way Google scrapes it so they can compete with Google. Google protecting its site from scraping means you can't compete with Google _using Google 's own resources_.

That said, automated research fascinates me, I wouldn't want to scrape Google to make my own Google, but rather to make private repositories of information that I can then query efficiently. I would love to find any kind of scriptable search engine access, paid or free. Not entirely sure how to look though.

<comment><USER7> Think different. Try bing, it has an API.

I think bing is close to Google in quality. Some people might even like it better. On the other hand I think DDG is the Sprint of search engines.

Google used to have a search API and they discontinued it because they said most of the people who used it were SEO people.

People who do pay-per-click are into A/B testing and other quantitative testing. Google is all for you doing that if you pay for advertising. Their mainstay of anti-SEO is doing arbitrary and random things to make it impossible for SEOs to go at it quantitatively. (They have patents on this!)

One reason so many sites go to a harvesting business model is that once a site is established you can make the slightest change and then your search rankings plummet. If you depend on search engine traffic it is a huge risk that you can't do anything about unless you are about.com (bought a 'competitive' search engine and just might be able to make an antitrust case against Google.)

<comment><USER8> Can you elaborate more on this statement? "On the other hand I think DDG is the Sprint of search engines."

I've been interested in switching to DDG for a while but as a former Sprint customer, that statement scares me but maybe some explanation from you might understand your opinion better.

<comment><USER9> I'm not sure about the comparison itself... I've tried DDG several times, I search for technical things in generic ways a lot. DDG almost never gives me what I want in the first page. Google almost always does.

<comment><USER10> Same here. It's hard to blame DDG though- Google's search index of Stack Overflow is better than SO's own.

<comment><USER9> It's not a matter of blame at all... I'd love to see some challengers. In the end, google knows a lot about me and is really good at delivering personalized results because of it.

</comment></comment></comment></comment></comment></comment></comment><comment><USER11> A company I consulted for was using a paid API to handle search.

Despite the fact that the entire site was available in an easy to scrape XML format, scrapers kept using the search feature.

They were trying very hard to overcome my countermeasures--they had a seemingly limitless pool of IPs, they were rotating user agent strings, and they tried to randomize search behavior.

Everytime I implemented a new countermeasure they'd try to find a way around it. It was maddening because we made everything available for them through the XML feed. They just wouldn't use it.

<comment><USER12> You had a paid API, and people wanted the information for free....

Not unexpected I guess.

<comment><USER13> After searching "algolia" mentioned below, I figured out the misunderstanding. The company was paying _somebody else_ per search made on their web site. So every time a scraper called the website's search function, it cost the website money.

</comment></comment></comment><comment><USER14> > we have developed a solution which removes the property from the web browser > and thus prevents these kind of protections from figuring out that the > browser is automated

Eli Grey and I have bypassed your "hideWebDriver()" function[1] in a single line of code:

        if (navigator.webdriver || (Navigator.prototype && Object.getOwnPropertyDescriptors(Navigator.prototype)["webdriver"])) {
            // Chrome headless detected - navigator.webdriver exists or was redefined
        }

[1]: [https://github.com/apifytech/apify- js/blob/262a2e604b1adb3d8...](https://github.com/apifytech/apify- js/blob/262a2e604b1adb3d8ef96579dc1db87bc9077bb0/src/puppeteer_utils.js#L13-L51)

<comment><AUTHOR> Good point. Haven't seen a single detection library do this, but at least now I know, that I still need to work on alternative solution. Thanks

</comment></comment><comment><USER15> Since people are asking "why would you do such a thing" or insinuating that scraping need only be to compete somehow with Google, I'll present a use I've found quite interesting, that _doesn 't_ seek to replicate or replace Google search, and which hasn't been readily attainable other than by scraping Google search results, in part. The tool I've used (crude, but reasonably effective) has applied numerous attempts to work around bot-detection, some modestly effective. (Rate-limiting most especially.)

I've found the practice of looking at search-term frequency, across a domain or set of domains (using the "site"<domain>" Google search filter) to be useful, for example the "Top 100 Global Thinkers" report linked below.

It uses 100 search terms -- "global thinkers" identified by _Foreign Policy_ magazine -- searched across a set of about 100 domains and TLDs, largely social media, various journalism (newspaper / magazine), and a few institutional sites, as well as selected national and other top-level domains. The result is an interesting profile of where more robust online discussion or commentary might be found.

[https://www.reddit.com/r/dredmorbius/comments/3hp41w/trackin...](https://www.reddit.com/r/dredmorbius/comments/3hp41w/tracking_the_conversation_fp_global_100_thinkers/)

The full report requires running roughly 100 x 100, or 10,000, Google searches. I'm finding that it's necessary to space these ~5-10 minutes apart, which means that the full analysis takes over a month of wall-clock time, from a single IP.

I've considered several possible follow-ups to this study, including more or alternate domains, different keywords, and various other variants, but both the run-time and codeing to bypass bot-detection put me off this.

I've tried reaching out to Googlers I know to see if there's any possible alternative means of acquiring this information, to no avail. I've also looked for various research interfaces or APIs, with no joy.

DuckDuckGo and other search sites don't have the rate-limiting (I've used them for other purposes), but also don't have the (granted, often very inaccurate / imprecise) match-counts which Google offers.

Putting this out there both as an example _and_ a request for suggestions as to how I might improve or modify the process.

<comment><USER16> Have you considered some sort of "crowdsourcing" / voluntary botnet type approach?

The ArchiveTeam[1] have a simple VM image that anyone can use to schedule and coordinate large site archival jobs that might already address some of teh issues.

Might be tricky to find people willing to provide resources, but with even a smallish group it might work out. May need to consider abuse and run multiple queries and compare results, which might add to the overall request cost.

[1] [https://www.archiveteam.org/](https://www.archiveteam.org/)

<comment><USER15> The thought's occurred.

My approach is sufficiently fluid that this would mean pushing pretty crude code to a bunch of hosts frequently and on a irregular basis. The runs themselves are fairly ad hoc.

Being able to directly query a corpus (IA, DDG, Bing, etc.) is another option.

Search across large corpora remains fairly expensive, I can understand hesitency here.

Nonstandardisation of search APIs across sites is another frustration.

</comment></comment></comment><comment><USER17> I find it odd how little a basic principle enters into this: don't do something to someone when they make it clear they don't want you to do it.

<comment><USER18> Eh, the principle might be good (though it's not odd that not everyone shares the same principles), but one can hold it and still have exceptions. For example, what about a governmental institution or a public company¹? What about a semi-public company, like a monopolist utility? What if the uploader of the data is OK with it, but the site hoster prevents it?

¹ in the sense of owned by the State, not listed on the stock market

<comment><USER17> I'm not saying there aren't legitimate reasons for writing scrapers. I've written plenty myself. It was just odd to see this disregarded entirely.

As for the commonality of principles, game theory explains most of them, so it isn't more surprising than that we all work with the same prime numbers, say. A simple principle of reciprocity will produce something along the lines of "respect other people's wishes".

<comment><USER18> _It was just odd to see this disregarded entirely._

I can't say I agree. I mean, a serious, interesting essay can certainly be written on the ethics of scraping. But these short preludes on technical posts just end up sounding either like a disingenuous legal disclaimer or a preachy paternalistic tirade.

</comment></comment></comment></comment><comment><USER19> Has there been precedent established whether bypassing anti-scraping does or does not violate the CFAA?

<comment><USER20> It's a complex subject.

For example, the Linkedin case : [https://arstechnica.com/tech- policy/2017/08/court-rejects-li...](https://arstechnica.com/tech- policy/2017/08/court-rejects-linkedin-claim-that-unauthorized-scraping-is- hacking/)

Craiglist sued some companies too.

To my understanding, scraping can be legal if it's done properly, meaning not sending too many requests at the same time, and if it does not affect the underlying infrastructure.

It seems like in the US or in Europe, even if there is any anti-bot / anti- scraping section in the website's TOS, public data can be scraped. Sometimes, even "private" data can be extracted using bots. For example, lots of "bank account aggregators" has won lawsuits against banks.

<comment><USER21> The issue is that if you allowed all web scrapping you could DDOS websites and get a free out of jail card by telling "oh, we were simply scrapping some data and it glitched out".

<comment><USER22> That sounds like a possibly-less-time-in-jail-card.

</comment></comment></comment></comment><comment><USER23> > there are already anti-scraping solutions on the market that can detect its > usage based on a variable it puts into the browser's window.navigator > property. Thankfully, we have developed a solution which removes the > property from the web browser

Does anyone know what exactly the property in question is?

<comment><USER24> Probably navigator.webdriver, but there are multiple properties.

[https://antoinevastel.com/bot%20detection/2017/08/05/detect-...](https://antoinevastel.com/bot%20detection/2017/08/05/detect- chrome-headless.html)

[https://antoinevastel.com/bot%20detection/2018/01/17/detect-...](https://antoinevastel.com/bot%20detection/2018/01/17/detect- chrome-headless-v2.html)

<comment><USER23> That's why I was wondering. Last time I checked headless Chrome could be pretty reliably detected in a number of ways, as you say. That they mention just one variable seems quite odd, given that they position themselves as specialists in the field.

<comment><AUTHOR> The webdriver property is as far as we know the only one that stays different if you use non-headless chrome with puppeteer. Rest can be handled by use of non-headless chrome as mentioned in the article.

But you are right, after reading through it again, this section of the article should be improved.

</comment></comment></comment></comment><comment><USER25> On one hand, it does make a lot of sense that many web publishers want to keep people from scraping content, given the way that it's often used nefariously, to violate copyright, or for spam purposes.

But there are totally legitimate reasons to scrape as well. Altmetric ([https://www.altmetric.com](https://www.altmetric.com)), which is the company I work for, tracks links to scientific research. So when someone on e.g. Twitter links to a page on nature.com, we want to scrap the page they linked to and figure out which paper they are talking about (if any). Academic publishers can be particularly sensitive to scraping, making the endeavour much more work than it needs to be.

It's a real shame that the web has moved to be so closed off in many ways.

<comment><USER12> The web is not becoming closed off from users. It's becoming hostile to bots. Not the same.

</comment></comment><comment><USER26> At this point you should just consider your HTML/HTTP interface an API because when you use headless browser technology readily available with any programming language it becomes exactly that.

<comment><USER27> The HTML really is the API.

Writing a site-specific browser has always been a fun project for me. It just pulls the information I want directly from my favorite websites. Maximum signal-to-noise ratio and I get ad blocking for free.

People think Javascript-based sites are safer, but it's in fact even easier to access the content because there's usually a programmatic interface available.

</comment></comment><comment><USER28> Pretty much rate limit and proxy through tor is all this article needed to say. Sometimes you need to fake some cookie data or get a session set first. At least for static data.

For dynamic sure puppeteer if you have too but my god the exceptions and stack traces need some work.

But most websites don't enact protections because it's generally not worth the opportunity cost. So you really just scrape with your LOC.

If you move money or can't code then mozenda.

</comment><comment><USER29> I'm glad eBay never implemented that, I wrote a scraper that hit them 5-6 billion times over a couple of years.

<comment><USER30> What was your objective?

<comment><USER29> To find a particular product that could be repaired and resold

</comment></comment></comment><comment><USER31> I was playing around with the idea of using Tor to get around IP blocks. I played around a bit with code but the Tor binary dependency was a bit much for my use case. Curious to know if anyone else tried this?

<comment><USER32> Everyone else has the same idea which is why it often makes sense to block Tor outright.

<comment><USER33> Yep. Tor gateways are usually included along with VPNs and AWS ips in most basic ip blocklists.

</comment></comment></comment><comment><USER34> Scraping on high volumes any serp is pain if your business relies on it and most services out there do not work on high volumes or they work and crazy expensive.

I have checked few solutions out there, I am using now proxycrawl. Developers of their api helped me get a very high volume of Serp data from different search engines like Yandex, google and yahoo and bing. I also use them for Javascript crawling as for our project we need lots of content which is rendered via javascript. I am amazed of how their API endpoint works. It is basically sending a URL to their API and you are good to start. Make sure to contact them for some sites as they do not allow you to crawl the world by default unless you prove your use case, they liked my product and that is how it got started. I've really having successful experience with it so I totally recommend, you basically communicate with developers who does lots of work to make it happen. As I am mainly in JS I asked for a Node JS package and they just built it open sourced. [https://github.com/proxycrawl/proxycrawl- node](https://github.com/proxycrawl/proxycrawl-node)

<comment><USER35> It would be interesting to know what technologies they use to scrape on high volume for 0.005 US cent a successful request. I checked this package and it looks decent, i like dependency free libraries. I'll check their API for Bing. Thanks</comment></comment>


John Doerr of Kleiner Perkins on entrepreneurship - <AUTHOR> http://venturehacks.com/articles/intuit <comment><USER2> I realized long ago that sometimes the one to build the ship isn't necessarily the best captain. I've used the analogy a few times because it points out the difference in skills needed to perform the set of tasks involved in starting and running a company. I have no problem admitting that I'm not sure that most entrepreneurs are capable of doing one or the other or both (or even if they should from a cost/benefit or value add perspective).

How do you/did you know when it's time to bring in someone else to manage the venture you created (at least from an operational perspective)?</comment>


China cracks down on Apple's iMessage as national web cleanup continues - <AUTHOR> http://www.scmp.com/news/china-insider/article/1534770/china-cracks-down-apples-imessage-national-web-cleanup-continues

<comment><AUTHOR> For those behind the register-wall:

>>>

China cracks down on Apple's iMessage as national web cleanup continues

Spam messages originating on iMessage will be heavily monitored in the future

China's Ministry of Information and Information Technology (MIIT) intends to lay down new regulations governing Apple's iMessage, the default messaging app in every Apple iPhone and iPad.

The measures include tools to monitor and prevent spam messages, which the ministry says are prevalent on the iOS default messaging app.

According to a report by Chinese technology site TechWeb, iMessage's vulnerabilities to spam have cost users "millions" of RMB.

Up to this point, TechWeb notes iMessage has been in a "vacuum" area void of regulation - particularly when compared to other messaging apps such as Tencent's WeChat.

Chinese authorities earlier this year embarked on a nationwide campaign to combat fraud, pornography, and other illicit goings-on via the internet.

Just last week, Tencent cooperated with officials to wipe out millions of WeChat and QQ accounts used for activities ranging from phishing scams to prostitution.

While the MIIT's announcement may be an extension of this crackdown, it may also be a jab at Apple.

MIIT has accused the American software giant of not taking sufficient action to curb criminal activities on iMessage, and Apple has also been the focus of many a labor rights investigation in China.</comment>


Ask HN: Can Non-YC Companies/projects Do "Launch HN:"? - <AUTHOR> <comment><USER2> There are two things going on here. The first is that "Launch HN" is intended for startup launches, as opposed to "Show HN", which can be any sort of project you want to share. If we keep the "Launch HN" title format, I don't see why it shouldn't be open to anyone who's launching a startup. That would be in the spirit of HN. But it raises moderation questions, like what do we do if someone posts a "Launch HN" and it isn't actually a startup launch? We're still figuring this out, so please be patient with us and hold off for now. We might drop "Launch HN" and stick with "Show HN".

The second thing has to do with YC's reserved slot on the front page, traditionally used just for job ads (see [https://news.ycombinator.com/newsfaq.html](https://news.ycombinator.com/newsfaq.html)), which we're extending to include startup launches for reasons I described here: [https://news.ycombinator.com/item?id=13484644](https://news.ycombinator.com/item?id=13484644). That part will only apply to YC startups, similarly to how the job ads work.

Edit: if anyone wants to give us input about this, please email firstname.lastname@example.com. Now is a good time because we're still figuring this out.</comment>


Recruiting Strategy: 100% Bonus Over 10 Years - <AUTHOR> http://www.backpocketcoo.com/blog/people/best-recruiting-strategy-ever/ <comment><USER2> We actually have a system like this, except it involves someone creating a company and bringing in some H1-B's for 5 years while they work for a Green Card, then skim 50-70% off their rate. I guess one of the differences between our arrangement and the article is the quality isn't as high.

</comment><comment><USER3> This could spiral out of control in both good and bad ways. The good ways are mentioned in the article, everyone wants to keep everyone else happy so they all continue earning their bonuses. But what happens when someone does leave? The person who referred them will suddenly have their compensation drop. That could destroy morale and send that person looking for other employment. The problem could then possibly ripple throughout the entire organization.

<comment><USER4> How many people calculate a bonus as part of their base compensation? I tend not to count my chickens before they're hatched and don't see how something like this would negatively affect the morale of anyone who understands the difference between base pay and bonuses.

Additionally, a 10% of annual compensation referral bonus is generous; even if it can only be collected once.

<comment><USER5> If you've recruited 2-3 new hires, and their salary is similar to yours, that's a 20-30% raise a year, a not-insubstantial amount.

I could easily see people coming to expect these bonuses, starting to rely upon them to pay for their holiday shopping, etc, to the point where politics and drama could result.

Of course on paper, even one 10% referral bonus would be better than most existing ones, but people don't behave rationally about money, and we quickly get used to our "bonuses"...

<comment><USER6> Not only that, but the company negotiates future salary increases knowing the bonus exists, so you can't be guaranteed that it will actually be on top of what you would otherwise get paid.

</comment></comment></comment></comment><comment><USER7> Ten years at the same company sounds like a nightmare to many of us. I don't ever want to do that again (I hit nine years once), and I don't ever want to inflict that on people I like.

I'll happily take that $12k over the usual $1k, however.

<comment><USER8> _Ten years at the same company sounds like a nightmare to many of us._

I'm pretty unapologetic about job hopping. Most companies just don't have enough interesting work or the right culture to make it worthwhile to stay if you're a genuine fast learner.

That said, I'd love to find a company and job where I could stay for 10 years. That would be ideal. I'm one of the first ones out of a crappy situation, but I'm also tired of this world in which one has to keep changing jobs to get a chance at the interesting work.

<comment><USER9> I don't quite understand how the work can be interesting when you start out but lose interest after a year or two, unless the project itself ends or goes into maintenance mode. To me, either something is interesting or is not, from day one.

Just to give a different perspective: personally I've only had one employer since I started working 9 years ago, so I'm nearly at that 10 year stretch. I've changed technology several times while there, usually by proposing the change myself. I've also changed what sort of product I've worked on many times. Whenever the work becomes boring because a project goes into maintenance mode, I decide I want to work on something fresh and make it happen.

<comment><USER10> "personally I've only had one employer since I started working 9 years ago"

I think your experience is an anomaly. I'm nearly 40 and I've had a couple of jobs with something like the freedom you describe (and these [eg. chumby industries] ended only because the company went out of business, not because I left willingly), but the vast majority of jobs, even the supposedly exciting start-up (non-founder) jobs are much more restricted than that.

There's a fairly predictable cycle that occurs at many employers where if you're lucky enough to find a job working on a completely new product (which is ideal for a lot of top developers), you work on that for a year or so, get the first versions out, and then go into a trickle maintenance mode where you're mostly dealing with adding small, mostly unexciting new features. If you were instrumental in helping developing that product, the company will usually be reluctant to let you off of it even if they have other cool things to work on. You tend to get trapped by your early success and become defined by the first project you worked on despite the fact that everyone would probably be better off if you were assigned to the new thing and less experienced developers were put on your maintenance tasks.

To be fair, there _are_ companies out there that don't fall into this trap, but they are few and far between.

Like Michael, I've become pretty blase about job-hopping because of this. If I join your company, I'll give you at least a year and I won't leave you hanging between important release dates, but if you aren't giving me an environment where I am being challenged on a fairly regular basis, don't expect me to be there 3+ years down the line.

</comment></comment></comment></comment><comment><USER11> In other words a system for non-ambitious dinosaurs to get in their cronies and milk the system while almost being assured of a job for the next decade

<comment><USER12> I do not get it. How does the referral scheme described in the OP cause anyone to be almost assured of a job for the next decade?

<comment><USER11> The point being a referral based system incentivizes people to bring in quantity to stack the odds in their favor. Quality gets sidetracked, not necessarily maliciously.

</comment></comment></comment><comment><USER13> I actually kind of like the system, but doesn't this involve publicizing other employees' salaries? A possible workaround is to just have classes of bonuses, like 5k a year for entry-level, 15k for senior-level, etc.

<comment><USER14> A workable variant of this system is to assign bounties based on the value of different roles; instead of bonusing precisely 120k, you can assign a 100k bounty to the role; the bounty doesn't have to have any direct relationship with the salary.

The core idea is to make the recruiting bonus recurring.

Similarly, I'm not sure that the 100% over 10 years rule isn't arbitrary. Someone who stays with a company for _ten years_ is incredibly valuable. Why not pay in year 11, and year 12?

<comment><USER15> Yes role based bonuses for referrals are common in the financial services sector. For example at one firm an AVP referral that was hired would be a $5K bonus whereas a VP referral would be a $10K. Unsurprisingly there is quite a push for for VP and above as a starting title for referrals. I've never heard of a firm that offers a recurring bonus though.

AVP: Assistant Vice President

VP: Vice President

</comment></comment></comment><comment><USER16> Is anyone actually doing this?

<comment><USER17> Agreed, I like to see some success stories than theory on paper.

</comment></comment><comment><USER18> The first line of text on your post bleeds into the sidebar and is not readable.

</comment><comment><USER19> Devide all numbers by 2 and it starts to look reasonable. 5% per year (with a fuzz factor or something) for 5 years.

</comment><comment><USER20> This is a great idea (assuming that the budget exist), because it takes care of retention, not just recruiting.

I'd split the bonus between the two employees, and have it stop if either leave the company. This way both employees (who might have some influence on one another) have an incentive to keep each other happy at that company. This can boost the retention effect of this strategy.

</comment><comment><USER8> I'd like to see a per-year (or even per-month) compensation scheme for recruiters, because it would give them an incentive toward more successful placement. The current system seems to encourage churn.

That said, the "both must stay" provision here will cause people to stay longer than they should. Paying people to stick around when there really isn't anywhere for them to go doesn't make a lot of sense. Perhaps that recruiting bonus should be independent of the salaried role (and therefore continue to recur) since it is a separate job.</comment>


Huge Adwords Loophole is Victimizing My Site - <AUTHOR> http://www.hervelegerobsessed.com/blog/2011/07/31/google-adword-loophole-anyone-can-redirect-ad

<comment><USER2> I think the problem is very general and very bad. Google doesn't make the displayed link match the actual URL in any way (like forcing the displayed link to be a prefix of the actual URL). I commented on this a while ago and I think it is very dangerous to web-surfers: [http://www.win- vector.com/blog/2009/07/should-your-mom-use-g...](http://www.win- vector.com/blog/2009/07/should-your-mom-use-google-search/)

</comment><comment><USER3> Summary: webmaster which is #1 in SERP is annoyed by traffic drops due to an AdWords ad that occasionally appears on top of him and might violate the ad guidelines (Google being unresponsive to his reports until now).

Besides a violation of the AdWords policies (landing URL impersonation) by the offending ad I couldn't find any loophole being described.

<comment><USER4> The loophole appears to be that the two domains don't have to match, with a twist that the eventual domain in the case was supposed to have been banned already.

My initial thoughts were that he was complaining about an ad killing his traffic, but it's really a plea for help because said advertiser is scamming the system after being caught. This off course presumes the validity of the OP story.</comment></comment>


Show HN: Materialistic – Hacker News Android client with material design - <AUTHOR> https://play.google.com/store/apps/details?id=io.github.hidroh.materialistic

<comment><USER2> Source: [https://github.com/hidroh/materialistic](https://github.com/hidroh/materialistic)

</comment><comment><USER3> Thanks for sharing! I'll be giving this a shot tonight</comment>


Containers and Virtual Machines at the Edge - <AUTHOR> https://blog.stackpath.com/introducing-containers-and-virtual-machines-at-the-edge <comment><USER2> Not really the "edge". Just a data center nearer the user, like Akamai.

Is it worth the hassle? All you're saving is latency in the backbone between the point of presence and your home data center. Does this beat directing requests to the nearest AWS region? As long as you're in roughly the right hemisphere and time zone, you're probably close enough.

<comment><USER3> Edge can be defined as many things, and is currently being defined by the world in many ways.

At StackPath our definition of Edge is basically being as close as possible to the eyeballs aka users. Think of it as the front door to the internet.

Today our Edge expands across major IX's around the world and that's just the beginning. 5G is approaching us quickly along with container data centers.

The way we built our orchestration system it can deploy and manage workloads anywhere. In the future, that will include 5G container data centers which gets workloads even closer to things like self-driving cars, smart cities, IoT devices, <insert your idea here>.

<comment><USER2> _" workloads even closer to things like self-driving cars, smart cities, IoT devices"_

Oh, please. If you really need those last few milliseconds of lag reduced, you need local computation. If you don't, an AWS datacenter on the same continent is probably good enough.

</comment></comment></comment><comment><USER4> Given my experiences with Stackpath's CDN, I wouldn't trust them with any sort of workload. They bill themselves as the "secure" CDN, yet were not validating SSL certs on the origin.

<comment><USER3> Sorry to hear about this experience, would love to know more as we take security very serious.

Our CDN certainly will validate SSL certificates at the origin if the setting is enabled.

With that said, you may be on a legacy CDN product often referred to as "Secure CDN" and that setting may differ from our current CDN offering.

I'd be more than happy to loop our CDN team in to clarify. Feel free to reach out directly to product at stackpath.com and I'll get it setup :)

</comment></comment><comment><USER5> For contrast: why containers are a poor choice for small, function-based workloads on the edge: [https://blog.cloudflare.com/cloud-computing-without- containe...](https://blog.cloudflare.com/cloud-computing-without-containers/)

<comment><USER3> Ben from the StackPath product team here. We agree containers or VM's may not always be the best available option for a workload. That's why we also offer an equivalent product to the one by Cloudflare (great product btw) - [https://www.stackpath.com/services/edgeengine/](https://www.stackpath.com/services/edgeengine/)

However, it should be made clear that our container and VM solution is not a "function" type offering. You can deploy a container and/or VM workload on our Edge similar to what you might find at Cloud providers. The main difference is we sit a layer above the cloud providers and make deploying worldwide simple, secure, and fast.

With a few clicks or a single API call you can deploy a micro-service all over the world (even add an anycast IP if you need one) in under 60 seconds.

<comment><USER6> What cloud provider is under the hood?

<comment><USER3> None, it's StackPath under the hood. We have over 65Tbps of capacity all self built/managed at the major IX's in the world.

With a lot of our experience coming from the original founding team at Softlayer, we've built an incredible Platform.

More information on our network can be found at [https://www.stackpath.com/platform/network/](https://www.stackpath.com/platform/network/)

<comment><USER7> Are you guys running Knative or similar to handle the serverless workloads in your edge ?

<comment><USER3> We are not. Knative is a great project and something we're definitely looking into for more "function" type workload offerings down the road.

Today our container/vm solution does not have a warmup concept other than the initial deployment of your container. You simply specify your image, some attributes, and it's deployed to the locations specified on our Edge. Once deployed, you have the ability to delete the workload at any time, but it's not elastic based on requests to the workload.

<comment><USER7> Cool, so what's your container/vm orchestration layer then?</comment></comment></comment></comment></comment></comment></comment>