Tony Stone Development
About me

Tony Stone

HVAC technician by day, and hooked on programming since the 90s. Not a resume, just laid out like one: who I am, what I've built, and the bugs I've found along the way.

A stone tablet with begin and end. carved in it

The short version

I got hooked on programming in the 90s with a copy of Visual Basic 3.0 I definitely didn't pay for, writing bots that handed out software (also not paid for) in AOL chat rooms. Then I got my hands on Delphi 3, back when it was new, and fell in love with RAD programming: drop a component on a form, write a few lines, and you have a real program. Perl scripts for dynamic web pages came next, and as a kid I even sold a few of them.

Then I turned sixteen, got my driver's license, and it was party time. Losing all my code around then didn't help either (more on that below), and together they cost me a good ten years of programming. After that came a real job, and programming lost its place in my life for a long while, but it never stopped being my passion. I've wanted to build good Lazarus components since 2007, and Free Pascal and Lazarus are where I'm happiest now: the Delphi way of working, with native programs on Linux, Windows and macOS.

I have a full-time job, so I have never had the hours to finish most of what I start. Many of the projects on this site began years ago as ideas or half-built programs. What changed is AI: coding assistants are now good enough to work as a semi-pro programmer at my side. I decide what gets built, how it should behave and when it is good enough. I read the code, test it on every system and send it back when it is wrong. And I still write plenty of the code myself... not perfect code, but the AI isn't perfect either. It has been exciting to finally see my ideas come to life.

AI does produce junk sometimes, and I know some people will look at my code and assume all of it is. That is why I only publish the simple, useful pieces I would use myself, and why everything here is tested on real machines before it goes up. Are they perfect? No. Do they work for me every day? Yes. At the very least they are working prototypes of components and programs I have wanted for years.

At a glance

  • HVAC technician: residential first, then 15 years of commercial service. I write small one-off programs for the job all the time.
  • Programming since the 90s: Visual Basic 3, then Delphi 3, then Perl. Lazarus components on my wish list since 2007.
  • Sixteen projects published on GitHub, from Lazarus components to full programs.
  • Bug reports for Lazarus and Free Pascal, filed only once I understand the problem myself.
  • Linux on my own desks, with Windows and macOS test machines for every release.
  • Runs my own web hosting, domains, mail and HTTPS, including this site.
  • Runs pascal.chat, a chat server for Pascal programmers, for several years now.

The code I lost

Somewhere between 12 and 14, writing Perl in Notepad got old, and I saw Delphi could do better. So I built my own editor: the hackNperl Script Editor, with syntax highlighting from the SynEdit components I had found and a "debugger" that read Perl's error output and selected the line that broke. Sure, other code editors existed, but I could build my own in Delphi and it was so much fun. It even had an options dialog, a lot like the one Lazarus has today, that set every highlighting option I could find with a live preview. Behind it were about 500 lines of if-then statements checking every property of every component whenever one changed. Today I'd do it in ten lines. Back then I stayed up all night for days to make those settings apply instantly, and I was a proud kid.

I was also the kind of tinkerer who changed Windows settings until Windows gave up, and Windows XP didn't need much help in its first year or two. At some point I thought it would be cool to turn on the new Windows file encryption for my development drive. Not long after, I wrecked Windows again, formatted the system drive and reinstalled, like I had plenty of times before. This time the key went with it. There were probably recovery tricks and tools that could have saved me, but I didn't know about them. Six or seven years of messy folders full of Perl scripts and Delphi programs... still there, encrypted, and gone forever. Yes, it was my own fault, but it's one of the many reasons I'm no Microsoft fan. These days I work on Linux only, and Windows is just for my day job.

Between that and the freedom of a driver's license, I chalked it up to... ah, dang. Oh well, no more programming. I grew up and needed a job anyway.

Why I'm finally building BackupMom

That is why BackupMom exists. Like a lot of my projects (I have tons of started and unfinished ones), I began it years ago to keep track of my backups and never finished it. Now it is finally coming together: whole-drive images, not just files, because a copy of those files would have been just as encrypted and the key lived on the system drive I wiped. And a mom who nags you when a backup is overdue.

