Category Archives: Rich Internet Applications

Flex Guys Are Going Too Far

There’s been a lot of fuzz lately in the Flex community around the way the Flex SDK Open Source efforts are handled by Adobe. And let’s just say things have gotten a little messy around here. It’s funny because I’ve just watched the last episode of Battlestar Galactica, and without any spoiler, let’s just say that people tend to get things wrong when it comes to rebellion.

I mean, sure, everything is not perfect. Especially, Adobe doesn’t seem to be listening to votes on bugs.adobe.com as much as I hoped. But when I read things like “the war of open sourcing the Flex framework”! I mean… come on, guys!

When Simeon Bateman started to take matters into his own hands and talked about forking the Flex SDK, I already thought he was going too far because I think Adobe is really trying here, and I respect their effort considering what’s at stake and the size of the boat they’re steering. And what surprised me even more is that Adobe actually responded to the feedback from the community by organizing a big open live discussion with the whole community. And then they even got way further by opening up their Open Iteration Kick-Off meeting. Hey, that’s an amazing effort! Can you imagine what it takes in a big “old school” company like Adobe to do that.

But as in every rebellion, it seems that people can’t seem to be satisfied now. They’re forming committees, gathering grievances, it looks more and more like a French revolution to me. And let’s just say that’s part of the reasons I don’t particularly like the country where I was born. But that’s another topic.

The problem with that kind of mutiny is that you always end up with self-proclaimed representatives who are honestly convinced they’re speaking up for the greater good, but they always forget about crowd control, about how people can forget everything about reason and lucidity when you inject in them the “it’s unfair” feeling.

I say thank you Adobe for Open Sourcing the Flex SDK. I say, let’s not forget that you were not forced to do so, that you could have kept it free as in “free beer”, as it was with Flex 2. I say, let’s not forget that Open Source licenses still guarantee intellectual property and ownership to the people who actually created all this code for us. And I say yes, they made the decision to move to Open Source and they should take the good side as well as the responsibility side of it, and really involve the community. But I don’t think that threatening them to fork, or getting into a war with them is going to make things any better… unless your only goal is to cover your butt for your ultimate purpose to actually fork it.

I think we should all calm down here, take a deep breath, show some acknowledgement of the efforts they’ve made so far, and insist on the fact that the community is here to help and work WITH them, and not to undermine their efforts, “start working on Flex 5 as a community now and let them join us when they are ready”. Uservoice, committees, those can be good ideas, but we have to show some good will and honesty here, because nothing is owed to us and because it’s not in our best interest to get people nervous and vindictive now.

We don’t need an online IDE!

I’m on vacation this week, and it’s great. I usually try to take at least one week off in between missions because it’s the best time to do it. Nothing to worry anymore about the one before, no knowledge of the one ahead, my head is free to dream and wander around and I have plenty of time to move forward on personal projects.

Now beyond my work on betRway.com, I’ve been thinking a lot today about the idea of an online development environment. On my last project, I’ve seen a lot of the possibilities AND limitations of current RIA technology, and more specifically the most advanced one IMO, ie Flex. Combine that with some of the modularity offered by OSGi on the server-side, the productivity brought by things like Grails, and more importantly the promise of unification of all of those technologies under SpringSource’s sponsorship… and it’s starting to become more and more interesting.

So I googled “online IDE”, and I found this great article on DZone, which is a few months old but gives a lot of links to some of the services that are already offering both niche and generic online environments. I’ve browsed through all of these and I have a bad feeling of “déjà vu”. It’s like those mobile web sites that try to reproduce a trimmed down version of their web counterpart: it doesn’t really work, and worse, it doesn’t even use all the potential of mobile platforms. It’s like we’re trying to copy our desktop IDE onto the web.

But when you really think of it for a moment, the reason why we need version control systems for example, it’s because everyone is working on its own, and we need to synchronize at some point. But this constraint almost disappears if we’re all working online. And online development can have impacts of similar magnitude on things like continuous integration, deployment, monitoring. Some of these tasks don’t even make sense anymore. And how about several programmers working on the same artifact at the same time? And think about the computing power that could be available for code generation or compilation…

