Chrome for iOS has been my main browser since I bought my iPad over a year ago. I love the way it syncs my bookmarks and history with my desktop Chrome browser and its familiar UI. But one thing that occasionally annoys me is its speed. From the start Chrome was marketed as the fast browser but so often on iOS it feels like I’m browsing in bullet time.
I blamed it partly on having the first iPad with a retina display (3rd gen) which is a little underpowered to push around all those pixels. But mainly, I just figured that all mobiles and tablets were slow, right? Well, not quite
An early Xmas present to myself, the Nexus 5
Yep, I received my Nexus 5 just the other day, and man I’m impressed, everything is so fast. Maybe I was jaded by my old Android 2.35 phone, but I never expected the Nexus 5 to be so snappy and pleasant to browse the internet with. I’m almost preferring it to the iPad even given the massive difference in screen size. Could it actually be quicker than the iPad?
The Nexus 5 took 693ms to complete, and the iPad took a whopping 6283ms. The iPad 3 is an order of magnitude slower than the Nexus 5!
Could the iPad 3 hardware, released only 20 months before the Nexus 5, really be that much slower?
Let’s try iOS Safari
After browsing some heavyweight sites for a few minutes Safari definitely feels a good bit faster than Chrome, and the benchmarks confirm it. Sunspider 0.9.1 gave iOS Safari a result of 1303.4ms, half the speed of the Nexus 5 but almost 5 times the speed of iOS Chrome!
Sunspider 0.9.1 Results
(lower is better)
|Android Chrome (Nexus 5, Android 4.4):||693.2ms +/- 0.7%|
|iOS Chrome* (iPad 3, iOS 7):||6258.5ms +/- 0.4%|
|iOS Safari (iPad 3, iOS 7):||1303.4ms +/- 0.4%|
* Strangely, while running the benchmark on iOS Chrome the little spinner in the iOS 7 status bar which normally indicates network activity would flicker on and off, which didn't happen when running on iOS Safari. Probably not a clue to the bad perfomance though because this never happened when running Octane 2.0 which gave just as abysmal a result.
Octane 2.0 results
(higher is better)
|Android Chrome (Nexus 5, Android 4.4):||4042, 3876|
|iOS Safari (iPad 3, iOS 7):||1346, 1484|
|iOS Chrome (iPad 3, iOS 7):||260, 260|
This test, probably more taxing than Sunspider 0.9.1, shows the same trend but this time the differences are actually magnified. The Nexus 5 was almost 3 times faster than iOS Safari, and this time iOS Safari was over 5 times faster than iOS Chrome. (Boy did Chrome feel slow on this one, each run took 13 minutes!)
I’m living in Madrid at the moment. It’s a great place to work on Readlang. It keeps me in language learning mode, and it’s way cheaper to live than my old home of London, which is handy when trying to bootstrap a business. The one problem is the heat, my friends back in the UK are complaining about the 30 degree heat wave there at the moment, well that’s nothing compared to the 42 degrees (that’s “fourty-two” in case you suspected a typo) it reaches here in Madrid.
Oh, and we don’t have air conditioning.
Our strategy last summer was this:
It’s surprisingly effective, but this year we’ve decided to upgrade. We bought one of these:
This is a climatizador (Spanish) or evaporative air cooler (English) and works by blowing hot air across water, which transfers heat from the air to the water, thus vaporising the water and lowering the air temperature. Sounds good, but does it really work? The reviews on amazon seem to be very mixed:
Some say it’s useless, and some say it works but only in dry climates. All agree it’s nowhere as powerful as an air conditioner. A shopworker in an electronics shop here had no confidence in them, and told us that it was basically an overpriced fan. We bought one anyway and I decided to test it.
The test setup
Unlike an air conditioner, an evaporative cooler requires the doors and windows to be wide open, to keep a supply of dry air and to stop the humidy getting to swamp-like levels (in the US these kind of coolers are called “swamp coolers”).
For the first test I measured the temperature of the air directly leaving the cooler. This will give the best case, not representitive of what you’ll feel in the room itself, but at least we can tell if it’s doing something.
Here we go, I cycled back and forth a couple of times to make the data more convincing:
- Ambient - normal room temperature
- Cooler: Fan & Water - I turn on the cooler for a couple of minutes. Then switch to bring in some outside air I decide to turn on the
- Basic Fan - The temperature raises slightly to 32.8 as hot air is pulled in from outside.
- Cooler: Fan & Water - This time I wait until the temperature stabilises, over 4 degrees lower at 28.2
- Basic Fan - The temperature climbs back 4 degrees to about 32.2
- No Fan or Cooler - No real change.
- Cooler: Fan & Water - Again, the temperature falls about 4 degrees.
- Cooler: Fan & No Water - The water pump is off, so once the water dries up, it acts like a normal fan and the temperature raises 4 degrees.
- Cooler Off: With the fan off, there’s no change.
- Cooler: Fan & Ice Water - With ice added to the water, the cooler is not significantly more effective. It drops a fraction lower than before, but notice that the high temperature is a fraction lower too. So I’d say there’s not much difference here.
- Basic Fan: A slight temperature bump from outside air, which is perhaps a tiny bit cooler than before, but probably within the error range when reading the thermometer I used - see the pictures!
- Fan Off: Experiment over.
So, it’s repeatedly dropping the temperature a full 4 degrees. Sounds pretty good, but remember this is air directly exiting the cooler.
I did another test 3 meters away, at a realistic sitting distance from the cooler. I didn’t take as many measurements this time, but after blasting away for 10 minutes the temperature 3 meters away dropped by 2 degrees. Not a huge amount, but remember that a regular fan doesn’t lower the temperature at all. (Note: I tried this on a different day which was hot but overcast and felt a little more humid - it only made a 1 degree drop at 3 meters away, it is important to use this on dry days.)
Although it cools, it probably increases the humidity, which could cancel out some of the benefit. I didn’t measure this.
It does cool, the air exiting the device is 4 degrees cooler, and 2 degrees cooler 3 meters away. Subjectively, I can definitely feel the difference compared to a fan, and am fairly happy with the purchase, especially given my lowish expectations.
Busuu noticed that I have a gmail address and presented a “Go to your email” link taking me straight to gmail. It’s a nice touch.
Pity about the dodgy CSS in the spam folder message though.
Wow, woke up this morning to see this at my readlang.com Google Analytics:
Wait a minute… just noticed the date :-)
These libraries share an ‘almost perfect’ quality of being compact, well designed, and I wouldn’t start a large project without them.
jQuery The DOM manipulation library.
Underscore.js Just a clean set of functions for manipulating Arrays, Objects and some other general things that feel like an extension of the language. The kind of stuff you need do all the time. It’s amazing how much more compact and readable your code gets once you get used to using functions like _.pluck(), _.filter(), _.defaults(), _.extend(), _.pick(), I could go on
Async.js Like underscore it’s very simple, but this one is focussed on cleaning up asynchronous program flow.
Backbone.js Compact library for models, views, syncing to a REST API, and routing. Stuff that almost any web page needs and done with a very lightweight implementation.
RequireJS Probably not as neat as the other four, but dependency management that works in the browser and nodejs, supports different directory structures, code which wasn’t written as an AMD module, and all sorts of other configurations is bound to get a little messy. (e.g currently the recommended way to use it with jQuery is to use the combined require-jquery.js file, hmmm) Anyway, once set up this handles everything elegantly making large projects managable, and the r.js optimiser makes deployment super simple.
It’s been close to a year now since I made the switch from desktop to web development, and there’s no turning back! Here’s some thoughts.
Why the switch?
It’s pretty clear that the vast majority of new application development is moving towards the web. The advantages are:
- Frictionless - No installation or updating required, just open the URL
- No Releases - All users are guaranteed to be using the latest version, since it’s running from your server
- Works Everywhere - The same code can run on Windows, Mac, Linux, Android, iOS, unreleased future OS, etc.
How’s it to work with?
Awesome. The modern browser is the most productive environment I’ve ever had to try out my ideas and it’s unlikely I’ll move back to desktop development.
- Prototyping - I can knock up a simple HTML page and put it live for anyone to use within minutes!
- Community - the online community of web developers is exploding and it’s really easy to find up-to-date help.
- Libraries - there are a ton of open source libraries which are making it easier to create larger and more complex projects.
I started a new position a few months ago. Its going OK but the boss is kind of an asshole.
He likes it when I get a new feature working quickly, but then expects that kind of progress all the time. Sure, he understands technical debt but still gets pissed off when he can’t see any visible progress he can play with. I try to explain that taking things slowly now will pay off in the long run but he’s not confident in whether the thing will even have a life in the long term. Last month, after a couple of weeks trying messing about with different ways to polish our photography website prototype he decided to drop everything and start work on a completely unrelated new site, just because he’s learning Spanish and thinks it might help him! How can I keep sane under these conditions!?
Independent software creator (working for myself)
I quit full time employment at Mendeley in Feb 2012 to move to Spain, learn web development, and work full time on my own projects. I’d actually quit the same job in the same company 2 years before, that time to make a film and travel the world. So it probably didn’t come as a complete shock to my colleagues.
The plan was set back temporarily when my manager asked if I’d be interested in working on the CSL Editor project as a freelancer.
Reasons it sucked:
- I was itching to start work on my projects
Reasons it was awesome:
- It was open source
- Plenty of users desperately wanted this feature, so it was very likely to actually get used
- It was a prototype, meaning that producing a working website with actual users was considered a bonus, not a requirement
- It would be good practise in web based technologies
- The extra income would give me a longer runway when it came time to start my own projects
- Many people were sceptical that a user friendly CSL Editor was feasible to make, it would be fun to prove them wrong!
Needless to say I accepted. I learnt web development as I went but only billed for time I felt productive, which meant occassionally working long hours. In the end we made a working editor I’m very proud of, it’s made editing CSL good enough for a far larger audience than before. It was definitely the right choice.