Shhh! My common sense is tingling.
While I don’t completely buy the tables over css layouts part (though depending on the layout it is possible…) the rest of it makes sense.
Anything that takes more CPU time to do is going to chew more battery. Javascript being an interpreted language sucks cpu like candy, PARTICULARLY if you have timed events like animations. CSS animations be they GPU or CPU bound inherently are going to suck more juice than having things not animated. Memory access consumes more power on DRAM since instead of just paying the refresh, you have the ‘double duty cycle’ – this means larger files and larger images are going to cost battery life. Rescaling large images to smaller dynamically client-side is going to suck cpu. Rendering more complex shapes like CSS3 transitions, allocating pre-render buffers for webfonts not installed on the host OS, these all should have significant impact not just on performance, but also on battery life.
Large images in particular can cause real drain because they have to be decoded; that 260k jpeg might look cool, but decoded it takes a megabyte or more of RAM on devices that typically have less than 64 megs free by the time the OS and applications are loaded. That means dipping into the fixed storage to swap, consuming even more power. (and shortening the life of said storage since, well… it is flash RAM!) … and that’s without talking the overhead of running the decoder algorythm… especially since jpeg is lightweight compared to what PNG uses. (zLib) – to put that in perspective that’s like saying a rhino is lightweight compared to an elephant.
There was an article by one of the android devs a year or two ago (my google-fu is failing me) where it was said smartphone battery life could be doubled by killing all the cutesy transition animations. Stood out in my mind because I’m not a big fan of stupid animated transitions in the first place. I click on something or tell the computer to do something I want it done NOW, not sit there waiting for some stupid animated dog to ask me if it can help me.
… and to be honest, fade, genie, and other transitions are as annoying to me as Clippy or Rover. Rank right up there with the idiocy of rotating image banners sucking down space for nothing useful – well, apart from hiding the lack of real content on the page.
Because the real problem with flash wasn’t with flash – which is great for games or video delivery. The problem was people using it on websites for garbage that shouldn’t even BE on websites. The problem isn’t the technology, it’s how it’s being used, overused, abused, mishandled, and thrown at EVERYTHING ‘just because we can’.
Think of it like the idiots who use javascript to replicate the TARGET attribute, just to get their code to validate; without understanding WHY it was deprecated and why 99% of websites have no business doing that in the first blasted place!
Though you are right – they should be wisely used; I say use with an eye-dropper everywhere, and drop certain effects completely for mobile. Just slapping endless effects on a page “because you can” is the real problem, regardless of technology.
See this online manual I’m trying to read right now for a new language, that uses a 3.5 megabyte javascript train wreck (as a single file!) to deliver 16 pages averaging 12k of plaintext each using ajax… pretty much buries the needle on one CPU core on my laptop – I shudder to think what it would do on a handheld.