Anyways, today’s AI offerings are either costly or used to extract as much info for training of the respective AI. As we all know, AI companies have often used copyrighted material without even trying to contact the authors. At least, now we can get something in return while we still give away some privacy. New tech is cool (I’m an engineer) but depending on what is made of it results are far from cool. We need to keep some distance, weigh pros and cons, make our decisions and develop our EQ lest we want the whole world to go down in conflicts, be their names war, climate change or whatever we should (but often don’t) handle with care.
@platypus Putting all the doom and gloom to one side for a moment the final state of play is a “product” with the following features, and that doom and gloom has less to do with AI or any other technology for that matter and more to do with human being and their motivations.
and the offer of the following from ChatGPT
Any other features or versions of features that it should have?
The image processing recognition now includes the following, the table was produced by ChatGPT when I asked it to include more image types than what was included in its original list image list.
@John-M My apologies for the strange avenue I have taken this topic down, although it is certainly PhotoLab related.
Your original topic actually prompted me to get ChatGPT to create a program that obtained keywords from the DOP and from the XMP sidecar files and did manage to successfully extract keywords from .xmp sidecar files but the presentation left a lot to be desired.
It could not fathom how to extract the keywords from the .dops but I have code for that already.
After todays almost perfect run of developed versions of the backup utility I may try again with extracting keywords and then adding a search function, but currently only from the DOPs and XMP sidecar files.
Which goes to show how “uneducated” it is. macOS provides a URL type descriptor that can be examined UTType.rawImage
which covers all RAW types.
Given I do use AI in several capacities for things it is “good at”, I have so little faith it will do anything useful for me that it’s not worth my time. It’s good at coding, but that still means dozens of back-and-forth interactions to get a simple script working.
The trouble with AI is I know how it works, at least when it comes to textual information. Which is what my problem is.
@Joanna But it is not writing code for the Mac and I have no way of testing it to see if it has been taught about the finer points of the Mac architecture.
As with any tool it is only as good as its creator, its use is then governed by how good the user is at getting the best out of the tool, with(in) any limitations, and whether the end result meets the needs of the user(s), no more and no less.
Attacking a product because it doesn’t appear to be as intelligent as you are, is to ignore whether it has any potential, and can, within it limitations, create something useful with an acceptable amount of effort.
In my case I am learning a new (to me) language after many years away from any coding and I have always learnt (and taught) by example and ChatGPT is providing useful insights into elements of the PureBasic language that I have yet to explore.
Is the application that was simple to get written yesterday a simple script!?. It is admittedly only 210 lines long and the current result is
Yesterdays effort were achieved with on and off involvement which probably took about 2 hours in total to get working and testing. But I wanted the logic of the DOP to All checkboxes, that I had asked for, changed, i.e. I wanted “All” to be mutually exclusive to the setting of the other checkboxes and to result in the entire contents of the directory being copied.
The “image” option was currently “limited” to image files, “DOP” to .dop files and .“XMP” files limited to .xmp files but any other “chaff” in the directory would be omitted from the backup and I wanted a way of including such “chaff”.
The dialog with ChaGPT went along lines I have experienced before and it took about 2 hours to get a working version with that option changed.
My intent was to get a working version without any user intervention except by the textual input to the AI model. Yesterday was exemplary today not so much.
On the Mac @Joanna will be able to do this with a few well chosen commands to the OS and/or OS adjuncts, I can do this by executing a simple program, which remembers what it did the last time and will use that as a starting point for the next run.
Currently that is done within the PureBasic development environment but PureBasic will generate an .exe file, which it actually does within it development environment anyway.
Really !?
Admittedly I am using programming as a “replacement therapy” to getting involved with the forum in general and DxO in particular.
Yesterday was productive, today less so but I am principally using ChatGPT to generate skeletal programs that I can then “bend” to what I want but the point at which I should start down my own fork in the development needs to be carefully judged. ChatGPT knows nothing about that and will generate code along the tracks it was following not my fork in the path if I go back and ask it do resolve this issue or that or add this feature or…
and there is a fault in the "Use timestamped subdirectory in s " which is a change in both the layout and syntax it had previously used, it “owns” the UI design so feels free to make “subtle” or not so “subtle” “amendments”, I have met coders who do just that so there is a risk that AI is every bit as reliable as humans!!
PS:- A real beginners error the statement for that field is
CheckBoxGadget(#Check_SubDir, 10, 80, 200, 20, “Use timestamped subdirectory in source”)
but the width is 200 which results in truncating the field being displayed, oops. A value of 227 corrects that glitch!!
The key take-out for me (and I think this is essentially what @bhayt is saying too?), is that despite;
-
the various weaknesses in solutions generated by AI (as @joanna points out)
-
the not-insignificant effort necessary to fine-tune AI-generated coding (as @zkarj points out)
-
and the dangers and cautions associated with AI (as @platypus points out)
… the simple fact that an AI-bot can take a written description of user requirements and generate from it a half-decent application/solution is VERY impressive - Especially when keeping in mind that these are just early days !
@John-M Very diplomatically put! I haven’t tried the FireStudio, or rather I hadn’t when I started writing this and am now trying to fathom how I use the app it has generated!?
In the meantime when you first published this topic I got ChatGPT to generate a program to search for keywords in the sidecar files having fed it the keywords section of the DOP and the associated section of the xmp sidecar file and got this back almost on the first attempt.
So it couldn’t fathom out how to translate the DOP keyword format but managed the xmp format with no problem.
I have developed the code for keywords but that would need to be attached to whatever skeleton program I get ChatGPT to generate, so I need to think carefully about what the app should look like before generating the code before abandoning AI and adding my own code.
Finally adding access to ExifTool would need to be engineered in.
Except What you are getting is not a list of keywords, but a list of hierarchies. The keywords are simply A
B
, C
and D
, which could be arranged in multiple hierarchies.
Whilst beta testing DxO’s keywording implementation, I used the following sample of things they hadn’t (and still haven’t) thought about how to implement searching…
Fruit
Orange
Satsuma
Colour
Orange
Enterprise
Telecommunications
Orange
Now, add those hierarchies to PL and see what you get when you search for just 'Orange`. Then compare the suggestions you get from my app…
There are five images that contain Orange
, in different hierarchies, and all five get returned, regardless of whether they are in a hierarchy or not.
That is because it is a badly formed version of LUA which AI might not have the intelligence to work out where the problems are.
Tricky. Possible licensing problems for redistribution. It has to be installed and on the search path.
Interesting comment on AI in Le Figaro…
Two studies conducted by American researchers show a decrease in neuronal activity and creativity in artificial intelligence users. Is it possible to take advantage of AI without weakening our cognitive abilities?
Oh, and an interesting thought… When you pronounce GPT in French, you get “J’ai pété”, which means “I have farted”
@Joanna splitting hierarchies into simple keywords is “easy” and with the whole hierarchy present that hierarchical keyword can also be searched as an entity in its own right.
However, I assigned your keywords to entries in my tests directory and the searched on “Orange” and got the following
It finds them O.K. it just doesn’t present them as it could and treats each as a separate instance rather than as related instances.
In fact DxPL doesn’t need to store the simple keyword components internally because it does that already as the above table shows.
It is in the external presentation where it falls down a little and in the searching where it falls down a lot, I can search on “Orange” but I cannot combine anything with that in the search criteria.
The problem is that DxO came in for a lot of unnecessary “flack” when PL5 was launched, went backwards in a rushed release (which you and I managed to reverse after about 99 posts in a topic) and never went back to finish what they had started.
They are actually so close to being able to do a halfway decent job that it makes me very, very, very cross!!
The DOP is what it is and using a crude bit of coding I can turn the keyword back into hierarchical keywords and then do what I want with them or their absence.
The ExifTool addition is not essential at this point but potentially useful and can be left out of anything I offer for external use.
As for the cognitive decline of those who use AI
“A recent study by Gerlich (2025) explores the relationship between AI usage and cognitive skills, highlighting several key concerns. The research found a negative correlation between frequent AI usage and critical-thinking abilities, suggesting that individuals who rely heavily on automated tools may struggle with independent reasoning. One contributing factor is cognitive offloading, where AI users engage less in deep, reflective thinking and instead prefer quick AI-generated solutions.”
I am reminded of the poem that contains the line " You are old father Thomas and your hair (whats left of it ) has become very white (but I do have a white beard instead) yet you incessantly stand on your head do you think at your age it is right".
In the context I am using AI I am expanding rather than restricting my knowledge and horizons. There are reasons to be concerned, particularly with those in their late teens and going to University but there was no internet at all when I was in my teens. I did take to going to the reference section of the library many evenings a week, they closed at 20:00 but we had no books at home.
By comparison with my youth the amount of information that youngsters in particular have access to, good and bad, is colossal by comparison to my exposure.
I don’t think I am going to panic about that at all.
As for the farted bit, for some reason I always thought it was spelt pharted and feel that my spelling elevates the rather primeval act to a whole new level.
@John-M and @BHAYT , can your AIs also produce
a) documentation or a user manual of the application? (often neglected)
b) code for other operating systems and/or hardware platforms?
I suppose that writing documentation and manual is harder to achieve…
@platypus It is when it started writing generic user manuals so I returned to the actual topic where it was suggesting further options and asked for a user manual for the specific program that we had written together, I did write all the prompts after all!
" Sidecar Backup Tool – User Manual
Overview
The Sidecar Backup Tool is a PureBasic-based utility designed to help photographers and image editors back up sidecar files (e.g. .dop
, .xmp
) and images (RAW, JPEG, etc.) from a selected source directory to a timestamped backup folder. It supports flexible backup types, optional ZIP compression, scheduled execution, and completion email notification.
Getting Started
System Requirements
- Windows (Windows 7 or later recommended)
- PureBasic runtime (if compiling yourself)
- No installation required – this is a portable standalone tool.
User Interface
Source Directory
- [Text Field + Browse Button]
Select the folder containing your images and sidecar files.
Destination Directory
- [Text Field + Browse Button]
Choose where backups will be saved. This is disabled if “Use subdirectory” is checked.
Use Subdirectory
- If checked, the backup will be saved as a subfolder inside the source directory with a name like:
SidecarBackup_YYYY-MM-DD_HH-MM-SS
File Type Selection
DOP – Backup .dop
files
XMP – Backup .xmp
files
Image – Backup image files (formats include: .jpg
, .jpeg
, .png
, .tif
, .raw
, .raf
, .cr2
, .cr3
, .nef
, .arw
, etc.)
All – Backup all files from the source folder, regardless of type.
When “All” is selected, the other checkboxes are ignored. “All” works independently.
Additional Options
Scheduled Backup
- Allows backups to run automatically every X minutes.
- Set the interval using the spinner control next to it.
- Requires the application to remain open.
ZIP Compression
- After the backup is created, it will be zipped into
SidecarBackup_...zip
.
Email Notification
- If checked and a valid email is entered, the tool will send a notification using local SMTP settings.
Running a Backup
- Choose the Source Directory
- Select the Destination (or check “Use Subdirectory”)
- Choose file types to back up (DOP, XMP, Image, or All)
- Optionally enable Schedule, ZIP, or Email
- Click [Backup]
- When done, you’ll see a message showing how many files were backed up.
Output
- Backups are stored in folders named:
SidecarBackup_YYYY-MM-DD_HH-MM-SS\
- A log file
backup_log.txt
is created in the backup folder, showing:- Time of backup
- Files copied
- File counts by type
Configuration Persistence
The application automatically saves preferences (source, destination, checkboxes, email, etc.) to an INI
file (backup_config.ini
). These settings are reloaded when the tool starts, saving time for repeat backups.
Advanced Usage Notes
- Uses native Windows PowerShell to ZIP files and send email.
- Email requires a local SMTP server or relaying setup.
- Supports nearly all modern image RAW formats.
FAQ
Q: Can I back up just .xmp files?
Yes, uncheck everything except “XMP”.
Q: What happens if I select “All” and “Image”?
“All” will override and copy everything, including non-image files. The others are ignored.
Q: Is this a one-time backup or continuous?
Both. You can run one-time backups or enable scheduled mode for recurring backups.
Q: Can I cancel a running backup?
Not yet. Closing the app will stop future scheduled backups, but not a running one.
Tips
- Set up a dedicated backup destination outside the source directory if you’re organizing large batches.
- Enable ZIP compression to save disk space, especially for RAW-heavy backups.
- Test email delivery with a dummy backup and your SMTP configuration before relying on it.
Support / Customization
If you need help modifying this tool for:
- Custom file formats
- Network destinations
- Automation
- System tray behavior
…you can request further enhancements from the developer or contribute if you’re familiar with PureBasic."
It also asked if I wanted a pdf or a chm formatted version and I asked for a pdf and it went off for a deep think and …
Then when I tried again I got
As a result of the problems I had earlier today I had a lot of attempts to get it working correctly and have been receiving the “Get Plus” notification a number of times already but was still able to continue working with ChatGPT.
Please note the footnote on every screen
It’s interesting to see Windows users seem to be always looking for utilities or kludging their own ways of doing tasks that macOS already does out of the box.
When it comes to backups, TimeMachine does it all, with every file, all the time the computer is switched on. I can recover from hourly, daily and weekly archives.
I can understand your curiosity but I can’t see many photographers digging into all this stuff.
Not all are using Macs (I do :-)) - imo, Macs are still <20% of the PC population. And as long as DxO doesn’t provide more advanced means for backup than the current one manual way, I can easily understand the interest in getting an add-on. Implementing one with AI might be the future way to do things, who knows. And if @John-M and @BHAYT come up with something they are willing to share, they can help, but again, DxO should provide such features imo.
General remark:
If we look around at how products come and go, we can see better speciality products go away while more tolerant products that cannot match the others quality, do stay … until something comes along that kills those off. Remember all the video standards and tape recorders? I don’t hope, but fear, that DxO is pulling the wrong end in this tug-of war.
G’day Platypus,
I think, perhaps, you’re still misunderstanding what I’m saying about the ability of AI-bits to generate applications/solutions;
-
I’m NOT suggesting that such solutions are perfect, nor are they about to replace all existing programmers/devs … Not just yet, at least.
-
What I AM saying is that their capabilities are VERY impressive - exceeding anything thought possible (by most of us) until only recently.
-
Yes, there are problems, weaknesses and concerns with the current state of AI output … but I’m sure that painters/artists raised the same issues when they first saw a photograph !
Addressing your questions (tho, they’re not my AIs - I’m just commenting);
User documentation - Certainly, that would {probably} be an easy to-do;
- eg. I’ve read about lawyers who would need a week to work thru all the details of a worker’s compensation case (understanding all the details of the injury, how it was caused, who did what and when, etc, etc) - are now feeding this raw detail into an in-house AI tool that produces a summary in less that 1 hour.
Code of different OSs - - I cannot see why not – esp. 'cos an AI is OS agnostic.
A different concern for me is the amount of resources (power and electricity) that’s being consumed in training and running the AI-bots … Not good for our environment.
That seems to be like a contradiction in terms. In order for a code to run, it needs to know/have a carrier that can execute the code…and unless there is something common on all systems, the code needs to know the system to be able to run. Or maybe everything runs on a remote server that accesses the db on the local computer - or something.
After all, programming is to translate human language into something a machine can understand.
@platypus I fully agree but I am a realist and going on past form, or lack of it, nothing is going to happen to the ever increasing list of “adjustments” that should be made to PhotoLab, except that the list is going to get longer.
Any third party efforts can be only be driven by using the data available, i.e. the database, the DOP and the xmp sidecar files, and potentially the image files themselves.
The first and last in that list are the most “dangerous” to meddle with and none should be meddled with without adequate backups.
Meddling with DOPs will ultimately cause a change in the database if any “adjusted” DOPs are presented back to PhotoLab, and why would you meddle with the DOPs unless it was to present them back to DxPL!?
I rediscovered coding when I became disillusioned with DxO and their lack of engagement with the forum, i.e. engagement with users and their almost total intransigence when it came to taking on board user complaints, except when they finally did and made things worse instead of better because they didn’t ask the users what was actually required!??
Initially I learnt a bit about Python and that kept me “happy” for a while but if I coded anything potentially useful in Python it either requires a user of the software to install and use a Python environment of their own or for me to learn how to create a package that does that for the user and installs the necessary run-time environment.
So I looked for software that created executable code files and PureBasic does just that, with executable files running on a Windows PC, on the Mac, on Linux and on the Pi. It is a one time licence fee and can be installed on any number of machines owned by the license holder and any programs generated can be distributed royalty free.
It also has a generous trial scheme which is unlimited in time but limited to 800 lines of code. The trial does not create executable code files nor does it create DLLs but whereas Python has a huge number of potential Libraries that any developer can download and invoke, complicating the sharing of code a little, PureBasic is a single package and actually not required at all if the program is distributed as an executable code file.
I undertook some of my own attempts at coding to see if comments I have made in the past about how easy certain changes to the product actually are, was even vaguely true or was I being optimistic about what can be achieved in a short or rather realistic space of time.
The more coding that I do, with the obvious understanding that I am not burdened by an ever increasing code base, the more I am convinced that some of the trivial fixes are just that when it comes to the actual implementation.
Again I am coding in a high level language, or, at times, getting something else to generate the code for me, either the whole program in the case of the backup “utility” or a some elements of the code for other programs or to help me understand what is possible with the least amount of effort.
Some PureBasic code available from the PureBasic forums is highly informative but written by experienced PureBasic users and complex (for an amateur) to put it politely. “My” PureBasic File Activity WatchDog is based on one example of such code.
So I am investigating ways of filling one or two of the gaps that can be filled, after a fashion, by external elements.
The backup utility that I created, or rather got something else to create, is a necessary part of any such process. Always have a path back if what you are about to do is in any way a destructive process.
To be honest I don’t think that DxO users are likely to adopt anything that I, or my “cohort”, writes but as long as it doesn’t annoy my wife or distract me from real life too much then I will continue to do it for my own entertainment.
With respect to the backup utility it lacks an important feature, namely the restoration, which itself needs to backup what it is about to overwrite!
The current version, created entirely by ChapGPT, except for the one line fix, does create a log of what has been backed up and to where but that was intended as a history not as the source file for a subsequent recovery.
Given that neither you, nor anyone else, may choose to use any version of this utility, you are welcome to a copy and could use it with the PureBasic Trial on the Mac, I am unable to create and test the Mac version because I do not possess a Mac.
However, what I would welcome is what the utility might look like with respect to features to make it a more rounded product, i.e. both a back-up and a restore utility and whether it should have an option to copy the current database as part of the backup process.
The copying of the database it somewhat complicated on Windows because it can be located anywhere on the machine, i.e. yet another invitation to the user to go find it using the PathRequester
command.
Select EventGadget()
Case #Button_Source
sourceDir$ = SelectFolder(sourceDir$)
SetGadgetText(#String_Source, sourceDir$)
Case #Button_Dest
destDir$ = SelectFolder(destDir$)
SetGadgetText(#String_Dest, destDir$)
which executes the following procedure in the program
; === Folder Selection ===
Procedure.s SelectFolder(current$)
Protected result$ = PathRequester("Select folder", current$)
ProcedureReturn EnsureSlash(result$)
EndProcedure
PathRequester
is then going to popup the following
and that is already used in the software
to ‘Select Source’ and ‘Select Dest’ .
So you can have too many requests to find a file?
Your opportunity to fashion this utility or perhaps the restoration should be a separate utility? Your opportunity to act as an unpaid consultant (and an opportunity for any reader of this post to offer their opinion).
Regards
Bryan
PS:- It turned out to be long post, sorry.
…and I didn’t read it.
MO: If DxO improved stability and interoperability of the products, we probably wouldn’t have to mess with programming and database- or sidecar woodoo.
IMO: A Ferrari with bicycle wheels is still a bicycle.
I guess my point about AI not being suited to the task that I would like to have solved to avoid drudgery, is that it’s not anything like the examples given here.
Can AI tell me “what’s the best way to take a photograph?” No. Because there’s not a simple answer — it’s a large body of learning that needs to be applied depending on equipment and circumstance. Circumstance which will change from one moment to the next. This is vastly different to “Why would I change the aperture”.
So, sure, if you can imagine an automation, even one quite complex, AI can do a decent job for you. It can’t “make me spend less time at my computer”.
@platypus I am sorry you found my post too long to read so I got ChatGPT to summarise it just for you
" The author, Bryan, expresses frustration with DxO’s lack of responsiveness to user feedback and the long-standing issues with PhotoLab that remain unresolved. Disillusioned, he turned to coding to create tools that could address some of these gaps externally.
Initially experimenting with Python, he found the setup cumbersome for end users, so he switched to PureBasic for its ability to create cross-platform executables easily. He developed a backup utility for PhotoLab data and is exploring how to improve it—possibly by adding restoration functionality and optional database backup.
While sceptical that other DxO users will adopt his tools, he continues development for personal satisfaction and is open to suggestions for features, structure (e.g., separate restore utility), and UI design. He invites others to contribute ideas, even if they don’t use his tools directly."
As for the bicycle wheels on a Ferrari do you mean like this?
@zkarj It probably can and will one day in the not so distant future but as my experience with the rather mundane task of creating and then enhancing the backup utility shows, it is currently not all plain sailing.
The saga goes a bit like this.
- Experiment to create a DOP etc. backup utility resulted in a working program with about 2 hours in total using input “specifications” from me.
- The following day it took over two hours to get one option in the program successfully changed.
- The next day an attempt to go further stalled when I realised that ChatCPT had ignored the program it had previously written and created a new program using very different syntactic elements.
- Day 4 and I fed the last working version back into ChatGPT and tried to get it to build on that which it did, after a fashion. With the help of Beyond Compare I wound up with a program that now looks like this
So it can now backup either just the PhotoLab.db database file or all the databases in the chosen directory, i.e. it allows for the fact that Windows databases can be located anywhere and gets concerned if there are an .db-wal or .db-shm files present which indicates that either the database is in use (as in the testing scenario) or PhotoLab terminated unexpectedly!?
Still some wrinkles to iron out but a potentially useful backup utility. However, still no restoration at this point.
The log looks like this
backup_log.txt (5.6 KB)
The E-mail feature doesn’t appear to be working.