BDE, a way of disaster



  • Anyone who has worked with Borland IDE's has built his first "hello database" driven application using the BDE. You used Paradox, dBase or even the more advanced Interbase if you already knew about RDBM.

    After a while you start to design n-tier and multi user applications and notice that dBase and Foxpro are a disaster these years so you use Firebird SQL or Interbase.

    But due the customer's wishes you don't fully redesign the database to use triggers, procedures and just stick to your 'latest_ids' table to incement record ID's.

    After a while you quit with the application because you understand what kind of mess it is and don't get along with the customer anymore.

     

    The customer found a company to improve his hospitality application and I was stuck with this 18MB executable.

    I've setup a computer with the BDE and the application and started working on it.

    Then after around 3 months i notice this application totally lacked any kind of "normal" procedures for coding, never heard of SQL JOIN, WHERE and UNION and even found out that this multi-user app is not so multi-user as well.

    So i started a test and hooked up a second computer to use the database, but it failed. Due to the fact that you need to install the BDE and the application on every computer and configure each instance to use the same database on a certain IP. Now which firewall ports do i need to open next?

    Whohoo it runs, now lets test it and check the processes...

    Hmmm why does every application check every minute all the database tables "IF" something has changed and reload all the data? No idea, but i understood since it was first built using Paradox.

    And then i heard that the customer wanted the application be compatible with all the BDE supported databases due to the fact that the previous programmer "said so" and that it made it easy to switch databases.

    Yeah right, we all know that you can't switch databases that easily.

     

    Another thing that happend due to this was that an integrated calendar that showed all reservations took minutes to load all needed data for making 2 weeks visible. 2 weeks * 40 rooms = 560 entries at max.

    Fetch 560 records costs minutes?

     

    Long story short: It took me 1.5 years to convert this beast to be:

    - 100% Firebird SQL using: listners, triggers, procedures, views and proper ID fields

    - single installation (just put the executable on a share and boot it from anywhere)

    - 18MB to 4MB

    - startup from 1 minute to 6 seconds

    - multi-user with single login per running instance

    - Loads calendar in seconds (using UNION and JOIN's)

    - etc. etc. 


    And the respect i got? Right, i moved on and left a side-node for the junior programmer that started working on it: Good luck with learning this piece of shit!

     

    If you get your hands on a "home brewed" BDE driven application, just say: "thanks, but not in a million years"

     

    P.S. I didn't post any of the source code due to legal rights, but if i could you would have a big laugh about functions of 8000 lines of code each!



  • The BDE has been deprecated for several years now, and only a moron used it before that.

    So this entire tirade is about an outdated, deprecated piece of technology. That's great!

    "I got a job making some changes to this application for a client of mine. It was written in VB1.0 to run on Windows 2.0, and man is it a piece of crap! Plus, I think the guy who originally wrote it was a high school student - you should see some of the long functions he wrote!

    It took me a year and a half to fix, but I actually didn't do what I was paid to do. Instead, I just cobbled in some halfway working stuff and left it for some junior programmer to actually fix later.

    By the way, want to hire me to work for you?" 


Log in to reply