"In 1996, Hejlsberg left Borland and joined Microsoft. One of his first achievements was the J++ programming language and the Windows Foundation Classes; he also became a Microsoft Distinguished Engineer and Technical Fellow. Since 2000, he has been the lead architect of the team developing the C# language. In 2012 Hejlsberg announced a new Microsoft project, TypeScript, a superset of JavaScript."
I can only speculate that lots of skilled Borland developers followed Hejlsberg and participated in creation of C# and later TypeScript.
- DSL for UI (Forms) - fast native compiler that produced self sufficient binaries - great component library and many open source libraries - Object Pascal was extended to fit perfectly the needs of UI programming
What happened is also changing hardware, UIs that need to adapt to changing screen sizes, different needs, theming, and many more.
(Big asterisk: mostly Windows-only and has recently lost product direction coherency)
https://docs.microsoft.com/en-us/visualstudio/get-started/cs...
Is that any better now?
The problem is that outside of the iOS ecosystem, there are too many subtle differences in behavior to really trust the results. And because a lot of software gets worldwide distribution these days, it's economically worth it to squeeze that last bit of performance & user friendliness out of the framework. So most professional programmers learn how to do things programmatically and only use the interface builder if they're doing a quick internal tool.
People keep saying that as if that is this new thing that wasn't ever heard of before the web or smartphones.
Open any desktop app and resize it. Boom, you've got "changing screen sizes".
And yeah, "needs are different, and we need theming is this new thing that never existed before the iPhone ".
Imho, the real reason we don't see stuff like this for the Web is that the web isn't designed for modularity. CSS, Javascript, and HTML IDs are all global.
Programming 101 lesson 1 is "don't use globals" and the Web is the perfect object-lesson in why not.
> Imho, the real reason we don't see stuff like this for the Web
Where are you looking on the web? tab-indexes and extending native web components gives you responsiveness and accessibility. The browsers provide theming capabilities for light and dark mode, and OS level color preferences (I use "red" for selected on Mac) easily show themselves on CSS `outline` etc
> Globals
No one uses globals on the web. This isn't 2000, or even 2013.
Now everyone strives to make as beautiful websites as <insert big blue with their genius web framework>
Yes, it is quite funny to see how no toolkit exists to simply produce Web UIs in a meaningful way.
However, the complexity has grown largely from externalities that didn't exist during the time of effortless interface builders, which is screen sizes and aspect ratios and pixel densities of all sorts. To handle this, you need to have some lower level primitives, and of course any time you have to go to a lower level you surface more complexity.
Final point - as a person who develops web UIs professionally for 7 years now, I think that the "reinventing the wheel" has been actually quite beneficial to tame this complexity. Previously, untyped JS had to be bent into surfacing type-style error messages, and good luck with boundary crossing data. Now, TypeScript lets you describe every key in your application and have incredible confidence that a fully-typed piece of UI or logic (which of course must avoid `any`) will deliver exactly what you intended. GraphQL & codegen has given us the ability to type our boundary crossing data straight from our DB or resolvers without any runtime reflection. Runtime reflection tools like io-ts also bridge that gap admirably to program defensively in the situations it's needed. It's obviously been accompanied by a lot of churn, but with strictly typed component libraries, a bit of reusable layout logic, and Hasura, I can make sexy fully-themable UIs strictly typed all the way to and from the data source without significant effort. The complexity in my new paradigm is entirely in application-level tricks like UIs visually informing users of all the async actions, animations / transitions, avoiding dynamic content causing bad layout blips, and ensuring user input is never lost. I think this kind of thing wouldn't have been easy in any oldschool toolkit because it inherently requires some wiring that isn't easy to surface
Cue XKCD "Standards" comic. People look at an existing framework and declare "this is total shit, I can build a better, easier to use version!" They then start building the better-easier and realize why the old version is so hard to use--because it's a difficult fucking problem begetting awful complexity + shitty code.
This repeats itself every 18-24 months, giving us the current clusterfuck of JavaScript libraries. Lather, rinse, repeat for the past 30 years (n.b. XWindows Athena -> Xt -> Motif/Lesstif -> ...<aeons pass>... -> Qt -> Electron)
It's probably not this particular feature of the web browser matters but the fact that web browsers come preinstalled with new computers.
I mean, if not pedantic, then perhaps grinding an axe - he said 'there is a lot of Javascript that is getting "downloaded and installed"' as if that has anything to do with the user experience I was referring to
> any application (not just a browser) could provide the same download-interpreted-code-then-run-it functionality
I have never heard of such a platform besides the web. That is why the web became the dominant platform. I do not know what theoretical could've would've should've has to do with the reality of technological evolution
> It's probably not this particular feature of the web browser
... yes, it's not the ease of use that makes users like web, it's that computers in 2021 come with browsers installed that makes users prefer web over bloated desktop applications without good accessibility anyways!
I have no clue what your comment is meaning to get at.
Steam comes to mind.
> ... yes, it's not the ease of use that makes users like web, it's that computers in 2021 come with browsers installed that makes users prefer web over bloated desktop applications
Wasn't comparing to "desktop applications." I was saying that the reason that the download-code-then-run-it functionality was shoved into the browser rather than coming in some other form, was that the browsers were already on all the desktops.
See Flash.
https://www.cnet.com/tech/services-and-software/borland-sues...
Borland's lawsuit seeks unspecified financial damages and an immediate end to Microsoft's unfair practice of targeting Borland employees in order to hamper the company's ability to compete. The suit claims that Microsoft's activities are illegal under California Business & Professions Code Section 17200.
https://www.eetimes.com/borland-sues-microsoft-for-unfair-co...
It was a different time. Even dinosaurs like IBM were still competitive in some verticals.
There's a difference between hiring talent because you want talent, and hiring talent to undermine a smaller competitor.
It's an analogous to dumping.
That is evil.
Monopolies and cartels are against the law, but not enforced.
It is a sad reality of the modern economy, and one of the biggest indicators of who actually runs America.
At least in this case workers made money.
If borland was losing money, why didn't the execs negotiate a merger if they had so much desirable talent?
Hmmmmm, I bet the execs couldn't negotiate a big enough reward for themselves in an acquisition. The limo pickup at lunch strikes me as a big middle finger to Borland's management.
Of all of Borland's products that I liked, did I like them because of the software devs or the management? I guess what I want is the borland devs back.
I miss Turbo Pascal, DOS or Windows.
Once the store drives local businesses out, prices go up.
That's why this kind of behavior is unlawful.
If the fault lies on anyone, it's the employees who accepted the offers. If they really thought it was "evil", they would have denied the offer on moral grounds or in loyalty to their employer.
Do you not frequently get offers for more money than you are currently making at your employer? I would be a massive asshole if I accepted and left a job every time I got one of those -- especially in this market!
Since they succeeded in hiring so much of their company away, it seems none of them felt particularly attached to Borland or their work there, compared to a salary.
The only "evil" in the situation is how easily some (most?) people will abandon you the moment they get a better opportunity.
I suppose Borland could have matched salaries or tried to keep their employees in whatever way (maybe they did, who knows?) but at the end of the day either they didn't, or it wasn't enough for those engineers.
It's not like these things are mutually exclusive.
Take that for what you will.
As long as there's no enforcement (and in a free capitalist economy it's hard to enforce this, and I personally think it shouldn't be enforced too) these will happen. The best thing that smaller companies can do is to adapt and play by the rules if they can't change them.
Not saying it's good or bad. It is just it is.
As if your company wouldn't fire you the moment it was more lucrative to do so.
Targeting all employees of a smaller company to destroy them is considered unfair business practice in some countries (legitimately IMHO). It's similar than selling at loss until your smaller competitor is out of business.
> It's similar than selling at loss until your smaller competitor is out of business.
Why is this considered illegal or unethical? This seems like a fairly legitimate tactical move to me.It's like a war of attrition -- you allow yourself to suffer losses for the sake of ultimately winning. At least in this scenario, the main player is also slightly fucking themselves over, instead of just you.
After competitors are knocked out of the market, the survivor can raise prices to above-market levels.
https://www.ftc.gov/tips-advice/competition-guidance/guide-a...
It seems like there's a lot of this all the time though?
Everywhere I've lived, my only choice of ISP was Comcast. Whatever Comcast told me I needed to pay for internet, that's what I was going to pay lol.
For mobile phone providers, in the US your options are generally AT&T, Verizon, and T-Mobile, which I'm sure collude on prices and fix them. Same with Cloud services providers, etc
To keep feeding bosses while loosing potential raise? Thanks but no thanks
This was on Borland for not adequately valuing their staff.
It's only worth anything if the world-domination plans go off without a hitch.
On the other hand if the company doesn’t have good prospects, then indeed there is nothing you can do.
Having said that, there is no evidence their developers felt differently to you.
CA's prohibition against non-competes and the DoJ's lawsuit against anti-poaching agreements is basically what makes Silicon Valley work.
Prior to joining Google, I set up a meeting on or about November 11, 2004 with Microsoft’s CEO Steve Ballmer to discuss my planned departure….At some point in the conversation Mr. Ballmer said: “Just tell me it’s not Google.” I told him it was Google.
At that point, Mr. Ballmer picked up a chair and threw it across the room hitting a table in his office. Mr. Ballmer then said: “F---ing Eric Schmidt is a f---ing p--sy. I’m going to f---ing bury that guy, I have done it before, and I will do it again. I’m going to f---ing kill Google.”At some point there was an attempted pivot as well or maybe it was just what Embarcadero always had focused on.
I wasn't yet working in software then I think but there was an interview or paid article or something I think were someone told that the future of software laid not in languages and IDEs but in Software Lifecycle Management.
In a way they were right:
Today all major languages have free and open source implementations and Atlassian and a few others seems to have found larger or smaller sweet spots in what I think is Software Lifecycle Management or something.
That said what could Borland do at that point? It probably felt worse for them to bet the farm but in my opinion it absolutely isn't the most bone headed moveI have seen.
That said: The ads not so long after for "Delphi con" or something similar with large "No toothbrush required", that didn't exactly seem smart to me. I think by then everyone who used their products were grown up serious business programmers.
That was after they'd changed their name from Borland to Inprise, before they sold out to Embarcadero. I think that, in contrast to this, Embarcadero still bought them mainly for the IDEs.
Indeed, seems it was the dev tools division Emba bought. Maybe the ALM div is still around. Hm, have I actually heard somewhere they even switched the name or that back from Inprise to Borland, or am I imagining it? Naah, can't be -- 't'would be both too pathetic and too absurd.
They disappeared because they weren't able to compete with the commoditization of Java IDE's (Eclipse) and Microsoft's integrated sales channel on Windows (Visual Studio). These two things killed their two biggest products.
The quality of leadership at Borland fell off, and the organization lost its vision and ability to execute. Simple as that.
JetBrains did - and still does - execute well. They expanded their IDE to many languages and caught the Ruby, Node, and Typescript waves. Borland did JBuilder, yes, but it wasn't category-winning. Maybe Delphi could have dominated with more investment and more imagination, but it seems to have risen and fallen with Win32.
In the 1999 federal prosecution of M$ for antitrust, Judge Thomas Penfield Jackson found that 'Microsoft used its "market power" to unlawfully "maintain its monopoly in the operating system market," violating the Sherman Antitrust Act. Microsoft, the Appeals Court found, unfairly used its monopoly power to strongarm computer manufacturers, Internet access providers, Internet content providers, independent software vendors, and companies like AOL, Apple, Intel, and Sun Microsystems.'
https://www.newyorker.com/magazine/2001/07/09/the-microsoft-...
That, plus their weird and (IMO obviously even at the time) misguided pivot to emphasise SLM systems over dev tools. Well, it may be the same thing: seems likely this pivot was what led to them not being able to keep up with Microsoft on dev tools.
1. At peak popularity, Borland products where easily available. Borland decided to turn to enterprise and raised the price considerably, so individuals and small companies started looking elsewhere. By the time they realised the mistake it was too late. In my opinion this was the biggest mistake.
2. Internet and Linux came, and with them Perl, PHP, Python and others. Borland missed the boat, and again by the time they realised that, it was too late.
3. Sun came with Java and Microsoft with C#, both seen as the future of enterprise, and available for free or at very low cost. Java was extremely popular at education sector, pushing out Pascal and other competitors. Both made Object Pascal obsolete.
So bad decisions and being late to the party. Also it was hard to compete with Microsoft in the long term.
As an unrelated sidenote, at the time when world was turning towards agile, they were building and marketing software for managing waterfall project management. That just shows how disconnected from reality of their customers they were.
There is a lot to be said for being easy to get and affordable. I gladly give IntelliJ a couple of hundred dollars a year, because $10-$20 a month for a superior developer experience is worth it to me.
If I was paying their enterprise rate, though ... not a chance.
If you let teenagers pirate your product, they're already familiar with it by the time they get hired. When they get hired, the cost to re-train them on something else is more expensive than the license (at least, in the short term).
1: someone other than the user is footing the bill (bulk licensing)
2: there are no suitable alternatives
Adobe will fade (or be forced to change) over the next 20 years as different tools pick them apart one niche at a time. It's already happening: the Affinity suite, Procreate (and similar indie-focused tools), and DaVinci Resolve, among others already serve huge niches within the Adobe suite quite well. Capture One, which predates Lightroom, is getting better as it expands out of the portrait studio.
This is essentially what happened to Microsoft. Macs got good (for definitions of good that matter to non-enthusiasts), mobile swept up almost all casual computer usage, and the web took much of the rest by way of Linux and open source. It happened a niche at a time until the world outside was too big to fully EEE.
I know several designers from various areas who do serious attempts to free themselves from Adobe's bondage (in particular the running costs of the forced subscriptions) and are looking for (and partially have found) alternatives for doing their work.
Exactly this. Turbo C was the first real C compiler for DOS that I could afford, where "real" means that it supported large memory model. Before then, the cheap compilers were always stripped down to only allow small model (64K instructions/64K data). Turbo C was also downright fast, and it cost far less than what Microsoft wanted for their compiler. But once we actually started writing 32-bit applications, its day in the sun had already past.
Actually, they were looking at new (by then) technologies. C++ Builder was a reality in the late 90s, Kylix (essentially Delphi for Linux) was released in 2000; I attended one demonstration by Marco Cantù himself. The problem with Borland/Inprise/Embarcadero was that they weren't giving a damn about small developers but wanted to play only in the enterprise world, an ill choice that backfired spectacularly. If they could exchange a few ideas with the developers behind Lazarus, and could help them some way but guaranteeing it stays free no strings attached, both worlds could benefit from it. Lazarus needs some more work and a name to become well known outside of the Delphi nostalgic developers world, and newer Delphi and related tools need a much cheaper product to attract developers in long ignored market segment.
BTW, I still moderator in https://www.clubdelphi.com (despite not working on Delphi anymore, like many there!) and see how much mind-share Borland and later lost on the small-bussines/solo-developer side.
You can't imagine how much in the official forums people ask for not ruin it and put real features, and the things that get implemented were so out of touch.
Also, is pretty similar how MS ruin Fox/VB (except not even sell it after): Burn the goodwill in the low-end... in the hope them move to costly products -sql server, ejm- ... and then lost that people to the rising of open source.
I spent 13 years writing Object Pascal in Delphi full time, starting from Delphi 4 and ending right about where Embarcadero entered the scene.
They seriously dropped the ball by focusing on ticking enterprise boxes and charging insane amounts for it rather than evolving and fixing stuff.
I could handle the xml madness but at least make sure the standard is a standard.
I'm pretty happy with rest apis on that front. I can always make them work.
There were some configuration behaviours on the standard that had opposite defaults.
Unlike gRPC, where RPC calls are just functions that take pure data arguments and return pure data structs, Cap'n Proto allows RPCs to return references to objects. The client can hold onto the reference and call methods on it, which invoke RPC calls, while the client and server runtimes keep track of what the references refer to. So you can treat remote objects as if they're local to your process.
This "location transparency" feature is at the heart of CORBA, and later, Microsoft DCOM and Java RMI. I've never used Cap'n Proto, but with CORBA/DCOM/RMI, this is a really powerful feature which allows you to work with APIs as if they're just in-process libraries. The downside is that if you pretend there's no network overhead, you might end up designing very inefficient applications, with each method call becoming a network roundtrip. It also means a client can, if you're not careful, "hog" a remote object and keep it from being deallocated, resulting in leaks or excessive memory usage.
Basic DCE-style RPC like gRPC is simpler and has more predictable performance, since you're forced to consider that you're talking to a remote API, just like REST.
Hiding network access and pretending it's all local is a recipe for disaster.
If you're writing a networked application, that's right up there on the list of things you need to focus on and never forget.
Pascal was a great language, and I wonder how much we've lost by having it go by the wayside. It was strongly-typed, easy to read, cross-platform, produced native executables, and was lightning fast to compile and execute.
I say "was" a great language because it isn't widely used today. I miss it.
"Sane" strings that lead to incredible bloat and incompatibility, because there is no one true "sane" string type, so every module that doesn't know better forces their own way onto the user.
> "Sane" strings that discourage the developer from just coming up with a simple memory management scheme that fits the situation at hand.
"Sane" compilers that discourage the developer from considering the machine level instructions. It's turtles all the way down.
There's a reason that Python is so popular and it's not performance
Put another way: optimizing the management of strings in memory is almost never the best use of time to make progress toward an organization's objectives, and doubly so when that kind of micro-tuning can actually introduce security risks
I also don't really know why you assume that "sane" means "doesn't let you manage memory effectively".
That said, how many applications really are bottlenecked by string processing in the first place? I don't care if processing Unicode graphemes is slow, as long as it's correct and doesn't mangle users' names.
I always find it weird when people fret about bytes but not cycles, especially cycles that have to be spent waiting for memory reads.
Basically, no sane programmer in the 90s would be happy with a string type that wasted three bytes per object.
In other words, "reading the whole string from memory" could be a performance problem, but a less serious problem for machines of those days, compared to using a few more bytes to store the length.
… with all of them having been developed and run on 32-bit IBM mainframes and other big irons with «lots» of memory (e.g. 512 kB of RAM would have been considered huge in early 70-s).
C, on the other hand, was developed with limitations of early PDP-11's in mind that were often equipped with 56kB of RAM, so null-terminated strings in C was a rationalised design decision and/or a trade-off. Besides, both, UNIX and C started out as a research and a professional hobby project, not a fully fledged commercial product.
Since the internetworking had been inexistent slightly less than entirely, remote code execution that stemmed from buffer overruns was not an issue, either.
Read the DoD security assessment on Multics, https://multicians.org/b2.html
Afterwards you can read from Denis' own words,
> Although we entertained occasional thoughts about implementing one of the major languages of the time like Fortran, PL/I, or Algol 68, such a project seemed hopelessly large for our resources: much simpler and smaller tools were called for. All these languages influenced our work, but it was more fun to do things on our own.
Taken from https://www.bell-labs.com/usr/dmr/www/chist.html
So thanks to their fun, the world now suffers from C strings.
Precisely my point. The definition of fun is up for a personal interpretation.
In general, maybe, but we are talking about Borland here, so business logic apps mostly. String size is not a problem there.
For instance strncmp and (especially) strncpy make very little sense with C strings, but make sense for NUL-padded strings.
Though it was eventually eclipsed by C/C++/Objective-C on Apple platforms, I believe Pascal was the original application programming language for the Apple Lisa and Macintosh, and produced some revolutionary software in the 1980s.
Object Pascal/Delphi certainly enjoyed a fair amount of success in the 1990s.
Overall, it seems you didn't read my comment either. Or was I _that_ unclear?
I had a limited number of calls into a library and a need to do a few things that escape me with regard to interacting with -- I think -- an 16550 UART[0] and its driver, but I don't recall them being particularly nasty to deal with. I mean, all things relative -- I was expecting these to be nasty to deal with because they often involved inline assembler, so the problem of "making it behave with the string" wasn't quite as pressing as "what the hell am I actually doing here?" :)
[0] My huge project was a bulletin board system in the 90s.
Zero terminated strings still make some sense of course - ease of reading when looking at byte level representation, and moderate cost savings in packed structs (4, 8, or 16 byte strings). The former is why I zero terminate by default where possible, even when using a separate length field stored somewhere else (almost always).
And surely if you malloc(..) a block of memory in C and store a string in it, the memory allocation system is going to store how large a block that is anyway (even if it isn't visible to either C or Pascal probably.) I know not all strings will be malloc'd but a lot will be. And we seemed to deal with this overhead fine in the 90s?
> I know not all strings will be malloc'd but a lot will be. And we seemed to deal with this overhead fine in the 90s?
It's a common but deeply flawed assumption that allocations and lifetimes are so random that every little object should be individually allocated and later deallocated with malloc()/free() or with another generic allocator. I don't use malloc() to allocate string buffers - except in rare situtations of laziness, knowing it will come back to bite me later. Not only performance concerns but also the practical impossibility of matching each malloc() with a free() forbids that. Systems like RAII come to help to solve the latter issue, but I prefer to take the difficulty of matching everything up as an indication that the general approach is too complicated.
Instead I recommend to allocate strings using a fixed field (eg. char buf[16]) on a stack frame, or using a member in a struct, in order not to add any management overhead. Alternatively, for unbounded and dynamically sized strings, it's often a good idea to allocate them using linear allocators. For example, in a GUI renderer, it's a good idea to have a per-frame allocator that collects all allocations in a list of larger chunks, to minimize the allocation overhead to a few chunks (KBs to MBs) that were individually allocated from the system. With this, everything is freed using a single central function call after the frame was renderered and the data is now not needed any longer.
Except they were prefixes on the buffer which was bad and not sane, and greatly limited the size of the original pascal strings.
And technically they were UCSD strings, not standard pascal, and other implementations used e.g. padded strings.
Sounds like Go
Free Pascal/Lazarus has no problem with Linux or macOS. It was Delphi that stumbled around for some years about this, but presently can also be installed now on both. Of course, Delphi cost the big bucks.
"Break loop" being a function rather than keyword is serious PHP land.
It had better OO than C++, though. I admit it, they managed to have a sane and compact statically checked compilable OO.
OO in Object Pascal is a lot more sane than in C++, because the concept of an Object was more aligned to the existing Record type. It would be something like taking C and empowering its structs with methods. There wasn't an attempt to make radical changes, but simply extend the language with OO. Where with C++, in comparison to C, much more fundamental changes were made that created more conflicts in how the languages are used.
I googled it, but it wasn't clear if it was a buy-out, a rebrand, or something else.
Delphi/Embarcadero went all out chasing enterprise dollars. The prices they charge burns holes in pockets for any little guys. Only in the last few years have they come to their senses with the free Community Edition and focusing again on making school/academic licenses easier to get and more accessible.
We had been winning for a long time because we were close-knit and highly motivated. We were scrappy competitors. The first real blow is that we moved into a new office complex that literally forced the team to sit separately instead on close to each other. That was a big hit on morale and productivity.
Then Microsoft seemed to get its shit together and spend a lot of money on R&D. A lot more than they could have been getting in as revenue. Just after I left this forced Borland into an unsustainable cadence of delivery. Soon afterward Microsoft just started wildly hiring our best people.
The thing is, for the period I worked at Borland, I instigated or participated in many of the innovations in process and testing that even today are coming as a surprise to people I teach… We had a fantastic team! Jothy Rosenberg, for instance, whom you can find on LinkedIn as founder of his Nth successful company, was my counterpart in development. He’s probably the most gifted technical leader I have encountered in my whole career.
* Their application business lost out to Microsoft many times over the years. (Sidekick, Quattro, Sprint, etc.)
* The availability of free and open source development tools went way up. (This undermined the ability to make money selling development tools, even as they become more expensive to develop.)
* They lost Anders Hejlsberg to Microsoft. (His Microsoft resume is a testimonial to his skills, technical and otherwise, but prior to that he was the driving force for the Turbo Pascal line through Delphi. They did diversify, but Turbo Pascal really was Borland's core asset.)
* Developer mindshare pivoted away from client apps to web apps.
I wouldn't call 75% of desktop share "irrelevant". Tablets are still 20 times less common than PCs. *
* data from https://en.wikipedia.org/wiki/Usage_share_of_operating_syste...
It was a huge downgrade in interactive functionality at the time, but the Web has slowly built up over the past two decades so it is almost as functional.
This might be outside of your echo chamber, but lots of companies still very actively build desktop applications (also completely new ones) for their own line-of-business purposes.
Totally different inside the enterprise, one reason Borland & Embarcadero focused on it.
Was Microsoft targeting Borland employees because Microsoft was looking to make use of their talent for their own products; that's legitimate. However, if Microsoft was hiring Borland employees for the purpose of keeping those employees from working at Borland; that's potentially predatory and violates antitrust laws.
Note that it's not even in the employee's best interest in the case of predatory hiring. Much like with predatory pricing, once Borland goes out of business as a result of said practice, Microsoft is unlikely to continue retaining many of those employees or paying lucrative salaries and the overall pool of talent as well as salaries is likely to shrink in the long run.
It's the nature of predatory actions that they hurt the actor in the short run but benefit them in the long run whereas the public gains in the short run but is damaged in the long run.
"Dear Phillipe, I am not your fucking friend. Got it, Phil baby?"
How could you not like a man who'd stick that on his office wall?
But he was very charismatic.
I do not think anything comes close to the practical feature set, ease of use, power and long term stability for GUI creation. Well QT does but at what expense.
Meanwhile HTML/javascript based frontends is a pitiful clusterfuck comparatively. Modern computers have more than enough power to have the HTML/javascript front end with the power of Delphi. Why oh why web tool creators have to come up with abominations like React instead. The end result is that in case of Delphi the tool works for you. In case of popular web GUI frameworks it is the other way around.
I don't know how far he's got with it, but might be worth looking it up.
1) Unless it comes with completely ported VCL I do not see how it would be useful.
2) Doing it for the language's sake - I am not a language zealot and am fine to use whatever suits me better for particular situation. JS as front end for my servers works fine for me. For example even though Delphi / Lazarus is fine for developing servers I prefer doing it in C++. Backend libraries and performance are superior in my opinion.
2) "Doing it for the language's sake" -- Not necessarily the language itself, but he clarity it affords you. I could never quite get my head around the "half-typed, half-not; half-OO, half-not" nature of JavaScript; it just feels so... messy, to me. Any other language that avoids those as well as Pascal would do me equally well. (Hm, what does that leave? BASIC, C, COBOL, and FORTRAN...?)
2 B) "C++, superior backend libraries and performance" -- Maybe... but not by all that much, AIUI. Compensated for by clarity and simplicity (leading to better safety and productivity) on Pascal's side, IMO.
Aasenden's new transpiler and IDE is for the dollars. It's supposedly not just a transpiler for Object Pascal, but for a few other languages too. The problem that I see with that route is if you make an HTML5 app with it, you still going to need Cordova/PhoneGap for making it run on various OSes.
If you are going to make people pay, rather see the finishing piece of the puzzle included too, because JavaScript and various dialects of Object Pascal are free.
Terrible title but great book.
Basically Microsoft dominated every software category by waiting for the #1 company to make a dumb mistake. They then swooped in and won.
This book is an excellent but biased history of that era.
At the time Borland had sued Microsoft for some big IP feud.
Then suddenly an arrangement was made. Delphi for Linux was rushed, released unfinished and flopped. Borland got $30M and access to every .NET documentation. But Delphi.NET was never very popular because it was never as good as VS.NET.
.NET modules were added to Windows native Delphi and slowed down the IDE.
IDE price skyrocketed, users flew and after some acquisitions dance, Delphi is owned by IDERA... not sure how it's doing now because they closed developers' forums years ago.
At that time I was using Borland C++ and the quality really went downhill. Errors that never should have gotten past QA. Either they weren't checking or were intentionally shipping with killer bugs.
One release the license said you couldn't use it to make a long list of products that would compete against Borland, like spreadsheets or databases. They rolled back that provision a little later.
Then releases every couple of months.
I just gave up them, they had burned the tremendous good will originally generated by Turbo Pascal, which, it should be mentioned, was created originally by Anders Hejlsberg.
The license agreement thing was a failure of imagination. The project team didn’t ever think we needed to review legal language. But after that fiasco we made sure that we did. I tell that story in my classes.
You are right about slipping quality. It was just an unsustainable rate of development. I was ringing alarm bells inside the team, and management was hearing them, but they said “look, either we ship or we start laying off the team.”
So you are mostly right.
And like I said, IBM footed a lot of the bill for it.
I think the secret to Borland’s fall is mostly that we had to earn our way forward, whereas Microsoft could write huge checks to itself. It’s like we were playing a video game against someone using cheats.
E.g., any company smaller than MSFT would have been destroyed by the endless Word For Windows effort.
Borland bought the company for less than the VCs had invested, cut the price to $99, advertised it, sold it by mail order, and made it a hit for a couple years.
Several of the key execs at Analytica went to Borland and then to Microsoft; some of them are fairly famous now. I don't know anything about the limos or the lawsuits.
I heard Kahn talk in early 1985, and the Analytica founders made fun of him, for selling his product through mail order when everyone knew you had to go through BusinessLand and ComputerLand.
Same colleague had some vocal criticism of `gdb` as a debugging tool, and the state of Linux-based debugging tools as a whole, with claims that "Borland's were much better, and Visual Studio (not VS Code) being one of the few development environments with a quality debugger".
I'm not sure how fair that assessment is, I've found `gdb` to be a helpful tool, though I've never used Visual Studio.
gdb is a fine tool, but I think the VS debugger is reasonably described as "next level".
Many people don't know about Microsoft's other debugger, WinDbg. It's actually more capable than the VS debugger, but the UI is closer to that of gdb.
It feels like Linux debugging is stuck in a viscous cycle, since few people are putting the capital into a decent debugger UI, and thus few people are using debugging UIs (and thus using printf debugging, or gdb CLI). Folk might not realise how much better it could be.
I cry a little on the inside when I see developers using Visual Studio and resorting to printf statements (or the equivalent) because they’ve never even tried to use the debugger, ever.
He drove constant reorgs that followed the pattern of: centralize then decentralize then centralize then decentralize… He bought Ashton Tate, which was a big mistake.
I don’t think Kahn was good at leading a big company, and it seemed to me and my friends there at the time that he was floundering.
Was it really? It brought in dBase to make simple desktop (as opposed to client-server) database apps super-easy to develop in Delphi, and IIRC Interbase to make client-server DB apps easy and cheap todeploy (thanks to the license terms of the CS version) too. I always thought had they stuck to that, and not veered into .NET and that whole weird ALM software pivot, they could have done much better.
I don't know how much you are at liberty to tell, but if there is anything more you can say about it: Why was the Ashton-Tate acquisition a "big mistake"?
The biggest project was writing all the software included with this college textbook: https://www.betterworldbooks.com/product/detail/quality-cont....
I found out later that the software in that book ended up being used in industry, including Jim Beam (the whiskey brand) using it in their distillery.
To compensate, Embarcadero now leans on its free Community Edition of Delphi and cheap school/academic licenses, to create a developer talent pool. The other quiet thing that they do is also lean on open source Free Pascal/Lazarus to help build an Object Pascal community and more interest.
For those that don't know, Delphi is a dialect of Object Pascal. Lazarus allows importing of Delphi projects, and is a pretty similar dialect, though there are differences.
Another element of the game played by Embarcadero (and Borland before it), is a lot of people don't realize they have a foot in the C++ world too, with their C++ Builder and open-source Dev-C++. They have other products in which they get revenue from too or to get attention.
Hey, if you need somebody who knows Delphi, I do.
In 1982ish in Germany I was programming my Apple II in Applesoft Basic and UCSD Pascal. UCSD was 3 floppies, I had a 2 floppy system so for certain steps one had to physically swap floppies.
I attended an Apple User Group In Frankfurt and somebody demo'ed Turbo Pascal 1.0 on their Apple with the Z80 add-in soft card under CP/M. Everybody was amazed with the speed and integration. I bought a copy on the spot, received it maybe 3 months later as it had to shipped from the US. By that time it was on version 2.0. I had bought the Z-80 card in the meantime and switched all software development to Turbo-Pascal.
Delphi was super good as well.
We have only gone backwards since those days..
Delphi (and Lazarus/Free Pascal) have a largely compatible and sane set of libraries that include quite sane string handling (you never allocate or deallocate them, the have length, and can contain nulls without issue)
The latest versions of things include generics, so you can make lists, trees, etc of your defined record type with little to no trouble.
Separate compilation of Units means that I almost never wait for a compile... it is always sub-second from hitting F9, to seeing the thing run.
The two-way tools to edit forms are one of the most productive I've ever seen. Borland C++ built a lot of boilerplate to make up for the C++ impedance match with their VCL libraries, that you couldn't tinker with, or things broke. Delphi/Lazarus don't have that issue.
Lazarus doesn't support GIT integration directly, yet, as far as I know. If you are doing personal projects, there's no reason not to use it.
FreePascal's Object Pascal is is a nice language, pascal alone gives you an environment similar to C, with Object Pascal you get some polymorphism (classes and methods). What's of course missing in comparison to C++ is templates, so as soon as you build containers you will find yourself casting again.
If you want to have a slightly-more-high-level language than C, it may work out. Especially the Unit-System allows for better modularisation and definitely is an improvement over include-headers.
For most applications nowadays I would like to have a GC in place, which kind of makes me wonder whether Modula/oberon would be the more natural choices nowadays for choosing a pascal-esque language. But then I quickly end up picking SML/ocaml because once you have a GC, you quickly want a couple of other niceties unless you really want to have a bare-metal language.
Another thing happened around that time, as the memory size and speed and number of desktop computers multiplied. Software broke out of the 640 kb limit, so feature sets went bonkers. This made it extremely challenging to deliver products with a very low price and very low support cost, two pillars of Borland's success. C++ came along, to develop which MS could afford a 9-figure price.
All of this put a lot of pressure on Borland and everyone else. Total profits for the software industry were lower than total profits for Microsoft. Borland and many others could not find a way and ran to the exits.
I know they had Windows IDEs but lets be honest, just like Wordstar, Lotus 123 and a bunch of others they were way too slow to move to Windows in the industry shake up that was Windows 95.
You can do things in Lazarus (the open source IDE based on Free Pascal) in minutes that take far, far too long to fiddle with in Python/WxBuilder, for example. I wasted weeks of time trying to use a "more modern" platform.
A while later the same mag gave away a copy of Delphi. That really opened things up. I found it was more accessible and was quickly making all kinds of stupid windows forms apps and sharing them with friends.
So, no insight into what went wrong but the name Borland has very positive associations for me, and it's safe to say their products played a role in the course my life took.
Funny you mention that, was it PC Pro? I bought the same magazine a long time ago, I remember the CD. I really wanted to make windows appear and things happen on screen. But I unfortunately couldn't figure out the programming. It only came to me much later and long after Delphi (and winforms) had fallen.
Another quirky memory of 1990s Brithish PC magazines: PC Shopper had a column by then-pharmacist-turned-computer-guy, now not wholly-unknown SF author Charlie Stross.
I also wonder what Phillipe Kahn is up to: https://en.wikipedia.org/wiki/Philippe_Kahn
He does get a few things wrong though, like open source. The best bits focus more on the 80ies.
They just seem to acquire defunct software companies. The only company that I know they sold again is SuSE. Everything else is just merged into Micro Focus. We never hear from the hordes for developer that presumable works there, nor do anyone claim to be using their products.
It's just a black hole for aging, failing software companies.
Once products/companies enter these roll up black holes, they are rarely heard from again by anyone other than legacy customers.
Oh, so a bit like Computer Associates, then?
The thing I remember most: They had some guy (short, with very long hair) that did demos for them. Live and without a net. He was good, and a good crowd pleaser. I hope he's doing well today.
[1]: https://en.wikipedia.org/wiki/Borland#Inprise_Corporation_er...
Microsoft poached dozens of key staff with 7 figure signing bonuses.
Also, ISTR some anticompetitive thing with Windows APIs, but the poaching was decisive.
https://www.amazon.co.uk/Search-Stupidity-Twenty-Marketing-D...
Most of these companies from the 80's and 90's foot gunned themselves into oblivion or were bought by companies that ruined their products.
No one who was active in the computer industry in the 90s will say that. Don't care what that book says.
I can cite one of many concrete examples which is Ashton Tate. Some young upstart with a compiler called Clipper by a company called Nantucket came and ate their lunch because dBase IV was a pile of crap. Sadly Nantuck got bought out by CA and that was the death knell. Microsoft didn't kill Clipper, CA did.
Sure in the 90's (late) Microsoft may have been a ruthless operator and stole many and various cheeses, but they were low hanging fruits (apologies for the mixed metaphors) and you can't blame Gate's and co for taking advantage of idiotic commercial choices made by people who were asleep at the wheel.
Sure Microsoft have abused their monopoly position during the browser wars but when it came to the old school productivity suites these older companies just weren't agile enough to protect their positions.
But don't let facts get in the way of a chance to bash Microsoft. Read that book, I'll even buy you a copy.
While Ashton-Tate itself was, perhaps somewhat ironically in this context, bought up by... Borland.
Lotus isn’t exactly dead. But it’s not exactly alive and well either.