« May 2007 | Main | July 2007 »

June 15, 2007

Macbook prices vs PC prices

First, let me just say, in case you are new here, that my current main work computer is a Macbook Pro 17", 1st generation.

Today I came across a comparison between a MacBook Pro 17" and a Asus laptop, with a big title like "I'll prove to you that MacBook Pro cost $500 more than PC".

To be blunt: who the fuck cares? You should buy the best tool for the job you are planning on doing. An electrical saw from Black & Decker is probably a lot cooler to own than a classic carpenter saw, until you need it in a middle of a forrest, with (shame on nature) no electrical plugs.

The second thing that pisses me off, is that this comparisons will only focus on features and hardware. What about subjective features like operating system and derived productivity of the combo hardware-software? Oh, yes, of course, those are hard things to quantify, given that they are subjective, but you cannot make a intelligent decision without thinking about that.

Really, I wish there was some sort of kill-file for Web stuff...

June 12, 2007

Safari 3 speed

As with all Steve jobs keynotes, everything is great, all Apple apps are the best of the world.

The part about Safari 3 was no exception, and he mentioned that Safari is now the speed champion.

As always, speed is subjective and some times difficult to test, but I remembered the ExtJs library speed tests for DOM matching.

The cool part of these tests is that they do about 28 tests with several different JS libraries. Its mostly a test to show off ExtJs DomQuery speed, but it might helps us to test the speed assertion. And best of all, anybody can do it.

So, open up the three browsers (I used Safari 3 beta, Firefox 2.0.0.4, and Opera 9.21, all Universal binaries running on my Macbook pro laptop) and on each one open up the test page. I switched to 10 seconds timeout on all three browsers just in case.

Then start the test, one browser at a time, and compare the results. I used the DomQuery column only, too many numbers.

The result? Safari was the fastest but results where not uniformly faster. Some tests he was 3 or 4 times faster. Most of the times it was only slightly and in one test (and one test only) Opera was the faster browser. On all tests, Safari was faster than Firefox.

So it looks good. But don't take my word for it. Do it yourself.

One last thing: I'm happy with Safari for the vast majority of my browsing needs. Its fast and all the pages I visit on a regular basis work with it. For web development, you can't beat the Firefox+Firebug combination.

WWDC 07: Safari

To me the most unexpected news out of WWDC 07 was Safari available on Windows.

At first, all I could think was: WTF?? Why waste precious engineering resources on this??

But after the announcement of the "iPhone SDK", it all makes sense: they need a Webkit-capable browser available on all platforms to make it easier to test future "iPhone Apps".

That small detail aside, Safari3 is working ok for me with the latest Mac OS X 10.4.9. Its very fast, and for now stable.

It has some goodies like SVG support that are nice (you can play Tetris, or see several other demos) and the Safari debug palette is now built-in (right-click, and select "Inspect element..."). Its not something new, everybody who uses Firebug knows about this, but its nice to see it built-in into Safari.

For now, it will be my preferred browser, but I keep the uninstaller handy. We never know.

June 01, 2007

Google Gear uses

As I said on my previous post, I'm looking over the documentation of the Google Gears (GG) stuff. I read it all yesterday at night, and though about it.

The things I like about GG are pretty simple.

The first one is that you can write your applications to take advantage of it if present, but work the same if not. Its not a all-or-nothing approach, its more of a progressive enhancement thing. It does require discipline, and I would imagine that projects like Jamal or TrimJunction (you can find more here) will soon start appearing everywhere.

The second is latency. If I can cache rarely changed stuff on the client, like list of friends in a social networking site, things that I use all the time in my UI, the latency of the interface is much lower, and therefore the experience much better.

The third is a very decent system for parallel programming on the web. The Erlang fans out there will like the design "share nothing, message passing" system behind the WorkerPool stuff in GG. I do plan to play with this a lot.

Finally, as a co-owner and developer of a e-commerce web site, any processing we can push to the client means less servers we need do deploy centrally and that means less capital investment. And that is definitively a good thing.

There are a couple of things I want to try out in the next few days.

The first one is to write a todo list manager. Its the most simple system you can build and it will allow me to use most of GG functions. the system will seamless synchronize todo items between a Catalyst-powered web app and the offline stuff in GG.

The second one is to try and run a JsJaC instance inside a WorkerPool. This would allow me to run a asynchronous XMPP client inside any web application with ease, making it possible to use the XMPP as push-style communication channel between back-end applications and front-end UI.

