It's 29—Delphi, I mean
blog.marcocantu.com
blog.marcocantu.com
The trade-off was/is that building software as easily as late 90's desktop applications is extremely difficult to do on the web; in fact, we're still not there. Surprisingly, no-one has made a Delphi (or Access) clone that runs on the web. It seems like we're getting there, but incredibly slowly and only asymptotically approaching that experience.
On the bright-side, webapps have invented some novel and useful ways of writing applications that are in some ways superior to the old ways - the ideas behind React (in particular, rendering application state as a single function), or Redux (modeling application state as a monolithic, immutable object against which reducers run) may not have arisen if not for this shift. I'd also credit JavaScript with making functional programming mainstream, a great example of "worse is better".
Another part of the issue may be that younger programmers are simply not aware of the DX of building with tools like Delphi or Access. And in turn, older programmers have forgotten the headaches of dealing with closed-source tools and the distribution headaches that came with them. (And the ones who are aware are themselves unaware of the DX of building with Smalltalk.) You cannot miss what you never experienced or do not know about.
There have been a couple attempts but they were all closed source from small developers that died (the projects) once the developers couldn't convince anyone to pay for them. Ironically one of these attempts used Pascal too (IIRC it was using a fork of Free Pascal).
There was also Microsoft's Web Forms which kinda did something similar in the early 2000s or so, though AFAIK it wasn't as "drop an exe and have it work" as programs made in Delphi for the desktop were.
I have a different perspective. I see it more as a question about runtime environment. We still have 20y old Delphi applications in production, and distribution is trivial, corporate machines have software that just installs the apps the users need based on their roles, and they autoupdate etc. My team still hates them and want to replace them with webapps, even with no distribution or ownership issues.
For us the big issue is the "it's not working for me, what could be wrong?" cases where you have to dedicate half a day or more of expert time trying to figure out which absurd corner of microsoft windows is causing issues on the particular intersection of that one application on that one entirely unique computer configuration (even after corporate management of software/policies etc), and of cause that one particular user, because what could they have done?
Web apps have the benefit that they don't run on microsoft windows, they run on chrome (even if you use edge), and chrome is a much better operating system than windows will ever dream of being. It even fulfilled java's pipedream of being cross platform (well effectively from a user perspective anyway).
I left web development and have been having the time of my life. Web dev is nothing but stress and pain. The first relatively pain free web dev experience I had was using Vue3 (not counting Laravel ten years ago).
Distribution is easy. It's just that in many companies it is hard to convince IT to distribute your software, while it is perfectly fine to have a web browser on the computer.
Isn't that the definition of hard?
No, that is the definition of "a different problem":
- distribution: easy
- convincing an organization: hard
I like to make my software single html files whenever possible. People can just save them and run them locally. Havent met anyone who cares yet though.
It means owning the code and the data. With webapps, the code and data are hosted and owned, the users do not own the code, cannot run it independently. This is a clear dileneation between owner and user, and the owners can use that clear line to create artificial scarcity of various kinds. (The most popular being the subscription SaaS model). It's also easier to defend your IP since end users never see your binaries.
> I like to make my software single html files whenever possible. People can just save them and run them locally. Havent met anyone who cares yet though.
I like that idea a lot, and I care. I think others care, but yes, it's a niche interest. Take a look at https://tiddlywiki.com/ for an example of a fairly successful project that uses the single html format running locally. However it suffers from limitations on File|Save which often requires a separate runtime of some kind to support.
Another project that approaches this ideal is https://redbean.dev/, @jart's tiny, performant, featureful single-file webserver. In this case the "single file" is a server executable + zip whose state must be updated on the command-line, but I think hits a sweet spot in terms of practicality, and a global minima when it comes to minimizing dependencies. (Redbean bundles SQLite and Lua so it's also possible to do through-the-web state updates as in a traditional webapp.)
My own project, Simpatico, aspires to be something along these lines.
renamed later to RadPHP and then abandoned.
I had tried it out briefly, but dropped it because it was too buggy.
Later they killed it.
Yes they have, but many aren't willing to pay for their tools, so only big corps get to see them, see OutSystems.
Also WebForms and now Blazor, are pretty much it.
I wanted something integrated (UI, storage, business logic) but with real code (not a no-code platform like Bubble.io).
Will it succeed? I don't know. Maybe no one wants RAD anymore. Or maybe no-code platforms are good enough. Or maybe AI will be a better answer.
Still, I have to try.
If you can pull it off, I guess we'll grudgingly forgive you for not finishing Vault of the Galaxy yet. :)
Thanks for the link!
Let me know if you find a project. I'm trying to integrate TransData into GridWhale so you can manipulate Transcendence tables in GridWhale.
And, as you know, I still do Twitch streams on Thursdays at 3 PM Pacific. Drop by sometime and chat.
- Pascal seems like a mature language but looks like it's got its warts and being a language of the 80/90s may not offer the niceties of languages that came after it. One concrete criticism I came across was some inconsistencies in the language design meaning you want to be careful as some things work one way and others another way, and some things don't work as you expect (at the syntax/semantics level if I recall correctly).
- GTK support is still work in progress according to wiki pages I could find: mainly GTK3(??) and GTK4 which aren't 100% stable. If you want to use GTK2 that seems fully supported. Given the Linux GTK based distros are on GTK3 and moving to 4, seems less than ideal. I'm not sure if/how much the situation is better in the QT bindings.
The QT bindings are pretty up to date according to the wiki:
I was hoping to get some insight from someone who's deeply familiar with it and can provide their experience and opinion after using it for a reasonable amount.
This suggests GTK3 support is not going to be great any time soon.
https://forum.lazarus.freepascal.org/index.php/topic,63867.m...
Fun fact, recently an attempt to add unicode support to Free Vision (and related units) was submitted to the repository and while that worked, it broke a bunch of things and introduced extra jank (and a massive performance regression, even if you are not using the unicode-aware units) to it (including the textmode IDE, which -e.g.- crashes the second time you try to build something).
But this is in the development version from the repository and there are no plans currently to make a new release soon, so chances are by the time a new release is made this will be fixed.
> I don't see how someone used to Delphi or VB can tolerate building anything with Lazarus. The polish isn't there.
Personally i find Lazarus much more polished than Visual Basic ever was.
Yeah that is a valid criticism, Free Pascal (and Delphi's Object Pascal, but because Free Pascal supports multiple dialects it is more pronounced there) isn't so much "designed" as "organically grown". On the other hand, you could say the same for any language that has been around for a long time and tried to add new functionality without breaking existing code.
In practice while you may come across the occasional 'gotcha', you won't really have much of a problem. E.g. in Free Pascal - and Pascal since Borland's Turbo Pascal - the function result is actually a hidden parameter passed by reference (this helps to avoid costly copies if you return records/structures). I've been writing Pascal code since the 90s and yet it was only very recently that this caused a bug in my code. TBH if you have written in C#, C++, Java, or any other "unexcitingly mainstream" language you'll be fine writing Free Pascal too.
The biggest issue with the language i have is the three different compound types ("record", "object", "class") and really it is mainly about how you can't do things with two of them ("record" and "object") that you can do with the third ("class") for seemingly arbitrary reasons (especially since under the hood the compiler treats them all the same). But it is largely an annoyance that you can almost always work around, not a roadblock.
> GTK support is still work in progress according to wiki pages I could find: mainly GTK3(??) and GTK4 which aren't 100% stable. If you want to use GTK2 that seems fully supported. Given the Linux GTK based distros are on GTK3 and moving to 4, seems less than ideal. I'm not sure if/how much the situation is better in the QT bindings.
For Gtk3 the main issue is the developer who mainly worked on the Gtk backends got tired of the Gtk developers breaking the API every new major version just as he was getting things working and decided to just abandon the effort. I think someone else is providing patches for Gtk3 nowadays though. Personally i contribute the occasional fix to Gtk2 as not only it is the most stable but also i prefer Gtk2 apps to Gtk3 apps. I also keep Gtk1 working (one neat aspect with Gtk1 is that you can statically link against it and thus make a binary that only relies on X11 - and OpenGL if you use that - like, e.g., the binary i have here[0])
However there is a lot of development on the Qt backend (AFAIK including the guy who used to work on Gtk3) to the point that it might become the default in the future. You can try the binaries of a tool i wrote from [0] that are built with Gtk1 (statically), Gtk2 (dynamically) and Qt6 (links to the Qt bindings statically but to Qt6 libraries dynamically) and see how they look like in practice (note that ironically the Gtk2 one might actually have issues - i built it from the repository version, not any official release). Note that i compiled this on my Linux PC running openSUSE Tumbleweed so it was linked against fairly recent versions (e.g. you need Qt 6.6 - a friend of mine running Debian couldn't run it because none of the repositories had it).
It equally applies to ANY current programming language, including the fashionable Golang and Rust, not to mention Python, Java, C#, C++ or JavaScript.
So this argument is childish.
My recommendation is to ignore language design, I spent a lot of time trying to find the best way to create cross platform desktop applications in a "nice" language. This was just time wasted.
What you should look at is how productive you can be and how much of the problem space the language and framework solves for you.
By changing to this perspective you will notice that your number of options increases drastically.
No technology ever truly dies.
https://docwiki.embarcadero.com/RADStudio/Sydney/en/Inline_V...
I'm nostalgic about Pascal because it was my first real professional full-time payed programming language and I loved it passionately for years. But now, I kinda don't trust myself when I just see old dated stuff compared to what we use now. It is the past for me, but maybe it's not the case for people without my baggage
Or maybe because Wirth died recently?
https://news.ycombinator.com/item?id=39473042
(Why NYT is just getting around to an obit, I do not know.)
Yes, absolutely!
Of course we're talking about stuff like rail yard management, not ticket booking. That used to be mainframe based, but is likely Enterprise Java for the last two decades or so.
Our software is under active development, but we're transitioning away from Delphi. Mainly due to the difficulty finding developers who want to work with it, and C# and .Net now is a much more compelling platform than it was 20 years ago.
Doesn't help that desktop-oriented applications going the way of the dodo, effectively neutering the main selling point of Delphi: its RAD capability.
You can read “29 Delphi” similar to “29 AD”, and it almost works.
A more formal of writing what they said is "It—that is, Delphi—is 29 years old."
Edit: The title read "It's 29 Delphi, I mean" at first. Now it reads "It's 29—Delphi, I mean"
The same topic with VB6 and putting Perl instead.
(incidentally there was also Visual Tcl[3] which was quite interesting in that while it had a Delphi/Lazarus/BoaConstructor-like interface, you could modify the program while it was running)
[0] https://boa-constructor.sourceforge.net/Screenshots/
[1] (the name is probably a play on C++ Builder)
[2] old name of wxWidgets before Microsoft asked them to change it