Starting to hate Google...
#1 Members - Reputation: 3283
Posted 01 November 2011 - 02:12 PM
I was wondering if anyone out there has given a look at Google dart?
It's their proposed replacement to Javascript ( although they wont formally admit that ), and it straddles the line between dynamic and static languages and had some very interesting concepts. I played around a bit with the online tool then decided to give it a shot.
Fast forward 4 hours later and I am still no further ahead. Simply put, I am really starting to hate Google. The seed was planted when I was working on that hateful platform Android and got to work with their half baked tools, and this experience was right up that alley. First off, you have to build the damned thing yourself, no precompiled binaries, because I guess the geniuses at Google find that offensive to their sensibilities. Oh, but instead of downloading the code via SVN, GIT or CVS, or better yet a simple zip, nooooooooo.... you have to download Google's build tool they made for Chromium and use it. Lovely. So I run this black box and joy of joys, it fails. Oh look, there is a bug report on that from 2 weeks ago.
At this point I said screw it.
This was after recently creating a tutorial for getting PlayN up and running, a process that would make Rube Goldberg proud. I followed that by attempting to deploy a PlayN game to Google App Engine, which quite simply DOES NOT WORK, but my god the process, the process made me want to cry tears of blood.
Seriously, I have worked in corporate IT, with companies like UGS/EDS and IBM that get paid by the hour and it shows in the way they do things... and even their process is streamlined compared to Google. On top of that, support is completely lacking... look in the PlayN forum at the unanswered questions... now do the same in Android development ( oh my god, the scars from working with Android! ), or even go to products like Adsense. If the answer isn't in a wiki somewhere, you are screwed. If the answer is in a Wiki, I guarantee it will have 19 steps, and 2 of them are wrong.
Seriously, Google really needs to grow up and act like a big company soon. That means not hiding behind the word 'beta' and actually creating polished and supported products. That means releasing 'good' documentation, creating proper installers, hiring people to actually answer questions asked in your forums and all the other thing every single other big corporation does. Yes, it's a bit having to hire people and pay for support, but guess what, that's all part of growing up. Until then, you are going to continue to be a one trick pony.
I mean seriously, some time contrast Google vs Microsoft developer support, it's appalling how incredibly terrible Google is. Hell, contrast the process of deploying to App Engine, with the process of deploying to Amazon or Azure. In the case of Google products, its like you are dealing with "Steve the IT guy" 's hacked together perl build process from 1992. Amateur hour at a multi-billion dollar company.
#2 Members - Reputation: 3327
Posted 01 November 2011 - 02:39 PM
Personally, I'm fine with getting a few (or even a bunch of) duds for every slick webapp we get. Better than most other companies who provide just as many duds without any of the stars.
#3 Members - Reputation: 3283
Posted 01 November 2011 - 02:58 PM
Google's great successes I think are the result of their attitude to let great developers spend time to make great ideas. For great developers, this works great. Filtered by great marketing and sales folks to detect gold vs. crap, this works great. When you get a skilled hacker, who doesn't have that firm grasp of customer needs (to be kind) or poor non-technical folks who don't know enough to push back on it, you're going to get awesome sounding but unpolished (or Google Wave-like alien-ness) stuff. The bigger the company the more dead weight you get.
Personally, I'm fine with getting a few (or even a bunch of) duds for every slick webapp we get. Better than most other companies who provide just as many duds without any of the stars.
It's not their consumer products I have an issue with ( well sorta ), it's their developer products that are half baked, poorly supported and horrible.
#4 Members - Reputation: 2369
Posted 01 November 2011 - 02:59 PM
Oh, wait...
Although it really does come down to this: You get what you pay for.
developer support, it's appalling how incredibly terrible Google is
Google does not have support of any kind. Unless you are a popular blogger or highly paying client.
I have a similar issue. Chrome's GPU accelerated canvas is broken on one of my machines (works in IE, FF, Safari, ...). It's some weird issue with something and the results are from garbled screen to hard locked machine. Since XP was introduced, this is the only time I've had machine freeze up. Best part - accelerated canvas is on by default since 14 and same issue occurs up to canary. Bugs like this have been cropping up for the past two years.
It's not a big deal to me, disabling hard acceleration via --switch works. But I suddenly have to completely agree with Microsoft refusing to support WebGL. Not only is complete lockup of machine with trivial OGL/DX possible, Chrome is doing it by default (to me). If simply putting <canvas> into some web page is enough for lock-up Windows 7 (6870 radeon, up-to-date on everything), then giving unlimited access to any web page really is a bad idea.
#5 Members - Reputation: 1281
Posted 01 November 2011 - 03:07 PM
Javascript needs to be replaced. I along with others online have mentioned this for a long long time.I was wondering if anyone out there has given a look at Google dart?
It's their proposed replacement to Javascript ( although they wont formally admit that )
However, their direction is wrong. Like a lot of people that want to design a web language they immediately jump to an untyped language. Ideally they should have gone for the C# approach.
Regarding concurrency:
An isolate is a unit of concurrency. It has its own memory and its own thread of control. Isolates communicate by message passing (10.14.4). No state is ever shared between isolates.
They're just taking the stupid idea of webworkers which was a useless feature and just throwing it into their language instead of implementing actual language locks and mutices.
I won't go into detail, but I read over their language spec and this is just horrible. I mean take for instance a very basic thing missing from javascript such as operator overloading? Nope Dart doesn't add that. Dart doesn't add anything that Javascript doesn't already have. You can't even allocate a byte array in their language. Javascript sucked so much they had to force a new specification for typed arrays just so things could move forward with efficiency.
All and all their language they designed looks like it was created by someone who hasn't programmed. (Just look at their getter/setter syntax wtf is that?).
They need to really keep their toy projects to themselves if they're not even going to try.
// edit I just noticed something. Their language was built while trying not to trample on any current specifications it looks like. Very interesting decision. So you have to use say the Float32Array, which is currently not supported really in the language prototype.
#6 Members - Reputation: 1396
Posted 01 November 2011 - 03:55 PM
My first cry was using gmail. Back in the day it was the most convenient webmail compared to Yahoo and Hotmail, but it was so difficult to use. Gmail for Android is even more so. The user interface is counter intuititive and frustrating. No concept of folders, but just labels, and my inbox shows ALL messages. It hides the Reply All, Forward, and other buttons inside a button that says Reply. So now it's two clicks away before I can forward emails. I was wondering if Google staff actually use Gmail. Some of them must have shared the same frustration? Yahoo mail now feels 10x better than Gmail.
Then there's Android, pretty much what you said there. I mentioned this on another post as well. They keep releasing new products and new features, and they are half-thought out. Ice Cream Sandwich has just gotten released, but how many Android users out there can immediately take advantage of it? Practically none. Why? Because it relies on device manufacturers to ship their devices with the OS, and the devices releasing now are still at 2.3! By the time the device manufacturers are able to release 4.0 Android devices, Google has probably announced an Android 5.
Then there's Google Docs for Android. I swear that product was full of bugs. Here's a company that developed Android and Google Docs, and you might think they would be able to combine both products correctly. Even with that much leverage, they still fail to deliver good products. Again, half-baked. One time it was causing an infinite loop, and didn't get fixed for days. They control Android, Google Docs, Android submission and testing, and yet they are still able to screw it up by launching a product that has an infinite loop at startup.
All their products have that open-source quality. Created by devs, for devs, if it works (even though it involves 10 steps) why bother with anything else?
#7 Members - Reputation: 3283
Posted 01 November 2011 - 04:11 PM
All their products have that open-source quality. Created by devs, for devs, if it works (even though it involves 10 steps) why bother with anything else?
It really does feel that way, even worse now they are trying to make more money from these services ( so the "get what you pay for" comment goes away ) and are setting price structures that are simply insane.
To perfectly illustrate the level of *cough* polish *cough* Google put's on its products, compare Google App Engine to Microsoft Azure or Amazon EC2 and you will see the joke that Google is becoming. In every conceivable usability metric; documentation, support, install process, etc... GAE is appalling compared to it's competition.
#8 Senior Moderators - Reputation: 4722
Posted 01 November 2011 - 04:45 PM
I can't agree with you there. The locks & mutices threading model you are talking about is vastly inferior to Erlang-style concurrency (i.e. message passing, no shared mutable state).Regarding concurrency:
They're just taking the stupid idea of webworkers which was a useless feature and just throwing it into their language instead of implementing actual language locks and mutices.An isolate is a unit of concurrency. It has its own memory and its own thread of control. Isolates communicate by message passing (10.14.4). No state is ever shared between isolates.
Dart's Isolate is likely the result of the work they have done on coroutines in Google's Go - they quite closely resemble one another, although isolate appears to be a little more general (can spawn OS threads as well coroutines).
Tristam MacDonald - SDE @ Amazon - swiftcoding [Need to sync your files via the cloud? | Need affordable web hosting?]
#9 Members - Reputation: 1003
Posted 01 November 2011 - 06:04 PM
FWIW, I haven't personally met any other person who shares your view on Gmail and Yahoo mail. At least among my family, friends, acquaintances, and coworkers, Gmail is the one undisputed shining star among all of Google's non-search products. Some people hate Docs, many hate Spreadsheets, and everyone hates Presentations, but Gmail they did right, IMHO.My first cry was using gmail. (crying snipped) I was wondering if Google staff actually use Gmail. Some of them must have shared the same frustration?
#10 Members - Reputation: 1281
Posted 01 November 2011 - 06:31 PM
Seems like a good idea in theory until you actually do it. Pretend you have a set of data you want to work on with multiple threads. Like for multithreaded pathfinding or image processing. Suddenly you're forced to copy data. (In webworker's case you can't copy more than 1 MB of data). Doesn't matter really though since the time waste copying is so expensive that you've effectively negated any performance increase. That's not even counting the copying of the data back. The alternative is to just pass in a reference and go "hey you 2 threads work on half the data each and get back to me when you're done". No copying overhead. You'll notice in that situation that neither thread even had to touch the other's data at the same time so no lock was needed.I can't agree with you there. The locks & mutices threading model you are talking about is vastly inferior to Erlang-style concurrency (i.e. message passing, no shared mutable state).
Regarding concurrency:They're just taking the stupid idea of webworkers which was a useless feature and just throwing it into their language instead of implementing actual language locks and mutices.An isolate is a unit of concurrency. It has its own memory and its own thread of control. Isolates communicate by message passing (10.14.4). No state is ever shared between isolates.
Dart's Isolate is likely the result of the work they have done on coroutines in Google's Go - they quite closely resemble one another, although isolate appears to be a little more general (can spawn OS threads as well coroutines).
The only time it makes sense is when your passing off like a few values or a small array for heavy processing. Then again you lock out the bigger uses of threads that way. The lock and mutex allows everything without restrictions.
#11 Moderators - Reputation: 7472
Posted 01 November 2011 - 07:07 PM
All snark aside, Dart's mistakes in concurrency are not a fundamental weakness of no-shared-state models. They are a Dart-specific flub, and should be treated as such. The correct way to parallel-process large data sets without copying is to pass a reference to disjoint subsets of the data to each worker node; the fact that you cannot do this efficiently in Dart (from my understanding) is a foible of the language, not the parallelism model.
Shared state concurrency is disgusting, and non-shared models are almost uniformly far superior. Yes, you have to change your way of thinking, but then again, Henry Ford's assembly line changed a lot of thinking, too. New mental modes of operation are not inherently evil.
[Work - ArenaNet] [Epoch Language] [Scribblings] [Journal - peek into my shattered mind]
#12 Members - Reputation: 628
Posted 01 November 2011 - 09:46 PM
#13 Moderators - Reputation: 7472
Posted 01 November 2011 - 10:46 PM
This is just a hype bubble in the process of collapsing. People got ludicrously inflated images of Google's sophistication, engineering prowess, hiring standards, processes, you name it. Frankly it was just a giant marketing campaign to help with their IPO and with recruitment drives. Everyone seems to have this almost messianic picture of Google, as if they're going to save mankind or some nonsense.
They're just another large tech company.
Seriously. Where's the hate for Hewlett-Packard? IBM? Sun? Oracle? Yahoo, for that matter? Amazon? Nah, those guys are already seen for what they are - large tech companies - and the shiny has worn off years ago. It isn't hip enough to hate them anymore - even though it once was the height of being "with it" to rag on each of those firms. The target of unjustified loathing for this month is Google, and that's purely a backlash against a very successful brand-building campaign. Yeah, so they're not going to solve world hunger and bring about eternal peace, but if you believed the hype in the first place, I've got some nice waterfront property to sell you.
Google is just a large tech company. That means they will have a few brilliant products, a few abject failures, and a handful of mediocre fluff in-between. They will try many things in an effort to expand their revenue streams and remain relevant in the rapidly-moving tech markets, and they will fail at most of them, because most business ventures are failures, even when they are started by successful firms. People seem to forget that with alarming regularity when criticizing companies in general.
Dart is just jostling for position in a market that's poised to shift radically, provided someone with enough elbow grease can shove it off the cliff. No big shocks there.
Android is frankly a far better platform to develop for than iOS (yeah, yeah, cue the flames) and arguably one of the most accessible platforms for mobile development in existence. I don't share the sentiment that it's poorly managed, aside from Hardware Hell, which was a regrettable gaffe on Google's part early on. Most of the crappy management of Android tech comes from actual cell phone vendors, who are notoriously greedy, stupid, short-sighted in technical matters, and slow to change. They inherited that legacy from the land-line phone empires of the 20th century. No surprises there, either.
Google themselves has recently realized that they've spread themselves too thin, and have started cutting back on various stuff in a transparent effort to trim the fat. Witness all the products that have been end-of-life'd in the past few months; consider the features that have been axed from surviving products; look at the (frankly respectable) re-focus on their core strengths of search and targeted advertising. The only surprise here is that an otherwise "large tech company" is self-aware enough to make such radical moves in the first place.
Hating Google is just the tech fad of the year. The in crowd all has to do it to retain their street cred.
Yawn.
[Work - ArenaNet] [Epoch Language] [Scribblings] [Journal - peek into my shattered mind]
#14 Members - Reputation: 511
Posted 02 November 2011 - 03:26 AM
Care to clarify why you believe references and message passing are mutually exclusive?Seems like a good idea in theory until you actually do it. Pretend you have a set of data you want to work on with multiple threads. Like for multithreaded pathfinding or image processing. Suddenly you're forced to copy data. (In webworker's case you can't copy more than 1 MB of data). Doesn't matter really though since the time waste copying is so expensive that you've effectively negated any performance increase. That's not even counting the copying of the data back. The alternative is to just pass in a reference and go "hey you 2 threads work on half the data each and get back to me when you're done". No copying overhead. You'll notice in that situation that neither thread even had to touch the other's data at the same time so no lock was needed.
I can't agree with you there. The locks & mutices threading model you are talking about is vastly inferior to Erlang-style concurrency (i.e. message passing, no shared mutable state).
Regarding concurrency:They're just taking the stupid idea of webworkers which was a useless feature and just throwing it into their language instead of implementing actual language locks and mutices.An isolate is a unit of concurrency. It has its own memory and its own thread of control. Isolates communicate by message passing (10.14.4). No state is ever shared between isolates.
Dart's Isolate is likely the result of the work they have done on coroutines in Google's Go - they quite closely resemble one another, although isolate appears to be a little more general (can spawn OS threads as well coroutines).
Concurrency is an abstraction, not an optimization; the basic bronze age concurrency primitives are quite obviously useless in this regard, when compared to Erlang-style message passing.The only time it makes sense is when your passing off like a few values or a small array for heavy processing. Then again you lock out the bigger uses of threads that way. The lock and mutex allows everything without restrictions.
#15 Members - Reputation: 1281
Posted 02 November 2011 - 06:22 AM
I was referring to the common implementation of web workers which under the definition of no shared mutable state usually requires the data be duplicated so that it isn't changed on the original thread while the new thread works with it. The alternative is to use a lock statement and lock the resource while it's being used so only one thread may work with it at a time without any overhead. It's usually much more flexible and has higher performance when working with large data sets.Care to clarify why you believe references and message passing are mutually exclusive?
Seems like a good idea in theory until you actually do it. Pretend you have a set of data you want to work on with multiple threads. Like for multithreaded pathfinding or image processing. Suddenly you're forced to copy data. (In webworker's case you can't copy more than 1 MB of data). Doesn't matter really though since the time waste copying is so expensive that you've effectively negated any performance increase. That's not even counting the copying of the data back. The alternative is to just pass in a reference and go "hey you 2 threads work on half the data each and get back to me when you're done". No copying overhead. You'll notice in that situation that neither thread even had to touch the other's data at the same time so no lock was needed.
I can't agree with you there. The locks & mutices threading model you are talking about is vastly inferior to Erlang-style concurrency (i.e. message passing, no shared mutable state).
Regarding concurrency:They're just taking the stupid idea of webworkers which was a useless feature and just throwing it into their language instead of implementing actual language locks and mutices.An isolate is a unit of concurrency. It has its own memory and its own thread of control. Isolates communicate by message passing (10.14.4). No state is ever shared between isolates.
Dart's Isolate is likely the result of the work they have done on coroutines in Google's Go - they quite closely resemble one another, although isolate appears to be a little more general (can spawn OS threads as well coroutines).
In regard to passing references in a message to a thread I'm not sure what your question is. I never said they're mutually exclusive. How did you imagine working with a reference in a concurrent thread? Say you don't have locks and you just access it then it's no different than what I described as a more flexible system to allow. Placing the constraint on data that whatever you access is immutable between threads is the unnecessary constraint I'm not a fan of. Especially since it doesn't reflect any native hardware limitation. Accessing referenced data from a thread without a lock for instance should be a decision left to the programmer. Sure it can be unpredictable with registers and such, but as long as it doesn't allow scripting security holes then it's fine. (Implementing it so it doesn't have security flaws is fairly trivial in that respect).
That's an extremely naive view of parallel processing. When used correctly the speedup is rather impressive especially on dual and quad-core systems. Using it only as an abstraction is kind of missing the big picture especially when those threads are mapped to kernel threads like in most languages.Concurrency is an abstraction, not an optimization; the basic bronze age concurrency primitives are quite obviously useless in this regard, when compared to Erlang-style message passing.
The only time it makes sense is when your passing off like a few values or a small array for heavy processing. Then again you lock out the bigger uses of threads that way. The lock and mutex allows everything without restrictions.
#16 Members - Reputation: 516
Posted 02 November 2011 - 06:41 AM
Yes, threading has its uses, and a threaded email client would be great, but it should be easily switchable between different views, and not done the gmail way.
(I see that Android does text messages/email this way? If there's no way to turn that off, I'll have to keep clear of Android for my phone.)
https://freecode.com...cts/gigalomania - Gigalomania, Open Source RTS for Windows/Linux/OS X/Symbian/Android/Maemo/Meego
#17 Members - Reputation: 318
Posted 02 November 2011 - 06:41 AM
Javascript needs to be replaced. I along with others online have mentioned this for a long long time.
I'm quite new to JS, but from what I've seen, the language itself is "fine" (plus or minus personal preferences or offbeat requirements).
What needs to be replaced is its integration in browsers, mostly
- The overly shitty execution model that allows for "fun" things like just executing stuff by appending it to the document, and
- The supremely half-assed brainless DOM API that just does some things wrong (ever tried using an onclick handler on a submit button?) and is generally decoupled from what the DOM is really looking and acting like.
Both are not language-, but integration issues.
#18 Members - Reputation: 516
Posted 02 November 2011 - 06:45 AM
I agee that Google (and Apple for that matter, and even more overhyped company) are just yet another company. But I think this sort of "hate" is inevitable - the reason we don't see the hype for HP, IBM, etc, is because they're never overhyped by the media and its fans to the point of ridiculousness in the first place.This is just a hype bubble in the process of collapsing. People got ludicrously inflated images of Google's sophistication, engineering prowess, hiring standards, processes, you name it. Frankly it was just a giant marketing campaign to help with their IPO and with recruitment drives. Everyone seems to have this almost messianic picture of Google, as if they're going to save mankind or some nonsense.
They're just another large tech company.
Seriously. Where's the hate for Hewlett-Packard? IBM? Sun? Oracle? Yahoo, for that matter? Amazon? Nah, those guys are already seen for what they are - large tech companies - and the shiny has worn off years ago. It isn't hip enough to hate them anymore - even though it once was the height of being "with it" to rag on each of those firms. The target of unjustified loathing for this month is Google, and that's purely a backlash against a very successful brand-building campaign. Yeah, so they're not going to solve world hunger and bring about eternal peace, but if you believed the hype in the first place, I've got some nice waterfront property to sell you
I don't think it's the people criticising Google being hip - they're just responding to the hip crowd that go on about them all the time.
https://freecode.com...cts/gigalomania - Gigalomania, Open Source RTS for Windows/Linux/OS X/Symbian/Android/Maemo/Meego
#19 Senior Moderators - Reputation: 4722
Posted 02 November 2011 - 09:19 AM
Maybe not recently, but they have all created vast hype at one time or another...the reason we don't see the hype for HP, IBM, etc, is because they're never overhyped by the media and its fans to the point of ridiculousness in the first place.
Remember when Gateway was going to 'revolutionise the world through low-cost computing' (their computers were shoddy, and not terribly cheap)? Or when they ran ads on every media channel claiming to the world that they had an 'iMac killer' (the iMac is alive and well)? Remember when Dell had the 'best customer service in the world' (but it took an hour to speak to a human)?
Tristam MacDonald - SDE @ Amazon - swiftcoding [Need to sync your files via the cloud? | Need affordable web hosting?]
#20 Members - Reputation: 3283
Posted 02 November 2011 - 10:18 AM
I am talking about their developer products, the horrendous lack of support and the shoddy state they are shipped in. I don't talk about IBM, because frankly their developer support is absolutely stellar. Actually in my brief exposure to Yahoo's developer support it was incredibly good too, although I only worked with their UI toolkit and BOSS search engine technology, but both were exceedingly well documented and packaged in a way that made it extremely easy to get up an running. I have dealt with Amazon as a developer, working with their S3 and EC2 technologies and though the experience wasn't amazing ( it has improved ), it was vastly superior to any time I have dealt with Google products. It at least had timely, thorough and accurate documentation, which is the baseline of what I expect.
I use Google as my primary search engine, I am typing this in Chrome, my phone is an Xperia X10 ( not that I am happy about it over all ) and I own a Asus Transformer. I have no particular hate over Google products, but their developer support is absolutely and overwhelmingly shit.






