WWDC 2010 Review

Still one session to attend about closures in Objective-C, and I’ll call it a week. A little bit of shopping this afternoon in order to spend my last dollars and I’ll be ready for take-off tomorrow afternoon. So it’s time for a little summary of this week.

Overall, it was my first WWDC and I’m very glad I did it, but I probably won’t do it again. San Francisco is definitely a very nice city, and seeing Steve in live, even from very far away in the audience was an interesting experience. I also learnt a few very interesting things and psychologically a conference like this always has the same side-effect on me: first I’m depressed and humbled by all the ambient intelligence, but then it motivates me a lot to move forward, learn and do something about it. So it has definitely been a very positive experience.

Now was it worth the budget I put in it? (more…)

betRway is Back!

To all my French-speaking readers… A tous mes lecteurs francophones, je viens de relancer le projet betRway avec un nouveau post sur betRway.com. N’hésitez pas à aller y faire un tour, à laisser vos commentaires et à bookmarker le site. Vous pouvez aussi suivre le projet sur Twitter.

Here Comes Grails APNs Plugin

That’s it. I’ve released my first Grails plugin ever. Woooo! Champagne!

If you follow my Twitter feed, you’ve probably noticed that I’ve been playing a lot with Apple Push Notification service lately (APNs for friends). Indeed, ConferenceGuide still requires a data connection, which can be problematic on a lot of events because they’re usually abroad (and roaming fees are waaaaaay too expensive), and even when you do have a data connection, it’s usually pretty slow… at best. That’s probably why one of the most requested features for ConferenceGuide is Offline Mode.

But getting all the data directly from the server does have at least one advantage: you’re always up-to-date. And experience has shown that sh** happens: sometimes sessions are cancelled at the last minute, or a global sound mixer reboots out of nowhere, thus shifting all sessions by 15 minutes. Those of you who were at Devoxx last November know what I’m talking about. So I needed a way to combine the best of both worlds: being able to browse schedule and speaker information without a data connection, and still get updates whenever something changes and I can find a wifi hotspot or something.

The first part of the solution is the local database. The second part involves sending push notifications. The problem with the latter is that the API provided by Apple is pretty low-level and the documentation is rather scarce. And it’s understandable because they expose a service that should be usable by any server technology, whether it is Java, .Net, PHP, Rails, etc. Fortunately, Java has a huge community and a great Open Source spirit, so it wasn’t long before a few projects were created to build an abstraction layer on top of APNs API. The simplest and most documented one I found is java-apns by Mahmood Ali. But ConferenceGuide server is not plain Java. It’s Grails 1.1 (I haven’t taken the risk to migrate to 1.2 yet). So I wanted to ease the integration of java-apns into any Grails application. And voilà! Grails APNs Plugin.

Special thanks to Burt Beckwith for helping me get started, and Mahmood Ali for developing java-apns!

Knowledge Management: It’s All About Granularity

In my pursuit of the ideal collaboration platform, I’ve tested a few knowledge management systems lately: Knowledge Plaza, Seemy, a combination of del.icio.us and Twitter. And those tests were very interesting because they allowed me to spot the main common problem they all share.

How many times have I heard that the Google Wave presentation is too long, leading people to simply not watch it at all? How many times have my friends complained to me about the length of my own blog posts? The granularity of information on the web is simply too big. The web is all about resources, and there are billions and billions of these resources out there, and what makes it even harder to process and integrate them is that each resource mixes a lot of different information items.

And for me, THIS is the nightmare for my technology watch, and for knowledge management as a whole. You can comment on or share whole web pages through links, whole Youtube videos through embed codes, whole discussions through podcasts. But what if you want to extract what is to you the essential part of a blog post, the funniest moment in a video? Well, let’s say I don’t know any solution for that.

For my everyday technology watch, what I would really need is a knowledge management platform that allows me to select small chunks of information in text, video, audio or images, and then tag those chunks, comment on them, and store them somewhere in the cloud for sharing them with my friends or colleagues, or simply keep them for myself for later reference. All of that while keeping a link to the full original resource of course. That would be awesome!

Now of course because I love to solve problems, my next move is to think about a solution. I don’t know any existing system that does that, so if you do, please tell me about it. Now if it doesn’t exist, we have to invent it. And the way I see it, there are two main aspects to this system.

SandThe first issue is how do we capture excerpts out of web resources. If we want to make it as simple as possible, we need to integrate deeply with a web browser in order to create a natural user experience based on drag-and-drop selection, keyboard shortcuts and so on. This is why I’ve tweeted about me looking for a Firefox extension developer to help me out: I’ve never developed any Firefox extension myself, and I could learn but (a) it would take much time and (b) I’m not fond of Javascript. So once again, if someone out there is a Firefox extension developer and would like to collaborate on this experiment, you are welcome. Let’s try first with text, we’ll see later for other kinds of multimedia content.

