New Adobe toys this week: Flash Builder 4, Flex 4 SDK, Flash Catalyst, BrowserLab

An exciting week for Flash Platform Developers as Adobe released a number of Beta versions on the Adobe Labs site. I have just started playing with a couple of them but its definitely worth the shout out.

Flash Builder 4:
Flash Builder 4 is the next version of the Eclipse based IDE formerly known as Flex Builder. The renaming is more than just a re-branding exercise, as FB4 seems to have added features that make it a lot easier to work with other frameworks besides Flex. This is really exciting for me personally as this means it will be a lot easier to work with OpenPyro in FB4. In fact Greg even created a simple project with AS3 only classes that could be exposed as MXML tags. The resultant file size is minute.

Besides that, the my favorite extension to the IDE has been the inclusion of FlexUnit, the unit testing framework for Flex. While FlexUnit itself has been available as a library for a while, inclusion into the IDE will make unit testing a lot easier and hopefully a lot more prevalent.

There is also a network monitor built right into the IDE. While I have used Firebug with success for Flash apps on the web, doing the same for AIR apps has been a challenge (though Charles has been really good, though a requires a bit of a context-switch when coding). The network monitor is going to make a lot of lives a lot easier.

Integration of ASDocs is another great feature, as well as code generation for integrating with serverside code.

[Update] There are also a bunch of improvements to the Debugger on FB4 which you can read more about here.

Flash Catalyst:
Flash Catalyst is a new tool that Adobe is releasing with the promise of truthfully translating designer interactions to stub code that a developer can add functionality to. Basically Catalyst can import any Photoshop, Fireworks or Illustration file, and then can allow the design to assign behaviors to the different parts. For example the designer can select four graphics and mark tham as the four parts of a Scrollbar. The interactions are written out as Flex4 tags that can be compiled into a swf with complete interactivity.

The video below shows how Catalyst can be used:

http://tv.adobe.com/Embed.swf

Flex 4:
The two releases of course directly depend on the Flex 4 SDK, Adobe’s Open Source framework for building Rich Internet Applications. The new release of the SDK introduces a new component architecture called Spark. The core difference between the Spark and the earlier Halo architecture is the favor of the composition as a design pattern over inheritance. What this translates into in everyday development is a leap in productivity as complex UI components can be created a lot easier than before and not requiring things to be subclassed as often. This also makes skinning a lot easier, since all the skin parts can be swapped pretty easily. Another new thing in Flex 4 is the introduction of a new graphics interchange format called FXG, an xml format for graphics that can be understood even by the CS4 products like Photoshop and Fireworks. Matt Chotin’s post on changes in Flex is a lot more comprehensive.

BrowserLab
BrowserLab, a project formerly known as Meer Meer, is a new service being released by Adobe that targets HTML developers. BrowserLab allows developers to preview any URL as rendered by different browsers. The service is in limited beta, but I was able to get an account before it was capped, and I can tell you its pretty impressive. It would be interesting to see how Adobe can integrate this with Dreamweaver, although its supposed to remain open to mortals like myself who still prefer TextMate 😉

So a lot of toys on the labs site. Take em out for a spin and let me know what you think 🙂

So I am co-manager of the Philadelphia Flex User Group

…or rather as of a month or so ago. Still it felt worthy of a blogpost if nothing else to mark this date (/month) for posterity. I will be working with Derek Wischusen who has been doing an amazing job so far organizing local meetups. If you are in Philadelphia and interested in Flex, I would love to get to know you better and welcome your suggestions on making the group truly kick@$$.

