Showing posts with label delphi fmx. Show all posts
Showing posts with label delphi fmx. Show all posts

Saturday, August 15, 2026

What 35 Years of Delphi Development Didn't Teach Me About Pricing

In 1991, I released a DOS program called Zilch, written in Turbo Pascal and priced at $29.95.

Thirty-five years later, that product has evolved into Debt Blaster, a Windows application built with Delphi FMX. Along the way, the tools changed, the platforms changed, the way software is distributed changed, and the market changed.

One thing apparently did not.

I can still get the price wrong.

Original Zilch DOS software screenshot
Original DOS version of Zilch Standard

Blunder #1: I Priced the Software From My Side of the Desk

When I released the Delphi FMX version of Zilch Standard, it was not a minor upgrade.

I moved from a proprietary file system to a SQLite database. I went from a hard-coded 640x480 screen to a resizable, fluid layout. I moved from Windows-only VCL to cross-platform FMX, with Windows first and macOS distribution planned. I added light and dark themes.

Going from VCL to FMX was a major investment in time.

At the same time, the things I used to build and sell software were getting more expensive. Delphi cost more. FastReport cost more. FastSpring cost more.

So I raised the price of Zilch Standard to $69.95.

From my side of the equation, the decision made sense. I had invested a lot more into the product, the product was substantially better, and my costs had gone up.

That was the problem.

I was looking almost entirely at my side of the equation.

Sales still came in at $69.95, and for a while that seemed to support the decision. What I did not catch was who was making those purchases.

They were existing customers.

People who already knew ZilchWorks, already knew the software, and already understood what they were getting were willing to pay $69.95 for the new version.

What I was not seeing were new customers buying the software at that price.

I missed that distinction because sales were not zero. I saw purchases and treated them as evidence that the price worked.

Then came the Microsoft Store.

I was already at $69.95, so I arbitrarily added another ten dollars and submitted Debt Blaster at $79.99.

There was no competitive study behind that extra ten dollars. Microsoft was going to take a commission. Delphi cost more. FastSpring cost more. Groceries cost more. Haircuts cost more. Magazines cost more. Everything around me seemed to cost more.

And I believed I had built a life-changing tool.

So I figured it was worth $79.99.

Once again, I was doing the calculation from my side of the desk.

Microsoft disagreed.

They rejected the price, and I complained - loudly and publicly - on Reddit and in Delphi user groups. After all these years as an independent developer, I did not particularly enjoy someone else telling me what I could charge for software I had created.

Eventually, I lowered the price to $69.99 and resubmitted it. Microsoft accepted it, and after the disappointment of the $79.99 rejection, that approval felt like a victory.

Debt Blaster went live in the Microsoft Store at $69.99, and I was thrilled. I celebrated.

I thought I had won.

I hadn't.

Microsoft Store price rejection email
This was the email I received. I had to log in to actually see the "Price Rejected" message.


Blunder #2: I Confused Price Approval With Price Validation

Microsoft accepting $69.99 didn't mean the market accepted $69.99. I had already made the mistake of treating purchases by existing customers as evidence that the price worked. Now I was in danger of treating Microsoft's approval the same way.

Neither one answered the question that mattered: would a new customer, comparing Debt Blaster with everything else available, choose to pay $69.99?

Not:

What do I think Debt Blaster is worth?

But:

What will customers reasonably pay when they compare it to everything else available?

My development costs mattered to me, but they didn't matter to the customer. The market doesn't know what Delphi costs, what FastReport costs, or how many hours I spent writing, testing, debugging, and refining the software. Nor should it.

Customers have debt, they want a plan, and they compare the available solutions to decide whether mine is worth the price I'm asking. That led me to an important distinction:

My costs determine whether I have a viable business. They do not determine market value.

Once I accepted that, I had another problem: if $69.99 wasn't right, what was?

$59.99? $49.99? $39.99?

I could have picked another number and tried again, but by then I had already done enough guessing.

So I Stopped Guessing

Because this is 2026, I had something available to me that I certainly didn't have in 1991: ChatGPT.

What started as a few questions about competing debt payoff products quickly turned into a structured research project. With ChatGPT helping me organize the research methodology and write the SQL, I built a SQL Server database called:

DebtBlasterMarketIntel

Instead of relying on a few Google searches or competitors I happened to know about, I began collecting normalized competitive data.

I tracked things such as:

  • Competitors
  • Individual price observations
  • Features
  • Permanent free offerings
  • Paid offerings
  • Trials
  • Account requirements
  • Advertising
  • Platform availability
  • Which features were free
  • Which features required payment

I researched 15 competing products and compared them with Debt Blaster, including Debt Free, Debt Payoff Planner, Undebt.it, Undebt.it+, Vertex42, YNAB, and others.

DebtBlasterMarketIntel competitor pricing results in SQL Server
Image of an early DebtBlasterMarketIntel competitor pricing result set. Debt Blaster was still priced at $69.99 when this research began.

I wasn't trying to build the world's greatest database of debt payoff software. I was trying to answer one practical question:

What price makes Debt Blaster look like the right amount of software for the job?

That question changed everything.

What the Data Told Me

