Filed Under (ActionScript, Flex, General, RIA) by jonr on July-2-2008

I have finally gotten the chance to immerse myself in Flex code lately. I decided to do this series to capture my first hand experiences with Flex. Please share your feedback on the challenges and strengths I highlight. I would love to know if your experiences differ, or if you can fill in some of the gaps where I might be missing something. For those of you considering Adobe Flex, hopefully this will give you an accurate picture of building applications with Flex.

FlexBuilder provides a high quality IDE for developing Flex applications, especially for Java developers already familiar with the Eclipse IDE. It does cost money - please get over it. :) Good tools do tend to cost money, even though the Java community seems to have thrown this notion out the window - partly because we have adapted to using inferior tools.

I will say that it is a bit of a stretch for Adobe to suggest that the Flex Builder is ready for enterprise development on Linux. I have been living the Linux Flex Builder there, and there is absolutely no refactoring support (painful). This is an essential feature for any modern IDE. I know they have released the Linux version under Alpha, but many of their people have proclaimed it as bringing Flex development to Linux. There doesn’t appear to be any roadmap for when one can expect these features. So, I wouldn’t expect them anytime soon – my personal solution was to buy a Mac. Also, this is completely independent of the runtime – the Flash Player on Linux seems to work quite flawlessly in my experience.



Filed Under (ActionScript, Flex, General, RIA) by jonr on July-1-2008

I have finally gotten the chance to immerse myself in Flex code lately. I decided to do this series to capture my first hand experiences with Flex. Please share your feedback on the challenges and strengths I highlight. I would love to know if your experiences differ, or if you can fill in some of the gaps where I might be missing something. For those of you considering Adobe Flex, hopefully this will give you an accurate picture of building applications with Flex.

We have spent a bit of time evaluating FlexUnit and DPUnit. Both seem decent for unit testing, but don’t seem to solve the problem of doing full on automated UI testing for Flex applications. We are looking at a couple of recording tools (HP QuickTest professional & one from IBM), but it appears that they will be in the 5-10K range (and we can’t seem to get a call back from sales as of yet…). We really need something like HtmlUnit for use with traditional browser technologies. HtmlUnit allows us to mimic a client browser programmatically, and validate that the actual user interface renders and accepts input correctly. Is this what FlexUnit and/or DPUnit are supposed to do for us - are we missing something? If not, how are you approaching the testing of your Flex applications?

Click here to subscribe to my RSS feed and follow the rest of this series along.



Filed Under (ActionScript, Flex, General, RIA) by jonr on June-30-2008

I have finally gotten the chance to immerse myself in Flex code lately. I decided to do this series to capture my first hand experiences with Flex. Please share your feedback on the challenges and strengths I highlight. I would love to know if your experiences differ, or if you can fill in some of the gaps where I might be missing something. For those of you considering Adobe Flex, hopefully this will give you an accurate picture of building applications with Flex.

The true object oriented nature of the Flex components is excellent. I am sure there have been a number of “real” UI frameworks over the years that did things like this, but I have never had the opportunity to work with one…. So, being able to actually apply OO principles to UI development has been a pure joy. In addition, the Flex framework provides virtually every component I could ever imagine being needed for enterprise applications. This was always a huge challenge with Java web frameworks, as they always seemed to depend on the community to fill the “gaps,” if you can call the components of UI framework, the “gaps.” Anyhow, there are a few issues that seem to come out of the maturity questions I raised initially. For a few examples:

  1. The default button implementation does not offer the ability to wrap the text. The fact that the components are really OO paid off here, as we were able to extend the core button and add this functionality. It was nice to be able to be able to work around the limitation this way, but this is clearly a common thing that people would want to do with a button.
  2. We have been experiencing general difficulty with the ComboBox. It was surprising to have to set things manually - not being able to provide a reference that has the same value, but having to find the actual object in the list and provide him for setting the selected object, etc… The data grid layout breaks out of the columns on us when our custom ComboBox is clicked on… just weirdness.
  3. Another surprise was that there was no default option to allow users to resize the default components. This would seem quite natural for an animation engine. Anyhow, we used the following to implement resize on our custom title window pop-ups: http://myflex.wordpress.com/2008/03/05/resizable-collapsable-titlewindow/. We made a few tweaks for our custom needs, and did our best to hide this in our implementation so we can easily replace it if we find a better implementation.

Also, here a quick link on styling - since it took me a while to find this: http://examples.adobe.com/flex3/consulting/styleexplorer/Flex3StyleExplorer.html.

Click here to subscribe to my RSS feed and follow the rest of this series along.



Filed Under (ActionScript, Flex, General, RIA) by jonr on June-27-2008

I have finally gotten the chance to immerse myself in Flex code lately. I decided to do this series to capture my first hand experiences with Flex. Please share your feedback on the challenges and strengths I highlight. I would love to know if your experiences differ, or if you can fill in some of the gaps where I might be missing something. For those of you considering Adobe Flex, hopefully this will give you an accurate picture of building applications with Flex.