This last one is not a end in itself. JsJaC is using polling to connect to a XMPP server. But it allows me to think about a future XMPP DOM standard, available in XMPP clients where we could drop small applications, exchangeable between clients.

But that is last bit is for another brain dump in the near future. :)

Gear up

Yesterday, while looking over to the Google Gears (GG) stuff, I talked with Celso about this and that I was pretty excited with the possibilities it provides. He was not impressed and later he told us why.

I'm going to pick on his arguments for a while and then, in a followin post, tell you why I like Google Gears and where I think I can use it today. I don't think it is the 8th wonder of the world, but I think it is a very good step in a good direction. Also note that I'm a desktop app fan, and all this hippie-ajax-the-web-as-your-desktop-thing is not the way I see things evolving. I think I wrote something about this in the past but basically, a Web2.0 world feels like the glorious years of the mainframe and the time sharing days. But as always, the truth is probably in the middle ground between a Web2.0 app and a desktop app, so any move to push web apps more to the desktop is a good move.

Celso starts of with the fact that upcoming browsers like FF3 are already talking about offline storage and support for offline apps. I haven't looked at the specs to compare with GG, but even if they are as rich as GG is now (the SQL database and the worker pool stuff is really very useful), there is no reason not to use the GG API as a front-end to whatever the browser supports. This would mean that I can start now, with some hope of having even more support and features in the future. Having GG now also force browser vendors to have a goal: if FF3 appears without features as GG has, less richer, it might seem as a failure (this assumes of course that the GG feature set right now is a good one, still to be proven in the field).

Starting now is important. Sync between data-stores can become pretty hard pretty fast, so we need to experiment, and the sooner the better.

The Zimbra remark is also interesting. Zimbra showed of their Desktop client at eTech. Notice the name: Zimbra Dekstop. Why did they called that? Because you need to download and install a desktop client. It is in fact a small server running on your local PC that you browser will use while in offline mode. It is a perfectly acceptable solution, and extremely powerful, just not a direct comparison with GG. Or then again, it might be, if you think that GG just moved the Zimbra Desktop server into the browser.

The advantage in my mind of GG over what Zimbra has done, is that we now have a solution that everybody can use, and like Flash, it's easier to find it installed on users PCs than something that only one app will use, like the Zimbra server.

But this brings us the open questions Celso has.

The first one is pretty much answered above. When FF3 appears with offline storage, I suppose one of two things will happen. If the FF3 system is as powerful as GG, then the most likely is that GG will just defer to it, but keep the API compatible. If FF3 is not as powerful as GG, then I believe that it might not have as much success as they hope. Its very difficult to go back to a inferior product.

There are two things that make me guess that "it will work out fine". First Google works very closely with the FF team, so it might just be possible that the FF team just uses the GG stuff, dropping the google prefix. Or the FF3 distribution just includes the GG plugin. Both are perfectly possible. Only time will tell.

Right now, though, FF3 offline stuff (I could only find a wiki entry of the BarCamp in New Zeland, a FF3 Gecko Feature list, and a blog post by John Resig) looks pretty simple. I think you can compare it to the basic ResourceStore class. The stuff in GG, specially the Database API is much much more powerful. But both products are Alpha or Beta, so too soon to tell.

The second question is why will someone download and install this. I suppose the same could have been said about Flash some years back, and the answer could be similar: because hyped-up sites might start to use it and the cool kids will have it. Basic primitive human behaviour: "That looks cool, why don't I have that?". I do think Google has a big edge over Adobe and Flash in this case though, that might make the adoption of this pretty fast. There at least two things in Google favor.

First, Google as a lot of ways to push this onto users systems: you might just bundle it with any of Google software like the Google toolbar or any other of the software they distribute. Its easy for Google to just slip this into their new Google Updater as an option.

The other one is that Google Apps have a lot of visibility: if you add support for GMail, Maps, Documents, or Calendar in a way that you can have some of your data offline, users will want to install it to have that support, and once installed, everybody can use.

The third question its pretty much answered above, but the part about other browsers adopt the same API, well... I would love to have that, and it might just happen if the HTML5 proposal sees the light of day. At least they do have a sort of key/value offline storage system and a client-side database storage based on SQL (for kicks, I quickly skimmed over it, and a lot of the concepts are similar to GG and would map pretty well).

So overall, I think that GG is not something terrible new, of course, but it does a lot of things better than before, and it has a chance of being much more widely deployed (IMHO) than the previous alternatives. Also, upcoming support inside the browser for this kind of stuff will only help GG.