A lot of the software I really admired in the early 2000s was developed by single persons using Delphi. It seems to me like there is (was?) something promoted by a Delphi environment that is rare to find elsewhere, that lets people (a) quickly prototype cool stuff, and then (b) sustainably grow it into a mature product as it gains users. I wish I cared enough to learn it, but there's so much else I need to learn first!
As a kid I remember I was lost in all that OOP, window handles and stuff, and could never do anything. Delphi was like assembling Lego. Very similar to QtCreator.
Yeah, but on the other hand Microsoft also offered Visual Basic which was definitely easier to use. The code wasn't as fast, but it wasn't a snail as MS added a compile option (to p-code if I remember correctly) in version 4.0.
To be honest, VB.Net was a very thin veneer of VB on top of the .Net runtime. It was not good. All of us that were doing Delphi quickly jumped to C#, because it felt a lot more grown up. The only truly terrible products I have worked on after ,Net came on the scene were ones where VB developers decided to use VB.Net to make something "more modern."
I noticed this as well in the 2000s. Stuff like WinHex which I was pretty sure then was written using Delphi. Was into RE during those days, so I used to poke around the internals of software just for fun
Ran into this quite a bit while working on Wine, too. Start digging into a program's behavior to fix some Wine bug and, "oh, huh, it's another Delphi app."
The GUI builder was more powerful than the one provided by VS, from what I remember (20+ years ago since I've dabbled in it). I really miss that era. In certain circles you could open an application and almost get a sense as to who built it due to the craftsmanship / UI / attention to detail in the placement of the elements in the application, etc.
Perhaps a better way to look at it would be to say that Visual Studio had a resource editor UI, basically a frontend to a resource file - that's it.
In contrast, Delphi provided you all the UI code by default, so even if you did not write a single line of code, your program ran and displayed a window or dialog with all the UI elements you could interact with. This was a higher level abstraction (one could argue VS did not even have an abstraction - you still had to code your window procedure from scratch. MFC was the first real attempt at simplifying UI code, but you still had to write code...).
But it did not stop here: it was trivially easy to add a database "connection" to your app (IIRC it was represented by a UI element that was not actually displayed), just provide the connection parameters, connect it to a complex UI element like a table, and voila - you had a live database view within 5 minutes.
Yeah, a lot of non-visual components still require (or want) you to drag-and-drop them in the builder and edit many or most properties there. It's a weird thing to adjust to, and it often leads to a very cluttered view if you have a lot of them. Conversely, a cluttered view with a ton of non-visual components can be a very easy-to-spot signal that you might be trying to do too much in one screen.
Not only has MFC never been at the same level as OWL, unfortunately to this day other than the short lived C++/CX, they never shipped anything comparable to C++ Builder, which shares the RAD tooling with Delphi.
Even doing COM in Delphi/C++ Builder feels more ergonomic than any of Microsoft endless C++ frameworks for COM/WinRT.
I keep a Windows VM for one app that is a commercial Delphi program for embroidery editing. It's been around for 30 years and is on the path to getting cross platform support soon with recent GUI revisions. Always been pretty solid for a product from a small team.
The RAD environment makes it insanely quick and easy to throw together a reasonably functional desktop app. Think WinForms on steroids. For all its age and the many cracks and seams, it's still very fast, easy for beginners and pros alike, and the final executable is a single tiny file (usually)
I really find it mind blowing nothing else from what I've seen has really replicated it. Qt does an alright job but everything just seems to take 50% more effort to get it do the same.
Sadly it was a very lousy port, if I remember correctly instead of properly supporting Linux, they used Wine to make it work, thus it had quite a few issues.
Secondly, it was trying to sell developer tools to a community that rather spend one month coding an alternative than pay regardless if it is a Starbucks XL cappuccino they would be losing.
> if I remember correctly instead of properly supporting Linux, they used Wine to make it work, thus it had quite a few issues
Only the IDE was using wine, the deployed applications were native. But the IDE was a bit annoying because of that.
> Secondly, it was trying to sell developer tools to a community that rather spend one month coding an alternative than pay regardless if it is a Starbucks XL cappuccino they would be losing.
You forget, it was after Borland renamed itself to Inprise and wasted all their cash on UML diagram software and other enterprise stuff. So it's not a Starbucks XL cappucino, it's more like a truckload of those.
Also they sold it separately from Delphi, so you ended up paying twice to do cross platform development. It started at 2 x 1k, i think. So 550 to 600 Starbucks XL cappucinos at 2001 pricing.
Besides Starbucks is overpriced, so maybe 900 great coffees from that noname place you accidentally found out about...
Yes, I am quite aware that Kylix price wasn't a cappuccino XL, however the point was that it would not have helped even if it was, given the prevalent culture.
The first version I used was one of the previews, where the IDE didn't actually work and all the code was compiled from the command line. Kylix 1.0 was "okay", but it quickly became impossible to use because Linux moved on.
The one I thought was bad was the .Net port. Delphi.Net never really got past version 1.0 of the .Net framework because, and this is anecdotal, I heard the compiler abused something in the metadata system that .Net 2.0 no longer allowed and the compiler jus stopped being able to build valid assemblies. They literally wouldn't work anymore because the class loader wouldn't load them under .Net 2.0. If you know anything about .Net, tis is pretty fundamentally poor engineering, because .Net runtimes almost always can load older framework code with the right components installed.
Delphi is definitely something I'd put up there with LispWorks, a really excellent example of what polished developer experience should optimize for. Even though it's not real live coding like LispWorks, you could see your UI evolve with your classes, without sacrificing drag-and-drop editing, and without having to do it in another language. Everything is seamless, and the libraries are all extremely well thought-out. I think clisp is a nicer language than opascal, but Delphi is still really good software.
A relic from an era where commercial toolchains dominated. Tools for serious corpo Engineers born riding the coked-up excesses of... I think conglomerates were capital's darling at the time?
Lazarus still exists; but SBCL badly needs an CLIM (MCCLIM better) based GUI REPL for the good (Listener and such, a la Smalltalk). Everyone can just use Emacs/Lem and then for GUI needs, the Listener/Debugger/Viewer interface.
Last time I tried Delphi Community Edition, I had to give them my email just to download it, then when I tried any of the templates the IDE showed, it wouldn't build at all, don't show me a template if it doesn't work.
I received an email from someone asking how I was liking Delphi, I naively responded with my issue, but quickly realized he was just trying to sell Delphi. I would have bought Delphi over the years if they had a personal license for $99 or something, I am not investing thousands of dollars on a software where the free trial blows up out of the box (not intentionally it seemed).
I would have bought something like Turbo Pascal today. The minute they did away with Turbo Pascal I feel like they basically marked themselves as a legacy only company, I don't know anyone who is using them for net new projects that wasn't already all in on Delphi, you don't see new startups using them anyway. Had they kept Turbo Pascal, I do wonder how much more prevalent they could have been compared to now. It's still a solid way to make a native GUI.
I've used Lazarus, very dated and doesn't look and feel quite as polished, there's been a lot of modern IDE advancements and none of them have made their way to Lazarus.
I can assure you that Turbo Pascal in Portugal was a bit more than that, because around 100 euros in today's money was the price with students discount.
I could have sure, but it was for an account, and I can always unsubscribe or ignore them, doesn't phase me, I have like 20 gmail accounts that are old enough to vote, drink, and who knows what else
My favourite Delphi program, and the one I learned to program with, was Dev-C++ (https://sourceforge.net/projects/dev-cpp). AFAIK there is a more recent fork, but I also clearly recall the 4.9.9.? versoin number from back then. It was very fast (including startup). I enjoyed it a lot back when I was still on Windows. Funny that Delphi was used to create a C/C++ IDE.
It is funny that while I learned about Dev-C++ during my university course but it was mostly considered a joke by anyone that used Linux (including myself). I think the issue was because it shipped with a really old version of GCC even at the time, so something that compiled on it had lots of issues running in the more recent GCCs that Linux/Ubuntu used (including the teacher for this particular course).
Ah I remember Dev-C++ - not bad for simple stuff, but I tried using it to import a Visual Studio project (which worked) but it wouldn't compile due to it not having any compiler intrinsics headers.
I gave Delphi a shot, but after setting up my account I got a few phone calls a few days later about it to sell me on it. I was genuinely surprised companies still did that in 2024/2025.
It's 90's tech. Their business model is selling expensive subscriptions to keep legacy projects alive. I was at one of the conferences in my country and the average age of a developer was about 60.
There’s always FPC and Lazarus if you don’t want to mess with proprietary Embacadero stuff. It’s not 100% the same, but it’s a pretty good equivalent that uses the same programming language (Object Pascal), has a UI builder, and all that. It also supports more platforms and even embedded development.
The IDE experience, they are the ones driving the language evolution, FreePascal follows, and the industry that cares about Object Pascal, usually only cares because of Delphi.
Don't get me wrong, FreePascal is great, but it hardly has a presence at big corporations.
If they no longer use Delphi, means they have long moved into either Java or .NET.
> they are the ones driving the language evolution, FreePascal follows
That is not the case, Free Pascal has improved the language before Delphi and Delphi followed, e.g. FPC added generics before Delphi and more recently it implemented management operators before Delphi.
One big annoyance though is that when Delphi does decide to implement some language feature introduced by Free Pascal they implement it using an incompatible syntax which is petty (at best). FPC then has to support both their own syntax (usually in OBJFPC mode) and Delphi's syntax (usually in DELPHI mode) to let people share code between FPC and Delphi.
I used briefly some 8 years ago, it is very good for getting full-native (including native UI toolkit) cross-platform desktop apps. It can build self contained binaries that just work.
My use-case was building a simple USB-stick-portable application for windows and it was great for that.
Over the past year, I've replaced quite a few of my Tcl/Tk GUI apps with versions built in Lazarus. Lazarus 3.x was a bit quirky for my tastes, but 4.x has been very good.
It's not quite the Delphi experience, but it's close enough that I could see myself using Lazarus for day-to-day development and being fairly productive with it.
It improved a lot and it is good. On Linux I think the default way to go is still Lazarus. But with Delphi you can buy more shiny polished things on top. So for commercial use Delphi is more relevant. And there are enough differences in compatibility, so you most likely don't want to deal with both at the same time.
Lazarus does not support BPL. Android and iOS support are under question. Free Pascal devs for many years did not look into Ada, and looked into C++ more, and that made Free Pascal ugly. Delphi did not look into Ada either, but they looked into .NET instead, and that made Delphi not as great, but better than Free Pascal. Anything is better than C++. Delphi delivered controlled types, that was IIRC for many years in top 10 feature requests on Quality Central, until QC was purged. They call it "managed records".
Delphi has got inline const syntax. They talk about inline var, but from my Ada programming experience inline const is the real game changer. When there was only local variable block, some stuff was assigned inside loop. This stuff was assigned once per iteration, but since variable is declared outside the loop, it is considered variable. Now, when inside loop, it can be assigned once and made read-only. I have some doubts that Free Pascal is up-to-date with these changes.
Hi-DPI. Did not test, but questionable that Free Pascal got it right.
I'm not sure how you find Free Pascal "ugly" while Delphi not so considering that they're 99% the same language (up that to 99.9% when you compile Pascal code in "Delphi mode") :-P.
> Hi-DPI. Did not test, but questionable that Free Pascal got it right.
Free Pascal is the compiler and has nothing to do with Hi-DPI. Lazarus is what you probably have in mind and does Hi-DPI (in fact it can do Hi-DPI even with widgetsets like Gtk2 that themselves do not have support for it).
Can't believe Delphi is still actively maintained — and with features like this. Lost track of it years ago. Back in 2003 I wrote a university coursework in it; Pascal was my second language after BASIC. Might be time to take another look, especially with the multi-platform support.
Will you happily pay for Ada IDE? Another part of your proposal is already true. Ada has free compiler and libraries. Paid IDE is all that remains, that's how things work, right?
So much has changed. I remember driving past the Borland HQ in Scotts Valley every day on my way to work. Delphi was so cool back then with the object oriented pascal.
I haven't heard of Delphi in ages. Where I grew up, I was the first generation to start high school with C++ as opposed to the previous ones who were stuck with Pascal. I believe I did some in university, but not much. Anyway, I am amused to find this news on HN. I spent some of the past 24 hours reading through — and trying to draw some conclusions out of — the Go vs Rust sword fights in https://news.ycombinator.com/item?id=49261133 and https://news.ycombinator.com/item?id=47222270 Mad respect for these guys not giving a funk.
Self-learning programming in the 90's went from DOS batch files => MS Basic => Turbo Pascal then Delphi 1. Out of all of those I had the best success understanding what I was doing in Delphi.
Delphi was the first language I learned, and I really enjoyed it. It was so sad it got less and less accessible to me, so I moved to C++ (Which became my favorite language for a long time).
Whenever I looked into it, I ran into the insane conditions Embarcadero has for a license, so I never went back. And realistically, I don't know enough Delphi/Pascal anymore to use it (or Lazarus).
Of course you can, but it's more cumbersome in C as you also need to link to the DLL, hence the import library. In Delphi, it's all controlled from the function definition.
But of course most of the Windows APIs were already provided in the Windows unit. Oftentimes with Pascalish wrappers.
It is not. It’s created by Ingy, the same person who created YAML in the first place. It can be used for general purpose programming, but it fits best when you need a little more control over a system than configuring it with flat YAML. Think of it as (too)smart templates for you configuration files or flat-file data stores.
Not sure if you mean Pascal or Delphi here. The Visual Component Library (VCL) was hands down the easiest way to build windows GUIs, no knowledge of the Win API required. But if you did need to do it, it really wasn't hard to do.
Even its precursors, on MS-DOS (Turbo Vision), and first Windows attempt (Object Windows Library with TPW), were great productivity tools.
Also I am the opinion Microsoft has never done nothing in C++, despite the Visual prefix, that could actually match either OWL, VCL or Firemonkey on C++ Builder, which shares most of Delphi tooling.
Pascal was comparably clean, but Delphi library is quite messy. SysUtils is about local time, exceptions, floating number formatting and OS error handling. SyncObjs are about synchronization which is very good. But TThread resides in Classes, together with streams, serialization, base components, lists and other containers. Rapidly created form controllers are implementation of god object anti-pattern.
> And calling win API was a horror
This is not easy matter in any language. And I called Android API from Delphi. Still quite an adventure
After Pascal Niklaus Wirth designed Modula-2 and then Oberon which is even tidier. Oberon is both smaller and more capable than both of its predecessors.
Recently dabbled in zig because I, like many people, want a "better C" that solves many of the footguns that C has (ex: null terminated strings, lack of integer overflow trapping, slightly higher level data structures) without all the complexity footguns of C++. But concluded its a miss too, I don't want all the dogma around packages, and symbol soup seemingly selected to be different than C. I largely want a "compiler" not a language ecosystem. Zig is seemingly forever going to suffer from chasing purpose built libraries. Aka, why bother with a zig formatter, or crypto when the first thing anyone is going to want to do is swap in openSSL/etc because its dynamically/runtime tuned for its target platform and contains that odd crypto code it turns out you need for pkcs11/whatever.
And the realization really is that Andrew Kelley's rant about go/rust/c, is answered by Pascal, which really is a "better C". Sure its verbose, but that I think is really a strong point in the end. Everyone has autocomplete editors and actually typing "begin end" instead of "{ }" is something your editor can be inserting automatically.
Also, calling windows API's was incredibly simple with delphi although almost unneeded, but the stdcall/cdecl decoration told the compiler to use C calling conventions instead of pascal.
Yeah, it literally hearkens back to an era where "programs" were literally well-thought-out programs like you'd receive at a play - the cast list, the acts, the music, etc. COBOL on punchcards springs to mind here. Lots of organization. I don't hate it... but kinda like Java, it can be annoying to have to dot all the i's and cross all the t's to do such simple things.
I taught myself to write programs on a copy of Delphi 7 I got from a computing magazine CD (or maybe DVD... a long time ago, when Borland owned Delphi...) back in the day. It was great even for an absolute newbie with limited access to developer documentation or someone to properly teach me how to code in Object Pascal properly. I remember extensively searching for VCL packages too.
I'd definitely use Delphi again, and encourage it to be used, if Embarcadero were actually flexible on their licensing.
It's a damn shame that Embarcadero places so many restrictions[1] on Delphi Community Edition (CE) for even open-source contributions by anyone bigger than a small niche development shop.
If Embarcadero wanted to muscle back into the collective consciousness of software developers, allowing enterprise entities to use Delphi CE on open-source projects is a no-brainer, considering even Microsoft allows this with Visual Studio Community Edition[2], albeit with some other restrictions. Microsoft's enterprise limits on Visual Studio Community (250 PCs or not more than U.S. $1,000,000 or equivalent revenue) are so much more reasonable than Embarcadero's laughable $5,000 (thousand; not a typo) revenue limit.
An explosion of open-source Delphi projects might just revive it, if the CE licensing agreement wasn't so absurdly restrictive.
Delphi might still be decent, but Embarcadero is a fucking train wreck. That company's been Private-Equitied to hell and back. I was involved with them in a business capacity a bit back and it was an astonishingly poorly run company with some of the least competent upper leadership I've ever had the misfortune to come in contact with. It's a testament to how good Delphi was that it's still even marginally useable, because there damn sure hasn't been anyone competent at the helm for at least 20 years now.
And they have spywares in their IDE and if they even think for a second that you're using the trial software in an unauthorized way, their lawyers will threaten you.
Like, they won't even try to discuss with their sales team, or try to clarify the situation. Despicable company if you ask me.
Ha what a memory. In HS we started with Java, then the education department (I assume) tried to force us to switch to Delphi, and we had to learn about RAD development methodology, etc, and then, very randomly, we swapped back to Java. I think the schools couldn't afford it. I remember liking the language but could never get it installed at home.
I'm an outsider, although I've heard cool things about Delphi. So, trying to find examples of what this looks like, I was naturally interested in the "Cool Apps" section. But my biggest surprise was that Beyond Compare was listed in there. I see that thing in a lot of Windows .NET shops, I always figured it was .NET-based (I guess I confused association with dependency?)
Delphi.NET was a side project so to speak, and was mostly done under contract by RemObjects, which kept selling their compiler when Embarcadero decided to focus on native only.
Delphi.NET was so much central project that 8 only supported .NET. Nothing else was ever needed as it seemed. Delphi.NET was 8, 2005, 2006 and 2007, then dropped. It was hosted in common RAD IDE and language was close match.
Delphi Prism was bundled somewhere between 2009 and XE2, a 3rd party product, hosted in Visual Studio IDE and language was resembling, but not quite. Enough divergence to not make it possible sharing source text with native Delphi.
(I work at RemObjects) - we've been working hard on reducing convergence recently, that is, still supporting our own Oxygene Pascal syntax but also accepting other variants of Pascal. We want it to be possible for someone to have a common source file as you suggest, much the same as you can with Delphi and FPC. It is possible today; we are working on the really esoteric syntax.
Our 'Delphi Island' support also allows linking to BPLs.
And we have our own IDE (for multiple platforms), as well as living inside VS.
Nope, here you can still buy developers magazines.
Entwickler, .NET, Java aktuelle, Maker, Retrogammer can still be found on newstands, what happens is that not all of them have all magazines available.
You can get them delivered to your address anyway.
I have used Beyond Compare for 20 years, and as far as I know, it has always been and still is written in Delphi. Quest Software, maker of TOAD for Oracle was also a big Delphi shop for many years. Not sure if they still are.
Unfortunately, if you intend on using Delphi, that will be $1200 plus $399 a year for the basic commercial license, and if you also intend on using databases, that will be $4600 plus $1399 a year. Or, you could use .NET, which is $0, and overwhelmingly better supported at this point.
Embarcadero is milking a shrinking captive market, VMWare style. It makes perfect financial sense given the asset, but it's unfortunate for those of us with happy memories of Delphi 6 and 7.
One can legally use Community Edition until income hits some limit. Paid edition can be bought and just used without updates.
> use .NET, which is $0
But tracing garbage collection needs 5x more available RAM than used RAM. Native conservative applications introduce memory fragmentation, estimated as 2:1 available:used. That gives 2.5x smaller memory footprint of native apps, and RAM prices matter lately.
You don't have to use their premium database components. Just use something else as client-library.
I'm also not a fan of yearly payments. But with a $1200 license you usually get access to all old versions - including Delphi 7. After Delphi 6/7 at least Version 11/12 were usable for 64-bit. So I think at least once every other decade it is ok to get a usable 64-bit version of Delphi.
"Delphi 13 Community Edition brings the IDE forward from version 12.1 to the Florence release. Users gain access to new Delphi language features, and refreshed Android 15 and iOS 18 support."
It has always been sub-par to Delphi, e.g. VCL, FireMonkey and COM interop are all done in Delphi, probably they got tired to do OWL and TV twice in both languages previously.
Yet it still manages to be better than Visual C++, in the Visual part, if we exclude the short lived C++/CX.
I was only thinking about Delphi in regards to the cross-platform, maybe after they end up rebooting the whole compiler on top of clang it gets better.
Or who knows, as Embarcadero is today, maybe they won't bother to improve that, not many corps care about C++ Builder.
A lot of the software I really admired in the early 2000s was developed by single persons using Delphi. It seems to me like there is (was?) something promoted by a Delphi environment that is rare to find elsewhere, that lets people (a) quickly prototype cool stuff, and then (b) sustainably grow it into a mature product as it gains users. I wish I cared enough to learn it, but there's so much else I need to learn first!
Delphi had a powerful and easy to use GUI editor in the early 2000s, much less of a hassle compared to building software with Windows' own C++ API.
As a kid I remember I was lost in all that OOP, window handles and stuff, and could never do anything. Delphi was like assembling Lego. Very similar to QtCreator.
It was like Visual Basic and Pascal had a baby
It was never clear to me who showed up first, but I used Delphi first and then tried Visual Basic and was like "Oh! It's here too!"
Well if you were familiar with Delphi the VB magic broke when you tried to make your own components for the designer.
I went the same path and it was a bit of a shock when I found out i have to fire up Visual C++ to do a custom VB button.
I remember borrowing a book that had it on a cd, it already had the GUI editor, this must have been around 1997 or so.
Mid 90s rather than early 2000s.
Yeah, but on the other hand Microsoft also offered Visual Basic which was definitely easier to use. The code wasn't as fast, but it wasn't a snail as MS added a compile option (to p-code if I remember correctly) in version 4.0.
Vb 6 got native compilation too
Only to be killed in VB.Net.
It took all these years to have what should be in the box on .NET 1.0 instead of NGEN.
To be honest, VB.Net was a very thin veneer of VB on top of the .Net runtime. It was not good. All of us that were doing Delphi quickly jumped to C#, because it felt a lot more grown up. The only truly terrible products I have worked on after ,Net came on the scene were ones where VB developers decided to use VB.Net to make something "more modern."
Back ~30 years ago, Delphi wasn’t easy compared to Sybase Power++! for example. At that time it was really GUI based efiting
I noticed this as well in the 2000s. Stuff like WinHex which I was pretty sure then was written using Delphi. Was into RE during those days, so I used to poke around the internals of software just for fun
Ran into this quite a bit while working on Wine, too. Start digging into a program's behavior to fix some Wine bug and, "oh, huh, it's another Delphi app."
Even before, Turbo Pascal was fairly appreciated in some circles (e.g. demomaking), quite productive and nice to use!
Turbo Pascal was the go to IDE for small commercial apps for quite a few years after its release.
The GUI builder was more powerful than the one provided by VS, from what I remember (20+ years ago since I've dabbled in it). I really miss that era. In certain circles you could open an application and almost get a sense as to who built it due to the craftsmanship / UI / attention to detail in the placement of the elements in the application, etc.
Perhaps a better way to look at it would be to say that Visual Studio had a resource editor UI, basically a frontend to a resource file - that's it.
In contrast, Delphi provided you all the UI code by default, so even if you did not write a single line of code, your program ran and displayed a window or dialog with all the UI elements you could interact with. This was a higher level abstraction (one could argue VS did not even have an abstraction - you still had to code your window procedure from scratch. MFC was the first real attempt at simplifying UI code, but you still had to write code...).
But it did not stop here: it was trivially easy to add a database "connection" to your app (IIRC it was represented by a UI element that was not actually displayed), just provide the connection parameters, connect it to a complex UI element like a table, and voila - you had a live database view within 5 minutes.
Yeah, a lot of non-visual components still require (or want) you to drag-and-drop them in the builder and edit many or most properties there. It's a weird thing to adjust to, and it often leads to a very cluttered view if you have a lot of them. Conversely, a cluttered view with a ton of non-visual components can be a very easy-to-spot signal that you might be trying to do too much in one screen.
Not only has MFC never been at the same level as OWL, unfortunately to this day other than the short lived C++/CX, they never shipped anything comparable to C++ Builder, which shares the RAD tooling with Delphi.
Even doing COM in Delphi/C++ Builder feels more ergonomic than any of Microsoft endless C++ frameworks for COM/WinRT.
I keep a Windows VM for one app that is a commercial Delphi program for embroidery editing. It's been around for 30 years and is on the path to getting cross platform support soon with recent GUI revisions. Always been pretty solid for a product from a small team.
Do ping the Wine folks to make it run; Chances are you'd need almost very few changes to get it to run. Delphi runtime is quite portable.
The RAD environment makes it insanely quick and easy to throw together a reasonably functional desktop app. Think WinForms on steroids. For all its age and the many cracks and seams, it's still very fast, easy for beginners and pros alike, and the final executable is a single tiny file (usually)
I really find it mind blowing nothing else from what I've seen has really replicated it. Qt does an alright job but everything just seems to take 50% more effort to get it do the same.
I am very sad Kylix (the official Delphi for Linux) never went anywhere.
Sadly it was a very lousy port, if I remember correctly instead of properly supporting Linux, they used Wine to make it work, thus it had quite a few issues.
Secondly, it was trying to sell developer tools to a community that rather spend one month coding an alternative than pay regardless if it is a Starbucks XL cappuccino they would be losing.
> if I remember correctly instead of properly supporting Linux, they used Wine to make it work, thus it had quite a few issues
Only the IDE was using wine, the deployed applications were native. But the IDE was a bit annoying because of that.
> Secondly, it was trying to sell developer tools to a community that rather spend one month coding an alternative than pay regardless if it is a Starbucks XL cappuccino they would be losing.
You forget, it was after Borland renamed itself to Inprise and wasted all their cash on UML diagram software and other enterprise stuff. So it's not a Starbucks XL cappucino, it's more like a truckload of those.
Also they sold it separately from Delphi, so you ended up paying twice to do cross platform development. It started at 2 x 1k, i think. So 550 to 600 Starbucks XL cappucinos at 2001 pricing.
Besides Starbucks is overpriced, so maybe 900 great coffees from that noname place you accidentally found out about...
Yes, I am quite aware that Kylix price wasn't a cappuccino XL, however the point was that it would not have helped even if it was, given the prevalent culture.
The first version I used was one of the previews, where the IDE didn't actually work and all the code was compiled from the command line. Kylix 1.0 was "okay", but it quickly became impossible to use because Linux moved on.
The one I thought was bad was the .Net port. Delphi.Net never really got past version 1.0 of the .Net framework because, and this is anecdotal, I heard the compiler abused something in the metadata system that .Net 2.0 no longer allowed and the compiler jus stopped being able to build valid assemblies. They literally wouldn't work anymore because the class loader wouldn't load them under .Net 2.0. If you know anything about .Net, tis is pretty fundamentally poor engineering, because .Net runtimes almost always can load older framework code with the right components installed.
Delphi is definitely something I'd put up there with LispWorks, a really excellent example of what polished developer experience should optimize for. Even though it's not real live coding like LispWorks, you could see your UI evolve with your classes, without sacrificing drag-and-drop editing, and without having to do it in another language. Everything is seamless, and the libraries are all extremely well thought-out. I think clisp is a nicer language than opascal, but Delphi is still really good software.
A relic from an era where commercial toolchains dominated. Tools for serious corpo Engineers born riding the coked-up excesses of... I think conglomerates were capital's darling at the time?
Which is why nowadays most commercial developer tools are paywalled SaaS products, or access to walled gardens.
Lazarus still exists; but SBCL badly needs an CLIM (MCCLIM better) based GUI REPL for the good (Listener and such, a la Smalltalk). Everyone can just use Emacs/Lem and then for GUI needs, the Listener/Debugger/Viewer interface.
Last time I tried Delphi Community Edition, I had to give them my email just to download it, then when I tried any of the templates the IDE showed, it wouldn't build at all, don't show me a template if it doesn't work.
I received an email from someone asking how I was liking Delphi, I naively responded with my issue, but quickly realized he was just trying to sell Delphi. I would have bought Delphi over the years if they had a personal license for $99 or something, I am not investing thousands of dollars on a software where the free trial blows up out of the box (not intentionally it seemed).
This is the really annoying part.
Delphi's predecessor if not Delphi itself was $99 (Turbo Pascal).
I would have bought something like Turbo Pascal today. The minute they did away with Turbo Pascal I feel like they basically marked themselves as a legacy only company, I don't know anyone who is using them for net new projects that wasn't already all in on Delphi, you don't see new startups using them anyway. Had they kept Turbo Pascal, I do wonder how much more prevalent they could have been compared to now. It's still a solid way to make a native GUI.
> I would have bought something like Turbo Pascal today.
What's stopping you? You can open your wallet to lazarus today, if you wanted.
I've used Lazarus, very dated and doesn't look and feel quite as polished, there's been a lot of modern IDE advancements and none of them have made their way to Lazarus.
I can assure you that Turbo Pascal in Portugal was a bit more than that, because around 100 euros in today's money was the price with students discount.
As owner of a few versions with student pricing.
I suspect that Borland were doing the normal American computer exchange rates of 1 USD = 1 GBP = 1 EUR
Back in the 2000s that would have translated into more USD so not surprising.
> I had to give them my email just to download it
But why? Just throw some garbage - a temporary email - at them if they so insist.
I could have sure, but it was for an account, and I can always unsubscribe or ignore them, doesn't phase me, I have like 20 gmail accounts that are old enough to vote, drink, and who knows what else
Haha, okay, fair enough.
My favourite Delphi program, and the one I learned to program with, was Dev-C++ (https://sourceforge.net/projects/dev-cpp). AFAIK there is a more recent fork, but I also clearly recall the 4.9.9.? versoin number from back then. It was very fast (including startup). I enjoyed it a lot back when I was still on Windows. Funny that Delphi was used to create a C/C++ IDE.
As C++ got more and more complex, it was not able to for Dev-C++ to catchup.
Dev Pascal was also a dead end.
It is funny that while I learned about Dev-C++ during my university course but it was mostly considered a joke by anyone that used Linux (including myself). I think the issue was because it shipped with a really old version of GCC even at the time, so something that compiled on it had lots of issues running in the more recent GCCs that Linux/Ubuntu used (including the teacher for this particular course).
Ah I remember Dev-C++ - not bad for simple stuff, but I tried using it to import a Visual Studio project (which worked) but it wouldn't compile due to it not having any compiler intrinsics headers.
I gave Delphi a shot, but after setting up my account I got a few phone calls a few days later about it to sell me on it. I was genuinely surprised companies still did that in 2024/2025.
If you tried a 2005 technology, don't be surprised with 2005 customer service.
That almost sounds nice nowadays
I wish we had 2005 levels of customer service.
2005?! Delphi is from the 90s!
Delphi is from 1995.
It's 90's tech. Their business model is selling expensive subscriptions to keep legacy projects alive. I was at one of the conferences in my country and the average age of a developer was about 60.
Although it was dirt cheap in the nineties.
There’s always FPC and Lazarus if you don’t want to mess with proprietary Embacadero stuff. It’s not 100% the same, but it’s a pretty good equivalent that uses the same programming language (Object Pascal), has a UI builder, and all that. It also supports more platforms and even embedded development.
Why would anyone use that over Lazarus (https://www.lazarus-ide.org/)?
The IDE experience, they are the ones driving the language evolution, FreePascal follows, and the industry that cares about Object Pascal, usually only cares because of Delphi.
Don't get me wrong, FreePascal is great, but it hardly has a presence at big corporations.
If they no longer use Delphi, means they have long moved into either Java or .NET.
> they are the ones driving the language evolution, FreePascal follows
That is not the case, Free Pascal has improved the language before Delphi and Delphi followed, e.g. FPC added generics before Delphi and more recently it implemented management operators before Delphi.
One big annoyance though is that when Delphi does decide to implement some language feature introduced by Free Pascal they implement it using an incompatible syntax which is petty (at best). FPC then has to support both their own syntax (usually in OBJFPC mode) and Delphi's syntax (usually in DELPHI mode) to let people share code between FPC and Delphi.
How good is Lazarus nowadays? Haven't taken a look for 20 years so this is a genuine question.
I used briefly some 8 years ago, it is very good for getting full-native (including native UI toolkit) cross-platform desktop apps. It can build self contained binaries that just work.
My use-case was building a simple USB-stick-portable application for windows and it was great for that.
If you can bear his idiosyncrasies, Tsoding did a stream on it recently. It was pretty cool.
https://youtu.be/4vcA7yJMoPg
Over the past year, I've replaced quite a few of my Tcl/Tk GUI apps with versions built in Lazarus. Lazarus 3.x was a bit quirky for my tastes, but 4.x has been very good.
It's not quite the Delphi experience, but it's close enough that I could see myself using Lazarus for day-to-day development and being fairly productive with it.
It improved a lot and it is good. On Linux I think the default way to go is still Lazarus. But with Delphi you can buy more shiny polished things on top. So for commercial use Delphi is more relevant. And there are enough differences in compatibility, so you most likely don't want to deal with both at the same time.
Someone maintains a GitHub readme comparing Delphi and FPC with Lazarus. It’s deeper than a couple of feature checklists.
https://github.com/ideasawakened/delphi-and-fpc-lazarus-comp...
Lazarus does not support BPL. Android and iOS support are under question. Free Pascal devs for many years did not look into Ada, and looked into C++ more, and that made Free Pascal ugly. Delphi did not look into Ada either, but they looked into .NET instead, and that made Delphi not as great, but better than Free Pascal. Anything is better than C++. Delphi delivered controlled types, that was IIRC for many years in top 10 feature requests on Quality Central, until QC was purged. They call it "managed records".
Delphi has got inline const syntax. They talk about inline var, but from my Ada programming experience inline const is the real game changer. When there was only local variable block, some stuff was assigned inside loop. This stuff was assigned once per iteration, but since variable is declared outside the loop, it is considered variable. Now, when inside loop, it can be assigned once and made read-only. I have some doubts that Free Pascal is up-to-date with these changes.
Hi-DPI. Did not test, but questionable that Free Pascal got it right.
I wish Lazarus had support for C++ as well. Pascal/Ada's English prose syntax is a deal breaker.
Pascal Syntax is horrible for programming. It's verbose and confining.
It's wonderful for reading ten years later and figuring things out.
Apparently Markdown is much better.
I'm not sure how you find Free Pascal "ugly" while Delphi not so considering that they're 99% the same language (up that to 99.9% when you compile Pascal code in "Delphi mode") :-P.
> Hi-DPI. Did not test, but questionable that Free Pascal got it right.
Free Pascal is the compiler and has nothing to do with Hi-DPI. Lazarus is what you probably have in mind and does Hi-DPI (in fact it can do Hi-DPI even with widgetsets like Gtk2 that themselves do not have support for it).
I use both for desktop applications but as an IDE and for debugging in particular Lazarus is behind Delphi.
Can't believe Delphi is still actively maintained — and with features like this. Lost track of it years ago. Back in 2003 I wrote a university coursework in it; Pascal was my second language after BASIC. Might be time to take another look, especially with the multi-platform support.
Borland should have made the language 100% free with a totally 100% free command line compiler and libraries.
Charge people for the IDE - everyone seems to hate paying for languages but be quite happy to pay for IDEs.
Will you happily pay for Ada IDE? Another part of your proposal is already true. Ada has free compiler and libraries. Paid IDE is all that remains, that's how things work, right?
So much has changed. I remember driving past the Borland HQ in Scotts Valley every day on my way to work. Delphi was so cool back then with the object oriented pascal.
I kinda miss Borland
Me too! So I was curious and watched What Happened to Borland https://www.youtube.com/watch?v=HwkoaPl31Dw
I was curious but stopped watching after a Borland Groover photo flicked a couple of times.
I haven't heard of Delphi in ages. Where I grew up, I was the first generation to start high school with C++ as opposed to the previous ones who were stuck with Pascal. I believe I did some in university, but not much. Anyway, I am amused to find this news on HN. I spent some of the past 24 hours reading through — and trying to draw some conclusions out of — the Go vs Rust sword fights in https://news.ycombinator.com/item?id=49261133 and https://news.ycombinator.com/item?id=47222270 Mad respect for these guys not giving a funk.
Self-learning programming in the 90's went from DOS batch files => MS Basic => Turbo Pascal then Delphi 1. Out of all of those I had the best success understanding what I was doing in Delphi.
Also Delphi 1 had the coolest installer graphics.
Delphi was the first language I learned, and I really enjoyed it. It was so sad it got less and less accessible to me, so I moved to C++ (Which became my favorite language for a long time).
Whenever I looked into it, I ran into the insane conditions Embarcadero has for a license, so I never went back. And realistically, I don't know enough Delphi/Pascal anymore to use it (or Lazarus).
I remember Pascal as a so tidy and clean language... And verbose. Very verbose... And calling win API was a horror
On the contrary, calling Windows APIs was easier than in C, no import libraries required, just declare what you need and there you go.
Can't you do the same in C? You don't really need any headers, you can just declare function prototypes yourself
Of course you can, but it's more cumbersome in C as you also need to link to the DLL, hence the import library. In Delphi, it's all controlled from the function definition.
But of course most of the Windows APIs were already provided in the Windows unit. Oftentimes with Pascalish wrappers.
The irony is that now in 2026 we have COBOL's revenge with Markdown driven programming.
Doesn't get more verbose than that.
For your viewing pleasure (or horror): https://yamlscript.org/
Ouch!
Please tell me this is a joke, a la brainfuck
It is not. It’s created by Ingy, the same person who created YAML in the first place. It can be used for general purpose programming, but it fits best when you need a little more control over a system than configuring it with flat YAML. Think of it as (too)smart templates for you configuration files or flat-file data stores.
Not sure if you mean Pascal or Delphi here. The Visual Component Library (VCL) was hands down the easiest way to build windows GUIs, no knowledge of the Win API required. But if you did need to do it, it really wasn't hard to do.
Even its precursors, on MS-DOS (Turbo Vision), and first Windows attempt (Object Windows Library with TPW), were great productivity tools.
Also I am the opinion Microsoft has never done nothing in C++, despite the Visual prefix, that could actually match either OWL, VCL or Firemonkey on C++ Builder, which shares most of Delphi tooling.
You can create chess with Delphi in a matter of literally 30 seconds.
Just install "Chess VCL" component, drop it onto the form, compile, and you're ready to go!
Also on Free Pascal/Lazarus:
https://peazip.github.io/
I didn't know PeaZip was written in FP.
Pascal was comparably clean, but Delphi library is quite messy. SysUtils is about local time, exceptions, floating number formatting and OS error handling. SyncObjs are about synchronization which is very good. But TThread resides in Classes, together with streams, serialization, base components, lists and other containers. Rapidly created form controllers are implementation of god object anti-pattern.
> And calling win API was a horror
This is not easy matter in any language. And I called Android API from Delphi. Still quite an adventure
After Pascal Niklaus Wirth designed Modula-2 and then Oberon which is even tidier. Oberon is both smaller and more capable than both of its predecessors.
https://miasap.se/obnc/oberon-report.html
In regards to Modula-2 and Oberon, there are also the linages that he wasn't involved and are equally cool.
Modula-2+, Modula-3, Oberon-2, Active Oberon, Zonnon
Recently dabbled in zig because I, like many people, want a "better C" that solves many of the footguns that C has (ex: null terminated strings, lack of integer overflow trapping, slightly higher level data structures) without all the complexity footguns of C++. But concluded its a miss too, I don't want all the dogma around packages, and symbol soup seemingly selected to be different than C. I largely want a "compiler" not a language ecosystem. Zig is seemingly forever going to suffer from chasing purpose built libraries. Aka, why bother with a zig formatter, or crypto when the first thing anyone is going to want to do is swap in openSSL/etc because its dynamically/runtime tuned for its target platform and contains that odd crypto code it turns out you need for pkcs11/whatever.
And the realization really is that Andrew Kelley's rant about go/rust/c, is answered by Pascal, which really is a "better C". Sure its verbose, but that I think is really a strong point in the end. Everyone has autocomplete editors and actually typing "begin end" instead of "{ }" is something your editor can be inserting automatically.
Also, calling windows API's was incredibly simple with delphi although almost unneeded, but the stdcall/cdecl decoration told the compiler to use C calling conventions instead of pascal.
Yeah, it literally hearkens back to an era where "programs" were literally well-thought-out programs like you'd receive at a play - the cast list, the acts, the music, etc. COBOL on punchcards springs to mind here. Lots of organization. I don't hate it... but kinda like Java, it can be annoying to have to dot all the i's and cross all the t's to do such simple things.
Borland C++ builder came with a nice manual book that explained object oriented programming from basic concepts. Lol those were the days..
Turbo Pascal 5.5 manuals were my introduction to OOP, and Turbo Pascal 6, Turbo Vision, my first understanding of a good OOP framework.
I taught myself to write programs on a copy of Delphi 7 I got from a computing magazine CD (or maybe DVD... a long time ago, when Borland owned Delphi...) back in the day. It was great even for an absolute newbie with limited access to developer documentation or someone to properly teach me how to code in Object Pascal properly. I remember extensively searching for VCL packages too.
I'd definitely use Delphi again, and encourage it to be used, if Embarcadero were actually flexible on their licensing.
It's a damn shame that Embarcadero places so many restrictions[1] on Delphi Community Edition (CE) for even open-source contributions by anyone bigger than a small niche development shop.
If Embarcadero wanted to muscle back into the collective consciousness of software developers, allowing enterprise entities to use Delphi CE on open-source projects is a no-brainer, considering even Microsoft allows this with Visual Studio Community Edition[2], albeit with some other restrictions. Microsoft's enterprise limits on Visual Studio Community (250 PCs or not more than U.S. $1,000,000 or equivalent revenue) are so much more reasonable than Embarcadero's laughable $5,000 (thousand; not a typo) revenue limit.
An explosion of open-source Delphi projects might just revive it, if the CE licensing agreement wasn't so absurdly restrictive.
[1] https://www.embarcadero.com/products/delphi/starter/faq#tab-... [2] https://visualstudio.microsoft.com/license-terms/vs2022-ga-c...
Delphi might still be decent, but Embarcadero is a fucking train wreck. That company's been Private-Equitied to hell and back. I was involved with them in a business capacity a bit back and it was an astonishingly poorly run company with some of the least competent upper leadership I've ever had the misfortune to come in contact with. It's a testament to how good Delphi was that it's still even marginally useable, because there damn sure hasn't been anyone competent at the helm for at least 20 years now.
And they have spywares in their IDE and if they even think for a second that you're using the trial software in an unauthorized way, their lawyers will threaten you.
Like, they won't even try to discuss with their sales team, or try to clarify the situation. Despicable company if you ask me.
Ha what a memory. In HS we started with Java, then the education department (I assume) tried to force us to switch to Delphi, and we had to learn about RAD development methodology, etc, and then, very randomly, we swapped back to Java. I think the schools couldn't afford it. I remember liking the language but could never get it installed at home.
I'm an outsider, although I've heard cool things about Delphi. So, trying to find examples of what this looks like, I was naturally interested in the "Cool Apps" section. But my biggest surprise was that Beyond Compare was listed in there. I see that thing in a lot of Windows .NET shops, I always figured it was .NET-based (I guess I confused association with dependency?)
https://blogs.embarcadero.com/beyond-compare/
I'm not sure if it still does, but Delphi definitely used to support .NET.
Delphi.NET was a side project so to speak, and was mostly done under contract by RemObjects, which kept selling their compiler when Embarcadero decided to focus on native only.
https://www.remobjects.com
Delphi.NET was so much central project that 8 only supported .NET. Nothing else was ever needed as it seemed. Delphi.NET was 8, 2005, 2006 and 2007, then dropped. It was hosted in common RAD IDE and language was close match.
Delphi Prism was bundled somewhere between 2009 and XE2, a 3rd party product, hosted in Visual Studio IDE and language was resembling, but not quite. Enough divergence to not make it possible sharing source text with native Delphi.
(I work at RemObjects) - we've been working hard on reducing convergence recently, that is, still supporting our own Oxygene Pascal syntax but also accepting other variants of Pascal. We want it to be possible for someone to have a common source file as you suggest, much the same as you can with Delphi and FPC. It is possible today; we are working on the really esoteric syntax.
Our 'Delphi Island' support also allows linking to BPLs.
And we have our own IDE (for multiple platforms), as well as living inside VS.
OTOH Delphi 8 flopped so hard that the next version brought back Win32 support.
It became a good tradition to release version of software with my favorite number in such a way everybody will hate it. Delphi 8, Windows 8
In Germany, Delphi columns are still rather common on the .NET developers magazine.
>the .NET developers magazine.
Surely it's online? Such magazine still being in issue would be equally surprising to me.
Nope, here you can still buy developers magazines.
Entwickler, .NET, Java aktuelle, Maker, Retrogammer can still be found on newstands, what happens is that not all of them have all magazines available.
You can get them delivered to your address anyway.
Here, https://www.presseplus.de/Dotnetpro-Abo
I have used Beyond Compare for 20 years, and as far as I know, it has always been and still is written in Delphi. Quest Software, maker of TOAD for Oracle was also a big Delphi shop for many years. Not sure if they still are.
Unfortunately, if you intend on using Delphi, that will be $1200 plus $399 a year for the basic commercial license, and if you also intend on using databases, that will be $4600 plus $1399 a year. Or, you could use .NET, which is $0, and overwhelmingly better supported at this point.
Embarcadero is milking a shrinking captive market, VMWare style. It makes perfect financial sense given the asset, but it's unfortunate for those of us with happy memories of Delphi 6 and 7.
One can legally use Community Edition until income hits some limit. Paid edition can be bought and just used without updates.
> use .NET, which is $0
But tracing garbage collection needs 5x more available RAM than used RAM. Native conservative applications introduce memory fragmentation, estimated as 2:1 available:used. That gives 2.5x smaller memory footprint of native apps, and RAM prices matter lately.
That limit is $5000 revenue per year. And this is not scoped down to "$5000 revenue from Delphi projects." It's basically student-only.
You don't have to use their premium database components. Just use something else as client-library.
I'm also not a fan of yearly payments. But with a $1200 license you usually get access to all old versions - including Delphi 7. After Delphi 6/7 at least Version 11/12 were usable for 64-bit. So I think at least once every other decade it is ok to get a usable 64-bit version of Delphi.
Still no Linux support...
You can compile to Linux targets though
… as well as for iOS, and Android, and web!
https://www.embarcadero.com/starthere/seattle/mobdevsetup/io...
https://www.embarcadero.com/products/delphi/features/mobile
https://blogs.embarcadero.com/easily-create-web-apps-for-des...
Delphi - almost effortless programming memories.
> ... native Delphi apps for Windows, macOS, iOS, and Android.
In early 2000s there was Borland Kylix for Linux. Thus today (25 years later), if I'd use Object Pascal, then with Lazarus.
Also Ekon 2026 is already announced with the respective program,
https://entwickler-konferenz.de/en/
No Linux support is a shame. Fortunately there's Lazarus and FreePascal as an alternative.
I have no idea why there's all these c and c++ alternatives and wannabes when there's Delphi/object pascal. That's my $0.02!
Man, some own-goals on this website. I went to download it to try it out and they want me to fill out a registration form. Fuck off!
Also, while trying to figure out the licensing restrictions on community edition:
> Can I install and use both Delphi CE or C++Builder CE together on the same machine? > No. Only one or the other can be installed.
What?! It appears to be a technical limitation rather than a license one since the paid version has the same issue, but like, come on!
C++Builder as well? Any updates regarding cross-platform support?
Cross platform support exists but works by having Windows as the main development environment than then cross compiling into the varios platforms.
Yes there is a community version for C++ Builder as well.
No. While it did had cross-platform support years ago, nowadays it is Windows-only, including targets.
Unless you're talking about Kylix,
"Delphi 13 Community Edition brings the IDE forward from version 12.1 to the Florence release. Users gain access to new Delphi language features, and refreshed Android 15 and iOS 18 support."
No, I'm talking about C++Builder specifically. They made it sub-par to Delphi.
It has always been sub-par to Delphi, e.g. VCL, FireMonkey and COM interop are all done in Delphi, probably they got tired to do OWL and TV twice in both languages previously.
Yet it still manages to be better than Visual C++, in the Visual part, if we exclude the short lived C++/CX.
I was only thinking about Delphi in regards to the cross-platform, maybe after they end up rebooting the whole compiler on top of clang it gets better.
Or who knows, as Embarcadero is today, maybe they won't bother to improve that, not many corps care about C++ Builder.
No Linux version.
Win32 is the only stable Linux ABI. You can run Delphi apps under Wine.
Oooh real 64bit ide instead of the crippled 32bit junk they gave as a demo for the past 10 years. Good improvement.
SynWrite and CubicExplorer are two very useful Delphi Open Source Projects.
I think Delphi these days need a VS installation. Is that correct? It is not self contained like FPC.
Delphi is dead. Nothing to see here. Move along.
Nuh-uh. http://www.isdelphidead.com/
Communists repeated "Lenin lived, Lenin lives, Lenin will live" for decades, but he actually remained dead all that time.
Delphi and Qt are dead for companies that do not have at least one lawyer on retainer, so it's partially true.