On Leaving Borland

 Posted by at 12:33 pm  Work
Oct 212007

A recent post to the borland.public.delphi.non-tech newsgroup asserts that as a compiler guy, I shouldn’t be wasting my time doing anything else. This is my reply.

m. Th. wrote:

First of all, Danny, I’m very glad to see you here… :-) …but let’s start a little ‘short story’ (dunno if you remember them) ;-)…

Danny Thorpe wrote:

Yes, I’m now working on core infrastructure for the PicLens plugin in its plethora of browser/platform combinations: IE/Windows, Firefox/Windows, and Safari/Mac. Firefox/Mac is on the horizon and Firefox/Linux is on the wish list.

You forgot Opera.

It’s a little difficult to build plugins for a browser that doesn’t support plugins, wouldn’t you agree?

m. Th. wrote:

But, imho, you forget other thing, much more important: You are a compiler guy. (At least from Delphi 1 since I know you, IIRC). God knows if you are good or bad, but definitely you are a compiler guy, imho.

Your memory transcends delerium, or you have been grossly misinformed.

I did not begin dabbling in the Delphi compiler code until around Delphi 5, after there was no one left to work on the compiler. I saw a vacancy, and I stepped into it. While it is true that I had passion and vision for where the Delphi language could be taken, and some small success in working on the compiler, that is only a partial truth, a selective filter in the eye of idolatry.

The whole truth is that I have worked on a wide variety of stuff in Delphi and outside of Delphi, moving from one technology area to another by “following my nose” ala Alice in Wonderland. For as many areas as I have dug into in software, there are twice as many creative outlets I tinker with outside of software: woodworking, metallurgy, ceramic flux chemistry, cider making, and other fields that blend science and art.

One of the worst things you can do to a creative person is brand them with a label. A label is the kiss of death for cross-discipline creativity.

I left Borland and Delphi not for lack of interesting things to investigate next, but because I was no longer allowed to follow my nose to explore new directions. In achieving small successes with the compiler, I received the “compiler guy” label, and was suddenly too valuable to the project to be allowed to work on anything else. At the same time, Borland corporate made it clear that while the company was burning down around us it had no interest whatsoever in investing in Delphi to push the envelope and advance Delphi’s thought leadership postion in the tools industry. So even within the compiler coffin, there was no room to breathe.

Even in a brief discussion concerning my getting involved with the tools group spinoff later retracted to Borland subsidiary, the only thing Borland brought to the table was the “compiler guy” label. Why would I return to the cage I had just mustered the courage to escape?

m. Th. wrote:

My son, WHAT are you doing out there??? Looked at cooliris.com – just cool, but com’on Danny, browser plug-ins? Isn’t, of course, something bad per se (in fact not at all), but, again, AFAIK you, doesn’t fit to your way of being.

I’m following my passion and fulfilling my need to grow and evolve.

Clearly, that does not fit the guilded cage you imagine for me.

Clearly, you don’t know me.

m. Th. wrote:

Some small recommendations: 1. open your browser 2. type in www.codegear.com 3. Choose from the menu ‘About Us | Jobs’ 4. Follow the instructions on screen. :-) I’m pretty sure that there’s something for you. (A R&D engineer perhaps? ;-) – as you were in D2 times?…) Then you’ll find your peace of mind, imho. Or, more directly, speak with Allen. Just my 2cents, you know…

An invitation to roll back time – you are truly generous! Ah, to be 20something again. To be a wide-eyed junior engineer working with Anders and Chuck, Gary and Zack and even Philippe, redefining the development tools playing field in perilous and exciting new directions.

Very tempting, your offer. Doubt it, I do. 20something, I am not. Borland of 1990, Codegear is not.