Debt payoff math is heavily commoditized. Snowball calculations, avalanche calculations, payoff forecasts, spreadsheets, free calculators, inexpensive apps, and subscription products are all easy to find.

Debt Blaster still has differentiators that I believe matter: Dial-A-Date, one-off payment modeling, month-by-month planning, privacy, offline operation, local data, no account requirement, and a one-time purchase instead of another subscription.

But those advantages didn't erase the competitive reality.

$69.99 was too high.

Not because Debt Blaster was bad software, because 35 years of development history had no value, or because Microsoft had rejected $79.99.

It was too high because, in the actual competitive market, that price made it harder for customers to say yes. The evidence kept pointing toward a different number.

$39.99

Vertex42 had a $39.95 one-time Pro Commercial Use price, while several subscription competitors reached roughly $50 after a few years of use. Other products cost substantially more over time, but they often gave customers a much lower initial entry point.

Against that landscape, $39.99 felt like a much more natural fit for Debt Blaster:

  • One payment
  • No subscription
  • Local data
  • Offline operation
  • No Debt Blaster account required
  • Deeper planning workflow

At that price, Debt Blaster looked like a reasonable amount of money for the job it performs, so $39.99 became the regular price.

Blunder #3: I Should Have Done the Research First

I built the product, tested it, prepared the Microsoft Store listing, created the screenshots and marketing pages, and got the software into customers' hands. I also decided what I thought it should cost.

Only after all of that did I seriously research the competitive market and ask what comparable products were charging.

That was backward.

The market research should have helped shape the pricing decision before I ever submitted $79.99 to Microsoft, not after $69.99 failed to perform the way I expected.

That sequence was backward.

The competitive analysis shouldn't have been something I did only after $69.99 underperformed. It should have been part of the pricing decision before I ever submitted $79.99 to Microsoft.

I had spent plenty of time thinking about the product itself: what it could do, how it should work, how it should look, and how to get it into the hands of customers. I knew how to write the code, test it, package it, build the website, create the store listing, and ship the finished product.

What I hadn't done with the same discipline was study the market before deciding what to charge.

I had treated pricing almost as the last step: build the software, decide what it feels like it's worth, put a price on it, and see what happens. The competitive research taught me that pricing deserved the same kind of deliberate work I would put into designing a feature or debugging a difficult piece of code.

After 35 years, I knew a lot about building and shipping software.

I was still learning how to price it.

Then I Looked Back at 1991

Once I settled on $39.99, I thought the pricing project was finished. Then the 35th anniversary came into view, and I started thinking about how to mark it in a way that actually meant something.

That took me back to the original Zilch release in 1991 and its price: $29.95.

Thirty-five years later, after all the debate over $79.99, $69.99, and finally $39.99, the answer to the anniversary promotion was sitting right in front of me.

1991: $29.95
2026: $29.99

Four cents apart and thirty-five years apart.

That became the promotion. Not a random discount, but a price with a reason behind it and a direct connection to where the product began.

Back to Where It All Began Debt Blaster 35th Anniversary Special

The regular price of Debt Blaster is $39.99. And for the rest of 2026, the 35th Anniversary Special is: $29.99. 

The original Zilch sold for $29.95 in 1991. Thirty-five years later, Debt Blaster is $29.99 for the anniversary. In between, Turbo Pascal became Delphi, DOS became Windows, Zilch became Zilch Standard, and Zilch Standard became Debt Blaster. Thirty-five years of development separate the original Zilch from today's Debt Blaster, but the anniversary price is almost exactly the same.


The Part Where I Admit Microsoft May Have Done Me a Favor

There is some irony in all of this. Microsoft rejecting $79.99 didn't tell me what the correct price was, and Microsoft accepting $69.99 didn't validate that price either. Even the disappointing sales at $69.99 only told me that something wasn't working - not what the answer should be.

They were signals. The research gave those signals context.

When Microsoft rejected $79.99, I complained. When Microsoft accepted $69.99, I celebrated and, at the time, genuinely thought I had won.

Looking back, Microsoft hadn't validated $69.99 any more than it had proven $79.99 was wrong. The rejection simply forced me to reconsider my position. Then the market forced me to reconsider it again.

Finally, the competitive research made me stop defending what I thought the software should be worth and start looking at the evidence of what the market would actually support.

The Software Can Be Right While the Price Is Wrong

That may be the biggest lesson I took from this. When something you've built doesn't sell the way you expected, it's easy to assume the product itself must be the problem. Sometimes it is, but sometimes the product is fine and something else is getting in the way.

The message can be wrong. The audience can be wrong. The distribution can be wrong.

The price can be wrong.

In my case, it was. Changing the price didn't diminish the value of the work or somehow make Debt Blaster less capable. It simply clarified where the product fit in the market and made the offer easier for customers to understand and accept.

Your Cost Is Not Your Value

Delphi still costs me what Delphi costs me. FastReport still costs what FastReport costs. The tools and services I depend on are still more expensive than they used to be.

None of that changed when I lowered the price of Debt Blaster.

What changed was my understanding of what those costs meant. They are part of running my business, but they are not the customer's pricing formula.

