Jump to content

David Schwartz

Members
  • Content Count

    1223
  • Joined

  • Last visited

  • Days Won

    25

Everything posted by David Schwartz

  1. David Schwartz

    looking for UI design ideas for tracking a process

    I'm kind of limited on vertical space. What about a combo-box with the main items, and that displays a different list of check-boxes below. Maybe when you click the down-arrow on the combo, it shows the list of radio items. Pick one and it shows that item in the combo as the one you're working on and the check-boxes below. Or start with the radio buttons; pick one and it disappears but shows the selected item at the top with its related check-boxes below. Kind of a "drill-down" effect. Do you think you would you find something along this line easy to use as well as compact? Thoughts?
  2. David Schwartz

    looking for UI design ideas for tracking a process

    Ahh, this is what I was trying to avoid -- storage details. 🙂 Forget what's under the hood. What does it LOOK LIKE? A treelist is sort of my automatic go-to choice for the UI. What I'm looking for is ... something different. I'm curious what others might come up with.
  3. David Schwartz

    looking for UI design ideas for tracking a process

    There's clearly a hierarchy. I'm mostly curious how folks would handle it, which is why I didn't bring it up. (My mind seems to be locked-in on a tree-view, so I'm looking for some other ideas.) I'm guessing you'd start with what I showed (the main tasks) and then when one of those items is clicked you'd show this in a popup? Then once all of the required sub-steps is complete then the parent would show complete? I had not thought of this. Thanks!
  4. David Schwartz

    where can I get general git process questions answered?

    I've had very poor luck getting general questions like this answered on SO. They usually get downvoted and then locked. I'm thinking more like git-specific forums that help folks understand git better. It's an open-source project; aside from discussion boards about specific tools, all I can think of is the tool vendors. This is a forum about Delphi. It's not run by the vendor, but by people who are engaged with this product. Are there any similar forums on git?
  5. David Schwartz

    Securing your data over time

    No matter what solution can be put forth, you can always come up with a scenario that invalidates it. That only leaves you stuck where you are with very little interest in anything. It's the ultimate demotivator. Apple started out as a hobby. Only instead of listening to Woz' arguments about why nobody would by even 10 of his 6502-based home-brew computer boards, Jobs said, "Let's build 100 of them!" I'm not interested in all the reasons you can find not to embrace anything at all. I have stuff stored in my garage that by all accounts should be totally unreadable today. You know what? Everything I've tried to read that wasn't so brittle that it shattered ... worked fine. It'll outlive me. But according to your view of the world, none of it would be here because all the "experts" say it would not survive this long. These "experts" base their opinions on statistical data based on accelerated environmental testing with known limitations. Once I had a contract to help some guys show how so-called commercial off-the-shelf (COTS) hardware fared against similar mil-spec equipment that cost 3 orders of magnitude more for the same (or worse) functionality. The guys doing the testing put both sets of hardware through the most severe shake-and-bake testing they had, and the fully-ruggedized mil-spec hardware had a 50% greater failure rate than the COTS hardware. So I don't put a lot of stock in what statisticians say when it comes to the longevity of electronic components. The stuff tends to fail early within 90 days; or it starts dying at around it's projected MTBF. But fully half of it will last 3-5x it's rated MTBF. That's statistics for you. Of course, you can always pull out that Joker card and argue that no matter what the MTBF is, there's always a scenario they didn't account for that will kill it off immediately. And don't forget that a meteor could fall out of the sky and kill you right where you are ... any time of the day or night, wherever you are on the planet. Even if you're driving down the road, flying, or whatever you're doing. You could also spontaneously combust.
  6. David Schwartz

    Securing your data over time

    You obviously haven't had cloud services you subscribed to that were supposedly "secure" and said to be on solid financial footing, go belly up one night. I have. Nor have you had servers you were paying to be "secured" get raided by law enforcement just because they were co-located near someone who they were investigating for criminal activity and so they were able to get search warrants for every machine inside the "secured" area -- as if all of that equipment was owned and/or operated by the crooks they were after. They seized ALL of the equipment in that "secured" area and hauled it all away. For weeks. I have. But burglars ... they don't know much about tech. They go after TVs, stereos, microwaves, and stuff that looks familiar to them. Things they see at Best Buy with big price tags on them. If you have specific valuables in the house, and they know they're there, they'll head for them. If you're gone for a while and they can spend the time to toss your entire place, then a safe isn't going to be very "safe". But things that look like cable boxes and modems that can be bought at Goodwill for $5 aren't worth their time. They'll steal a Bluetooth speaker worth $50 and not even think twice about your $10,000 Marantz 6-tube stereo amp and FM receiver that look like something their grandparents used. If you had one of those big old computer tape drives in a rack that was spinning and had lots of blinking lights, they'd take that before much else. Sometimes "security" is more about "playing the odds" than building a better Cheyenne Mountain.
  7. David Schwartz

    Securing your data over time

    I see this as a rather silly discussion. The chance of being burglarized is far higher than having your entire house burned to the ground. Safes are used to contain valuables. Fireproof safes are perceived as containing really HIGH-VALUE things (like wads of cash). So thieves might be more inclined to grab a safe than a nondescript box on a wall in the back of a closet with a bunch of random wires coming out of it. For all they know, it's from the cable company and is useless if stolen. Maybe put some verbiage to that effect on it to throw them off... Don't forget that it's going to be pretty useless if a burglar can pick up your fireproof safe and walk off with it. So add in some way to secure it sufficiently that it can't be carried off. Keep in mind there are folks who actually steal entire ATMs to crack into later and extract the funds in them.
  8. David Schwartz

    Securing your data over time

    It's an IDEA. Like scrambling eggs ... some people put milk or creme in them, and for those who are allergic to dairy products, well, that's a non-starter for them. That doesn't mean that they cannot eat scrambled eggs, just not with dairy in them. You don't have to keep telling us here that you're allergic to anything but mag tapes. We get it. It's getting old, and you're free to use whatever kind of tape backup unit you want in place of whatever other storage is suggested. But replacing it with cloud storage kind of negates the whole idea, so don't bother to go there. BTW, why is it that so many people who are allergic to paying anything for software seem to have no problem paying for cloud storage when they can roll their own using an old computer, whatever storage medium they prefer, and free software? I mean, that's basically what I'm suggesting here -- save yourself $100/yr in cloud storage fees by using free stuff and things you're already paying for. Dropbox charges $10/mo or $100/yr for 2TB of cloud storage. So build a couple of boxes with 2TB of storage; set one up at your home and the other up at a friend's house, and have the remote one mirror the local one. Problem solved. And if your cloud vendor suddenly shuts down or gets raided or hackers suck all of the data out of it and expose your secrets ... well ... where does that leave you?
  9. David Schwartz

    Securing your data over time

    it occurs to me that it wouldn't be hard to find a friend with internet access where you both set up a small backup server, like a Raspberry Pi 4 with some SSD on it, and physically placed them at each other's homes instead of your own. Or maybe set them up in pairs so you have one at home and one at their house, and the remote one mirrors the local one.
  10. David Schwartz

    SmtpReady

    You don't HAVE TO generate an exception. Maybe you're talking about what most error loggers are used for. You could also use something like MadExcept that would trap the exceptions and log them for you automatically, send an email, and suppress the exception alerts if you want -- which is useful if you can't modify the source code.
  11. David Schwartz

    Securing your data over time

    Well, I guess it's a matter of perspective. OGs like me who still have boxes of 3-1/2" floppies stashed away remember using them to set up rotations for backups. Sure, they failed, which is why we set them up in batched rotations! Ditto with tapes. I was looking around for some backups of work I did at one point back in the early 90's. It was between the "floppy-disk era" and the "writable CDs era" when I used one of them "super-high density and high-reliability" tape drives. Now I've got a few years of backup tapes with stuff on them and no way in the world to read them. I can still read those old DOS floppies and the CDs. But backup tapes? <shrug> Whatever you might think of SDs, I guarantee they won't decompose the way old magnetic media does over time. There's not much room to write on them, to be sure, and with them getting so cavernous that it'll be impossible to use them for long-term storage without taping them to a large printout that says what's there. But I don't know anybody who does that the way we used to mark-up floppies. Besides, you really couldn't put much on floppies, so it wasn't that big of a deal. CDs started to become a problem in that respect. As for online backups ... there seem to be three options: smaller free accounts that piggy-back on larger subscription models (like Dropbox offers); monthly subscription offers, which tells me the company will probably be around; and single-payment "lifetime" offers, which will eventually disappear for lack of revenue. I've already been bitten by one of them that shut down 6 months after a huge surge of initial customers. You've gotta have a way to keep the lights on, if nothing else; people forget about that. The problem with the monthly subscription deals is ... when you stop paying, everything will evaporate (sooner or later). I'll trust a box filled with ANY kind of media, including SDs, far longer than ANY online service after I stop paying their bills. SDs _are_ a very cost-effective one-time payment for a huge amount of storage, and you're in 100% control of them forever, unlike 3rd-party cloud storage where you really have no idea how it's being used or even of it will be there when you need it. Consider how much storage a bunch of microSDs could hold laid out to cover the same surface area as one writable CD/DVD. A CD is 700MB; a DVD is 4 or 8 GB. I'm guessing that 1TB microSDs laid out to cover the same surface area as a CD would probably yield 50 TB or more of storage. I don't know who'd need that much on a regular basis, but using, say, 60 x 1TB microSDs for a rotating backup would mean you write each one a total of 6 times per year if you make a daily backup of ALL your data and it doesn't exceed 1TB. Anyway, unless you're creating or editing videos and large graphics files (or humongous databases) on a daily basis, only a very tiny percentage of your data changes day-to-day. So most of the data you capture with full backups from one day to the next will be >99% redundant and remain static going forward. The likelihood of "losing" stuff is going to be more depending on your ability to actually FIND IT rather than physical data loss. So there's a great market gap opportunity: a search tool that lets you index your backup media and keep it independent of the media so you can search for stuff "offline" as it were.
  12. David Schwartz

    Moving Projects Folder

    Yup, that would be it. And if that SSD drive dies before you do for some reason, you can change it to have Delphi look somewhere else.
  13. David Schwartz

    how to run git commands from Delphi app

    When you install git on a Windows machine, it installs MINGwin or MINGw64 as well as a bash shell and a gui app. I'm building this thing that I'm calling a "workbench". It's built around our service tickets. So you enter a ticket# and some related info, and it goes to a folder and displays the files in it. Then it helps you manage the files and do your work. When you're finished you move on. I'd like to execute some git commands from a Delphi app. Like, when you enter the ticket#, it runs something like "git branch <ticket#>". At some point, you can tell it to add some modified files to the branch. And when you're done it will switch back to "git branch master" or whatever. I know how to spawn command line EXEs from Delphi. In this case, I'm curious about a couple of things. First, is there a DLL or API or something that can be used? Second, I know git.exe is accessible from a regular command prompt; is this sufficient, or do I need the support found in the bash shell's environment?
  14. David Schwartz

    how to run git commands from Delphi app

    This system was designed in the 2004-2008 timeframe by people who are long gone. It's a legacy project that nobody dares fiddle with. It has been running day-in and day-out for 15 years and the overall system is quite stable and robust. Resources are not anything anybody cares much about, and cutting them by 25%-50% yields no useful ROI. Reliability is paramount. I'd love to redesign and rebuild this from the ground-up, but management here is of the same opinion I've encountered everywhere else I've worked since 2007 -- if they're going to rebuild it, it won't be in Delphi. The ones who DID undertake rebuilds under .NET ran WAY over budget and schedule, and the resulting systems were big, fat, slow, and unreliable. Meanwhile, the Delphi-based software just kept chugging along, solid as a rock and reliable as ever. Most places do not want to replace legacy Delphi apps because they're so solid and reliable. But they don't give that much consideration when it comes to new product development. The only work for old Delphi hacks seems to be working on maintaining old legacy systems. I'd love to find a new major project being developed in Delphi, but I haven't heard of any (in the USA anyway) in years.
  15. David Schwartz

    Securing your data over time

    For average use as a backup drive (as opposed to replacing your HDD in your main computer that you use daily) the MTBF would be around 100 years. Spinning HDDs are <5 yrs, esp. if they're in a NAS that runs continuously. Flash storage doesn't "spin" and really don't do anything if they're not being accessed, unless your hardware logic is constantly reorganizing them and running tests, which seems silly for SSDs. Personally speaking, I've found most traditional HDDs fail after about 3 years. I have SSDs in my 2014 Mac Book Pro and they're still going strong. I put them in my 2014 Mac Mini that I use daily and so far no problems. My last 3 employers over 10 years had SSDs in our work laptops that we used regularly. I never had any trouble, but a colleague at one place had his SSD fail after just 3 months of use. The IT guy who fixed it said it was only the 2nd failure he'd seen since they started using them a few years earlier, and this one happened to be brand spanking new. It was a Dell laptop. Honestly, the price of SD cards is getting so low that you could make rotating backups just from a handful of them. I see Walmart is advertising 64GB Class 10 microSDs for $5. I see an outfit named Wish.com that's selling 1TB Class 10 UHS-1 TF microSDs for $7.64. SD cards aren't nearly the speed of an SSD like Samsung T5's but for backing up source files on a daily basis I don't think the speed differences would even be noticeable. If you got 10 of them and rotated them daily, you'd use each one 36 times a year. For devices rated in the 7-figures, I wouldn't be terribly worried about long-term reliability at that rate. You'll be dead and gone by the time one failed.
  16. David Schwartz

    best way to display a list of panels?

    The question I have is, how can I get something like a TListBox or TListView where the Items is a list of TPanel rather than strings or TListItems, with analogous behavior? I don't need what a TFrame offers. I'd imagine you're going to have the same problem adding either panels or frames to a larger container object if you want them stacked nicely in a list.
  17. David Schwartz

    Font Dialog(s)

    Not sure exactly where this goes, but it's regarding the standard Windows Font Dialog. I dug up some old code that used TFontDialog and when I ran the demo it looks like it's from Windows XP era. When I implemented something similar in my own code, I was a little shocked to see that this ugly-ass dialog is apparently the current Font Dialog in Windows 10! Only when I run Word and other apps that have similar font options, their dialogs are much different. This is the first time I've used a Font Dialog in ages, which is why this seems to strange to me. Hasn't the Windows code for this been updated since 1995 or so? Are there better-looking Font Dialogs anywhere?
  18. David Schwartz

    Font Dialog(s)

    To quote Charley Brown ... oh good grief.
  19. David Schwartz

    how to run git commands from Delphi app

    not so different ... we don't use C:\ as the root for git as you do. Instead, we map V: and I: to folders below C:\ and treat them as virtual drives. V: --> C:\development and I: --> C:\imports All of the libraries and server apps are in V: and I: has 800+ folders that contain import handlers (EXEs) for different client data files. The stuff in V: hasn't changed in years. Most of our day-to-day work is in the I: drive area. But there's stuff in there that goes back to 2010 or so, and maybe half of it is obsolete. (Nobody seems to care, because in theory the clients could come back and pick up sending us data in the same formats they were using years ago.) The problem is, we have clients that manage other clients of their own. Think of a property management company that would manage a bunch of apartment complexes. The property mgt company is OUR client; they send stuff to us to process for THEIR clients. Each of them is in a separate folder. If we call the mgt company 'ABC' then we'd have ABC001, ABC002, and so forth, for their clients. All separate folders. But some of these guys will all use the same data formats, so we only have ABC000 and in that folder we have a single import EXE that imports data for ALL of THEIR clients, because it's all in the same format. (They'd typically use their system to generate the export data files, and they're just big flat data files saved as CSV data.) Anyway, here's the rub ... ABC says, "We need the logo changed on cust123" and we have, say, a week to get that done. Then the next day, they say, "We need to add a new customer as cust456" and that takes a week. Then they say, "We need to change the message on a statement for cust890". All three of these tickets overlap in time. Depending on priorities and who is available to do the work, they can get done in any order and work can occur a little here and a little there. It's not too bad when these customers have different data import needs, so they're in separate folders. But when their code is all in the same folder, and we have multiple people working on them, it's problematic. Also, when someone works on one of the clients in another folder and checks it into git, and then I do a "git pull", it updates that other folder, which is usually completely unrelated to what I'm working on. I've done a git pull and it tells me 25 files were added, modified, and deleted, yet none of them are in the folder where I'm doing my work. It's just noise to me and doesn't affect my work at all. When you're working all alone, this isn't an issue. You work on one thing at a time and it works out perfectly well. With a team of people working on different parts of an elephant, everybody is supposed to have the entire elephant on their own drive in its current state -- so everybody is working with the exact same elephant. Otherwise, someone's elephant might be missing a trunk, another might only have half a tail, and so forth. We want everybody to have the same "model" in our disk so we can assign anything to anybody at any time. that's the theory, anyway.
  20. David Schwartz

    how to run git commands from Delphi app

    That's cool. The challenge we have is we've got all of our production folders mapped to a couple of local drives (I: and V:) and each of those folders acts as the git base (whatever it's called). Each of the folders has a Delphi project in it that builds an EXE. Some of them share files because they're related, but they can't all be in the same folder for various reasons. So 'git pull' and 'git push" and so on act on the entire virtual drive. It can get rather convoluted when someone updates a file elsewhere that has nothing to do with what you're working on and it creates a conflict elsewhere that stops you in your tracks and you have to go off and resolve that conflict to continue work on what you're REALLY trying to do (that's not related at all). I'm not very well-versed in git, so I hope this makes sense... I'm trying to build a 'workbench' app that manages a bunch of resources, including the ability to set up a branch, do necessary pulls, sidestep unrelated conflicts, let you do your work, then wrap everything up with adds, commits, and pushes, then unwind the unrelated conflicts that may have come up earlier. This is feasible because all of our work is driven by specific work tickets that only affect code in a specific folder. We can have multiple tickets that affect things in the same folder. They may deal with the same files, but very rarely are there real conflicts. (A common conflict scenario is two different tickets that require us to add a line to the end of the same file. they're not related, but all git knows is there's a conflict with the last line. We just need to accept both; the line position they're at is irrelevant.) Everybody seems to use slightly different ways of dealing with stuff, and I'd like to implement a consistent process in this tool that just lets us focus on the task at hand without having to get distracted by unrelated stuff that git insists we handle RIGHT NOW.
  21. David Schwartz

    how to run git commands from Delphi app

    Would you mind sharing that? I'm curious what all is involved. 🙂 I have a process that a colleague documented that he uses, and I'd like to implement that to make it more of a one-click option.
  22. David Schwartz

    how to run git commands from Delphi app

    From 2012 ... 😮 (I'm not a fan of DLLs, TBH, and I know that the base code has evolved quite a bit since 2012. If I need to have an external dependency, I'd rather use the EXE than a DLL. But this is good to know.)
  23. David Schwartz

    how to run git commands from Delphi app

    So if I run a git command the same way I run anything else on the "command line" (spawning a child process), it'll work fine? I'm mainly concerned about dependencies that may exist on features in the bash shell that don't exist in cmd. (Or do I need to run bash.exe and then provide git.exe as an argument to that, along with its parameters?)
  24. Nullables are in the works for Delphi, according to one or two published roadmaps now. Trinary operators ... nowhere to be seen. (I guess "trinary" is the correct term, not "ternary".)
  25. David Schwartz

    RTF components or simple RTF editor?

    I'd like to find a simple RTF editor, like Notepad, but that lets you select fg and bg colors, fonts, styles, and so on. Not HTML. Short of that, I'd like to find a library that I can use to build it. (I have TRichView myself, but it's for something I'm noodling with at work, and they won't pay for anything for that purpose.) Any ideas?
×