Archive for February, 2010

How I want Apple to talk

I’ve bought a lot of Apple products over the years, even though I’ve been consciously choosing other alternatives the past few. Granted I’ve got a horse in this race, but here’s how I would prefer Apple communicate:

  1. Get your CEO to either talk, or not. Put some skin in the game, put your rep on the line with attributed statements. The lack of confirmation, denial, or clarification from Apple PR about rumored quotes from The Great Man is telling.
  2. Can that “controlled leak” strategy. Stop relying on “inside sources” to float trial balloons like “Bing on iPhone”. Deal honestly with partners and the public.
  3. Let your employees speak. I’ve seen a few Apple staff bloggers and tweeters, but precious few, and even fewer of those speak about their work. When Adobe hosted the first iPhone DevCamp there were Apple employees who did not disclose their affiliation; when I attended MIX06 I saw Apple employees who said they worked for Yahoo! or other companies.
  4. Urge your external evangelists to speak with attribution, and put their own personal rep on the line. The sheer number of pro-Apple comments filed under untraceable names like “ken” or “steve” does not, in a post-EllieLight world, inspire confidence. Urge your fans to avoid acting as marketing interns would.
  5. Reduce the unprecedented contractual secrecy; let partners speak as freely as they speak of other initiatives in the industry.

Folks in Cupertino don’t have to listen to me. I’m just going on-the-record here with how I’d prefer they act. It’s their call what to do.

(PS: Add one more request, to people in Apple PR, please don’t send an email complaining about this post to Adobe PR. There’s a comment field here which you can use to communicate your concerns more effectively. If you’re a person who stands up for your beliefs, I’d like to learn more of what’s important to you, thanks.)

“…and, with 60% of precincts reporting….”

It’s been a long campaign, one that many thought impossible, but look what the last few days have brought:

  1. Almost the entire consumer-electronics manufacturing industry has implemented common presentation layers, across devices… you still have native apps when you want to go deep, but the HTML multi-runtime and Flash single-runtime environments are the cross-device ways to bring presentations, interactions, and communications to global audiences.
  2. We’re starting to see workflows which can span print, web, and devices both open and closed… the WIRED Tablet demo migrates existing Adobe design and production workflows into both cross-device AIR and device-specific native code. There is a practical path to delivery.
  3. We’ve also seen the emergence of cross-device app stores, where developers can meet their audiences regardless of which brand of device they prefer. Finally, an opening-up of the consumer marketplace.

The Open Screen Project seemed a near-impossible challenge two years ago… to not only engineer a consistent display engine across workstation, pocket screen and home screen, but also to garner the industry support to implement this at a deep level, integrated with the hardware. I have never seen a software initiative with such ambitious goals, such deep and widespread support from partners, all implementing new things in concert with each other, floating target synch’d to floating target. Player Engineering has done a gargantuan job — no other group understands the new class of devices as well as they. The business coordination has also been amazing. Someday someone will write a book…. 😉

To finally see the results on realworld devices is very gratifying… low-cost tools available to nearly anyone in the world, communicating as they wish with the rest of the world. It’s like the first woodblock printing of books, or the first radio signals… after this achievement, the world will simply be a much different place.

This month we’ve got proofs-of-concept. It will be a little while until 1.0 manufacturing ramps up, until audiences build, until those concepts are refined by the feedback of daily use. There are challenges ahead… we need to not only adapt our existing work for this new class of universal pocket device, but also to develop the new types of applications which will be most useful, once anyone’s screen can call up any information anywhere, can convey voice and video from friends anywhere, where the local environment itself can be augmented by your networked pocket device. I think the next few years will be exceptionally exciting. Getting past the hardest part, of building up to proof-of-concept, is what now lets us start designing for those futures.

It has been a long campaign. Polling may help show probabilities. And the last few weeks of many campaigns are filled with wild rumors and shockers. But election day is the marker which establishes the future. This week we finally saw realworld demos of technologies soon to be in mass production, across the entire consumer electronics industry. There’s lots more work left to do, but this fantastic campaign has finally won through. Presentations, interactions, and communications will never be the same again.

Your new job: What would you like that future to be like? You can start working on it, now…. 😉

Follow the money

Jeremy Allaire, at TechCrunch:

Gaining broad adoption for their runtime platforms translates into their ability to create massive derivative value through downstream products and services. For Apple, this is hardware and paid media (content and apps) sales. For Google, this is about creating massive reach for their advertising platforms and products. For Adobe, this about creating major new applications businesses based on their platform. For Microsoft, it is about driving unit sales of their core OS and business applications.

A silo… an eyeball tracker… a tool shop… a business office. Each with its own culture, each with its own goals. A company can reinvent itself, but if you want to guess what they’ll do next, it’s a good bet to just follow the money.

Simple things

Almost too much discussion recently… lengthy articles, details to debate, personas to ponder, errors to exasperate. Yesterday I walked along The Embarcadero, looking out over the San Francisco Bay. Made me zoom out, look at the bigger picture on this technology curve.

Woodblock prints in the 1400s… Linotype in the 1880s… digital in the 1980s… webpages more recently. Each enabled more people to communicate, more easily, more expressively.

For communications, very few owned signal towers and elevated roadways, until carrier pigeon, then telegraph, later telephone made communications more accessible. We started with one-way broadcast TV, later asynchronous videotape, now realtime peer-to-peer. Remote expressivity evolved from smoky symbols to text, to speech, to photos, to video.

The natural evolution is to become more diverse, more open, accessible to more people. Richer. More options.

Personal computer screens are only twenty years old. Their expressivity has become richer, their communications offer far more choices. From white-collar workstations, to blue-collar laptops, and now to the global denim pocket… different than fifteen years ago, or fifteen years from now.

A future using networked pocket devices will be a little bit richer than a hypertext viewer on a workstation.

How to design presentations and interactions for a world where your audience is using multiple devices throughout the day, where sometimes they may want short text, other times a passive movie, but at times heavy interaction? A world where your devices know where you are and can augment your environment… a world where your friends can “be” with you, no matter where they may be?

We simply don’t know much yet about optimal design of such interfaces. Using networked pocket devices will be much richer than surfing the web.

We heard DHTML will kill Flash, Ajax will kill Flash, “HML5” will kill Flash. That’s a very limiting way to look at things.

“We’ll do that, but better” seems narrower than “We’ll do something better”. Second-movers may need confrontation; first-movers need vision.

Take a walk along the water sometime. Look out, and think about the more important things you could do.

Close with two quotes… wanted to close with three, but couldn’t find something from Gregory Bateson about how the natural tendency of successful ecologies is towards increasing diversification over time, and how it’s less-successful ecologies which focus on killing off The Other… but couldn’t find it from Bateson, though, so there’s just two:

Robert Anton Wilson:

“Information is doubling faster all the time. It took from the time of Jesus to the time of Leonardo for one doubling of knowledge. The next doubling of knowledge was completed before the American Revolution, the next one by 1900, the next one by 1950, the next one by 1960. You see how it keeps moving faster? Now knowledge is doubling every eighteen months.

“With all these new bits, bytes, blips of information, no model can last long because models only include the bytes of information that were available when the model was made. As new bytes of information come in it gets harder and harder to adjust our old models to include the new blips and beeps of information, so we’ve got to make new models.”

JBS Haldane:

“My own suspicion is that the universe is not only queerer than we suppose, but queerer than we can suppose.”

[Comments policy: A masked person with a reasonable question is okay. A real person with a dumb question is okay. A masked person making dumb assertions, not.]

Troubleshooting Player stability and performance

Trying to improve Adobe Flash Player in your browser? These tips may help. Nothing startling here, just a fast way of diagnosing things, proven in thousands of webforum postings…. 😉


If you can make the system crash on demand, that’s much easier to fix than if it crashes only intermittently, unpredictably.

For instance, if you can never successfully view any SWF, or if it used to work fine but suddenly doesn’t, or if the installer didn’t seem to take, then try running the uninstaller to clear out any damaged packages on your system, then re-install afresh. This gets your Player code back to a known condition. If this was the cause, you’ll immediately know, because you’ll see Flash content again.

If a clean-reinstall still doesn’t let you view anything, then you’ll immediately know the Player code wasn’t the difference from similar computers, and that you’ll need to dig deeper into the system and its configuration.

Either way, a crash-on-demand situation is straightforward to diagnose. Just keep isolating one element at a time, until you can see where the core of the problem is. When you fix it, you’ll immediately know.