The way I see it, even the programming languages that we use today are not designed to work like that. Think of Java packages correlated with file system directories. Think of all these destructured text files that our IDE’s have to parse and index to make some sense out of them and allow us to navigate through them: what if text files are replaced by databases at some point?

I’m just thinking out loud here, but I’m wondering whether we shouldn’t forget about everything we know in terms of programming paradigms, and get back to the objective: producing working software collaboratively. What would be the best and simplest way to do that, knowing that we are starting to have all the tools we will need in order to move our workspace into the cloud?

As far as I’m concerned, I already know what I would like in such an environment:

  • More graphical programming, especially for high-level design, because visualizing is still the most efficient way to create and design IMO.
  • No more boilerplate tasks like “check out”, “check in”, “run tests” and things like that. Just “share my code in the public workspace” and “test on save”.
  • The ultimate reproducible build environment: everyone is using the very same frameworks and libraries at any time. No more environment variables or shell idiosyncrasies.
  • Smart client stuff, with offline mode, auto-synchronization and conflict resolution when back online.
  • Methodology directly integrated into the environment, not some small window on the real thing. Issue tracking, user stories, all of that at your fingertips.
  • Direct communication with your remote peers through advanced tools like whiteboard, webcam, code review.

In fact, we don’t need an online IDE, not in the sense we think of an IDE today on our desktops. We need more than that. We need a collaborative environment that uses the full potential of the cloud to help us produce better software more quickly.

What do you think? What kind of high-level functionality would you like to see in such an environment? How do you picture it?

2008 flashback

That’s it. Holidays are here, this year is almost over, time slows down for a few days so that we can look back, then enjoy and start again.

img_0076This post is probably not be of great use to anyone but me, but it’s a blog after all, sometimes I can use it as a personal journal too, like all those teenagers.

This year was actually very rich to me. I got to discover a few very interesting technologies, starting with OSGi and its ability to break up with big monolithic enterprise applications. And I really dived into Flex and how it can integrate with Java, which culminated in this tutorial, which was even republished on the Adobe Developer Connection. And finally, in my quest to discover better ways to develop applications, I came across Jetbrains MPS. And when I realized it was still far from being ready for prime time, I decided to keep it on my radar but focus on a more realistic alternative on a shorter term: Groovy/Grails. Now I’ve widened my technological scope beyond just JEE and AndroMDA, and I feel quite ready for the challenges ahead.

More importantly, this year will have been a great initiatic journey. Last year at about the same period, I decided I wanted to turn one of my ideas into a company, to create my own startup. The road was bumpy, my colleagues at Axen could feel it, friends who joined me on this journey could feel it too. I put a lot of things in question: my job, my ambitions, my strengths and weaknesses. And the project failed… so far! But they say there’s always hope at the end of the tunnel.

I had the idea, I had the skills, I had the will, time and energy, and yet there was this big barrier to entry, this thing that seems so important to everybody that nations and societies, people and governments are falling apart just because of it: money. I’ve always felt bad about money, like it was the poisonous blood flowing in the veins of an otherwise healthy man, eating him from the inside out, like something that is here to transport what makes us live, but that we’ve come to confuse for life itself. And it happened, crisis happened, the disease hit us all. We’re still far from the bottom since we still believe that the best cure against poisonous blood is more blood. But I don’t want to wait. My failed project and the recent course of events have made me realize something: THERE’S GOTTA BE A BETTER WAY!

2009 is full of promises. I have already started to understand many things about myself, about why I failed on this project, about how I live, how I can improve. I moved to a new place too, more comfortable, more like me. And now I have this new project, this game changer, this new way of thinking about how creative people can turn ideas into something real. 2009 is going to be fan… wait for it… tastic!

Adobe MAX Europe – Day 4

Much less to say about today. First because it was a full-day lab session, second because the whole thing was just fantastic. The content, the pedagogy, the examples, the trainer, everything was perfect. It allowed me to discover all the features specific to AIR runtime and API’s and we didn’t spend to much time on Flex details. AIR is definitely an interesting technology. The integration with the desktop offers all the features that I need most and I sincerely think about migrating You And The World administration to the desktop since it will remove so many barriers that we have right now like HTML rendering, client-side image cropping and big data synchronization.

