Followup To The Myth Of Cocoa Apps

August 29th, 2007

A while back I took Paul Stamatiou (and by proxy, VMWare) to task about their claim that Cocoa makes them so much more efficient. My take was that it was a Cocoa vs Carbon argument and VMWare employees came rushing to explain that it was actually a Cocoa vs Qt argument. Kudos to them for being in touch enough to join the debate, I had to log a support case with Parallels to get their side. Unfortunately, the point stands that users shouldn't care what framework an application is used in - I certainly had no idea Parallels used Qt.

I'm late in posting the follow up but I thought it was worth providing a quick follow up. Here's what Matt Ginzton had to say in an email to me (see the comments from the previous post for me detail):

Just saw your "myth of cocoa apps" post. While your overriding argument (Cocoa doesn't automatically make you awesome) is of course correct, building this argument around VMware Fusion is somewhat off topic — the reason we draw any attention to our Cocoaness is to make the point that we're using
native Mac technologies, and not at all a point about *which* native Mac technology.

Boiled down: It's a point about Cocoa vs Qt, not Cocoa vs Carbon.

Ben Gertzfield (who by the way is the Fusion lead developer) jumped in at comment 6 to point this out. As I understand it, Parallels' use of Qt is actually a significant resource drain (as you correctly say in comment 10, this doesn't relate to the core virtualization itself, but beyond the core virtualization these apps do put a lot of Mac OS UI onscreen, especially in Unity/Coherence modes, and I believe your conclusion in comment 10 — "I doubt that Qt is really making that much difference to Parallels because of precisely that but I could be wrong" — is indeed incorrect).

And beyond the resource drain issues, it's also hard to get truly native look and feel from a crossplatform UI tookit.

And when I contacted Parallels, they had this to say (including my original email):

The recent VMWare press releases touted their Fusion product as being developed from the ground up using Mac OS X native technologies and a
number of VMWare employees have claimed that Parallel's use of Qt adds a significant perforance hit, particularly in Coherence mode (in the comments of http://www.symphonious.net/2007/08/07/the-myth-of-cocoa-apps/).

This claim seems suspect given the very small amount of UI components that are displayed in a virtualization engine - do you have any benchmarks or an official response to these claims?

Regards,

Adrian Sutton

Hello Adrian,

Actually, the opposite is true! We use QT and it makes highly optimized native Carbon calls for guest screen redrawing in both Coherence and OS Window modes and we use QT only for non time-critical GUI operations– like dialog boxes. In several independent tests performed by our users, and Fusion users, its been found and widely discussed that our overall GUI performance is faster than VMware Fusion's, just take a look at what users say on video performance on ours and VMware forums.


Best regards,
Robert

My interpretation is that VMWare are just guessing at the performance characteristics of their competitor and letting their marketing department mislead potential customers based on that. That said, Parallels really need to learn about blog search engines and stay on top of these conversations. It's also a shame that they couldn't provide even a vague reference to actual profiling data when asked for it - how hard would it be for an engineer to look at the latest profile data and give a rough guide to how much time is actually spent in the QT libraries. That data would have proven VMWare's claims wrong outright, instead it's still up in the air as to whose right. My impression is that VMWare is less likely to understand the performance characteristics of Parallels than Parallels themselves.

As for looking more Mac like - the VMWare toolbar is nice and Cocoa like whereas the Parallels one is on the side and very much a custom job, but Parallels takes up less space and does the job just as well. Perhaps I'd care more if it weren't for the fact that I never run in Windowed mode so I almost never see it anyway.

Unless someone can produce solid figures I'm going to call it a draw. VMWare are more involved in the discussion and seem to care a lot more about their products so they're likely to provide better customer service, but I wouldn't trust their marketing claims without verifying them for myself. I stand by my original claim that the framework shouldn't matter and in this case I'm more convinced than ever that it doesn't.

Structure In An Unstructured World

August 28th, 2007

There's a constant argument over whether data should be structured or unstructured in content management and knowledge management systems. The key advantage of structured data is that it's easier to process and manage - the system can manipulate and report on the data far more accurately. The downside is that it's more difficult and frustrating for users to be limited to the specified structure so less data tends to get captured and it can be more difficult to get adoption.

So how do you get the best of both worlds? There's been a number of approaches taken from Google refining search techniques for unstructured data and a number of other systems attempting to parse natural language to identify dates, appointments and other items. Meanwhile the structured crowd invest in ways to improve user interfaces and define more flexible types of structures.

I think the middle ground looks something like microformats, little bits of structure within a generally unstructured system. The downfall of microformats is that they tend to be way too complex to apply but the concept is sound. There needs to be a focus on making it easy and natural for users to create the right structure. With tool support and appropriate feedback to users the experience can be really smooth while still capturing the vital information. We've been playing around with ways to make creating links in our internal wiki easier and I think it's a reasonably good start towards finding the magical balance. The wiki uses HTML and a WYSIWYG editor to avoid users having to think about markup but having to open up the hyperlink dialog just to link to another page gets in the way on a wiki, so we've preserved the ability to use wiki markup and put the page name in square brackets. This is good, but looks ugly and doesn't provide feedback on whether or not the user got the pattern right.

