So what really is Google Wave 4

As of right now, I do not have a Google Wave invite, but the blog buzz is kinda interesting to see. The one thats prompting me to write this post is the one by Ryan Stewart titled “Google Wave pisses me off”. I commented on his post but it was such a long comment that it seemed to warrant a post.

I think Wave as a technology is different from Wave the product. Technically everything Wave does could be done with some XMPP servers powering a real time wiki or something like that. I think to Google’s credit, they applied the tech to an interesting problem. I am no Google fanboy and find most of their applications functional but not exciting (though I use Maps, GMail and GReader like crazy), but Wave excites me for a number of reasons.

It was a good observation by Google that a lot of communication we do on the web is fairly similar but fragmented. We have conventionally considered things like blog posts, twitter feeds, IMs, emails, collaborative document sharing to be different things, but are they really? Arent we all manipulating a basic content document. Can one interface serve all the needs?

Consider that you run a group (I manage a couple on OpenPyro and CIM Logbook and help out with Philadelphia Flex Dev Group and RefreshPhilly). If you want to announce the new event, do u post to the google group there and wait for replies, or post a message on the group blog and wait for comments, or tweet it and wait for @replies? Usually I do all of them and it seems really silly (more so since I saw the GWave demo). Its kind of interesting to see a tool that *could* change that.

Whether Google will really succeed remains to be seen. John Gruber phrased GWave as not only technically complex but also conceptually complex. Could I get my mom to use it, no way. But maybe it’ll take our generation before it becomes a new standard for web communication. In the meanwhile I anxiously wait for an invite :) .

Other links:
Why Google Wave is Conceptually Simple
What works: The web way vs. the wave way