Now that the event is over, it’s time for global feedback:

  • The organization was just great: it’s easy to understand why the entrance fee is so high, given the quality of the food, the number of computers for labs, the number of teacher’s assistants and staff people, the Wii’s, etc. One thing though: I really missed drinks in fridges where you don’t have to wait in line for a glass of water.
  • The venue was just awesome, with enough room for everyone, plenty of electric plugs to reload our small iPhone batteries, Wii’s everywhere, couches, toilets (not just one spot where you have to wait in a long line if you don’t choose your time like Metropolis). Two negative aspects though: mere chairs hurt when you got used to theatre seats, and Fiera Congressi Milano is a little bit lost in the middle of nowhere: not a lot of restaurants nearby.
  • The wireless network was good enough most of the time, except inbetween sessions where I managed to get an IP address, but impossible to get any bandwidth. It was good enough for email checking and a few commits on Subversion though.
  • The content covered was great and gave me a sense of cohesion and innovation on the whole Adobe product line-up. And feedback forms for each session were definitely a good idea.
  • The hotel I stayed in was just awesome. I still don’t understand why it’s called a mini-hotel as the service was really great and the room was very cool. I missed some more French-speaking  channels but I had some content on my laptop to compensate. And 8€ for 24 hours of Internet connection is not too expensive.
  • I didn’t see much of Milan but the taxis you can’t stop in the street outside of a taxi station, the plane that doesn’t come and pick you up directly at the terminal, the old-school trams, gave me the impression of a not-so-modern city.

Overall, this first Adobe MAX Europe was really a wonderful experience for me and I’ll really thank my manager for sending me there. Now, one day of roadmap design on You And The World, and next week, on to Devoxx. I just love technology!

Adobe MAX Europe – Day 3

Today was « learning day ». No « wow », no « aha », just « hmmm » and « slap! » (don’t fall asleep, you idiot!). Originally I had planned a couple of sessions related to LiveCycle Data Services but I’ve been so disappointed by the one of Tuesday that I decided to enjoy myself a little bit. So the first session was about Soundbooth CS4.

I’ve played piano and organ some years back, and I’m an amateur DJ on my spare time, so I tend to love everything related to sound and music. However, I kind of put all of that aside in the past few years so this session was really refreshing for me. And when I said that there were no « aha » moments today, it is not entirely true: you should see the speech transcription engine they added to Soundbooth CS4 and that integrates with many tools in the suite. It’s really amazing. Now I need to see how it works with real-world samples with background sounds and strange French accents. But the demo was definitely interesting. So much so that I couldn’t help thinking how much money could Adobe make if they sold this engine as a standalone service for podcast owners and such. Apart from that, the sound clean-up features are very interesting, especially with the spectral view. I don’t know if it was already there in previous versions of Soundbooth, but it’s really amazing what you can see in there that is just impossible to spot in the infamous waveform view. And if you think that Soundbooth is not useful if you don’t do movie soundtracks or music mixing… well, think twice and give it a try.

The next session was the source of a lot of hesitation. Dave Mc Allister had left a comment on my post before MAX and it really motivated me to know more about the Open Source strategy of Adobe. On the other hand, on the same slot, there was a session about Flex 4 and its new syntax, which obviously I’m very interested in, all the more so as there seems to be a lot of new things, like prefixes instead of namespaces. Eventually, I realized that there would be tons of articles about the new features of Flex 4 closer to the release and then closer to what it will really be. On the opposite, Dave Mc Allister presentation was a panel discussion, something you can’t find on the web by yourself. So I went for « Why Open Source, what makes the cut? ». Now, obviously MAX audience is still mainly composed of designers, because there were very attendees in this session, between 15 and 20 I think. But the discussion was very interesting and it was even easier to ask questions and get proper answers. With Dave were Ryan Stewart, platform evangelist, and Dave Story, who will soon be in charge of all the development tools (Flex, Flex Builder, etc.). The discussion reminded me of the comments of a few friends of mine when Adobe announced that they were going to open source the Flex framework: « Adobe… Open Source… that’s just a marketing move! ». It could have been, but let me tell you that a year and a half later, it’s easy to see that it was much more than that. They actually dive very deeply into the strategic and governance questions related to opening up some of your business. And their example is all the more so interesting as they are engaged in a balancing approach: their objective is not to open source everything they do, but just what makes sense. Hence Open Source proponents inside Adobe have to fight very hard to educate both business and operational people about the added value of Open Source, while reassuring them about the fact that it’s not a silver bullet and that they will not do it with everything. A few people in the audience, including myself, took the opportunity to suggest some improvements to the Flash platform and Dave Story took notes. Maybe one day it will be possible to plug a Webkit module into the Flash player and to render proper HTML inside Flash. Time will tell.