And the second issue is how do we store and present all this information in a highly usable and intuitive way, without being too disruptive, without inventing too many new concepts. This part I can handle. I already have a few ideas.

I think before the Internet, there were technology watch departments in companies, whose job consisted in cutting out paper pieces in newspaper, pasting them and composing press reviews with comments and writing reports about what competitors were doing. Nowadays, it’s as if we just gathered full articles or newspaper pages, videotapes, full interview transcripts and just put small post-it notes on them. It’s just too rough, not pre-chewed enough, not efficient enough. And as always, there’s gotta be a better way.

What do you think?

Digital Marketing First… Oh my!

I was at Digital Marketing First today. I was invited by Alexandre Colleau from Belgium-iPhone to participate in a panel discussion about iPhone application development. But the presentation was only at 2PM so I decided to walk around the booths before. And I was very disappointed. After hearing someone from eMakina claiming that you can take your blood pressure just by touching the screen of your iPhone, and seen many email marketing vendors claim that email marketing is the future… well, I was disappointed. And then there was the panel.

The discussion itself was pretty interesting in itself. 9 iPhone developers, from hobbyists to professional, from App Store applications to pure B2B stuff, from highly-successful to eternally rejected VOIP apps… very interesting. But what was really astounding for me was after the presentation: people from the audience litterally jumped on us, asking for business cards, asking questions, talking to us about their projects. Luckily for me, I had prepared a bunch of cards, because I secretly hoped that this participation would lead me to a few project opportunities. But I sincerely didn’t expect the demand for iPhone developers to be so high.

So yes guys: I do iPhone development too! In fact I love it, even better than anything else. It’s fun, innovative, and solves real problems. And even better than that, since I do java development too, I can help you design your whole infrastructure. Ain’t that awesome? And even more: if you need a desktop client that is cross-platform and allows you to reproduce some of the functionalities of your iPhone application, I can do that too.

Anyways. I had the opportunity to talk with very interesting people about very interesting projects and it should lead to a few very interesting freelance missions. What a productive day! And a big thank you to Alexandre Colleau!

Enough Big Talk, Let’s Get Pragmatic

First off, by january 2010, I’ll be a freelance software architect and developer. After 4 years at Axen, gathering experience, building up my network, figuring out who I am and what I want, this is just the best way to go for me right now. The best way for me to solve real problems in this world. I won’t let anyone down, I’ll do things properly and it won’t happen overnight, but I’m moving on.

Which leads me to my second point: I’m actively looking for new challenges, new projects, new problems to solve. Productivity, user experience, mobility, modularity those are the problematics I’d love to help companies with. All things Java, Grails, Flex, iPhone SDK, OSGi, this is my toolbox. High level of intervention, coaching and technical leading, architecture, start-up CTO, those are the roles I’d be happier with. So if you have something along these lines, or simply questions you would like to discuss with a software passionate, my resume is here in English and French, and you can contact me here.

And since one of my motivations for going freelance include being able to meet more people and share more, I’m already going to participate in a few upcoming events:

  • Wednesday, October 21st, I’ll be at Betagroup to hear about Belgian startups
  • Thursday, October 22nd, I’ll be at Digital Marketing First, and I’ll be one of the 9 iPhone professionals answering questions in a panel session
  • From November 16th to 20th, I’ll be at Devoxx in Antwerp
  • On November 23rd, I’ll be at TEDxBrussels in European Parliament

So let’s meet, share and… solve problems!

A New Experiment : eXperts UnLimited

I love technology watch. I could do that all day. Browsing my RSS feeds, discovering new technologies, reading strong opinions, commenting here and there. And I love answering questions too. Do you know a way to download any Flash video? Which solution would you choose for our messaging problem: Oracle queues or a custom messaging system? What are the pros and cons of Flex, Silverlight, JavaFX and AJAX? What do you think about Unit Testing? I would love to answer technological questions all day.

But I’m a geek. I don’t do that all day. My day job is to develop software. And even though I plan to change that very soon, more often than not, I’m not really convinced what I’m doing is needed. And a lot of customers I work for wouldn’t think that reading blogs, writing articles and chatting with fellow geeks is valuable work… that is until they come to me with a “what’s the better way to …?” question.

What if I could do that all day, or at least earn some of my living doing that? And I know a few guys who would really love to do that too. That’s why I’ve just launched a new public experiment called eXperts UnLimited (XUL). If you want to know more, or if you have questions or suggestions, feel free to leave a comment there.

How Open Source can be a Game Changer

