There’s gotta be a better way!

January 3rd, 2009

entrepreneurIn 2008, I tried to create a startup around TagSpot, a mobile service. And it didn’t work (so far), partly because of me and my own weaknesses, but also because it’s far too hard to create such a company in Europe, especially now.

Obviously for us, the first breakpoint was money. I don’t have any savings, so I can’t quit my day job, even for a few weeks. And I’m a tech guy so I’m not particularly excited by the idea of spending too much time on a business plan to attract investors. The only things I’ve got are ideas, skills and passion. And in my humble opinion that should be enough. And I’m fed up with all those people trying to convince me that there’s no way around, that you have to think in business terms right away. And where is the room for intuition and iterative realization? Why are so many projects with good business plans and big investors failing? There’s gotta be a better way!

Let’s invent it. Let’s create an alternative way for entrepreneurs to get started. And more importantly, let’s do it by leveraging the current financial situation instead of whining about it. There are thousands of people out there looking for better investment opportunities, disappointed by the stock market, willing to get back to a system in which they can sponsor entrepreneurship and innovation rather than participate in speculation. Banks cannot offer that kind of alternative, they are far too entangled in the current state of things. But we, entrepreneurs can do something about it.

Consider the example of MyMajorCompany. Those guys created a marketplace where music listeners can become producers and allow artists to get started. My idea is to adapt this concept to the IT entrepreneurship sector by developing a marketplace allowing startup creators to propose their ideas and prototypes to small investors willing to participate in collective funding efforts. The idea is not to replace business angels, venture capitalists and banks, but just to offer a complementary alternative for idea-stage projects.

There are a lot of details to figure out, a lot of things to set up, and all I have for now is a set of guiding values:

  • Money is merely a means to an end: entrepreneurs, investors and we have to agree to that. I don’t think “money first” is a good strategy.
  • Innovation is our end: it will be the main criterion by which we’ll select projects to sponsor. It should be our primary concern, and it will drive everything else (profitability, employment, etc.)
  • Transparency: the key to reassure investors is to give them maximum visibility of the projects they invest on. And we have to be transparent about this platform too, it has to offer the best possible alternative.
  • No speculation: investors will not buy shares but interest participations, that they won’t be able to sell. I firmly believe that buying potential value is what led us to the current crisis, and I want to allow people to invest on value creation, period.
  • Focus on software: this collective investment platform can certainly be adapted to many different sectors but software-based projects seem like the best option to start with, because they don’t require too much money to start, and because it’s the sector I understand best.

We need a name, we need graphics, we need a first site, we need ideas, we need all those who agree with the values above, who are willing to change things and have skills, ideas and passion to put in this project. I’ve started to work on a first prototype but I want to involve more people because it’s the best way to make sure that we will develop the platform WE all need.

So if you have questions, ideas, suggestions, if you want to participate in this project, whatever your background, if you know someone who shares our values, use comments on this post, or drop me an e-mail. And when I say “whatever your background”, I mean it. Of course, we will need software developers (notably Grails/Flex), graphics designers but also accountants to figure out how to make our investment system fit into existing laws, small investors to let us know what they expect from such an alternative. At the very least, let’s start a debate about this idea.

There IS a better way, and we have the power to build it now. So bring it on…

Share and Enjoy:
  • description
  • Digg
  • del.icio.us
  • Slashdot
  • e-mail
  • Facebook
  • Google
  • blogmarks
  • Furl
  • StumbleUpon
  • Technorati
  • TwitThis
  • Reddit

Entrepreneurship, Geek Culture , ,

2008 flashback

December 23rd, 2008

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!

Share and Enjoy:
  • description
  • Digg
  • del.icio.us
  • Slashdot
  • e-mail
  • Facebook
  • Google
  • blogmarks
  • Furl
  • StumbleUpon
  • Technorati
  • TwitThis
  • Reddit

Geek Culture, Language Oriented Programming, Model-Driven Architecture, OSGi, Rich Internet Applications, TagSpot

My Devoxx Planning

December 7th, 2008