Overall, the Flex programming model is enjoyable and easy to use - minus a few annoyances with ActionScript, it is a pretty elegant language (I would like to see abstracts and private/protected constructors added). Having the MXML declarative abstraction on top of AS3 proves to be quite genius. It makes laying out graphic components quite easy by hand, and would seem to be what really empowers the visual editor.

For a Java developer, ActionScript brings my first hands on experience with closures. I am no language expert, but what is all the debate about? Of course closures should be added to Java. I know there is quite a bit of nuance on what the syntax/implementation looks like, but it seems pretty obvious that this functionality can greatly reduce the code to implement any number of things.

I am finally learning to take advantage of the event model in Flex. It took me a while to train my brain to think in terms of events and listeners. I am used to taking a much longer path to wire things together. Not to get too far off the tracks, but with this in mind I am surprised that anyone would want to use a heavy weight MVC framework within Flex (especially one that looks more like MVC2). The separation of concerns seems quite natural in Flex. I am not a hater of MVC frameworks – I have spent my fair share of time in Java MVC frameworks, but they seemed much more necessary in a Java web world where all the core language provided was JSP pages.

Click here to subscribe to my RSS feed and follow the rest of this series along.



Filed Under (ActionScript, Flex, General, RIA) by jonr on June-26-2008

I have finally gotten the chance to immerse myself in Flex code lately. I decided to do this series to capture my first hand experiences with Flex. Please share your feedback on the challenges and strengths I highlight. I would love to know if your experiences differ, or if you can fill in some of the gaps where I might be missing something. For those of you considering Adobe Flex, hopefully this will give you an accurate picture of building applications with Flex.

The compiler is currently my number one frustration with Flex development – it is quite SLOWWWWWWW…… To the point where I have been wondering if we are doing something wrong. I have done dozens of Google searches and only found mild relief.

In general, all compile operations seem quite slow. Our near deal breaking issue is around a SWC library we are building. Here are a few numbers to help quantify what we are seeing:

  • 31 MXML source files
  • 24 ActionScript source files
  • 3 embedded images
  • Building typically ranges from: 25-35 Seconds (On ThinkPad T60, Ubuntu, FlexBuilder 3, 2 GB RAM, Core Duo T5600)

We do have a couple of embedded resources, but I don’t see many options here since we do need these as part of our API. We also have the incremental and keep flags set:

-incremental=true –keep=true

It is nice to see Flash Player 10 beta is out with its performance improvements, but I don’t see much talk about addressing the MXMLC compiler performance. Are there plans to address this, or is there a workaround we are missing?

Click here to subscribe to my RSS feed and follow the rest of this series along.



Filed Under (ActionScript, Flex, General, RIA) by jonr on June-25-2008

I have finally gotten the chance to immerse myself in Flex code lately. I decided to do this series to capture my first hand experiences with Flex. Please share your feedback on the challenges and strengths I highlight. I would love to know if your experiences differ, or if you can fill in some of the gaps where I might be missing something. For those of you considering Adobe Flex, hopefully this will give you an accurate picture of building applications with Flex.

Let’s jump into the Overview. Overall, I still see Flex as a game changing technology - a total home run for application developers. Simply put, we have been able to do things that haven’t been possible with other technologies available to Java developers - certainly not for a comparable level of effort.

A key example of this is the user interface for the Gorilla eXecution Engine (GXE). The GXE is the product my company develops for executing and prototyping on top of UML models. The founding Gorillaz have built the user interface application on top of the core engine a number of times in different technologies (the most recent version in JSF). The Flex version we are currently developing comes with a number of benefits. First off, it is so much more compelling than the previous versions. More important though, Flex has enabled us to build truly extensible components that developers can use to build custom applications using the GXE engine, and there is already high quality tooling support for using these components. JSF is only now starting to get some decent tools - two years after the JSF version of GXE was developed, and JSF didn’t offer us a clean architecture to make our components truly extensible.

On the other hand, I have been a bit surprised by the overall maturity for a 3.0 release - with all of the activity around Flex I expected things to be a bit smoother. In our development, we have encountered a number of time consuming issues that seem to come down to framework and eco-system immaturity. The larger concern being the state of the eco-system, as Adobe is reliant on the community to thrust this forward. I do realize that this is the reality of working with an emerging technology and that it is one of the trade-offs. However, this shouldn’t be underestimated in terms of the time investment required to overcome these challenges. Things that are regarded as simple in more established technologies (e.g. in depth testing), like Java, can turn into a large time suck. I don’t see any of these issues as fatal for Flex development, and we have been able to overcome most of the challenges relatively quickly. However, like learning anything new, it is sometimes surprising where these issues arise. Also, it is important to weigh these challenges against all the things Flex makes easy that used to seem quite difficult.

Click here to subscribe to my RSS feed and follow the rest of this series along.



Filed Under (General, Hibernate, Java) by jonr on June-24-2008

I am on a project where we are having to refactor our database frequently for any number of reasons. Hibernate has paid huge dividends in this area, as virtually our entire database is mapped into POJO’s. The net effect is that we get strong typing for a majority of our database interactions (we primarily navigate getter/setters & using Criteria queries), and thus refactoring is much-much easier. We do have a handful of SQL / HQL queries that have column / attribute names in strings - these are obviously much harder to refactor. Is there a another way for us to do update statements that modify a large number of rows, but still give us the strong typing we get by using our mapped POJO’s else where?