I started the afternoon with a demonstration of the new features of Flex Builder 4. I think Heidi Williams and Tim Buntel were a little disappointed to see such a low enthusiasm in the audience. But from what I heard around leaving the room, a lot of people thought like myself: finally, we get the features that should have been there 2 years ago, nothing more. Data management features are certainly a plus though: you will be able to generate client-side data managers that automatically handle CRUD operations and deal with conflicts, whatever the server-side technology you’re using. It will be interesting to see how useful it can be beyond the simple contact manager application.

My last presentation for the day was one that has been added to the planning at the last minute: Flex and PHP with Zend Builder. This could have been the most interesting presentation of the whole event for me in terms of direct interest for the project I’m working on, since I’m really fed up not to have a proper PHP debugging environment and I want to migrate from AMFPHP to Zend AMF. Unfortunately, the presenter was really a messy guy, and at some point I was just totally lost. His English was not very good and he was very hard to understand. So once I saw that he got debugging working in Zend Builder with Zend AMF, I just left the room.

Overall, it was a very interesting day. Oh and it’s always funny to see where geeks are ready to stick their business cards for a few gadgets :oP

Tomorrow will be a full-day lab about AIR and I hope that the content will be less frustrating than yesterday.

Adobe MAX Europe: Day 2

Yesterday was more of a regular feeling of satisfaction and happiness to discover. Today there were more peeks in my humor, from low “boooo” moments to great “aha” times. But overall, I’m starting to see the big picture of where Adobe is heading and it looks really cool. The last thing they miss to become my #1 favourite tech company is a Steve-Jobs-like charismatic presenter… although I gotta say this morning’s keynote was pretty well assembled. But I’m anticipating here. Let’s go back to the beginning of the day.

AIR bootcamp, without boots

…because you don’t need boots to fly over a subject, do you? Some might say that this AIR bootcamp actually missed some AIR as well but… hey! I just did!

OK, I know that when you’re a lab teacher, it is tempting to do everything you can to see this glow of surprise and astonishment in people’s eyes, but come on! Those small Hello World hands-on projects to show off features like the Camera integration or WSDL-based service stub generation! I can’t believe that someone or a company is willing to pay around 2k€ for sending a guy to cover an event such as MAX for that kind of noob content. I mean, I’m motivated by achievement, that’s what makes me get up in the morning and I guess I’m not the only one in Milan right now. So I’m talking to Duane Nichols here: next time, why not a real project that focuses on AIR features and integrates them in a meaningful sample project?

The Keynote

Definitely my favourite moment of the day. It’s hard to describe but Tim Buntel and Ben Forta played it Men-In-Black style to demonstrate some of the upcoming features in CS4, Flash Catalyst, Flex Builder Gumbo and Adobe Alchemy. I can’t remember all of the details but there were definitely a lot of “wow” moments and the feeling of seemless integration that you can get from that is… warming! I can’t wait to see the kind of applications we’ll be able to build with CS4, FC and Gumbo. But wait, I don’t need to wait, because I’ve got trial versions! Woohoo! Okay, FC and Gumbo are still early pre-alpha releases but still, I’m definitely going to play with them.

Low afternoon

After another great lunch (the waiting line is definitely worth it), my afternoon started with 2 rather disappointing labs. The first one was the second part of AIR bootcamp so I won’t go into more details. The second one was about building Collaborative Applications with LiveCycle Data Services. This time, the problem was not about the number of samples, but the fact that we didn’t even created any project. We spent almost 15 minutes copying files from place to place to get the configuration in place, and then we basically filled in the holes. Once again, no achievement whatsoever, and no global understanding of how this all works. But I can’t say I’m surprised: I had the same frustration with the official BlazeDS tutorial, which is why I wrote my “full stack” article. By the way, I think one of the reasons why it’s so hard to start a BlazeDS-based project from scratch is the amount of configuration to write. Maybe a couple of advanced editors in Flex Builder would help…