It’s harder to diagnose an intermittent failure, where things work well for awhile before crashing. Here are some fast tests to zoom in on the difference-that-makes-a-difference, the critical element required to make the system fail:

All pages, or just some pages? Can you view the Player Test Page normally? If it’s only a particular page which crashes the system, clear the browser cache of potential damaged assets. If it’s only a particular website which refuses to show its content, check its user-agent detection, its visitor requirements. If nothing works, that’s different than if only some things work… check the content to find the key factor.

All sessions, or just some sessions? It’s amazing how many problems are solved by just restarting the browser, or restarting the operating system. A fresh session may not solve the problem, but it’s a quick test to prove the system didn’t fall into a bad state.

All tasks, or just some tasks? If a failure only occurs playing an action game while watching a movie and having two dozen browser-tabs open, then that’s tip that the requested tasks are overwhelming the system’s capabilities. Graceful degradation is the desirable goal which is not always achieved, when the system is asked to do too much.

All browsers, or just some browsers? Microsoft, Mozilla, Opera Google Apple… each wants you to view The Web through their own brand of web-browser. Even the same browser brand can act differently loaded with extensions than when used in its original state. Take advantage of this variety — if the problem doesn’t appear in a different browser, you’ve quickly identified a cofactor.

All machines, or just some machines? Sometimes it helps to see how a similar system behaves, viewing the same webpage, the same browser. Ask a friend or a webforum if they can view the content normally in a similar configuration. If everybody else has the same problem, then you know it’s not just you!

These tests won’t always identify the problem, but are the fastest way to clear away large sets of potential causes. See the Player Support area for more.


If it’s hard to identify a crash, and harder to identify an intermittent crash, then it’s much much much much harder to identify the true factors responsible for performance differences…. 😉

The first step is to get an idea of your system’s baseline performance, minimizing all other competing processes, removing all simultaneous distractions. Restart the system, use a fresh browser session and no background tabs, turn off any background notification systems or other tasks. See what the system can actually do.

If performance in a clean state is better than performance in the usual state, then that tells you to examine the effect of the other processes. If they’re both bad, then you’d know to compare the content to the system directly, and won’t have to worry about interference from other apps.

If you’re trying to improve baseline performance, vary the hosting software, vary the content, vary your settings:

  • Browsers differ in processing cycles they permit to plugins, and also interrupt those cycles under different conditions. Desktop applications (AIR, Projectors) are typically reported to run with less interference, faster. These differences are easier to see in a fresh session, without competing background processes. Vary the application which calls Adobe Flash Player to test whether this is the constraint.
  • Believe it or not, there’s some content out there which doesn’t quite follow best-practices. For example, check out these thousands of videos whose HTML requests wmode=transparent… piping the Player’s output through the browser for superfluous compositing will always be slower than writing directly to the screen, regardless of operating system. Make sure you’re not trying to optimize some content which has built-in problems. See if changing the content (both SWF and HTML) changes the performance.
  • Check your options, too… Adobe Flash Player is permitted to use hardware acceleration in some environments, reducing the load on the Central Processing Unit. Do a context-click on any SWF to call up its “Settings” mini-dialog to see what options may be available. Check your system’s display options, and whether your browser lets plugins use these.

But if your baseline performance is much better than your usual performance, then you’ve got to figure out how to prevent things from gradually going slow. Here are some of the top factors:

  • Background SWF: If you’ve got two dozen pages open, and each page has five SWFs, each trying to run at twenty frames a second, that’s 2400 frame events you’ve theoretically trying to execute each second. Different browsers choke off background pages in different ways, but they’re constrained by public desire to run video or audio in a background tab. If your performance bogs down midway through a session, cast a glance at how many SWF you’re running in the background, and whether reducing this helps performance. (The upcoming generation of Player 10.1 will help too.)
  • Background AJAX: This is an increasing problem, as more webpages include runtime elements. It’s harder to control this than SWF. Overall browser response is often the tipoff here… slow to switch tabs, slow to type, beachballs as the Macintosh reassigns memory. If you’re trying to regain baseline performance, cast a keen eye on what other tasks the browser is performing, perhaps without your knowledge. (And for goshsakes, be careful with those “HTML5” demo pages!)
  • Too many things on each page: If your system slows down after too many webpages, try reducing the number of things each page does. Flash blockers, Ad blockers, JavaScript blockers, third-party monitors — all are great tools in a world where webpages have ballooned up past a hundred HTTP requests, invoking scripts from half-a-dozen domains. If the content is overwhelming the system, you can put those pages on a diet.
  • Widgets, toolbars, messaging systems, taskbar alerts, background updates, music players, typing utilities… there are many additions which can affect system performance. This is why that initial test in a clean condition is so important… it lets you compare your system’s true capabilities.