Filed Under (ActionScript, Flex, General, RIA) by jonr on June-24-2008

It seems that anytime you become an advocate for a given technology everyone wants to tell you about their experiences with it. This can of course be good and bad – depending on whether or not their experiences are positive or negative. I have been a fan of Adobe Flex since seeing a few demos of what one could build with it about a year and a half ago. At times in my career, I have acted in a technical sales role and often felt disappointed in the final results of the applications we were able to build using traditional Java web frameworks. They have gotten better in recent years, but are still constrained by the traditional browser based technologies. After a bit of playing with Flex, it was easy to see that this was a technology that would allow me to wow customers and users, and I began singing the praises of Flex.

At this point, the RIA landscape does have a number of other serious players (Silverlight, Curl, JavaFX, etc…). I have been primarily focusing on UI frameworks that have a client-side runtime. I am personally convinced that traditional browser technologies aren’t ideal for building rich applications. That doesn’t mean they aren’t ever appropriate, but if your deployment allows for dependence on a client-side runtime then using one of these platforms is ideal. My interest in all of the RIA platforms has been growing, but I have still been spending most of my time focused on Flex. A couple simple reasons have kept me on this path:

  1. I have been doing some development for a consumer facing application, and deploying to the Flash Player is still the best option, as virtually everyone has the runtime.
  2. We are doing some work at Gorilla Logic to enable our GXE product to provide rapid RIA prototyping support using a UML model as the backend (absolutely no code), and we are initially targeting Flex as it appears to have the largest developer community that could benefit from this tool.

Anyhow, these two applications have kept me busy with Flex as of late, and finally allowed me to really immerse myself in Flex code that I actually want to ship someday. Trying to build a “real” application always brings out the warts of a technology, which are usually easy to avoid when you are just looking at smaller portions of code. So, I thought it was time to do a series of posts capturing my first hand experiences with Flex – capturing both the strengths and challenges I have encountered with Flex.

I have two simple goals… First, I would like to capture an accurate picture of what Flex development currently looks like. Second, I am hoping the community will let me know where I am lost – where there might be a better way that I am missing…

Click here to subscribe to my RSS feed and follow along.



Filed Under (AIR, General, RIA, Technology) by jonr on June-18-2008

Stuart Stern, our fearless leader at Gorilla Logic, loves to share that “Everything you know is wrong” is not a value proposition. Usually highlighting mistakes he saw as an executive at Sun Microsystems – one example being the slightly delusional believe that everyone should be using Solaris on their desktop instead of Windows. Sun held onto this for years because Windows was insecure and clearly inferior to the Solaris platform. The problem for Sun was that people actually liked Windows no matter how much Sun told them they were wrong.

I think this sort of pitch is actually quite common, as technology vendors are trying to gain ground in highly competitive markets. A certain amount of comparing and contrasting is essential to help potential customers understand a vendors product and where it fits in the market, but sometimes it is just too much.

Last week, I did an interview with the folks at Curl (an RIA platform) for InfoQ.com. Following the comments on the post and reading more about their recent benchmarks, it seems that Curl has settled on a marketing strategy that boils down to telling people that everything about Flex is wrong and everything about Curl is great. This seems to be getting them some attention, but it misses the mark a bit for me. The industry as a whole can be mis-guided, but when it comes to Flex I don’t believe this is the case. Also, like most people I just don’t like being told that my firsthand experiences are not valid.

Honestly, Curl sounds like an excellent platform for building RIA’s. Although, I do have serious reservations about deployment with Curl, as virtually no one has the client-side runtime. One of the things I love about Flex is that deployment is greatly simplified, as most (all) users already have the runtime. I would encourage those building RIA’s for the corporate Intranet to evaluate Curl along with Flex – outside of that controlled environment I would stick with more widely adopted technologies.



Filed Under (Ubuntu) by jonr on June-12-2008

I have been a long time Windows XP user on the desktop (it was actually a pretty good OS), but I just couldn’t get excited about making the move to Vista. So, I concluded sometime last year that I was going to have to make the move to either Ubuntu or Mac. I have managed both Solaris and Linux servers through out my entire career, and have always loved a Unix environment for that. So, I was pretty excited to have a real command line on my desktop.

To get started on my transition I bought a ThinkPad on Craigslist a few months ago and loaded Ubuntu on it. After a handful of time consuming issues (video drivers, getting the VPN client to work, etc…), I was up and running. It has been amazing – about ninety-five percent of the time. What about that other five percent of the time? You know those annoying things that should just work…

Well, they leave me only one option: MacBook. It is time for me to join the masses of annoying Mac users who always remind everyone how much better their lives are. Honestly, I am looking forward to it, and I plan to let everyone know how much better life is on that side of the world (no matter what the reality is). Only one problem, I am waiting for Steve to put on his depends and announce the next gen of Mac books – so it looks like I have a few more months of the almost good life on Ubuntu.

Hey Jimmy, are you going to join me in Macland or turn back to your old faithful, Gentoo?