And last but not least…

The much anticipated and not disappointing at all… Sneak Peeks session. Okay, there were the MAX awards before, but when I saw one of the winner was presented as a Flash Lite application for the iPhone! Flash… iPhone… wait a second! f… t… STACK OVERFLOW, rebooting now!

I won’t go into details into each of the technologies demonstrated, I’ll just list them:

  • Client
    • Application-level multicast, or what you could see as P2P multicasting (sorry, I didn’t find any links about that one)
    • Nitro, a portable widget platform with a seemless integration across devices
    • Durango, a mashup builder for dummies
  • Services
    • Meer Meer, a service to do cross-browser testing with Dreamweaver
    • Integration of LiveCycle DS with CS4 (sorry, no link either)
    • Server-side ActionScript, by far what I was the most interested in (Java, watch out!)
  • Tools
    • Content intelligence toolkit, a very interesting video and sound analysis technology
    • Infinite images (inifinite zoom): at first I thought it was just a port of the Silverlight infinite zoom that created so much buzz last year, but it was much more impressive than that
    • Dreamweaver support for web widgets
    • Next-generation image compositing, impressive stuff, possible future features for Photoshop

Now I’m just exhausted. A good night of sleep and tomorrow is already the last conference day. To be followed…

Adobe MAX Europe: Day 1

This first day was mostly as excited as I anticipated it. I discovered a lot of great stuff today and got to meet a couple of top-notch geeks as I like them. Sometimes it gets frustrating to work every day with people who seem to run away as soon as you pronounce a word they don’t know, instead of getting closer to you and say “what is it you just talked about? I want to know more about it!”. That’s part of why I like attending such conferences: in every guy – and in the case of MAX, in every lady – there is a small innocent and curious kid ready to marvel at everything (s)he sees, and willing to share with you everything (s)he knows. And that’s really a stimulating experience.

But let’s get back to the content covered today.

The day started with an excellent keynote. After the usual marketing stuff, we were blessed with a few very interesting demos showing how the Flash Platform as a whole covers what Adobe sees as the three most important evolutions in our industry: cloud computing, social computing and device portability. The two most interesting demos I’ll remember of are HobNox and Cocomo. HobNox is a virtual synthesizer ala Reason but running within Flash Player 10 that can mix audio loops. Very impressive design. Cocomo is even more useful for what I’m working on: it’s an Adobe framework and API that allows you to integrate social features into your Flex applications in no time. They also covered a few of the new features of Flash Player 10, like Pixel Bender and print-quality text, that were pretty impressive.

Next session was about the future of Thermo – now known as Flash Catalyst, so that there are 2 letters to fit in the logo scheme of Adobe products I guess – and Flex Builder. Flash Catalyst is at least as impressive as what I remember of the last Thermo demo I’ve seen. But as a guy I met later cleverly noticed “it’s already hard to find good designers, it’s going to be even harder if we ask them to design user interactions too”. We’ll see, but this tool definitely bridges a gap. As for Flex Builder 4, Heidi Williams demonstrated 10 new features that are really interesting… if you’ve never worked with anything else than Eclipse. I mean « generate getter/setter » and file templates were two of these features. I mean, come oooon! Start by asking yourself why those features were so hard to add to Flex Builder 2 in the first place. Ah, that’s right, Flex Builder is built on top of Eclipse. And given that Flash Catalyst is built on Eclipse as well, I guess they’re in it for good. At some point, I guess I’m just going to forget about the visual designer and get back to my beloved IntelliJ.

After some excellent pasta and cheese I attended a session by Matt Chotin about extending Flex components. It was mostly about the Flex component lifecycle but it was very interesting to put it in perspective with some Flex Gumbo preview. Flex 3 component architecture is called Halo, and its main issue is that it pretty much mixes up presentation and behaviour, even though you can apply some superficial styling with CSS. Flex 4 component model is called Spark, and it changes everything. Now UI components focus on behaviour and all the appearance of components is externalized, similar to what Swing does with Look And Feels, but in an easier-to-apprehend fashion. For example you have a Flex component called FxRange, which can look like a spinner, a scroll bar, a tracker, or anything you can imagine. That in combination with Flash Catalyst is going to ease the development of really neat applications.

