I’ve undertaken a new internal development project that I hope will really grow into something big.Â I’ve designed a system for my company, starting way back in 2000, that helps me track everything.Â It does contact management, project management, invoicing, aging, expense tracking, and document management.Â I have had written it in West-Wind Web Connection against VFP tables and it has run great for years and years.
I’ve always been interested in taking this to market in some fashion.Â A couple of things need to happen however.Â One is that I would like to move the back end to MySQL, and I would like to write a desktop version of the application in REALbasic so that it will run on Linux, Windows and eventually the Mac.Â Linux is a strategic choice for my company so this is the only reason that I didn’t just take all of the business objects that are written in VFP and wrap them in a desktop application.Â VFP won’t run on any other platform except for Windows.
I also made a simple mistake all of those years ago.Â I over normalized the addresses and put them into their own table.Â My thinking is that if an address needs updating, that I could fix the one address record and the corresponding shipping and billing entries would be updated.Â Also, if multiple companies shared the same address, then a single change would update them all.Â The reality of address changes is much smaller thanÂ I had originally anticipated.Â I’ve got to get rid of that address table.Â It’s been bugging me. 🙂
So,Â the big chunk tasks at hand are:
- Denormalize the address tables and associate them with the customers table.
- Upsize the VFP tables to MySQL
- Update my current application to work against the MySQL tables.
- Begin planning and writing the desktop application against the MySQL tables in REALbasic.
- Begin planning and writing the new web based REALbasic application against the MySQL tables.
Not only that, but when I create this application, it has to be done in a “product” style.Â I need to plan for the future.Â Localization and multi-lingual issues need to be planned for.Â They don’t currently need to be implemented, but nothing I do should hinder it’s development.Â Â Design considerations will need to be made for modularization as well.Â A customer may want to purchase one module but not another.Â Security concerns should always factored in right from the beginning.
Did I mention that I need to also consider whether to release this open source or not?Â Which route will I get better market penetration and revenue stream?Â For profit or open sourced?Â I’ve got a long time before I ultimately need to make that decision however.
Yesterday, I already removed the address table from the application and adjusted the customers screen, as well as the invoicing module.Â It took some time but it’ll be worth it in the long run.
We’ll I’m off to begin the process of upsizing my data to MySQL.Â This is exciting stuff.Â I’ve worked with VFP and MySQL before and it works great.
Anyway, the reason for the post is to document my thought process.Â You’re welcome to come along for the ride if you’d like.