The timing has been perfect, with Flex 4 on the horizon that seems really cool. In fact on the 24th of June, Adam Lehman from Adobe will be coming down to talk about Flex 4 and Coldfusion NEXT (details for the event can be found at the Philadelphia Flash Platform Group page on Adobe User Groups portal. Going forward we are hoping to coordinate even more events with the Philadelphia Flash Platform Adobe User Group as Flash and Flex come together.

If you have any suggestions on content, agendas and such for group activities, do join the conversation on our Google group. And if you are a local Flash or Flex developer who’s on Twitter, do drop me a comment here with your Twitter id (mine is @arpit).

My experience with Git and why I think Open Source projects should be released on Git

Over the last couple of years I have released a bunch of libraries under Open Source licenses, usually on Google code. However the my last project, OpenPyro was a little different and was released on GitHub with Git as the Version Control System. I write this as a developer with more experience and comfort using Subversion and yet encourage you to release your open source projects on Git.

So what is Git? The one line description (from Wikipedia) is “Git is a distributed version control system, born with the fundamental mechanisms making branching and merging really easy.” A detailed description of Git is beyond this post but the Wikipedia page is a good place to start.

Releasing OpenPyro on Git was not an easy decision to make. The project represents a lot of work on my part and I am nowhere near as comfortable yet with Git as I was with SVN. I definitely did not want an unfamiliar Version Control System deter possible contributors to the project. However the fundamental philosophy of Git was what finally won me over.

The Git workflow is kind of new (at least to me). A developer working on a project begins by forking the core repository. He can commit code to his fork at his whim and needs to keep merging from the original branch to get the latest updates from there. Its up to him to merge changes from the core repository as they happen. People working on different forks merge changes from each other as they see fit (if you are working in a non-distributed environment, you can all merge off of a source of truth repo)

Forking basically allows the project to achieve velocities greater than the initiator of the project. If tomorrow I stop working on OpenPyro, there could be a fork that has developers more committed than I could be. Why should OpenPyro stall just cause the original developer may have.

As of right now OpenPyro has been forked a couple of times. The first fork was for a Haxe port and this was before OpenPyro was on GitHub so it wont show up on the network graph on Github. The second fork was by Kelvin Luck who fixed a few bugs on his branch and is adding new functionality there. However he didnt have to wait for me to commit his changes into OpenPyro head. I merged his changes into the OpenPyro head much later. And now the OpenPyro history shows his additions to the project as official commits.

The diagram below shows the state of the repository as it got branched and merged at different times.

OpenPyro Git Graph

This kind of collaboration wasnt possible with SVN, something I realized while working on LogBook. I would get patches for bugs on the project, sometimes feature updates I didn’t much care about. But it was up to me to add those in, and sometimes time pressures made me miss commiting some features forcing the developer on the other side to wait with probably changes local to his machine.

I have been on the receiving side of that as well and I am sure you have as well. How many times have you looked at an open source project that seems to fit the bill for what you are working for but comes up slightly short. What do you do then ? Do you fork it? Without commit access to the core repository that the original author is maintaining, you cannot branch the project. All you can do is export all the files and recommit them into a new repository that you control. But now you have lost the project history (plus something about this approach just smells wrong, with very little attribution on the “forked” repository to the main project).

There are other features that are great in Git. Offline commits is another great feature that I use quite a bit. A more detailed comparison against SVN can be found here

Whether this paradigm works as well within teams working together, I am not sure. At work we continue to use SVN right now and I am not sure if we plan to move off it anytime soon, But if you are a developer releasing code under open source, I strongly encourage you to try Git. In the meanwhile here are some resources that you could find useful. Linus Torvald’s talk at Google is a good place to start understanding Git philosophically.

Git Manual
GitCasts: Videos on using Git
Getting Started with Git docs on OpenPyro

OpenPyro 0.4 released !

I am excited to announce the first official dot release (0.4) of OpenPyro, the open source UI framework I have been working on (on and off) for the last few months. All the information including source code, samples and documentation can be found at OpenPyro.org. I would love to hear some feedback as well. I am really hoping for this to be community powered and would love to integrate or help integrate more features into the framework, so if you are interested in the project and would like to collaborate, please feel free to contact me via blog comments, Twitter (http://twitter.com/arpit) or via the OpenPyro mailing list. And definitely take a look at the OpenPyro Wiki, which has a bunch of examples, samples and some concepts explained.

The biggest feature in 0.4 is the measurement and layout system that is pretty similar to Flex that I love and a fairly decent component set. Because all OpenPyro components use composition rather than inheritance, I am really hoping to build something very Flex4-esque but keeping filesize . Am also hoping to keep the core library pretty small and create a comprehensive library of functionality using plugins, basically libraries whose functionality depends on OpenPyro but not the other way around. For a full set of development themes check out the section here on the wiki.

I have been writing about OpenPyro on this blog for the last few months as well, all those posts can be found here

Hopefully this can grow into a body of code that the community finds useful.

Flex Builder Tip: Use SWCs for image assets, not Embed metatags for pure Actionscript Projects

I have been using Flex Builder for a while now as my main Actionscript IDE for both Flex and Actionscript projects. Of course in the latter, I have been very sensitive to not using even an iota of the Fx library. However traditionally I had always used the [Embed] metatag to embed graphic symbols into my Swfs. What I did not realize was that the Embed tag brought in Flex code into my project. I only discovered that as I was getting a build of OpenPyro ready for a release (its going to be 0.4, isnt out yet, but probably early next week).

I was trying to build the OpenPyro swc that users could be imported into projects. However running the compc command resulted in the following error screen:

Compc Error

Apparently, using the Embed metatag was causing the graphic to be imported but then converted to an instance of the Flex SpriteAsset class. WTF, this was definitely not what I wanted. Googling (at 2 am, so I may not have used the best queries) did not bring in any meaningful results. However a friend of mine recently switched from Flex Builder to FDT and I remembered him showing me how he did it, so here are the steps:

1) Create MovieClip symbols in the Fla and export them for Runtime Sharing with appropriate class names.
2) Generate the SWC from the Fla
3) Place the SWC in the classpath of the Actionscript project.
4) Use the exported symbol’s class name to reference the graphic symbol