Then I intended to go see a talk about Flex testing, but I’m definitely not keen on writing tests so when I received an email notification from our issue tracking system at You And The World, it was kind of a relief. It was a problem with the application getting stuck somewhere in an infinite loop or something that made Firefox hang on indefinitely. I tried to figure out what it was, but I didn’t know where to put my breakpoint and how to debug it. But guess what was the topic of the next session on my planning: « debugging and profiling in Flex Builder 3 ». So I went there, learnt a few performance tips and tricks, and got the opportunity to ask Mike Jones how he would deal with my situation. It turned out that the profiler could help me. Well, it could have, but I found a workaround: I refactored my code to use cleaner constructs based on states instead of includeLayout tinkering, and boom! Problem solved. But still, Mike Jones’ talk was very interesting.

Overall, a very interesting first day. I got to talk with a couple of guys about Coldfusion (which I don’t really know, but you know, asking and sharing…). Tonight, I had a hard time finding a place to eat… and I didn’t find one, so tomorrow I’m gonna have a great breakfast ;o)

That being said, I’m going to watch a few more episodes of Sarah Connor and get to sleep. Tomorrow is another geeky day…

Adobe MAX Europe, J-1

I guess many people are going to write or have already written blog posts with a similar title. But hey, this is a big event for me. I’m so happy my company offered me this reward, really. I know it can seem hard to understand how one can be so excited about attending technical conferences all day. But discovering and learning new technologies is so central to why I love software development, and Adobe stuff has become so important in my “artistic” evolution lately, that I really can’t wait.

Amongst others, I hope to learn more about Flex 4, Thermo now known as Catalyst, Flash 10 and its possibilities, Adobe AIR, but more importantly I have a few questions for Adobe guys, especially:

  • Open Source is not just about a license and a Subversion repository, it’s also about community and listening to it. And when I see some of the highest voted bugs in JIRA deferred and deferred again, I would love to understand what is their policy regarding community feedback.
  • Portability is obviously a big argument in favor of Flex, but I still wonder why things like mouse wheel are not natively supported on the Mac. Fortunately there is a workaround but it’s still a pain.
  • How about backward compatibility? A year back, I wanted to propose Flex as an implementation technique for the UI of the operational monitoring application at Thalys, but we argued with a colleague about the governance problem: contrary to Sun Microsystems with Java, Adobe has never clearly committed to maintain backward compatibility. Of course, let’s not forget that some people are still migrating their JDK 1.4 to Java 5 because they had variables called “enum”… Joke aside, I was kind of disappointed to see that the application I’m working on right now worked with Flash 9 but has a bug with Flash 10 because of the changes they made with FileReference API. Hopefully, this will be fixed with Flex 4, but in the meantime we’re still struggling.

Over all, it’s the first technical conference I attend outside of Belgium and Javapolis (now Devoxx), and I hope that the organization will at least match the one of the BeJUG.

The 2 weeks to come are going to be legen… wait for it… DAAAAARRYYYYYY!

Flex, Spring and BlazeDS: the full stack! ERRATUM

OK, obviously there are 2 problems in my article on Adobe Developer Connection and I finally found the time to look into it:

First of all, there was a big error in one of the POMs in todolist3.zip. In todolist-web/pom.xml, if the first dependency looks like this:

<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>todolist-common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>

Then replace it with this:

<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>todolist-config</artifactId>
<version>1.0-SNAPSHOT</version>
<classifier>resources</classifier>
<type>zip</type>
<scope>provided</scope>
</dependency>

And it should work fine.

The second error is in the article itself: of course, all of the namespace declarations should be xmlns:mx=”http://www.adobe.com/2006/mxml” instead of xmlns:mx=”/2006/mxml” .

I’ll try to reach ADC editor so that they can fix those mistakes. Thanks for the feedback.

The Flex, Spring and BlazeDS full stack on Adobe Developer Connection

The last part of the reedition of my article series about Flex and Spring has been published on the Adobe Developer Connection. This episode is the last one in this improved series so if you haven’t read it yet on my blog, I think the version I gave to ADC is better.

Episode 1
Episode 2
Episode 3

Enjoy!