A few years back, I read a very interesting article (that I can’t find anymore) by John Newton, the CEO of Alfresco, explaining how Open Source changed their strategy. Of course, one of the main interests of having an Open Source version of your product is to expand your market by making it more accessible, thus creating opportunities for high-value services such as training, customization and so on. But beyond this shift in “how do we make money?”, he explained that it totally changed the nature of their salesforce. When you sell that kind of enterprise system, the best way to get potential customers to know and see your product is to invest a whole lot of money in marketing and sales. And you end up with a sales cycle of several months between the first prospection call and the actual sale… when it goes through. No wonder why license fees are so expensive for that kind of product, making it even harder to sell, increasing the length of the sales cycle, and here goes the vicious cycle.

Having at least an Open Source version of your product completely changes that because people who don’t have the checkbook but will eventually use your product can try it on their own. Maybe they’re working on personal projects, maybe even Open Source projects, and they can install and use your product for free. Then if they like it, they are more likely to go see their boss at work and recommend your product. In other words, you can replace a big chunk of your very expensive salesforce by free happy end-users and their recommendations. Hence not only does Open Source change how you make money, it makes it possible for you to save money where it’s not that necessary, and focus a lot more on your core business: building a great product.

But the way I see it, there’s another very important change with Open Source. As I said before, when your business model is based only on license fees, you focus most of your attention on your salesforce, which costs a lot of money, which makes your license fees so high that it is very likely to represent a big investment for your customers. So your salesmen end up attacking prospects at high levels of management. The problem is that the guys who have the checkbook also have very different concerns and priorities compared to the people who will eventually use your product. Let’s say you are building a software project tool suite with things like issue tracking, source control and so on. You try to sell your product to companies who do in-house software development, and the people who will eventually use your software are developers. But you don’t talk to those guys directly because they have almost no decision power, especially when it comes to spending several hundreds of thousands of euros for software tools. So you talk to their Program Manager or VP of Software Engineering or CTO of some sort. And all of a sudden, you realize that those people have concerns like keeping things under control whatever happens, minimizing risk (whatever that means), reporting, making sure that no developer does anything on their own, and so on. So of course, you will implement features to satisfy those needs because you want the big guys to be happy.

Now let’s go back to the Open Source alternative. If you hope that developers will use your software on their own project, find it cool and then go back to their boss and say “we should have that”, you’re not talking to the same people. It really makes things straight again because you’re back to consider end-users’ concerns first. Developers want tools that don’t get in their way, that allow them to save some time, not waste it, that are integrated in their development environment, and so on. My point is that an Open Source model does not only change where you make money, or how you balance your own investments. It can also change your whole product itself by changing whom you’re talking to.

Now of course, I’m opposing 2 strategies here: the traditional top-down approach that forces you to focus on upper-management priorities versus the Open Source bottom-up strategy in which end-users are the ones you have to convince. And I know that this kind of 2-way alternative is likely to create controversy because project managers will read this article and think “but we need reporting, we need control, we need power!”. Now of course you know that I don’t agree with this obsession for power and control as it is associated to the software engineering mirage. It’s like the big guys couldn’t stand the IT guys anymore, with their strange language and culture and so on. So they irrationally tried to isolate us from them with layers and layers of project management and control. But they lost a great deal of intelligence in the process and they’ve created a whole generation of frustrated developers who just execute what they have been asked to, even when decisions are made by people who don’t understand a damn thing about what software is and how powerful it can really be. And of course, big old-school software vendors have created opportunities out of this mess and we’re all forced to work with their products now. But hopefully, Open Source is already changing that, it is participating in a movement of IT empowerment, together with Agile methodologies, that will lead to more intelligent uses of technology and fill in the gap between business and IT.

Now to conclude, I’m not saying that management is totally useless. YES, we have a strange culture and a weird way to look at things. So YES, we need people to help us interface with business people and teach us how to do it ourselves. NO, the solution is certainly not to reduce our field of action to the minimum but YES, we need people who understand both the power that we have AND the big picture of what is necessary, and are able to make them coincide. And YES, this mission might require additional features in the tools we’re using, for things like reporting, prioritization and so on. But those features should never conflict with our concerns as end-users, they should never get in our way to building better software. But the good news is that there are very clever ways to do just that: have a look at Mylyn, or FogBugz. And of course, I myself am thinking about bringing my own contribution. So stay tuned…

Now I would love to try an experiment and use comments on this post as an informal survey. So if you are a software developer, what tools are you using at work for things like source control, issue tracking, documentation management, and so on? Do you like those tools and why?

MooPlan 1.0 is out!

Yesterday evening has been  quite a night. I was watching a movie with a friend of mine when my cell phone rang, with a US number on screen.

Hi, I’m calling from Apple. I’m finishing the review of your MooPlan app. But I just miss a few things before it can go on sale.

I sent the application for review about a week ago, and 24 hours after that, I received feedback from Apple requesting me to modify 2 icons that infringed Apple’s trademark. No big deal, the app was resubmitted with the hour. And then I didn’t have any news for a whole week, and I was not worried because I had read so many people complain about the slow review process and the impossibility to get in touch with anyone inside Apple.