This year is a little exceptional for me: it’s the first time I attend 2 big technical conferences in a row like that. Last week, Adobe MAX, this week, Devoxx. And all I can tell you is that I love it! I love it as an attendee because those conferences are incredible gatherings of talent and smartness, and because I get to discover exciting technologies that can make my life easier and my software more beautiful. And I love it as a restrained presenter/showman because I envy those who get to introduce all those amazing technologies, and travel all around the world to do so. I’ll do that one day!

Back to Devoxx, I finally built my agenda for this week and it’s very loaded as you can see here or here. My main focuses this year should be:

  • JavaFX: because from what I’ve heard, it seems doomed to failure, but I want to make my own opinion and see what it really looks like
  • Groovy/Grails: because I’ve gotten hooked to those and I am currently investing a lot of time into learning those technologies, possibly for You And The World and for TagOSpot.
  • Random technology watch: topics I don’t have a clue about, but that could enlighten me somehow.

Hopefully, I’ll find some energy left at the end of the day to write a few posts about what I see. Woohooo…

Share and Enjoy:
  • description
  • Digg
  • del.icio.us
  • Slashdot
  • e-mail
  • Facebook
  • Google
  • blogmarks
  • Furl
  • StumbleUpon
  • Technorati
  • TwitThis
  • Reddit

Devoxx, Geek Culture, Javapolis , , ,

Adobe MAX Europe – Day 4

December 5th, 2008

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!

Share and Enjoy:
  • description
  • Digg
  • del.icio.us
  • Slashdot
  • e-mail
  • Facebook
  • Google
  • blogmarks
  • Furl
  • StumbleUpon
  • Technorati
  • TwitThis
  • Reddit

Geek Culture, Rich Internet Applications ,

Adobe MAX Europe – Day 3

December 5th, 2008

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.

Share and Enjoy:
  • description
  • Digg
  • del.icio.us
  • Slashdot
  • e-mail
  • Facebook
  • Google
  • blogmarks
  • Furl
  • StumbleUpon
  • Technorati
  • TwitThis
  • Reddit

Geek Culture, Rich Internet Applications ,

Adobe MAX Europe: Day 2

December 2nd, 2008

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…

Share and Enjoy:
  • description
  • Digg
  • del.icio.us
  • Slashdot
  • e-mail
  • Facebook
  • Google
  • blogmarks
  • Furl
  • StumbleUpon
  • Technorati
  • TwitThis
  • Reddit

Geek Culture, Rich Internet Applications ,

Adobe MAX Europe: Day 1

December 2nd, 2008

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…

Share and Enjoy:
  • description
  • Digg
  • del.icio.us
  • Slashdot
  • e-mail
  • Facebook
  • Google
  • blogmarks
  • Furl
  • StumbleUpon
  • Technorati
  • TwitThis
  • Reddit

Geek Culture, Rich Internet Applications ,

Adobe MAX Europe, J-1

November 29th, 2008

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!

Share and Enjoy:
  • description
  • Digg
  • del.icio.us
  • Slashdot
  • e-mail
  • Facebook
  • Google
  • blogmarks
  • Furl
  • StumbleUpon
  • Technorati
  • TwitThis
  • Reddit

Geek Culture, Rich Internet Applications , , , ,

Talk Less, Do More

November 1st, 2008

I’ve been a Java developer for almost 8 years now, I’ve used many frameworks and tools, Spring, Hibernate, EJB’s, Swing, etc. And a few years back, I started to look for a less verbose way to express concepts like business entities, services, workflows and so on. For some time, Model-Driven Architecture (MDA) has been the best answer I could find. But the learning curve and the difficulty to customize transformation patterns for specific setups, like a Flex front-end on a Spring back-end for example, have made me realize that this approach was somewhat limited by its UML foundation.

So I started looking for a better answer, and I thought I had found it with Language-Oriented Programming, the idea to decouple the structure, the syntax and the semantics of a language and ease the creation of Domain-Specific Languages in a very generic way. Unfortunately, as promising as it looks, it’s still in early stages of research and development and I needed a more immediate way to improve my productivity, my ability to do more with less words.

