Jump to content

David Schwartz

Members
  • Content Count

    1191
  • Joined

  • Last visited

  • Days Won

    24

Everything posted by David Schwartz

  1. David Schwartz

    How to get Linux installed?

    Enterprise Edition Delphi 10.2.3 installer from ISO It even installed the Android platform this time, although I'm not sure it ran the external setups for the SDK. It's running on Windows 7 SP1 (V6.1, Build 7601, 64-bit Edition)
  2. This is focused on Perl, but it mentions Delphi as well. https://thehftguy.com/2019/10/07/perl-is-dying-quick-could-be-extinct-by-2023/
  3. David Schwartz

    Any update on the v10.3.3 release?

    I use a VM. Installing a new Delphi update is just as much of a PITA on a VM as on a host machine.
  4. David Schwartz

    Interesting article about dying languages

    Isn't there a survey that reports on the number of job ads for specific languages? I'd think that would be more indicative. Even more interesting would be things like what version of Java or C# is being requested. Most Delphi jobs are for legacy stuff and are almost universally D2010 or earlier, so that's sort of meaningless for us. But there's a HUGE amount of Java that's still Java 5 and 6, although you often don't know until you ask.
  5. David Schwartz

    Interesting article about dying languages

    Very cool!
  6. If memory serves me correctly, MS SQL Server has a metadata-field attached to everything that serves just this purpose. It's distinct from the ones that you can add comments in SQL GUI tools. I was looking through MS documentation for an odd TSQL API function that some code was calling, and I scrolled around the other functions in that group, and it seemed like an odd collection of stuff attached to records and tables.
  7. Who is the consumer of this data? Run-time access presumes the end-user, which doesn't make much sense. End users have no knowledge of what's under-the-hood. It's like when SQL queries fail and spill these horrid run-on queries to the user in a warning box. Great for testing, but bad to have them exposed in the field. Can you describe your use-case better? (some?)
  8. David Schwartz

    Modern C++ and Delphi

    Much of this is true, and I'd like to say it's Delphi-specific. But when you suggest redesigning an app by moving the business logic to so-called micro-service APIs, they cringe. Then someone comes along and suggests doing something analogous using Microsoft's latest stuff and their ears perk up as if they'd never heard it before. And they don't even seem to notice when 2-3 zeros are added to the total cost. I've never seen a "migration" from a large stable Delphi app to a full .NET web-service app succeed. At least, not in the time I was working at these places, and they all were scheduled to be complete during my tenure by had barely made headway by the time I left. I just don't get it. It's actually pretty straightforward to migrate business logic out of a Delphi app incrementally, and improve the testability dramatically along the way. But Management always seems to jump on the Microsoft bandwagon that restarts everything from scratch with a whole new design.
  9. David Schwartz

    Modern C++ and Delphi

    Fair point, but it's more a matter of "when" and "where"... I began using C in 1985, learned C++ about a year later and used it heavily from 1987 thru about 2000. Delphi was released in 1995 and it replaced C++ in my daily work by 2000. I used C/C++ at the time b/c I was doing embedded real-time system programming. Work in business apps, mostly under Windows, was taking off in the 90's, and it became far easier to find Delphi work than C/C++ work. Now it's getting hard to find ANY work b/c potential employers want to see 3+ years of immediate hands-on experience with whatever tools they happen to be using. (I remember seeing an ad for a job about 6 months after Apple published their iOS API that stated "must have at least 3 years experience working in iOS".) It's possible to learn pretty much anything, but you can't magically conjure up OTJ experience for them. 🙂 The last bunch of C code I looked at was some open-source stuff that was written in a way to simulate what C++ did, but in the author's words, "to avoid the overhead that C++ imposes at run-time". So instead, you had to write tons of highly stylized code to pretend you were working with classes. The last bunch of C++ code I looked at was well over a decade old and was about as "vanilla" as you could get. It hardly even implemented any of the idioms from that famous "C++ Idioms" book. Not a whole lot of consistency across any of the class designs. There was also a Delphi gig I had around 2004 where I was asked to maintain some code written by a guy steeped in C++; it was an unbelievably large and convoluted class library in Delphi that was extremely hard to figure out even with C++ expertise. Ditto for Delphi. In fact, all of the Delphi gigs I've had in the past 10 years were all maintaining D6/D7 code. Sadly the main reason a couple of them migrated to newer versions of Delphi was because the IT people there forced them to upgrade SQL Server and they needed to upgrade some libs they used with it that were only available in newer versions of Delphi. So aside from the fact that I try to keep up with the latest Delphi features myself, it's not due to any actual employment / OTJ needs. As an aside, there was a time I was working on learning Java. It's very similar to C/C++ in my mind, and Java 8 had just been introduced. I ran into a curious problem. I'd see job reqs that just specified "Java" (no version#) and libs like Spring. When I'd inquire more deeply, I'd find out they were almost all using Java 5. I talked with a VP of software at InfusionSoft at a job fair about this and asked, "When are you moving to Java 7?" and he admitted their entire platform was based on Java 5 and they had a few guys working on Java 6, but it would be at least 2 years before they could switch because they'd have to completely rearchitect their entire platform first. Meanwhile, he said they were hiring as many Java (?) developers as fast as they could. State Farm moved their world development HQ to Phoenix and they have been hiring Java devs like crazy. All Java 5 at the time I inquired, but they don't say that in any of the job reqs I've seen. I was particularly interested in the functional aspects added to Java 7, and not one place I talked with said they're using them (or even Java 7 itself). Kind of the same way none of the Delphi projects I've worked on use Interface units for anything other than those mandated by OCX. The last place I was at, my colleagues complained about my use of functional code stuff in Delphi using a library that made it much easier. It sure did simplify the code and make it a lot easier to read, but they just weren't interested. So I'm glad to hear there are places that actually keep up with new languages features and idiomatic uses. That's not what I've encountered over the past 25 years in this field, and not for lack of trying. I've found places that use the latest versions of Delphi, for example, but almost none of the features introduced since D2010. Trying to introduce them starts pushing upstream against fears rooted in the harm refactoring can have vs. stability. Very little new code is being written, and when it does happen, they want you to follow existing coding practices so future maintainers don't have to deal with a variety of coding styles. That sort of attitude is hardly language-specific in my experience. As the old saying goes, YMMV.
  10. David Schwartz

    LiveBinding at runtime

    Well, that's what the marketing fluff says, right? 🙂
  11. David Schwartz

    Modern C++ and Delphi

    C++ has had inline var declarations forever, that's true; although I disagree with your conclusion, mainly because I never saw them used much that way when I worked with C++. I even tried using them occasionally; I found them quite clunky to use except for relatively long lists of operations on the same base object. (It has been many years since, but the code I've glanced over still doesn't show that people use what you're suggesting.) Delphi now has inline var declarations too, and I bet they won't replace with statements, or end up making code any shorter for people who are allergic to with statements.
  12. David Schwartz

    Modern C++ and Delphi

    I didn't know that. 🙂
  13. David Schwartz

    LiveBinding at runtime

    As was asked earlier, why are you trying to use LiveBindings with a data-aware control in the first place? LiveBindings were designed to replace the need (and overhead) of data-aware controls. Even if you get this example working, I think it might end up causing strange problems at run-time because the data-aware control events could trigger LiveBinding events and either go in circles or undo each other.
  14. David Schwartz

    Modern C++ and Delphi

    My beef is that it's too verbose compared with Delphi. Not that it doesn't work. But if that's your exclusive experience, then of course that's what you're going to say. There are some things about C++ that I sorely miss in Delphi, but I've learned to get past them. But looking over the draft of the latest C++20 std proposal, mostly what I see is the need for more and more namespace qualifiers (somenamespace::dothis(xyz) constructs) that just clutter things up. C++ will never have a 'with' statement, although it sorely needs it for just this reason. (And yes, it can be easily misused and abused, the same way people can set the color of a STOP button to Green and the color of a GO button to Red, and all sorts of other things that can be done if you don't apply a little common sense to them. Please don't go there!)
  15. David Schwartz

    Modern C++ and Delphi

    I'd go a step further and suggest implementing the UI stuff in Delphi and move the business logic into microservices. DLLs can't be moved off of the machine, but microservices can be run anywhere -- locally or moved to another machine somewhere (assuming it handles the OS needs). And you can implement microservices in whatever language you want. You could start by migrating the existing C++ and HT Basic (if that's possible) into the microservice bundle, then rewrite them any time you want later on. I spent 15 years working with c and c++, but when I compare the same app implemented in both Delphi and c++ Builder, the c++ source code is invariably 2x-3x the size of the .pas code. It's just horribly verbose, which is totally ironic because most people's biggest criticism of both c and c++ is that it's often so terse as to be almost cryptic to read! Maybe some features of the latest iterations of c++ will help, but I wouldn't hold my breath. If you look at the evolution of c++, there were originally all sorts of implied namespaces for things. It's as if there were a bunch of Pascal's 'with' statements sprinkled around all of the header files. At least in Pascal/Delphi, you tend to have the benefit of a 'with' statement in close proximity to where it's used, not hidden in header files. What I am most struck with in the evolution of c++ is how the standards folks have been sussing out all of these implied namespaces and are now requiring them to be listed explicitly. So you end up with namespace qualifiers littering the code landscape, yet offering no particular benefit in the most common use cases. NOT using them is certainly possible, but then you're right back to having implied 'with' statements throughout your code. This seems to be the source of so much bloat in the c++ source files vs. Delphi. You don't need to use 'with' statements in Pascal, but it sure does help to make the code a whole lot more readable in many cases. Also, the way property designations are managed by the compiler in Delphi makes them very natural to read and write. In c++ they're more like having to wear galoshes over your boots while the Delphi expressions are more like lightweight flip-flops. IMHO, C++ is great for lots of things, but not interfacing with UIs or the VCL.
  16. David Schwartz

    Call to create a form to return a value?

    Ok the problem has been fixed. Please try again: http://w5a.com/u/coderage-9-talk
  17. David Schwartz

    Call to create a form to return a value?

    Your previous code set Action := caFree, then the call to Execute did a F := Create ... if aFunc(F.ShowModal) then use stuff in F ... F.Free If you're going to reference ANYTHING in F after calling ShowModal then you want to set Action := caHide and then call F.Free later. The problems with passing a record in are unrelated. You might want to watch my CodeRage 9 session here: https://w5a.com/u/coderage-9-talk
  18. Where do I find info on enabling 10.2.x and 10.3.x to support Android and Linux? I went through and upgraded one VM from 10.2.2 --> 10.2.3 and it ended saying to expect a separate Android SDK installer, but nothing came up after I clicked Finish. And I saw no mention of Linux anywhere. Similar thing happened upgrading 10.3.1 --> 10.3.2. All I've found on EMBTs site is how to select a platform in the IDE. They have to be installed first before you can select them; that's what I'm looking for.
  19. David Schwartz

    installing support for Android and Linux platforms

    Ok, I switched to the ISO installer again, and I notice that both Android and Linux are ENABLED by default, along with iOS and MacOS options. They weren't installed last time I ran the installer, let's see if they get installed this time.
  20. David Schwartz

    installing support for Android and Linux platforms

    Well, I finally got around to flushing out Delphi 3.2.3 installed via ISO and all the component libs from a copy of the VM so I can run the ESD installer. It installed the base stuff, the gave me a menu of options. I selected a lot of stuff, then it stopped: Operation Error A problem occurred during the process For those who cannot "read between the lines" of that super-informative error message, you have to hit the Retry button to see what the problem is. Seems it couldn't download the JDK. (Is the JDK even required to build Android apps? It's an option, but it would be nice if the UI informed users if it's actually required or not.) The only options this dialog offers are "Retry" and "Cancel". Retry gets the same results over and over, and Cancel ... well, it just aborts the whole installation process and launches Delphi. WTF? So now to continue (or install anything else you forgot the first time around), it UNINSTALLS everything, then REINSTALLS the base files, then presents the same options. This time I don't ask for Android support, and restart the process. About 30 seconds in, it stopped: Operation Error A problem occurred during the process Hitting Retry a few times show it's unable to download DirectX. Ok, so HOW THE HELL DO YOU INSTALL EVERYTHING WHEN IT STOPS DEAD IN ITS TRACKS WHEN IT CAN'T DL A FILE AND THEN REQUIRES A FULL UNINSTALL/REINSTALL TO CONTINUE??? All of the files are on the ISO volume, but the ESD installer fails because it can't download files. Sheesh....
  21. David Schwartz

    installing support for Android and Linux platforms

    I did install via ISO, and I never saw an option to select or deselect platforms. There's a tree-view kind of display that shows things like Intraweb, FastReport, code examples, etc., but nothing was grayed-out, so I assumed it was installing everything. What did I miss? Anyway, I already had to uninstall and re-install, and it took nearly 90 minutes just to un-install! Why can't it just snip off entire folders, then go back and see what's left and adjust its DB accordingly? This has to be one of the least efficient processes I can possibly imagine doing.
  22. David Schwartz

    Beginner - How is Delphi for mobile development?

    Check out bubble.io and similar platforms. They may be better suited to your needs.
  23. David Schwartz

    formatting HTML code

    This site https://htmlformatter.com/ does an awesome job of taking a huge glom of unformatted HTML and pretty-printing it so it's super-readable. Are there any components that can do that in Delphi? You'd give it a string or stringstream, and it formats it into another string or stringstream or TStringList (eg., a TMemo) All I can find in Google is how to format Delphi (pascal) code.
  24. David Schwartz

    formatting HTML code

    Thanks, but my time is exhausted on this. It wasn't worth the trouble to automate ... faster to just eyeball the results.
  25. David Schwartz

    Bitonic sorter

    Interesting. Thanks. I notice that the java code example doesn't utilize any of Java's built-in parallelism / threading stuff. Can't say about the Python example. Is there an expectation that the underlying hardware or something else is smart enough to break this into parallel pieces at run-time? (I'm not really up on contemporary parallelism tech.)
×