[update] I have no more invites left, so please dont ask me for one :(

Thoughts on Commercial Ecosystem for the Flash Platform 1

This post is in response to Grant Skinners post on a thriving commercial ecosystem for the Flash Platform. For those who are just getting caught up with the conversation, it all began with Adobe labs releasing Squiggly, a spelling library for Flash apps which may compete directly with Grant’s own Spelling Plus Library which prompted quite a few people (including Grant himself) to talk about how Adobe may be competing with developers who build on their platform. This conversation isn’t new, quite a few people said the same thing when Adobe came out with Photoshop.com which competed with services like Picnik. As Adobe starts eying the services market with apps like Share, Buzzword, etc, developers may (justifiably) feel that it may be a matter of time before Adobe competes with them should their product seem lucrative. Considering they own the platform, ie the Flash Player, they may very well put features in that give them the advantage. For example, Adobe Connect already leverages the screen sharing capability that gets enabled on the Flash Player with the Connect plugin (yes a plugin for the browser plugin), something that non-adobe developers cannot access.

Can Adobe navigate these waters carefully enough to not alienate its developers remains to be seen, but this post is more regarding Grant’s follow up post on what Adobe can do to create a vibrant commercial ecosystem for the Flash Platform.

Actually there is a slight difference in the title of Grant’s post: “How Can Adobe Encourage a Commercial Ecosystem?” and what he writes about: “… lack the high-quality, well-supported, production-ready components that a commercial marketplace can provide.” While both are in similar vein, I feel a thriving commercial ecosystem on the Flash Platform doesnt have to be based around production ready components. There will be a few, like SPL that make a decent amount of money but those are going to be the exception and not the rule.

Adam Lehman, ColdFusion Product Manager made the point on one of the comments on that post which I most agree with: The Free Open Source marketplace which is pretty thriving on the Flash Platform does tend to kill the commercial component marketplace.

A Commercial Ecosystem on the Flash Platform is different from a commercial ecosystem on the Flash Platform based around commercial components. Grant’s own SPL is only viable till an open source version came out that may even be half as good as the SPL. The Flash developer community has become used to the Open Source way: find something out there that fills your need, if not and you find a fledgeling open source project that may have those ambitions, see if you can contribute, else build it yourself. My personal opinion is that the market for commercial components is pretty small no matter what Adobe does, and I dont think too many people miss it (except maybe a few folk coming from the Microsoft side of the world who are used to paying for components they use).

Flash Platform’s own commercial ecosystem would/should probably be around full products, embeddable widgets, AIR applications, Flash lite/mobile AIR apps etc. The best thing Adobe could do is keep powering the platform even more, add more capabilities to the runtimes, create distribution and monetization channels for the developers and make sure the developers dont feel threatened. And the developer services products on Adobe devnet seems to be a step in the right direction.

On Innovation in big companies 3

These notes are from BarcampPhilly ‘08 that were lost in the depths of my computer’s hard disk and I only just found again. At the event, a few of us from CIM held a round table discussion on innovation, especially developer led innovation in big companies. Here are the points that people mentioned:

  • Innovation only comes from free cycles, even the best ideas need time to be thought through
  • Leverage something thats existing rather than a brand new idea
  • Agile development can actually hurt innovation with too much transparency. Its hard to justify something that you may feel has a long term win
  • Technical managers should whet the ideas of their team members
  • Innovation comes from bottom almost never from top
  • Innovation = Risk
  • True story: At AOL, the AOL IM service was declared a risk
  • Constraints actually push innovation
  • Innovation wont happen without proper incentives/rewards.
  • How about cross team innovation. How do designers/developers collaborate to innovate?

So this has only taken almost a year to put up, with BarcampPhilly ‘09 coming up soon. Since then there has been a few opportunities within CIM to push bottom-up innovation, including a labweek for all of engineering.

Are you in/around Philadelphia and into Flash, Flex or AIR? You should be at FlashCamp! 0

I am pretty excited that Rob Hall has formally announced FlashCamp Philadelphia to be held on Nov 7th. The event promises be pretty fantastic with some of the biggest names in Flash and Flex circles coming in to participate. While the event promises to be technically very educational, I am personally excited to see how different companies within Philadelphia use Flash and Flex. The event will be held at Philadelphia University’s Kanbar Campus Center and is priced at $45 with early bird pricing of $35 (till Sept 30th or the first 75 tickets). Students tickets are priced at $22.

So if you are in the neighborhood and interested, check the event site and register here. You can also follow the event on Twitter at @flashcampphilly

See you there.

Migrating to Java 1.6 on a Mac (Warning: Flash CS3/Flex Builder/Eclipse wont work with it) 7

[Update: Changed the title, added "on a Mac" because everything mentioned here is applicable to that platform alone]

After not looking at it for 4 years, today I started playing with Java again for a new open source project called RedCar, a programmers text editor that is now being ported to SWT and JRuby. Mat is getting pretty involved in it and he got me curious about the project. However to actually get it to work I had to get the Java 1.6 code to compile on my Mac which was a little tricky. Here are some notes from that.

The JDK 1.6 was part of one of the recent Mac Software updates but what I found out was that the update does not actually change the default JDK/JRE for the system. The first thing I did was to change the symlinks for java and javac as mentioned on this post. That seemed to work and calling java – version and javac -version seemed to return the correct versions, but running the build file still did not work. After a few other attempts, including trying the Java Preferences Application without any luck, I finally found this post that basically talked about the CurrentJDK symlink that apparently my build.xml was using (and was still pointed to JDK 1.5). That seems to have worked.

One last thing. Apparently Eclipse (and Flex Builder which is built on top of Eclipse) doesnt work with Java 1.6 on a Mac. As this post suggests, you may have to make a change to the Info.plist for the application to make it run with Java 1.5.

[Update] The Flash CS3 IDE doesnt work with 1.6 as well, so I am reverting back to 1.5 for the time being.

Is CSS the best metaphor for styling for a UIToolkit? Maybe not 3

Writing your own UI Toolkit is, if nothing else, educational. As the OpenPyro framework continues to evolve, every time a new feature is added, I look around at prior art in the domain and evaluate the choices made by different frameworks which has been fascinating. Of course, the first framework I look at (since I have had most experience with that) has always been Flex (both Flex 3 and 4 separatly since they are so different), but often I do compare that with choices made by the IPhone’s UIKit, HTML/CSS and (rarely) Swing or any of the Java toolkits.

One of the features that I know I will need to add in a future version will be a simpler way to style/skin the controls. OpenPyro controls are based around composition so creating new UI assets and passing them in as skin elements is simple enough but there is always a need to do something simpler. A blue scrollbar for example shouldn’t need blue assets, more the ability to tell the scrollbar to draw itself with a stroke/fill of blue color.

Flex’s choice in this domain has been CSS and thats not surprising. A lot of the way Flex was developed was to enable it to be a gateway drug to ActionScript for developers from other technology domains and who doesn’t know CSS? Flex 3’s CSS capabilities were very basic and I keep reading how Flex 4’s CSS engine is so much more complete. And considering how much easier it is to create a Flex 3 theme compared to a Look and Feel in Swing, that seems to have been a decent choice. Someone recently asked when OpenPyro would support that functionality which led to this post.

I have often found writing CSS for Flex a chore, for most of the reasons I find writing CSS rules boring: complete loss of any logic system. Deep in ActionScript land while developing an application, switching to CSS is irritating. Suddenly I am in a file where I cannot really code any logic or rules. One of the first libraries of ActionScript I wrote over 3 years back had explicitly defined style objects. For example, ScrollBars would have a corresponding ScrollBarStyle class that listed all style properties. Being a pure AS class, I could also code logic in that, so conditionally apply style properties because I could inspect the properties of the UI element the style was being applied to. Heck, I could even get code hinting of relevant styles for a particular component.

What spurred this post today was seeing how the engineering team I work with at Comcast Interactive Media adopting the Less CSS engine. I have personally not worked with this yet but I might in a coming sprint. By accounts so far, its awesome to work with and I completely don’t doubt that. Most of the logic here seems something that you can write pretty easily in pure AS3 classes and pass them around as something equivalent to Flex/Javascript’s CSSStyleDeclaration object (link to JS CSSStyleDeclaration object)

Anyway, the point of this post was, while CSS may be the most familiar styling metaphor, there may be better ones. I hope OpenPyro can probably adopt something more powerful like lessCSS rather than pure CSS.

Update: Another flavor of a *better CSS* system: SASS

Update 2: Smashing Magazine has a pretty good writeup on CSS ideas and debates. More food for thought as I spec out a styling language for OpenPyro.