The customer decides whether the value they receive is worth the amount I'm asking them to pay.

That's a different calculation from what it costs me to build the software, and it took me a while to separate the two.

I Was Also Mixing B2B and B2C Thinking

There was another distinction I had missed.

Delphi, FastReport, FastSpring, and the other tools and services around my business live in a business-to-business world. A professional developer or company can look at the price of a tool and ask whether it saves time, supports revenue, improves productivity, or makes the business more capable.

Debt Blaster is a consumer product. The person trying to get out of debt is not evaluating my development platform or calculating my return on investment. They are spending their own money and comparing Debt Blaster with the other ways they can solve the same problem.

I had allowed the pricing behavior of the B2B software world I buy from to influence how I thought about the B2C software I sell.

Those are different markets with different buying decisions.

The price of my business tools helps determine whether I can afford to keep building software. It still does not determine what a consumer product is worth in the market.

Thirty-Five Years Later, I'm Still Learning How to Ship Software

In 1991, I was trying to write useful software and convince someone to pay $29.95 for it. Thirty-five years later, I'm still trying to write useful software and figure out what someone will pay for it.

A lot happened in between. Turbo Pascal became Delphi, DOS became Windows, software distribution moved to the Internet and app stores, and now I'm using ChatGPT to conduct competitive research and storing the results in SQL Server.

The technology changed dramatically. Apparently the learning part didn't.

I got the price wrong. I complained when Microsoft rejected $79.99, celebrated when it accepted $69.99, and then had to accept that the market was giving me a different answer. Instead of guessing again, I did the research and changed my mind.

The regular price of Debt Blaster is now $39.99.

And through the end of 2026, the 35th Anniversary Special is:

$29.99

And somehow, after all that time, I ended up four cents away from where I started.

Sometimes you have to travel a long way to find your way back.

Enjoy!
Semper Fi
Gunny Mike
https://zilchworks.com
https://debtblaster.com

Friday, May 15, 2026

Concrete by Day, Nero by Night: A Practical Light/Dark Style Pair for Delphi FMX

 One of the nice things about Delphi FMX is that you can change the look of an application without rewriting the application.

That sounds simple.

In practice, finding two styles that work well together can take some trial and error.

For Debt Blaster, I wanted a clean light theme and a clean dark theme. I did not want the application to feel like two completely different programs depending on the selected theme. I wanted the light and dark versions to feel related.

That is where the Concrete and Nero FMX styles came in.

The GetIt Package Manager

Both styles are available through the Delphi GetIt Package Manager.

In GetIt, I installed:

FMX Style - Concrete 1.0
FMX Style - Nero 1.0

The style files I am using are:

Concrete_Win.style
Concrete_macOS.style
Nero_Win.style
Nero_macOS.style

That gives me a light and dark style for both Windows and macOS.

Concrete and Nero styles installed from Delphi's GetIt Package Manager

Concrete for the Light Theme

The Concrete style gives the application a clean light appearance without making it look too flat or unfinished.

It works well for traditional business software because the controls are easy to read, the grid lines are clear, and the interface still feels like a desktop application.

For Debt Blaster, that matters.

This is not a game. It is not a flashy demo. It is software people use to enter real debt information, compare payoff plans, and make decisions.

The user interface needs to stay out of the way.

Concrete does a good job of that.

Debt Blaster using the Concrete FMX style on Windows.

Nero for the Dark Theme

The Nero style is a strong companion to Concrete.

It gives the application a dark theme without changing the basic structure of the screen. The same grids, menus, fields, buttons, and panels are still there. They just shift into a darker working environment.

That is what I like about this pairing.

Concrete and Nero feel like they belong to the same family.

One works well when I want a light application. The other works well when I want a dark application.

Debt Blaster using the Nero FMX style on Windows

Why I Like This Pair

The big win is consistency.

When I switch between Concrete and Nero, the application does not feel redesigned. It feels restyled.

That distinction matters.

A good style should support the application. It should not make the user stop and think, "What happened to the program?"

Concrete and Nero give me:

Light theme: Concrete
Dark theme: Nero
Windows: platform-specific style files
macOS: platform-specific style files

That gives me a clean path for supporting both Windows and macOS without pretending one style file should handle every platform perfectly.

One Practical Lesson

FMX is cross-platform, but that does not mean every visual decision automatically behaves the same way on every platform.

For this reason, I prefer using the platform-specific style files:

Concrete_Win.style
Concrete_macOS.style
Nero_Win.style
Nero_macOS.style

That keeps the intent clear.

Windows gets the Windows style file.

macOS gets the macOS style file.

That is easier to understand, easier to debug, and easier to explain six months from now when I come back to the code and wonder what I was thinking.

Final Thought

If you are building a Delphi FMX application and want a clean light/dark style combination, Concrete and Nero are worth a look.

They are easy to install from GetIt, they work nicely together, and they give an FMX desktop application a more finished appearance with very little effort.

For me, Concrete and Nero are not just two random styles.

They are a practical pair:

Concrete by day.
Nero by night.

And for Debt Blaster, that pairing fits very nicely.

Enjoy
Semper Fi
Gunny Mike
https://zilchworks.com
https://debtblaster.com