6 ms·
Google Coders Need To Go On An HTML Diet
- philfreo 16y agoWhile I agree this example is pretty ridiculous, Google is spending a lot more time innovating in web performance than most
- gruseom 16y agoYes. Moreover, web performance was one of Google's differentiating features right from the beginning. Arguably the most important, in fact.
- arethuza 16y agoI would have said that their key differentiating feature was that they were much better at actually finding relevant stuff than the competitors. I don't think many people stopped using AltaVista because it was too slow.
- romland 16y agoI don't think many people stopped using AltaVista because it was too slow. Maybe. Personally I stopped using it when they started throwing pop-unders at me. Or maybe it was because it jumped on to the whole "portal" craze and other SE's that were cleaner felt quite refreshing.
- gruseom 16y agoI don't think many people stopped using AltaVista because it was too slow. That's exactly why I stopped using AltaVista. I never noticed Google's search results being more relevant. I distinctly remember this because I was aware of the hype around relevancy at the time and was trying to notice a difference. What was magnificently different, though, was Google's subsecond page load and search response times. One interesting thing about marketing is that the reason one gives for using a product is often rather disconnected from its real utility. (The book Positioning is about this.)
- jonursenbach 16y agoI'd be curious to see how much bandwidth they save by cutting this down a hundred lines.
- bnoordhuis 16y agoAs jasonkester pointed out, the HTML is only sent out once and then dynamically updated with AJAX (or AJAJ, as the case may be). So in the grand scheme of things, those few hundred lines of HTML don't matter much.
- mey 16y agoGWT at work? http://code.google.com/webtoolkit/ http://code.google.com/webtoolkit/
- Robin_Message 16y agoNone of the class names used are GWT class names, so I doubt it. It'll be the output of an internal template engine. Interestingly, AFAIK, most of Google is not written in GWT -- anyone know any production Google stuff that is? (I think Wave is.)
- mcxx 16y agoGMail is.
- litewulf 16y agoGmail is not.
- csytan 16y agoI believe you are mistaken. Gmail came out much earlier than GWT.
- Robin_Message 16y agoI'm pretty sure that it is not GWT since: 1. It was released several years before GWT. 2. It has no GWT CSS class names on anything. 3. It does have some weird IFRAME structures that are unlike what GWT uses. 4. It doesn't have any of the long hexadecimal identifier files that GWT uses to compile to different targets. 5. On the wire, it doesn't look at all like GWT AJAX requests. 6. Isaac Truett <itru...@gmail.com> says it isn't at http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/beb685af839718d2/2dd5665b53a6eb11 http://groups.google.com/group/Google-Web-Toolkit/browse_thr... This was in 2007, but I don't believe they threw away a working product to do a rewrite in GWT, which was still not fully mature and is still hard to get just right. And if they did, they'd also have had to make it look like it is not written in that framework in every way I can think to check easily. (EDIT) 7. Since nothing significant is written in GWT, they'd be trumpeting it from the rooftops if GMail was.
- sliverstorm 16y agoAhh, bloat at it's best. If we could understand machine code as easily, we'd probably see the same sort of thing at the core of a lot of software.
- tumult 16y agoWho cares, if it works? I don't personally consider HTML and CSS either elegant or efficient, so if they've abstracted over it in order to do things, and it works, what's the big deal? HTML by hand seems mostly like a waste of time, to me. Most of the impressive web apps don't do much markup and styling by hand. Cappuccino/Objective-J is an extreme (and good) example of this.
- mr_eel 16y agoWell personally I care about good craft and elegance. These are subjective to be sure. But I'm immediately suspicious of the statement "who cares if it works?". As if any old rubbish will do. I have a pact with myself; I'll stop working with the web if I ever gain that attitude. Nothing more depressing than a tradesman that doesn't respect his tools.
- tumult 16y agoThe visible spectrum of web tools suck. HTML and CSS are awkward. The web itself is an incredible, beautiful thing – but some of the technologies are seriously flawed and drafted by people with the wrong ideas. If I was a cabinet maker and all I had to work with was sawdust, you'd sure as hell bet I'd invent a machine to compact it into something I could build solid structures out of. I wouldn't consider gluing pieces of sawdust together by hand to be any sort of meaningful craft. http://www.zazzle.com/css_is_awesome_mug-168716435071981928 http://www.zazzle.com/css_is_awesome_mug-168716435071981928 At least we got a sweet T-shirt and mug out of it.
- axod 16y agoThe question should be: "Will it make a difference that degrades user experience". If no user ever notices, who cares? Most programmers don't use assembly language. Their code is full of redundancy and inefficient bloat. But it's a trade off, and most people don't really mind too much. To many, HTML/CSS is machine code. Some love hand crafting it, some leave it to automated 'compilers' to create it, and just like all compilers, that means you often end up with inefficient mess.
- 16y ago
- tszming 16y agoSend the link to Steve Souders. (www.stevesouders.com)
- jasonkester 16y agoIt's worth noting that those 400 lines are not what's sent over the wire. Generally, you'll send something like this as a little snippet of JSON then tear it apart on the client and construct whatever HTML you need to render it nicely. I suspect the author had a look in Firebug and came to the wrong conclusion. So no, it's not bloat. It's just presentation.
- masklinn 16y ago> So no, it's not bloat. It's just presentation. The overly complex and messy generation of crappy HTML is bloat.
- msy 16y agoJust because it's only presentation doesn't mean it's not bloat. Assuming this is a rendered JSON object that's still a ton of extra HTML elements and CSS to render/instantiate than should be necessary to produce the same effect and while that might not be noticeable on your top-end MBP with safari for a lot of devices it does. It's also just poor craftmanship, I think that's what really bugs me.
- falien 16y agoIt would be bloat if, as the author irresponsibly implies, all it did was display the basic data of a single text message. In the case of that single instance for the author it may do that (I didn't care to look that closely), but it provides for much more to be possibly displayed, and much of that presentation can provide extra information to a viewer (or a machine for that matter). Also with modern javascript and html engine optimization, its not out of the realm of possibility that generating all of this every time is faster than only generating exactly what is required for each message.
- lancashire 16y agoDon't show him Google Calendar.
- tzury 16y agoIf one will inspect a blip in the google wave, one cannot think how many Wikipedia's articles could those bytes feed. I suspect it has allot to do with the GWT. a .NET DataGrid or whatever it is called these days would looks just the same comparing to a simple HTML table structure.
- daleharvey 16y agowhen you work on something significantly more complicated than a run of the mill django/rails type website, you quickly find out that a lot of the "bad practices" you taught yourself out of, can actually be actually completely necessary inline styles and javascript are really really fast, innerhtml can be a lot faster than dom methods, doing everything with fancy css selectors is a good way to completely kill a page and destroying your markup by adding html over the place and id='' attribute on everything, can actually be the right thing to do.
- iamelgringo 16y agoI noticed that when I first started thinking about the Css v tables debate. Google uses a fair number of tables for layout in its designs. Noodle around on Google's site with the web developer toolbar and Outline->Tables->Table Cells. If you're a CSS purist, you'll be horrified. Google's front page makes prominent use of a table for layout. The autosuggest drop down is also a table. Gmail: tables all the time.
- baddox 16y agoActually. ;)
- geekypeek 16y agoI'm the author, this is definitely sent over the wire as I'm building code that is scraping it right now (which I'll opensource soon). Since I deal in the mobile world, its especially critical to keep bloat minimal so people don't pay data charges for your poor coding. I hate fatty, fat code.
- deleted 16y ago[deleted]
- stanleydrew 16y agoI assume you've looked at google voice's mobile site then. It's way more stripped down.
- scott_s 16y ago#include <stdio.h> int main() { printf("Hello World!"); return 0; } Becomes: .cstring LC0: .ascii "Hello World!\0" .text .globl _main _main: pushl %ebp movl %esp, %ebp pushl %ebx subl $20, %esp call L3 "L00000000001$pb": L3: popl %ebx leal LC0-"L00000000001$pb"(%ebx), %eax movl %eax, (%esp) call L_printf$stub movl $0, %eax addl $20, %esp popl %ebx leave ret .section __IMPORT,__jump_table,symbol_stubs, self_modifying_code+pure_instructions,5 L_printf$stub: .indirect_symbol _printf hlt ; hlt ; hlt ; hlt ; hlt .subsections_via_symbols Look at all that bloat! I just want to write out "Hello World" to the screen. Why do I need to create a function stack of 20 whole bytes? What a waste! And when I do that, I have to go through the onerous effort of saving my stack pointer to a whole 'nother register. What a waste of my system resources. It's bad enough I have to call printf in the first place when I really could just use the write system call, but look how it doesn't even call printf right away! First I have to call some locally defined function which has to allocate even more space for another stack. More waste and bloat. And look at how all of this is organized, these sections are completely unnecessary. I just want to write out something to the screen! I don't need this level of organization and abstraction to do this simple task.
- eli 16y agoGiven the choice between elegant high-level code that generates verbose and ugly HTML versus complicated and ugly high-level code that generates very tight HTML, I know which I'd choose.