-
Content Count
1078 -
Joined
-
Last visited
-
Days Won
24
David Schwartz last won the day on May 20
David Schwartz had the most liked content!
Community Reputation
383 ExcellentTechnical Information
-
Delphi-Version
Delphi 10.4 Sydney
Recent Profile Visitors
The recent visitors block is disabled and is not being shown to other users.
-
Please support Stack Overflow moderators strike against AI content policy
David Schwartz replied to Dalija Prasnikar's topic in Tips / Blogs / Tutorials / Videos
I've noticed that the vast majority of Delphi questions have negative votes, and very few have positive (non-zero) votes. If all questions with votes <= zero were deleted, there would be very few left. That tells me it has lost any intrinsic value it used to have. The Powers That Be don't like people asking questions any more than they like bots posting answers. So just shut the whole thing down. Most of the questions I post get a few downvotes and attract negative remarks, and are frequently locked for reasons I don't understand, so I just delete the entire post. SO has become useful to search for things, but not to get questions answered any more. Far too many people nit-pick and criticize. I can't say I have a lot of compassion for the Mods on SO. They (and many self-ascribed critics) have forgotten what life was like before they were experts, and they're far too dictatorial when it comes to expecting high-quality questions from 100% of SO users. SO is intended to be useful to everybody, not just people with the precise vocabularly skills of PhDs in the selected field. Here's a story that highlights the essence of the problems I typically have on SO, and where I see the greatest failure in SO serving the interests of its users. -------------------------- Around 1990, I was invited to help some guys who were trying to facilitate tech-transfer from the military to commercial sector for military facilities in the AZ and NM region. They basically wanted me to set up something like a BBS where military contractors could post abstracts and some details about tech stuff they were working on so people in the commercial sector could search it and find relevant things to consider licensing. My expertise was software and to some extent, linguistics; I had no idea what any of the topics they listed out as examples in their requirement spec related to. Of greater concern, all they showed were a few edited specs of military tech. In three successive meetings, I asked them to show me examples of commercial uses for anything they had. Finally, they coughed up one lone example. The military rep presented a 3 page summary of some tech that one of their contractors developed along with a patent they had been granted. The title of the patent was something like this: A method and means of applying long-wave infrared interferometry to estimate ballistic trajectories of projectiles targeting vehicles across a flat plain using surface-to-surface weapons. I had no idea what that meant, and it didn't make much sense even after reading the brief they supplied. Then they showed me a corresponding project that a company in the LA area needed help with that proved to be a relatively perfect match -- only you never would have known it by doing keyword matching. It was a hard disk drive maker who had a requirements spec that said something like this: Applications using short-wave optical sensors to facilitate high-resolution timing on HDD servo controllers. The intersection here was they both used the same optical wavelength interferometry to measure something. One called it "long-wave infrared" while the other called it "short-wave optical sensors". One was used for ballistic calculations and the other was used in conjunction with a servo track (a small disk on an HDD spindle) for high-res timing accuracy as the disk spun. I was told, "This is an example of what your design needs to do -- figure out that these use the same basic technology." I asked them, "How did this match-up occur?" The guy said, "Well, we hold these tech transfer seminars around the country and invite commercial R&D folks to come in and listen to our talks to see if what we're presenting is of any interest to them. This guy came up to our rep after a talk and said he'd like to learn more." Which makes sense. Then I asked him point blank, "Show me anything in these two briefs that could serve as the basis to even GUESS that the two applications are even similar, let alone a perfect match?" He hemmed and hawed, and finally said, "Well, that's what we're asking YOU to do." In fact, what they kept demanding I do was implement something that basically did simple keyword matches, yet they never gave me a single example that showed keyword matches that would have found anything relevant. ------------------------------- The problem here, and that I find is increasingly common on SO, is summarized by a famous line from the movie "Cool Hand Luke": "What we've got here is failure to communicate." What the military call "long-wave infrared" the HDD servo folks call "short-wave optical" -- which the military folks would consider at the "ultraviolet" end of the optical spectrum. The problem is, each one was using the idiomatic lexicon they were most familiar with, and if you try to do a match-up assuming they're using the same words to mean the same things, you're going to fail nearly 100% of the time. The problem on SO is that people posting questions, including myself, often explain things in whatever manner best expresses OUR understanding of the problem. Our choice of words and how we express them might not be very precise, but it's the best we can do with what we know. The Mods on SO, as well as lots of lurkers, seem to listen from a position of what I'd call "educated elite". They LOVE being critical of things that might actually make sense to them, but are not worded in a way they'd express them. So rather than rephrase the question or help the questioner improve how their question is expressed, they simply downvote the question or stamp it as "already answered" and point to some obscure post from years earlier. Much of the time, they also lock the posts. Sometimes I've found their reference(s) helpful by realizing I had not made the semantic association between my question and the parallel problem domain they pointed out. However, I have *NEVER* found that the things they claimed "already answered" my question actually DID. If you search for something using whatever keywords you can think of and you don't find anything useful, the last thing you want when you post a question is some smart-alec posting a terse reply basically saying, "Hey, dummy, you were not using the right words, and here's where your dumb question was answered a long time ago!" But, hey ... there we were. The post was locked and nobody was going to tell these egotistical narcissists they're full of crap. The SO platform is designed to keep the Kings in place, while those who don't speak the exact same language as the Kings aren't being served very well. If you disagree, then explain why there are so few questions with positive upvotes today? There used to be in years past. What happened, other than the evolution of a gross intolerance for questions that are not precisely worded? As for that tech-transfer project, they got tired of me refusing to build something that did simple keyword matching and found an outfit in Albequerque to do that. Sadly, it was online for about two years and only resulted in a handful of matchups before someone pulled the plug on their funding and it was taken down. Google still has the same problem today, only it does a little better job at using semantic networks to do some abstractions and even find things from time to time that are related contextually even though the keywords in the search string don't match. If it takes a bunch of AI bots to de-throne the Kings who act as Mods on StackOverflow, so be it. I'm tired of having questions voted down and being locked because I don't use the exact, precise words and explanations that the Mods and onlookers want. And I'm tired of the debates that have come up that are basically about terminology when my goal is to solve a programming problem. At the end of the day, no compiler cares about the pedantics of how we humans discuss our problems. Our goal is to reduce our thoughts down to something that can be compiled and does what we want it to at run-time. -
aside from the typo?
-
Team competition - how to do it
David Schwartz replied to Stano's topic in Algorithms, Data Structures and Class Design
Try explaining it so a 5th grader could understand it. Managing league playoffs is nothing new. It happens for most sports here in America every year. Is what you're doing any different? For instance, are you looking to sovle a single-elimination tournament, double-elimination tournament, or something more complicated? Start with that. Forget the implementation for now. (Yes, I know you're trying to build something, but you haven't explained WHAT yet, and are talking about the building blocks already.) -
The first C++ Standard was passed in 1997 (dated 1998), which was apparently before Herb's time there. The OP seemed to be asking about older versions of C++ from that time period (VB6) There's a very good reason for that -- it's because MS went in a different direction and tried their best to get the C++ Standards committe to embrace it. Talking about that is not "raking over" anything. It's just what's so about C++ back before it was a standard (early 1990's) and MS was still trying to make the world follow their lead. Thankfully the C++ Standards committee was not persuaded by MS' efforts. MS took what they called an "object based" approach, and had this large and gnarly library of macros (MFC) that ran with their C compiler that you needed to use to build apps for Windows at the time. Gates gave some talks at conferences about how "leading edge" their "object-based approach" was and how it would revolutionize programming -- LOL. All it did was drive lots and lots of small consulting companies into bankruptcy because you had to spend $3000 to attend a "certification class" to get full access to their tools allowing you to write stuff for Windows that was "certified". It took about a year to come up to speed, whereupon MS would announce a new version that everybody was again required to pay to learn and use. I avoided it like the plague and focused on embedded systems, most of which used DOS. The thing that made jaws drop at the Delphi introduction event (I was there!) was that Borland demostrated something that basically spat in Bill's face by making the whole Windows Message Loop totally DISAPPEAR! Programmers no longer needed to use that horrid "object-based" macro library with MSVC to write Windows apps. And the coup de grâce was that Delphi let you extend it by writing component libraries IN DELPHI ITSELF rather than requiring a totally different language and compiler, the way VB did (it required you to write its components in MSVC using that ugly macro library). I saw Delphi's introduction as an inflection point in Microsoft's approach to software development. A year after Delphi was introduced, they hired Anders (one of the key Delphi devs) to come in and change their direction by finally embracing real object-oriented programming instead of that stupid "object-based" approach they spent so much time and effort crowing about. Delphi also presented MS with the first serious competitor to their whole MSVC+Macros approach to Windows programming, which is a big reason why Delphi adoption took off so quickly. Curiously, MS stopped requiring people to attend their $3000 training course to get the tools needed to do Windows development. (Delphi was the cheaper option, if you can imagine that!) And in 1997, the C++ Standards Committee passed the first C++ Standard that had NONE of the stuff in it that MS lobbied so long and hard to get.
-
I got Borland's Turbo C++ and then Borland C++ and used them for many years. Microsoft's approach to C++ was very off-putting, to put it politely. They basically drove all of the C compiler vendors out of business except Borland, then put out this stinky POS that they called "C++" but it was really "C with classes". It sucked. They always had to go their own way. Their representative on the C++ standard's committee kept trying to push stuff into the proposal that MS wanted but was really off-base, and I think he finally just stopped participating because of all the flack his proposals attracted. I looked at their C++ platform now and then, and it just made me want to gag. I was getting burned-out on C++ around the time Delphi was introduced, and within 2 years I had switched entirely to Delphi, and I've never really looked back.
-
Sorry, I'm not offended. It's just how I come across sometimes. It's probably the jewish part of my upbringing... 😉 That said, you seem intent on ignoring relevant details that have a direct bearing on the quality of replies you'll get. This is a public forum where participants live all around the world. You'd be a fool to ask a legal question like you did and then give anybody's answer more than a grain of salt worth of credibility, unless someone replies who: (a) lives in the same country you do, or is familar with their laws; and (b) is familiar with the license terms you're referring to. Here's my take on this: you decided to save some money without consulting with a lawyer first, and it cost you what ... 5 times what a Pro license would have cost? Maybe you lucked out and didn't have to pay that yourself, but that's the problem with using "free" stuff -- sometimes it bites you in the ass. I don't really pay close attention to their CE licenses because EMBT seems to tweak them every year and all I hear is a lot of complaining about them. A paid license is a lot cheaper than a lawyer if I get into a squeeze, and I certainly don't need to get jammed-up and forced to pay for the highest-price license they have in lieu of getting sued. My best advice at this point is to suggest you contact a lawyer in your country, show them the license agreement and find out if there are any other surprises you don't know about. And before you come to America, find out if your license allows you to use it for the entire time you'll be here.
-
A "set" in Pascal is a collection of the same types of things where their value reflects a position in the set, meaning they can be expressed as ordinal values between 0 and the upper limit of members the compiler allows. If you want to use objects then their ordinal values can easily correspond to their memory location cast as an integer, which would be a 32- or 64-bit value, and the set itself would take up far more than available memory. Alternatively, the values could be hashed to result in a smaller container. But there's also this data structure called a "bag" which is an unordered collection of related things where you're only interested in whether something is "in the bag" or not. That's how databases tend to be organized, and indices are used to make tests for inclusion go much faster. In Pascal, a "set" is tightly correlated with its implementation, where members have ordinal values corresponding to unique bits in the allocated space. The compiler manages those values, in contrast to the values of object locations in memory, which are highly random. Look, I didn't invent any of this. I rarely use "sets" in Pascal because of this inherent limitation. I work mostly with objects, and you cannot put an object into a Pascal "set" nor test for its presence. But from a theoretical viewpoint, EVERYTHING is a "set" in my mind, which really doesn't resolve anything from a programming standpoint.
-
Sending email by Delphi Sydney on windows 7
David Schwartz replied to NBilov's topic in Network, Cloud and Web
The first thing that comes to my mind is ... did you copy the proper / latest SSL lib DLLs onto your system? They are not distributed with Delphi. I've got 10.4.2 and I had problems with something that were solved by downloading the latest SSL DLLs.- 10 replies
-
Why Should a C-Sharper Learn Delphi?
David Schwartz replied to Qasim Shahzad's topic in General Help
I'd have a hard time justifying to anybody that there's a clear benefit in learning Delphi just for Delphi's sake, unless you just want to broaden your language horizons. There are very few Delphi jobs around, and most of them seem to be to help maintain legacy platforms or keep a system running while another team is migrating it to something else. And the language itself is several years behind where others are today. Consider a sligtly different perspective.... How about also adding TMS WEB Core into the mix and say, "Here's a very simple and easy way to write WEB APPs that runs pretty much EVERYWHERE!" And, oh, BTW, you can also build native apps for several platforms that use common (FMX) or even native components if you like. That is, give them a reason to learn this platform that's not nearly as easy elsewhere. (I guess it begs the question of whether Delphi + WEB Core is unique enough to justify learning it on its own merits, or if it's just a way for old Delphi geeks to slide into a new application domain with minimal effort.) Unlike IntraWeb (which has been around for over a decade), TMS WEB Core does not depend on a server or special run-time to make it work. It runs inside of the web browser because it's transpiled to javascript. That said, you'll probably need to also build some kind of REST service to provide back-end support for your app, and Delphi has several out-of-the-box solutions for that as well (not to mention, TMS has XData). While you can use a bunch of common Delphi components (two different libraries TMS offers, both based on VCL components), you can also work entirely within the wider HTML/CSS/JS world and leverage any number of existing JS libs. Moreover, you don't even need to use the Delphi IDE! But the code you write is 100% Object Pascal that, with a bit of care, can be compiled and run as a normal Delphi program in Windows. There is another benefit for C-Sharper's: the same guy wrote both platforms, and they're very similar, so the learning curve won't be very difficult.- 12 replies
-
I'm unclear why you keep thinking of it like a Set. In my mind, it's just a collection (bag) of objects and you want to know if a given object is in it or not. If so, you get back True. If not, you get back False. If the semantics are that you don't want dups, then you only add to the bag after you get back False from a test for inclusion. In the DB world, I've seen lots of times when someone creates a method like, "AddOrUpdateWidget( aWidget : TWidget )" that subsumes the test to see if the widget is already there or not.
-
generics Destructor of Object in TObjectList<k,v> never gets called despite doOwnsValues
David Schwartz replied to omnibrain's topic in Algorithms, Data Structures and Class Design
Some of us would notice this immediately because we make a concerted effort to minimize Hints and Warnings that the compiler produces. But for those who aren't so inclined, it's just another bit of noise to be ignored. -
The only thing "misleading and meaningless" is your ASSUMPTION that everybody who visits this site is subject to the same laws and agreements YOU are. The only things that everybody who visits this site is affected by universally are EMBT's terms stated in their CE license. And THOSE are even controlled to a certain extent by local laws. Two things control YOUR SPECIFIC situation: (1) YOUR employment contract; and (2) the laws in effect in the jurisdiction where YOU live. It's very unlikely that any two visitors to this site are subject to the same legal terms in that respect. So telling someone else that you think what they say is "misleading and meaningless" is totally inappropriate. Are you a lawyer giving out legal advice? You have not even said what country you live in, or what State if you're in America! How do you know what applies to the rest of us? I can tell you that the Non-Compete / Non-Disclosure Agreements companies present to workers in Arizona are very different from those presented to workers in California, because California imposes much stricter controls on what companies there can demand of their employees versus Arizona. Yet most programmers I know here in AZ haven't got a clue. Most employment agreements presented to workers in AZ would be found unenforceable in California. And they DO usually say that whatever you do 24/7/365 while working for them BELONGS TO THEM by default. So what happens when you get a contract to work for a California company at an AZ location and they present you with an employment agreement that would be unenforceable in California? Most programmers simply sign them -- and if you're dumb enough to sign it, then it IS enforceable IN ARIZONA! I just say I'll be happy to sign the paperwork they give to workers in California, and they say, "Ok" and send me different paperwork. You're basically asking people who live in different places around the world to comment on a situation you're in without providng a reference point. And you're then asserting that replies you get are wrong. REALLY? This isn't about EMBT's CE license or open-source software. You haven't given people enough details to know if it's got more to do with your specific employment situation, which may well be the controlling factor here. The truth is, from what you've said, YOU DON'T KNOW! You're just GUESSING that it's related to the CE License Terms. I have had employment agreements as well as contracts presented to me that would get me fired if what you described happened to me. It's NOT A JOKE. It might be "misleading and meaningless" to you, but not to everybody in the whole world. It's inappropriate for you to simply shrug it off as if your situation applies universally to everybody here. Or that it's just EMBT's CE License Terms.
-
Hiring process...
David Schwartz replied to Rick_Delphi's topic in Job Opportunities / Coder for Hire
A lot of these things seem to have the net result of converting things back to a centralized administration. The "PC Revolution" decentralized the computing systems and put a PC on everybody's desk. But now there's an IT Dept that manages everything on those computers. Other groups are getting their fingers into the processes they're being used for, including software development, bug tracking, and document production. Software development has lost a lot of what used to make it fun. Agile has been a big contributor to that. CMMI doesn't say what processes to follow, only that an organization needs to lay out some processes and move the organization in a direction that they are always followed, mostly for the purpose of taking individual decision making out of the hands of developers and putting them on some kind of committee or automated process manager. One place I worked was moving towards CMMI Level 3, and part of their process model said that any changes to source code had to be traceable back to a work order or bug ticket, and we couldn't check in any code that didn't have that. Another aspect of their process model said that although the Dev Team owned the Agile ticket backlog, we weren't allowed to put anything into it. In fact, we could not post bug tickets at all -- only the customer can do that, and each bug ticket had to be accompanied by detailed instructions that allowed us to reproduce the errors. Which is fine as long as you don't have bugs in the system that cause random errors that cannot be reproduced because they're data-sensitive; they cannot be touched by anybody for any reason, even if we found and documented some along with how to fix them. (I'm speaking from experience.) It's not as much fun any more. -
Something like SimpleNote with an API?
David Schwartz replied to David Schwartz's topic in General Help
Well, sort of. I'm building a web app using TMS WEB Core, and it runs in the web browser. I noticed that on my phone there's a way to "share" something. So I'm able to write a text message, say, and then "share" it with SimpleNote. I guess it launches SN (or Notes, or whatever) and lets me create a new note with the contents of that text message. I checked and WEB Core seems to have a TWebShare component that lets you access that feature if it exists on a platform. It's not quite what I was hoping for. I'm still considering alternatives, like letting the user choose what to do when they hit the [Save] button, like sending an email or text message or doing some kind of "share" with another app. Or maybe I'll just build a version of SimpleNote. Who knows. I haven't decided which way to go yet. But folks here seem to think that the more friction your users encounter, the more they're gonna LOVE your app.... -
QUESTION: at your work, does your employer have ANY registered versions of Delphi? I'm guessing they DO, because otherwise EMBT would have no way of knowing you work for them. My opinion is because of THAT and because you used your PERSONAL computer for PERSONAL work and connected to YOUR EMPLOYER'S NETWORK ... you basically waved a big red flag in front of anybody who might be watching. If you read your employment agreement, there's a very good chance that says anything you work on using COMPANY RESOURCES BELONGS TO THE COMPANY. In many states in America, this is part of a "non-compete agreement" and laws have been enacted that say if you work on something OUTSIDE of work, using YOUR OWN RESOURCES, on YOUR OWN TIME, then the fruits of your labors are YOURS and your employer has no claims on them. Otherwise, they belong to the company. But MOST states aren't that enlightened -- their non-compete agreements say that ANYTHING YOU WORK ON 24/7/365 BELONGS TO THEM! So all EMBT needed to do was ask whether your non-compete agreement says that whatever you work on using any of their resources belongs to THEM or not. If so, you basically put your employer into their crosshairs from a legal standpoint. You used the CE version to write software that may have belonged to your employer right from the outset. Do you understand that? Because by your admission, you DID use some COMPANY RESOURCES -- their INTERNET. And even though say you were "at lunch", it seems YOU WERE PHYSICALLY DOING THIS AT WORK (because you were connected to their internet), which can be construed to be "on company time" -- being "on break" is still tracked by the company while you're at work. If, instead, you went to a local restaurant and accessed THEIR network, or used your phone as a WiFi Hotspot, there's not much room for anybody to claim your employer is in any way involved -- unless your non-compete agreement says that ANYTHING you work on IS THEIRS. The CE license DOES allow you to distribute programs compiled with the CE edition, right? For free or for a fee, right? So that's not the issue. The issue is, what if your employer might be using it? Personally, I'd say you'd be skating on thin ice with that one, because maybe your employer has not renewed their maintenance agreement in years and is not interested in doing so. But if you build stuff "on your own" that actually is of benefit to your employer (and may actually belong to them), I'd say that's a very fishy situation and hard to defend. Sure, it's one thing if the company makes widgets and your app is for taking notes; you can argue, "So what?" But EMBT can argue that they might have had some role in encouraging you to do this to save them the license fee, right? Which may be why they paid for your Architect license -- because EMBT had threatened THEM with a much bigger lawsuit. They may have had no knowledge of your efforts, but ... how did they end up using the app you created??? See, that's the fishy part to me. Your actions might have been innocent, but there's just too much overlap between your actions, and who benefitted from them. You used company resources and they got a direct benefit by using your creation. That's really what it boils down to as far as I can tell. And you're probably lucky you didn't get fired. I have worked plenty of places and worked on my own stuff independently, but that's the key -- INDEPENDENTLY. Meaning NOT AT WORK, NOT USING ANY COMPANY RESOURCES, and certainly NOT USING MY SOFTWARE AT PLACES WHERE I WORK. I don't know why people here are making up so much nonsense about this. EMBT wants the CE version to be used by people at home and at school to learn to build programs with Delphi. There are TONS of people who build lots open-source and free stuff and never make a dime from it. Maybe the company you work for does. But if you get paid as a programmer, and you use the CE edition "at work, using company resources", I'd say there's about a 95% chance you and your employer are going to get found out, no matter how innocent you think your actions might be. To avoid that, talk with your boss, your IT manager (whomever manages your software licenses), and go over your employment agreement to find out what the exact requirements are for you to be able to work on your own projects at home independently from work. You might have to negotiate a separate non-compete agreement and/or disclose what you are or plan to be working on outside of work. And whatever you do, do NOT do it using ANY of your employer's resources -- like, don't even sit in your car in their parking lot at lunch time or park nearby at night after work just to use their internet! At the end of the day, this is not really about the CE license at all, but about keeping your personal life outside of work completely separate from your employer, their time, resources, and whatever your non-compete agreement says about this stuff. Consider that the reason they have that $5000 earnings limit is they WANT you to make money with it! Because if you do, you'll probably want to make even MORE with it. And to do that, you can use SOME of your earnings to BUY A LICENSE, which removes the earnings cap and lets you make as much as you want.