It isn't released and may never be. It leans heavily on AI, like Houston, and I want it working well for me first. If it does, I would love to release it.

The Bitcoin detour

Later, when Bitcoin was new, I played with it: a CPU miner, a wallet, and some free bitcoin from one of those early giveaways that I thought was silly. Then Windows did what Windows does, and another format happened. In recent years I went through my old hard drives looking for that wallet. Nothing.

What I found instead was the Bitcoin Puzzle Transactions, and they pulled me back into programming hard. Playing with tools like BitCrack, I even learned enough C to write a little of it. Bitcoin addresses finally made sense once I could generate them myself in Pascal, with Xor-el's CryptoLib4Pascal doing the heavy lifting.

Now I have my own Bitcoin wallet, written in Lazarus, that I keep to myself. It is a few megabytes, runs from a USB stick on Linux, Windows or macOS, and doesn't need a data center to load a list box. Some of the fancy wallets out there ship a whole web browser just to show you your balance. That is what I love about Lazarus and Free Pascal.

The day job

I started out with a residential HVAC company and have spent the last 15 years in commercial HVAC service. I loved the trade for a long time and took real pride in it, but somewhere along the way the spark I had for it went out.

Software never lost it. As I get older, and as the projects around my own home slow down, I hope to spend more of my time on software development, keep getting better at it, and one day help improve Lazarus and Free Pascal, my favorite projects, wherever my abilities can make a difference.

Helping Lazarus and Free Pascal

Building components that run the same everywhere pushes Lazarus and Free Pascal hard, so my projects end up testing them too. When something looks wrong, I put a couple of AIs on it to reproduce the problem and show me what is going on, then I check it myself on real machines.

I don't file a report until I understand it. AI is awesome, but it often gets things wrong, and the Lazarus and Free Pascal developers are true programmers with real talent. I don't want to waste their time. So I take my time, and I get super excited when I can hand them a report that is actually useful: a small program that shows the problem and, when I can manage it, a patch. Some of my reports over the years have been fixed. You can find them on the Free Pascal GitLab.

What I work with

What I have shipped or tested with my own hands, in the projects on this site.

Free Pascal and Lazarus

LCL forms and custom controls, component packages with design-time editors, the FCL, and porting Delphi programs to Lazarus.

Every desktop

GTK2, GTK3 and Qt on Linux, X11 and Wayland, Windows and macOS Cocoa, with one code base and the system's own APIs where the LCL stops.

Testing for real

Scripts that drive the actual windows with my own LazHIDControl, run in nested displays and in Windows and macOS virtual machines.

Security, thanks to Xor-el

I'm a pure Pascal guy, and most of what I know about encryption and secure networking I learned from the libraries of Ugochukwu Mmaduekwe, Xor-el: CryptoLib4Pascal, HashLib4Pascal and SimpleBaseLib4Pascal. They taught me enough to know I should never write those protocols myself, so I always turn to his packages. Houston and my Bitcoin tools stand on them. Huge thanks to him for all that hard work.

The web side

Perl CGI, shell scripts, cPanel hosting, DNS, mail and certificates. This site and its comments are mine.

PCs, top to bottom

Years of building, fixing and running Linux and Windows machines, from hardware and drivers to backups.

On the drawing board

I publish only what I think is good enough to use. Many more programs, some good and some written for a single job, will stay on my own machines.

My ideas page has the prototypes I am working on and the components I would like to build.

I have a lot of super simple ideas that I think are great ones, and many more I want to work out and send in as patches. One has made it already: SelectInFolder, which opens the file manager with a file already selected, started as a patch of mine for the IDE's status bar and ended up in the LCL after the developers reworked it. Here is the forum thread where it started.

Say hello

Want to talk about one of my projects, found a bug in one, or have an idea for a component? Send me a message. It comes straight to my inbox and is never shown on the site.

My code is on GitHub and my bug reports are on the Free Pascal GitLab.