Beware, this is a huge entry !!
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
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
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
- 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
- these metrics will become part of the final CSEH
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 :-)