Performance is never good enough, but if you’re worried you’re not getting all you’re entitled to, the above tests are some of the faster ways to either fix it or identify it. If there’s even one person who can get good performance out of your general type of configuration, then you should expect to get that same good performance too.

(Sidenote on CPU % : Don’t stress the numbers much… they mean different things across operating systems, and having extra CPU cycles in the bank doesn’t offer much benefit. Keep an eye on whether the chip is running hot for the case, however… the fans mean more than the meters. Same with OS crash reports which mention the Player, which often happens when the browser fails to handle a plugin memory request. The numbers mean less than the behavior.)

Tue Feb 2: This is a first draft, and I plan on editing-in-public over the next few days. Comments probably won’t be published (considering history and current weather 😉 but if you’ve got a user-oriented tip I’ll definitely read it, thanks.

Adobe authoring for “HTML5”

Jeffrey Zeldman, today: “Adobe has a brief but golden opportunity to create the tools with which rich HTML5 content is created. Let’s see if they figure that out.”

Best resources:

  • Adobe CEO Shantanu Narayen, June 2009, when asked whether Adobe Creative Suite will support “HTML5” features, replied that Adobe is “clearly supportive in terms of making sure as HTML 5 is evolving that we will support it in our web authoring tools”.
  • Update: Adobe CTO Kevin Lynch, on Feb 2: “Adobe supports HTML and its evolution and we look forward to adding more capabilities to our software around HTML as it evolves.” (However: “If HTML could reliably do everything Flash does that would certainly save us a lot of effort, but that does not appear to be coming to pass.”)
  • Adobe Creative Suite already produces FXG:

    “FXG 2.0 describes an XML-based graphics interchange format for the Flash Platform. FXG contains high-level graphical and text primitives that can be used to create, group, transform and visually modify basic vector and bitmap shapes. The FXG rendering model follows very closely the Flash Player 10 rendering model and exposes all graphics capabilities of the Flash platform as well as offering expandable support to accommodate future capabilities of the Flash Player. The specification below dives into the technical details governing every element of FXG 2.0….”

    More on potential applications from John NackMark Anders has background on the application goals… AdobeTV has tons of perspective and tutorials. Kevin Suttle described a smoke demo of potential tool integration, but even today you can use FXG for CANVAS and SVG. It’s a mystery why this has been ignored.

  • The best resource is likely… Creative Suite 4! Every tool already produces HTML’s various files. Even has VIDEO support, at least of the H.264 persuasion. You know down deep that Adobe tooling is already a key component in HTML workflows, and there’s no reason by this point for that to change. Your challenge is more to clearly identify what specific changes you need in your own overall work… that’s easier for us to target than just a broad “create the tools with which rich HTML5 content is created”.

Future versions of Adobe Creative Suite? It’s a big software effort, often on a two-year cycle. I know they’re adding “HTML5” features for the next big release, but we don’t yet even know the runtime engines which will render those new HTML tags — it’s hard to get extensive. As John Nack said the other day, “Adobe makes nearly all its money selling authoring tools that target great runtimes.” Tooling needs to follow implementations… once consumers possess a capability, then content creators can begin to rely upon it. It’d be hard to satisfy all expectations at this point.

Ditching SWF and turning the Flash Professional authoring tool into HTML? Why? What would you do for a movie clip? The application and its interface are already designed against a set of capabilities… you’d have to yank features out and retool the UI after suddenly changing the foundation. A rousing slogan, but think it through.

A short and sad final note, after reading tons of debate the past few days: When you say other things shouldn’t exist — when you seek to kill others, rather than discover what you yourself can be — the rest of us have problems finding ways to tolerate your intolerance. Please, let yourself open up.