The second iteration added a plugin to the editor that automatically identified correctly formatted wiki links and converted them to real hyperlinks, so when the user hits ']', the link switches over giving them clear indication that they got the pattern right and showing them the results. The main problem at the moment is that if they enter a valid pattern that doesn't do what they want (say they get the display text and the link target mixed up), it's not simple enough to correct the mistake because what they've typed has now completely changed. Undo works but the backspace key doesn't yet and it probably should. We also need to identify what happens when they edit the text of the link after it has been converted - in many cases they intend the link target to change as well, but not always.

You can imagine this kind of system being extended to task lists and appointments as well - when the system recognizes a date it should mark it appropriate so the user can tell they got the format right and what the results are. For somethings it may be better to use a standard convention like the square brackets - for instance, tasks to be completed might start with an exclamation mark. Simple to type and if appropriate feedback is given simple to use.

The key element is providing clear feedback right inline with the text. Most of the existing systems I've seen provide a plain text area and build up a list of things it recognized over to the side. The problem is that the user is focussing on the text they're writing and not on the list of items the system is building up so they have to keep stopping and looking over to check that it all worked correctly.

There's a lot of really cool stuff to come out of this area in the future and we're seeing the start of it in existing systems but I suspect there's a whole new level to be reached as systems begin to act more and more as intelligent agents that assist the user in getting their work done. The next major challenge that I see is to get the feedback system right so it is clear but not intrusive.

Redefining My Role

August 27th, 2007

A while back, Ephox restructured product management to better focus on developing new products and directions. As with most things, it rarely turns out the way you originally plan and we've morphed the team into something quite different to what we originally envisioned. It's always good to adapt roles to best fit people's talents, but while it's happening it can make it difficult to know that you're doing a good job or even the right job. We've reached the point now where what people's roles are stable but involve a lot of "yeah I really should do more of that" kind of comments. Normally that means the things you're not doing are either outside your comfort zone or outside of your interest - in my case mostly both.

Specifically, I'd been doing a lot of short term product planning, focussing product visions and demanding that we go in one direction at least long enough to see how it works out instead of lurching at every shiny market opportunity we see presented and doing a whole lot of technical research. However, I hadn't been doing any real work on developing long term business plans and creating the actual marketing collateral and detailed business cases. So we've redefined the roles around what we've actually been doing and cutting out most of the things that we haven't gotten around to.

I spent some time today drafting my new position description based on the discussions we've had and it feels really good to have a concrete set of things that I know I'm responsible for. There will probably be a few changes before it's finalized but nothing too major. The only major missing component at the moment is the actual job title - I'm somewhere between a number of classical job descriptions so it's hard to find a title that explains what I do properly.

Essentially I'm responsible for:

  • Acting as the XP on-site client for our new product (stay tuned). I'll still be involved in the longer term planning and business case development for the new product but not personally responsible for it which suits my talents a lot better.
  • Research and development of that new product. There's a lot of research and experimentation to be done as well as the normal development roles so I'll focus in on that.
  • Community building and evangelism of the solutions Ephox provides. This includes the work I've been doing around LiveWorks! and encouraging blogging for a while now as well as expanding that focus to try and spread "conversational marketing" for want of a better term company wide without actually doing it all myself.

So far the suggestions for titles are:

  • Technical Evangelist (despite previous jabs at Robert Scoble)
  • Project Manager - I'd rather leave resource management and all the boring stuff this implies to our engineering manager.
  • The Great Overseer
  • Mr Awesome (ok, these two were me just wanting to get people to comment…)
  • Chief of Confusion
  • Director of Employee relations and cool stuff
  • Chief Technical Monkey - Ephox has a thing for Monkeys…

We'll see what gets settled on….

Tomcat Startup Issues

August 21st, 2007

I was so close to having everything working… EC2, S3, automatically pulling down the latest build and deploying it, Tomcat 5.5 with the native APR libraries, SSL support and using iptables to forward ports 80 and 443 directly over to Tomcat. Everything ready to go. Except Tomcat isn't so keen on starting.

It usually starts, though it can take over half an hour to do so and on a couple of occasions it's just flat out sat there and done nothing for multiple hours on end. At startup it outputs the log message:

Aug 20, 2007 3:08:56 PM org.apache.coyote.http11.Http11AprProtocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080

and then nothing until all of a sudden 5-45 minutes later it suddenly comes back to life, finishes starting up and works perfectly. There's no CPU usage while it's out, it's just sitting there waiting for something to happen (network lookup??).

Sigh. I'm sure the world is out to get me….

Sessions As Password Equivalents

August 20th, 2007

If you use sessions to track logins the session key acts as a password equivalent while the session is active. So if anyone can intercept that session key they can masquerade as the logged in user without knowing their actual password. Hence, sessions time out to improve security by giving only a small window that the session key can be used in.  This of course drives users crazy because they have to login again and again.

It occurs to me though, that if you're using SSL and using cookies for the session key - it should be just as secure as basic authentication over SSL. The big exception is shared computers if the cookie lasts longer than a browser session. To handle shared computers you'd have a log out option and by default set the cookie to last only the length of the browser session.

Am I missing something or is it reasonable to have sessions that don't time out if you know that the connection is over SSL and it's not a shared computer? To avoid creating a session leak effect you may still want to time out sessions if they're unused for a week or a month or something and obviously memory management comes in but that should be fairly manageable.

Is this done? Is it reasonable? What kind of security risks does it create? There's certainly a lot of benefit to users…