And then BOOM! A guy from Apple calls me twice the same evening, just to get my application in store as fast as possible. And a few minutes after the second call, TADAAAA! MooPlan 1.0 is ready for sale. Isn’t it great?

So ladies and gentlemen, it’s my pleasure to announce that my first iPhone application is on sale, and you can get it here for $0.99 or €0.79. If you want to know more about what it does, head to the official website.

Just a few thanks:

  • Special thanks to Groovy and Grails communities for producing such a great productive Java platform that allowed me to focus on the iPhone side of things. Grails was really ideal for me: RESTful services are so easy to build, and scaffolding is just great to quickly produce an administration interface. And it was so fast to learn! I didn’t know anything about Groovy and Grails 6 months ago. And thanks also to Guillaume Laforge and his buddies for the tweets.
  • Thanks to all my friends and colleagues who tested the app: Frédéric Navarro, Mounira Hamzaoui, Clément Mary, Geoffrey Bogaert, Thomas Le Goff, Quentin De Mot, Louis Jacomet, Jérôme Vanden Eynde.
  • Thanks to my employer, Axen, for supporting me in this self-training effort.
  • Special thanks to my Geekette friend, who beared with the movie interruption and supported me for the final steps. Hopefully in a few years, we’ll laugh about this screenshot.

So that’s it. I have the feeling that this release could be the beginning of something big. I feel it in my guts. Now it’s up to you guys. And as I read it in a German restaurant last week-end.

If you like it, tell others. If you don’t like it, please tell me.

Hello MooPlan!

logoHave you ever tried to organize a meeting or a gathering of some sort, whether it be for business, a birthday party or something like that? Well, if you have, you have certainly experienced the pain of finding the right moment when everyone is available at the same time. When one is available, another one is not, and vice versa, and then people change their mind. Really painful.

Fortunately for us, there are solutions on the web. One of them, and the one I use all the time, is called Doodle. Basically, what Doodle allows you to do is to set up some sort of a quick poll, saying “I want to organize such event and I propose a few time slots”. When your poll is created, you send an email to all the people you want to invite, with a link to your online poll. Invitees go there, check boxes to say if they are available or not on each slot, and once everyone has answered, you can determine which slot is the best option. All good, right?

Well, this solution is better than nothing, but it still has 2 major shortcomings. First off, it’s not integrated with anything like your mailbox, your address book or your agenda, which means you have to enter all the information manually, and invitees have to check their agenda manually too. Second, it’s on the web, which means that you can only organize meetings or check your availabilities when you are connected. Those shortcomings have a very important consequence: it can take an awful amount of time to get everyone to reply and send the final invitation, which means that the first invitee to answer might not be available anymore by the time your send him the final date… and we’re back where we started.

I use Doodle a lot, for business meetings, for Poker games with friends, and so on, and I’ve seen that happen a lot. And boy it’s frustrating. Then a couple of months ago, I was playing with my iPhone and I thought “Wait a minute! I have my calendar, my emails and my address book in there. Wouldn’t it be nice to integrate all of that to make it easier to set up gatherings?” Guess what! That’s what MooPlan does now!

So let’s see what it does. It’s a simple 3-step process:

  1. The organizer sets up a meeting, gives it a title, a description, invites a few people from his address book and proposes a few time slots. Then he sends all of that to MooPlan which dispatches invitation emails to everyone.
  2. Every invitee gets an email with a link inside. If they are reading the email on an iPhone, they can click a link to install MooPlan application from the App Store, if they have not already done so. If they have, they can just click the other link to open the invitation directly into MooPlan. They click on the slots on which they are available, and they reply.
  3. Back to the organizer, who sees how many people have already replied. And when enough people have, he just chooses a time slot, clicks “Send Final Invitation”, and BOOM! All the invitees get another email with the final date, location, and all the details of the event.

Now I know what you’re thinking. How is that better than Doodle? Well first, it works on your phone, natively, without any weird web interface, so it’s very easy to use, and you can organize meetings and reply to invitations on the go. Second, it’s already integrated with your address book and your emails. Now of course it still misses integration with the most important part: your calendar. Wouldn’t it be awesome if MooPlan could automatically check your availabilities, or create events in your calendar? Sure it would, and the good news is that MooPlan will do just that… once those capabilities are available for iPhone native applications. And with all the fuzz going around concerning the next version of iPhone internal software, good stuff is coming, that’s all I can say for now. This is just a first version.

When is it going to be available? Well, not tomorrow. I’ve just completed the first full cycle, but there are still a few things to fix, and a lot of testing to do. I don’t think I will be adding any new features in this release, even if I have plenty of ideas. Hopefully, I’ll be able to send it to Apple by mid-April. So stay tuned…