Time marches on. So shall I.

  16 Responses to “On Leaving Borland”

  1. Indeed. Working on the Pascal/Delphi team was an incredible experience. I was (just barely) a 20-something myself when I started. As tempting as it sometimes seems to seek a return to those days, those days just aren’t there to return to.

    There were times when I often thought the Delphi team ought to secede from Borland and start a new company, not necessarily to do Delphi, just to do SOMETHING, because we worked so well together. That might have been fun. I have never yet found another team like that.

    So we all just have to find other ways of changing the world.

  2. Danny:

    I completely understand and I agree with you 100% about the stupidity in putting labels on people. Humans are very complex, you can’t just say you are X. Because you are X, Y, Z, a, b, 1, # and on and on.

    It looks like wishful thinking, but I’m sure the sentiment in this guy’s post (which in a way I also share) is that it would be GREAT for the Delphi community if you went back to CodeGear (OK, technically it wouldn’t be going ‘back’.) It may be a selfish thing to wish for.

    Please don’t take that as criticism. On the contrary! You did such a great job that people still long for the days when you were still there.

    I appreciate that you gave us some details about the reason of your departure from Borland. Can you share the same about Google and/or Microsoft? I bet it’s probably along the same lines…

    All the best,


  3. Funny, how many times have I written your name down on my top 10 hires for any company that I’m either working for or starting that has the “Kernel/Core Architect” label next to it!

    With that being said, I totally agree about being boxed in. Personally I think people saw your departure as the absolute end of innovation in Delphi, and therefore the general angst that was and still is – apparently – being focussed solely on that single event. Everyone felt the immenent priority shift and the bastardization of the platform. When you told me you were leaving I actually said “that makes sense!”

    Anyway, my best to you at CoolIris and you remain on my top 10 list, but I’ll have to change the role to “????” :)

  4. C’mon Danny, I’m sure if you give it some thought, you’ll realize that what you really want out of life is to return to the cubical days with Rob, Takashi and I, writing test suites for Eberhardt. No? :)

  5. Hi!
    I love the work you have done for the Delphi product. Would you work for Lazarus/FreePascal?

  6. Hi Ralf,

    Between CoolIris and taking care of the farm, I’m fully occupied. If/When I get to a point of financial independence, it seems likely I might dabble in language design and compiler implementation again, but quite frankly Mono C# is more likely to draw my interest than FreePascal. Never say never, though. ;>


  7. To be honest, I hate the concept of managed/jitted code. I am a fan of native code. Nearly all of the fpc folks are “financial dependent”, but they have a lof of fun! …it’s like using drugs working on the fpc project :-)

  8. Ralf,

    True, managed code does have different challenges than direct native code, but the main attraction to .NET is not the managed code, it’s the breadth and depth of the runtime. It’s intoxicatingly powerful.

    Is FreePascal still independent of glibc?


  9. Not sure. gtk is using glibc.

    I can recommend you this wonderful piece of software:

  10. Well Danny,

    as a Turbo Pascal (1988) and Delphi developer since version 1.0 in 1995 I don’t know what to say about that. I know that I cannot count how many tips, articles and etc “from Danny Thorpe” I’ve read.
    I can understand why a lot of brilliant minds are leaving/left Borland…. I just can’t understand the M$ “mermaid song”. C# isn’t the 8th wonder.
    Anyway, you will be missed by the Delphi community!

  11. Hi Alexandre,

    Well, it wasn’t the MS “mermaid song” that lured me away from Borland. I left Borland because of Borland, and took up employment at Google. Oddly enough, my being at Google made me much more attractive to Microsoft than my being at Borland. And I’ve since finished the project I was hired to build at Microsoft and I’m now at a startup. Again, no MS mermaid song. And in none of these projects have I had the luxury of working in C#.

    Thanks for the note,


  12. Yes, FreePascal and Lazarus are like a drug. My story with that products are so:
    Year ago I started with converion of our commercial component. I was very impressed of how close lazarus and freepascal are to delphi. From that moment I forget all my other tasks and start contribute to lazarus. Now I am in team and I am rather happy. I was not involved in development with team of well skilled programmers from different coutries before.

    Danny, I think if you try to contribute to FreePascal you will never end :) You have and skills and knowlege and experience. Just give a try :)


  13. > Is FreePascal still independent of glibc?

    Since v2.0 (actually beta 1.9.2) the RTL can be compiled to be both, using a define. On Linux and FreeBSD syscalls are still the default, on Mac OS X and Solaris libc.

    Haven’t had too many problems with syscalls since fpc went through the multi architecture thing (where a lot of old x86 only syscalls got cleaned up), and it makes basic deployment a lot easier.

    Widestring and thread support are plugged in via a manager construct (resp cwstrings and cthreads), as is optionally libc compatible memory management (unit cmem).

    And yes, it is an habit. It also got way more fun since 2.0 started betaing, the multi arch support started working and the project really started to take off. At the same time Lazarus was maturing, and people started porting more and more Delphi apps and libs.

    P.s. something that has always puzzled me, what was the reason to make unit libc the primary OS dependant unit, exposing each and every detail of libc/kernel ?

    Was it a conscious decision to not add some minimal abstraction layer to make OS dependant code at least a bit of libc/kernel versioning (and exact OS/arch) independant, or was it just limited time in the project?

  14. Hi Marco,

    Thanks for the info on FreePascal.

    >> What was the reason to make unit libc the primary OS dependent unit, exposing each and every detail of libc/kernel?

    We created the libc unit as a Linux analog to the Windows unit – it is explicitly platform specific, and anyone (code or coder) using libc or windows should realize that they are creating a platform dependent reference in their code.

    You can write platform independent code in Delphi by being careful to restrict yourself to the Delphi RTL and not make use of OS specific calls. At the same time, we made sure that you have the option to make platform specific calls as much as you like, so that you do not have any artificial restrictions on what kind of app you can build with Delphi.


  15. I got the basic portability premise, but that’s not what I meant. It is more about *nix RTL engineering to be a bit future proof. (my interest stems from rearchitecting the FPC Unix rtl for the 2.0 series for better platform and architecture independance in dec 2003)

    It is simply that _unit_ libc is simply nearly impossible to port, and then I don’t mean Win32, but even to a modern Linux, or Linux a different architecture (now that 64-bit is getting more important). Let alone a different *nix.

    All kinds of stuff is mashed together in one unit with a lot of different portability aspects.
    – general posix calls
    – Linuxisms (like stat64)
    – arch dependant stuff (64-bit, either Itanium or x86_64 must already have been on the horizon then)
    – Kernel 2.4 specific fields in structures

    So in summary, the libc unit only worked on linux/x86 2.4 (and preferably the 2.4 it was translated from, the kernel dependancy comes from pulling in asm/ headers I assume).

    At least to me this was blatantly obvious from the start, and the original question was more if you guys realised these possible issues at the time or not. I would have separated the lot in general unix and “rest” (Linux or arch) to start with, just to avoid that people lay a dependancy to the messy unit just for a lstat() or so.

    This could have caused some easy to avoid problems if Kylix had taken off very strongly. (and represented a lot of ifdeffing for us in general FPCDelphi/Kylix codebases like Jedi, Indy )

    I do see of course that I’m a bit sensitive on this point though, since I was primarily a FreeBSD user (and maintainer) at the time, and the fact that because of similar errors I had to clean out a lot of Linux kernel 1.xisms in our own RTL. (and e.g. the FPC 1.0.x Linux rtl was never _fully_ ported to the other *nix targets like *BSD and Solaris and linux+netbsd on m68k because of similar issues. The main reason to avoid this in the 2.x rearchitecting). On FPC unit libc is marked Kylix-legacy and linux/x86 only for these reasons.

  16. Yes, we were aware at the time that we were tossing a lot of different things into the libc bucket, but we weren’t creating libc for all possible Unixes, we were creating Delphi for Linux. Shortsighted, yes, but also necessarily pragmatic.

Sorry, the comment form is closed at this time.