So I came back to something I had totally pushed aside till then: scripting languages. I’ve been “raised” with strongly and statically-typed languages since day 1 of my programming carrier: first Pascal, then Delphi, C++ and Java. And I always thought that scripting languages like PHP, and later Ruby were just tinkerer stuff for lazy hobbyist programmers, that didn’t take into account constraints like maintainability, robustness, readability, performance, etc. All those constraints I faced as a professional consultant. But a few weeks ago, I started to question my certainties and began wandering around PHP, Ruby, Python and others.

PHP, I’m using it at work on You And The World, it’s too hard to debug in a Flex/AMF setup and it’s really too permissive. As for Ruby, I like the ability to design DSLs but the syntax is definitely not intuitive enough for me. So now, I’m trying to learn more about Python, whose syntax seemed more familiar and maturity is reassuring. Everything seemed good until I read this single sentence in the documentation:

[...] classes in Python do not put an absolute barrier between definition and user, but rather rely on the politeness of the user not to “break into the definition.”

Come ooooon! Politeness of the user? You must be kidding right. In a corporate environment, when your code is likely to be reused and shared and refactored? I thought “hey, that’s probably just a provocative way to say that we Java developers tend to overdesign, and I know it’s true… so let’s read on…”. But unfortunately it proved to be much more than just a provocative sentence, since a few lines later:

In fact, nothing in Python makes it possible to enforce data hiding — it is all based upon convention.

OK. It took me a while to accept the argument that static typing can be too much of a cost in terms of verbosity compared to the poor protection it offers in terms of code correctness. But I said “OK, we’ll see how it looks when we come to real code”. But now they want me to forget about encapsulation too! What is the purpose of even writing a class then? What are you describing? A library of functions with a hidden first parameter? Is that it?

I mean, typing might be a unnecessary hurdle when writing unit test becomes much easier, but giving up on the behavior/state balance, the ability to describe what a class can do AND what it looks like, this is too much to ask.

So now what? Am I stuck between two extreme alternatives: either describe everything and waste energy doing it, or describe nothing a pray/ask for politeness?

And then I thought about LOP, and this interesting idea to decouple structure, syntax and semantics. After all, programming languages have entangled those three aspects for decades. And now both mainstream platforms (Java and .Net) are offering a variety of languages running on the same Virtual Machine. Isn’t that a first step in decoupling syntax on one side, structure and semantics on the other side?

Suddenly I’m starting to dream of a new syntax, far less verbose than the one of the Java programming language but with the same rigorous Object-Oriented structure, and the ability to run on all runtimes with different semantics…

What if the following Java code:

public class TodoItem extends Item implements Synchronizable{
    private String title;
    public String getTitle(){return title;}
    public void setTitle(String t){title=t;}
    protected boolean done;
    public TodoItem(String title){this.title=title;}
    public void check(){done=true;}
}

Could be rewritten like this:

+ class TodoItem > Item @ Synchronizable
    - title
        + <-
            return title
        + -> t
            title = t
    #done
    init t
        title = t;
    + check
        done = true

…or something similar ;o)

The key ideas being:

  • Keep all the key concepts of OOP: encapsulation, inheritance, polymorphism, composition
  • Remove static type declaration: I don’t care that my hammer has a wood or a steel handle, but I need to know it has a handle.
  • Replace long keywords by well-identified signs
  • Replace “{}” and “;” by indentation (Python-like)
  • Add simple property syntax (I love the way ActionScript does it)

In other words, I’m looking for a middle-path alternative between Java and Python, between waste and pray, between overdesign and politeness. Does anyone know of a language that offers that kind of compromise? Does anyone know if it has already been tested but has proven to be a dead-end for some reason?

Share and Enjoy:
  • description
  • Digg
  • del.icio.us
  • Slashdot
  • e-mail
  • Facebook
  • Google
  • blogmarks
  • Furl
  • StumbleUpon
  • Technorati
  • TwitThis
  • Reddit

Geek Culture, Language Oriented Programming, Model-Driven Architecture, Uncategorized , , ,

Flex, Spring and BlazeDS: the full stack! ERRATUM

October 17th, 2008

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.

Share and Enjoy:
  • description
  • Digg
  • del.icio.us
  • Slashdot
  • e-mail
  • Facebook
  • Google
  • blogmarks
  • Furl
  • StumbleUpon
  • Technorati
  • TwitThis
  • Reddit

Rich Internet Applications , ,