Apple might be running a web crawler written in Go
jan.moesen.nu
jan.moesen.nu
Is this considered interesting since it somehow proves the mainstream adoption of Go? Or since Apple, a competitor of Google's in cell phones, are using one of Google's technologies? Or what?
The takeaway for me was that Apple has a whole /8 subnet to themselves. That's just ... immense, for a single company. Gaah.
EDIT: Mis-typed the netmask, I meant /8 but typed /24. Fixed.
(I think you mean /8.) Brace yourself: http://en.wikipedia.org/wiki/List_of_assigned_/8_IPv4_addres...
Also, it is highly unlikely that you had a /16 as a PI allocation even in 1990.
http://www.dslreports.com/faq/cisco/30.1_Quick_subnet_calcul...
(as others have said, you mean /8)
A /24 is also only 256 addresses, so really unremarkable. I think you are reading it backwards. MIT has an /8, that's the large one.
One thing to keep in mind though is that Apple is much more a hardware company than software.
The Apple hardware brand, the hardware itself, and the software all together sustain the user demographic.
- Steve Jobs
They're still actively visiting every page on the websites that are associated with our iOS apps.
Today alone (starting shortly before 8am CET) they've crawled over 8000 pages on https://trails.io and http://offmaps.com — without sending conditional caching headers (our pages don't change too often).
$ grep ^17\\. /var/log/nginx/*.log | grep 'Go|Fetcher' | wc -l
8254
Note that they don't appear to be scraping any URLs available from within the apps themselves, but rather the the company/support websites linked in our App Store listings.I guess they're automatically scanning for objectionable content, since these websites are linked from the App Store and the iTunes website?
https://code.google.com/p/go/source/browse/src/net/http/clie...
Two weeks ago it was using a different user agent:
Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25 (compatible; Fetcher/0.1)
This string is mostly from a beta build of iOS 6.0 beta 4, but with the same suffix the author discovered.Fun exercise though.
You can solve this by (ab?)using the CheckRedirect functionality of http.Client to set the User-Agent again.
Here's an example: https://github.com/lifeforms/httpcheck/commit/07440d952d1660... (The program is nothing special, just a little thing I use internally for monitoring)
Would be interesting to know if/when any deals with bing/google/duckduckgo for search is expiring, like they were with google maps. That's probably when we will see an apple search engine.
Makes sense for them to fully control another part of the backend for spotlight and siri.
One of these should be .35, judging by the logs that follow ;)
Servers/scripts/etc are not their usual focus and they dont really have an internal language that fits better. Go is pretty good at this kind of things.
EDIT: changed to a more constructive comment.
Try repeating your point for any order of X, Y and Z, and you might realize it isn't really a valid reason for them to have used Swift or C++ instead.
Anyway, onto your current stance. That Apple don't use Swift or C++ for their spider seems to indicate that the benefit of using Go outweighs the benefit of using a language they own the compiler for. Go has a BSD-style license, so as far as Apple implementing their own changes and doing whatever they want with the source code and their own binaries at will goes, they might as well have owned it. Go is also seems like a no-brainer choice for a web spider since it has concurrency modeled in such a straight forward and cruft free way.
What's wrong with a company not just kicking the tires on another language, but using it on a big project? That's how you design better languages of your own.
"Go was great, except for X and Y" leads to improvements on your own stuff.
Even as an outspoken critic of go, I recognize that it has quite a strong networking toolset.
My guess would be that the webcrawler was started before Swift was allowed to escape from the Developer Tools enclave.
Surely you agree that languages designed with one purpose in mind (a la Go and networking/server development) can reasonably do better at that purpose than an explicitly general-purpose language?
Just to be clear, I prefer Swift to Go in general. However, between the two, I would personally prefer to use Go for the development of network utilities.
I don't think that's a given. Just because a language is more special-purpose, doesn't mean that a more general purpose language can do the same things as seamlessly as in the other language (maybe they would have to define an embedded DSL, but that might be simple). Maybe the special-purpose language decided to commit to certain things in its domain - like certain concurrency features - and make it "first class", since that was its intended domain. But then maybe that concurrency feature wasn't that useful and a more general purpose language - which had to keep its options open since it was general purpose - could express other alternative features more easily.
Using the right language for a particular domain can save you a lot of headache. Go is open source and a relatively proven choice, compared to Swift.
As for access to the language implementation, Swift is Apple's creation.
I'm not trying to tell you that you are wrong. I'm just saying that your reasoning is flawed, and your arguments don't really support any particular conclusion. "Swift is a general purpose language." - OK? "I fail to see what it lacks." - Noted.
Let's only compare with native, canonically AOT compiled, general purpose languages, though. All of a sudden there are a lot of questions. Why didn't they write it in C? Why didn't they write it in Delphi? Fortran? Forth? The answer is of course that beyond being a native, canonically AOT compiled, general purpose language, different languages have different constructs and models of particular patterns that make them more or less useful for different kinds of tasks and development models.
Apple seemingly recognized that Swift was less useful than Go for the particular task at hand, and while we can't really know for sure if this was a matter of performance, development speed, personal preference of the developers etc, we can probably assume that the choice was based on taking several such quality dimensions into consideration.
Apple actually uses a bunch of 3rd party developer tech on the server-side and on the web. They use Rails quite a bit I believe and are starting to use Angular.js too.
Or maybe it's a way for Steve Jobs to get a revenge post-mortem on Google for Android!