So this worked. I was pretty aware that the Bindable tag was Flex specific but I didnt know that Embed tag did as well. Adobe really needs to differentiate the Flex specific metatags like Bindable and Embed with the pure AS3 ones like Event. My one big complaint with Flex Builder was that it never complained considering I was in a pure Actionscript project.

I hope Gumbo fixes this.

Why Facebook’s new changes don’t feel like the death of Twitter

I had a pretty interested conversation with JPToto yesterday, on Facebook no less, on Facebook’s new features and their impact on Twitter. JP posted his thoughts on the coming twit-pocalypse on his blog today. I am posting my conversation with JP below. However the very fact that I cant actually link to it is the main reason I am less of the opinion that Facebook can devour Twitter completely.

fbConversation

Twitter is definitely a fascinating beast ( and being a twittaholic, my opinions here may be biased. Follow me on http://twitter.com/arpit). People use it in very different ways. I definitely use it to keep tabs on my close friends and share a link every once in a while. In that respect, yes I dont care if I get that information from Facebook or Twitter.

However the real value I get out of twitter is a cursory connection with the people who I have the highest admiration for, the big names in Flash, Flex, Silverlight, Java world, guys who are running companies I respect or have opinions I think are valid. The connection isn’t always two way. I follow more people whom I dont know personally than those I do. Twitter is now my main source of personalized news and I dont see Facebook becoming that.

And what about services getting on Twitter that are really useful. The utilitarian awesomeness of things like @comcastcares is just hard to translate to Facebook metaphors.

The Facebook redesign is interesting, though I wonder if they were completely influenced my the more vocal but smaller fraction of their user base. My friends who aren’t into Twitter dont like the design much but they’ll learn to live with it. It may make them more active over the next few years (maybe) but I dont see it changing the way people who have invested time on building a group on Twitter leaving it for Facebook, unless they change their entire security system allowing follows with limited privileges.

Whats really going to start getting annoying to me is the fragmentation of conversation again (its already a headache if you are trying to follow blog comments/conversations). My status update will now be duplicated as will my friends’ and I have no idea where to respond for whom, and lack of the reply API on Facebook’s apis makes it even more irritating.

It will be interesting to see how it goes but I am not giving up my Twitter profile anytime soon.

On Technology, User Experience and the need for Creative Technologists

Of late I have been involved in a lot of conversations around user experience, especially since the last few months the sessions at the RefreshPhilly group that I am involved in have had quite a number of speakers on that topic. Speakers on UX usually come from a design background which isn’t surprising. The opinion I sometimes find prevalent and which I strongly disagree with though is that user experience is solely a design concern.

A while back, after a rather frustrating day with Javascript, trying (unsuccessfully) to create a rather simple transition effect that would orient the user to a change in state of the application, I vented on twitter on the choice of Javascript for the application given Flash’s general penetration. My main gripe was that while the application would be functional in Javascript, Flash would let me do really interesting transitions and effects, adding a layer of richness to the application. Remember this was an application that didnt have any SEO requirement and the application in that design would be completely unusable from a hand held device (the wont work for iphone argument carries a lot of weight these days).

A friend of mine (whom I hope doesn’t mind being cited here 😉 ) from the creative side of the biz responded:
twitter-message

This is what I feel is one of the biggest misconceptions in our industry. Recently, Grant Skinner, one of my favorite Flash developers, gave a talk at the FITC Amsterdam conference. Though I didn’t attend the conference, I did browse his presentation online. One of his slides had the diagram shown below.

UX

That pretty much hit the nail right on the head. And thats exactly my take on it. I think technology has a huge contribution to user experience. However traditionally that has not really been recognized as much.

The need for Creative Technologists:

I think there is a real need for the Creative Technologist. As technologists we understand whats possible with the current and the cutting edge technologies, which enables us to truly understand the problem statement. More so now when online landscape includes more than just technologies like Java, Flash, etc. What do the new platforms like Facebook, Yahoo Open, OpenID bring to the table? Look at how the labs features in GMail improve user experience.

Gmail Labs

How about browser extensions like Gears that could let enhance the user experience by letting them take your online content offline for reading later or BrowserPlus that could literally allow you to trigger the speech command on the local operating system and have it read out the content text for him.

And the opinion is not mine alone. Another great read is the article by Dan Harrelson from Adaptive Path (you know, the company that coined the term AJAX) on “What Makes a Design Technologist?” The 4 points he mentions for a creative technologist are:

1. A comfort level with front-end programming (web, desktop, mobile, device)
2. A tool belt filled with techniques for creating interactive apps
3. The ability to quickly pick up new tools
4. A itch to dive into code and “just built it”

And Creative Technologists have started becoming less rare to find on the web. Another article I recently read on the Read Write Web blog was on the fantastic Enjoysthin.gs application built by Ted Roden who is now employed by NYTimes as a Creative Technologist.

While Creative Technologist is still not a title that gets any results in Monster.com, I wonder if that’ll change soon.

RefreshPhilly March event is tomorrow!

Its that time of the month again! RefreshPhilly’s March session in tomorrow with sessions from the Luke Crawford, the CTO of Muxtape as well as by Todd Warfel from MessageFirst on Sketching and Rapid Iterative Design.

If you havent done so, do RSVP on the Facebook event page (we need the names for security passes for the building).

And in related news, Roz recently got interviewed by Technically Speaking on Refresh Philly. Great going Roz! Oh and I am totally stealing Rob Francis‘s badge for the event:

OpenPyro now being ported to Haxe. Can you help ?

Its really awesome to see community interest in OpenPyro, the Flex-lite framework that I have been working on for the last few months. The latest news on that front is an effort to port OpenPyro to HaXe, an open source programming language that can be compiled to a variety of languages like Flash, Javascript, PHP etc by Don-Duong Quach. Don evaluated OpenPyro and has started a Git repository on the porting effort. He was even able to compile a previous example I had built with OpenPyro to a Haxe version which you can find here.

Its really exciting to see this work. My own knowledge of Haxe is minimal so I can’t be as helpful as I would like to be, but if there are other HaXe developers out there, your help in the effort would be really appreciated. The conversation around the port is happening at the OpenPyro mailing list.

In other news, OpenPyro finally has an official home at OpenPyro.org. I am going to start posting architecture documents and examples there. The latest can be found at the OpenPyro wiki and the OpenPyro asdocs page.