It can be said: I've quitted the freelance consulting business for a new position as "expert software architect" for a relatively large embedded systems company.
My main motivation for the change was me getting tired of working on my own. Of all the contracts I've done these last three years, nearly all of them were performed entirely in my Paris office alone, mainly for US companies whose representatives I've nearly never met in person (aren't e-mail and PDF contracts wonderful things ? :o)
Interestingly, I also did participate during this period to a startup that some of you may remember as Henzai. Technically, the project was extremely challenging; unlike what many of you probably think, it didn't consist in porting Gnome to Linux PDAs, but to design a very advanced and innovative graphics system and GUI toolkit tailored for PDA screens (and "keyboards", as limited as they can be)
But my most memorable experience was the team we formed. We, the three techies (and founders) in the company did really found a way to work extremely quickly and efficiently together. I guess that our skills simply matched each other, because we could do in a few months a lot more than I could have ever imagined. It's a kind of magic, that I hardly ever found in the various teams I had joined before (at the Unis and previous employers alike).
Of course, the fall of the "dot-com boom" stirred the end of the company, and we had to separate for distinct working lives after that. I quickly went back to my usual consulting job, but working alone wasn't very pleasant after this experience. Moreover, the "freeze" also meant that my choice of contracts was becoming a lot shorter and a lot more boring...
Hence, it was just a matter of months before I decided to look for a new job. Very fortunately, I had secured sufficient amounts of cash in the bank, as well as very small developments contracts to be able to very carefully select and negociate employement proposals during several months...
Very funnily, two distinct companies proposed me consulting contracts at the same time, while I was reaching a final agreement with my (now) current employer. These two proposals were both very interesting (since they allowed me to perform paid work on FreeType itself, among other things), but required that I continue working on my own as usual (or maybe move to a different country !!)
Believe me, my final choice has been very difficult to make. I ultimately decided that I needed to change my work environment though; obviously, I was missing the coffee- room smalltalk !
I've just started this month at my new position, and I must say that I'm extremely happy to have lots of new colleagues to talk to. It's extremely refreshing, even though I know that the novelty will finish to wear off some day :-)
Just to say that I couldn't have done all the things I've been through these last three years without the smiles and consent of my wife Mounira. Merci !! J'ai vraiment beaucoup de chance de t'avoir !!
There are chances that my new employer(s) might be interested in integrating FreeType into their own products, and this could be fun. However, they already have their own working solution to their problem, and it works pretty well even though it has its own limitations.
I don't think I'll try to force or convince them about it, replacing a font engine with another one that exposes a different API can be a very delicate thing to do in certain systems. One important thing is the fact that upper layers of the system might depend on un-specified bugs or "features" that cannot be easily reproduced with the new code.
However, FT could make it in later major versions of their software, where more drastic internal changes are possible. Something tells me that this won't happen too soon though.
In all cases, I continue to work on the engine on my free time. I have written a lot of new code, but most of it breaks the build since the internal re-design isn't completely finish. Seems that a few weeks will be needed to round the corners :-)
mathieu: thanks for you praise, but I'm certainly not as smart as you believe :-) To prove my point, I'll tell you that there is a subtle bug in one of the code snippets that invalidates some of the conclusions. (finding which one is left as an exercise to the reader)
Hey, that's just a draft after all ;-)
On the other hand, I have found some interesting relationships between garbage collection and cleanup stack management, as well as a method that could drastically reduce the number of push/pop pairs required to allocate memory safely when coding in an object-oriented way (and still with minimal interference with typical programmer's habits). This also means that the "invalidated" conclusion would still remain true (and be actually stronger)
Unfortunately, detailing all of this would take me at least four additional pages to the document, and I don't have the time to do that right now (don't ask me how I find the one required to write this mammoth diary entry :-)
On the other hand, you might be interested to know that I'm currently modifying the FreeType 2 internals to use CSEH. I'm doing this for at least two good reasons:
- it's easier than rewriting the library from scratch to use the MLib
- it's also easier because it doesn't need to deal with multi-threading (FT2 isn't thread-safe, and for very good reasons)
- it will provide me some real metrics regarding the code size savings and performance one would expect by using this technique instead of the usual "paranoid scheme" that is implemented in the 2.0.x family.
- these metrics will become part of the final CSEH document :-)
I'l probably post something here when this change is over..
Finally, I still live in Paris, so we could certainly meet there if you happen to come by. Contact me personally at my FreeType address if you want to. As you know, we also have one French friend in common that could be part of the meeting too :-)