Author: Edward Leafe
Posted: 2026-08-27 at 20:46:22
On Aug 27, 2026, at 10:12, paul@tpcqpc.com wrote:
>
> I have at least learned that currently they only have a 64bit ODBC driver
> which means I'd probably have to use VFA64 to use this method of connecting
> to the data, but DuckDB supports multiple API's so I may have to use those
> alternatives instead. As I said, I'm just starting to getting into this, so
> any ideas would be appreciated.
Is there a reason, other than it’s what you know best, that you have to work with VFP for this? I always think that this is a perfect time to try something new. Of course you know I’d recommend Python, especially since it has great support, but really the choice can be anything.
I wasn’t going to send a reply like this, until I saw Kurt’s post just now. You have an amazing new tool available to help you learn! For example, recently I wanted to try learning Rust. I have a script that I wrote years ago that I posted about recently (https://leafe.com/archives/msg/518759) that analyzes the accumulated suspected spam, and presents it in a report that is emailed to me. That original script was written in Python, but about 5-6 years ago I re-wrote it in Go, because it was the latest hotness, and I wanted to get a feel for it. This week I re-wrote it again in Rust, but instead of trying, failing, trying to search for the error, I worked with Claude Code to do it. Now I could have told Claude to just write it by itself, but instead I described the project and told it that I wanted it to create a tutorial environment for learning the language. I would ask questions like ‘is there a preferred email parsing tool?’, and Claude would search for the current status of email processing, and put together a basic script for parsing an mbox into separate emails. I looked at that script and didn’t understand most of it, so I would ask Claude to explain each part that wasn’t clear. Here’s a sample of the Rust code:
let data = fs::read(&spam_file)
.with_context(|| format!("failed to read {}", spam_file.display()))?;
log::line(&format!(
"spammail: {} bytes -> {}",
data.len(),
spam_file.display()
))?;
let raw_messages = mbox::split(&data);
let parser = MessageParser::default();
There’s a lot there that was gibberish to me at first, but I would ask Claude to explain each bit, and it started to make sense. I’m certainly not a Rust expert by any means, but I’m at the point where I can read code like that and understand what it’s doing. With a built-in teacher like Claude, why not try something new?
-- Ed Leafe