If you are interested in my services to improve performance of your or your client’s FM solution, then please read this page. It sets out how I intend to go about working with you as a client or prospective client. If you have any questions, feel free to contact me without any obligation through frank_drv@icloud.com
1 You, my client
My ideal client is a FileMaker developer or FileMaker database owner who needs to improve the performance of a particular part of FM solution, but does not have the time or skills to do this themselves.
2 What is on offer?
I offer to speed up specific parts of your FileMaker database solution, either …
- … through re-factoring while keeping the existing functionality and UI the same.
The end users only experience a performance increase. - …through re-factoring while changing the UI ( technically not re-factoring )
The end users experience a performance increase, but will have to adjust to a different way of working
Option 1 has my preference, but option 2 may be necessary if I can not achieve the agreed performance increase through option 1. In case of option 2, the work of introducing the UI changes to the users and your client will be your responsibility.
3 Starter interview
If you are interested in my services, then please contact me for a starter interview. It is a free of charge interview in which we talk about:
- The purpose of the database, who owns it, and how many users use it in total and how many users are active on average per time period.
- The part or parts of the database that needs speed improvement, how much, and why.
The ‘why’ question is perhaps the most important because further examining its initial answer may indicate that there are better and cheaper options. - Which attempts you or others made to produce the improvement and how successful they were
- If and which type of changes in the UI are acceptable or not.
Depending on the outcome of the starter interview we proceed to the next step
4 Researching the problem
We will sign an NDA to protect data and database designs
You will need to provide me with full access to a recent copy of the database on a server that resembles the production server as much as possible. Preferably, I also need access as server administrator. The access needs to be provided until :
- … the deliverable is delivered if we reach an agreement ;
- … the moment that I communicate that I will not present an offer ;
- … or the moment you decide not to agree to the offer.
I will measure the current speed of identified bottle necks on this copy through a method that we agree on. This will serve as the baseline for our agreement. [ link to FAQ ]
I will make a preliminary analysis of what determines the speed of the target part that needs improvement
Based on my findings, I will make an offer or decide that I can not help you.
If I present an offer, it may contain different options with different fixed prices. It will be phrased as a target in terms of percentage improvement compared to the baseline speed. Ideally, that percentage is what you aim to achieve or better.
For this step, you will pay a fixed price of €1000 ex. VAT.
5 Agreeing on targets and price
If you have questions or otherwise feel the need, we can talk about the offer.
If we agree on the target and the price ( that is, we agree on the offer or one of the options outlined in the offer ), you pay up front.
I do not work with deadlines, but I will start working on your commission the day your money arrives, and strive to finish as soon as I can.
6 Deliverable
Once I manage to reach the agreed speed improvement on the copy of the database, I will present the deliverable in two parts:
- The actual implementation in the copy of the database.
You can inspect the copy and use as a reference for 2. - An annotated list of steps to transfer the necessary changes to the copy of the database.
You can use this list to transfer the performance improvement to your development copy of the database.
You can also use this list to trace exactly how the implementation leads to faster performance
7 Low cure low pay, no cure no pay
In case I can not improve performance as per our agreement, I will refund based on the improvement that I have achieved.
For example, suppose that our agreement is a 300% improvement compared to the baseline. That is, the part needs to be 3 times faster. Furthermore, suppose that I only manage 250% or 2,5 times faster. Then I will refund you 1 – 250 / 300 = 0,16 of what you paid me for the agreement excluding the amount for the ‘Researching the problem’ step.
If my work happens to result in an improvement bigger than we agreed, then you will get that at no additional cost.
8 General conditions
At the end of the day, virtually everything is negotiable, but past experience has lead me to start with the following.
I work in close collaboration with my clients until the work we agreed upon is done to our satisfaction, or until one party fires the other. When it comes to exchange of ideas and discussions, I prefer to talk rather than exchange emails, simply because talking saves time and leads to better mutual understanding.
I claim the authorship and intellectual property rights of everything I produce for my clients, while granting them the non-exclusive use ( including modification ) as they see fit, with the exception that they can not sell my work without my prior explicit agreement.
The client will need the necessary intellectual property rights/license to grant me non-exclusive license to modify any existing material ( including data in development and testing settings ), for as far that is required for the work we agreed upon. The client will also need to grant me such license without charge.
I claim no rights to the client’s data, but I will also not modify it. The software that I write may be able to generate and modify data, but it will be up to the client to initiate that process in production settings. After all, it is their data and their responsibility. I may need to initiate data modification and generation in development and test settings.
I work remotely and may agree to occasional site visits, but these will be rare exceptions. For the region of Valencia, Spain, I may agree to more frequent site visits.
I am fluent in English and Dutch and can converse, read and write these languages at a professional level. I have some/good understanding of German and Swedish, I can express myself in these languages, but I can not easily write them. I have a very basic understanding of Spanish, and can read basic French.
I will sign reasonable NDAs
I have or will make sure to have a professional indemnity insurance before the work begins.
I do my own thinking. No use of AI.
9 FAQs about this page
9A How long do you need to provide access to a server and a copy of the database
The access needs to be provided until :
- … the deliverable is delivered if we reach an agreement ;
- … the moment that I communicate that I will not present an offer ;
- … or the moment you decide not to agree to the offer.
9B Why would you pay, if a possible outcome is that I ( Frank ) am not going to present an offer?
Because, when I am not going to present an offer, I will have researched the problem and I will provide you with at least one reason why I can not solve the problem. That is, I have spent time on the research, and give you the insights that I gained.
9C How is performance improvement measured for the purpose of the agreement?
During the ‘Researching the problem‘ step, I will propose and we will discuss and agree on a method to establish a base line of the speed of the bottleneck part.
Then I will apply this method and do measurements through a number of repetitions at various points over time ( such as different week days, and different times of the day ) The result is an average of measurements or a graph, similar to those one can find in my posts on speed measurements, such as this one.
The exact measurement method will depend on the database part that needs improvement. For example measuring the duration of a script will be different from opening a layout such as a user experiences it. This is because running a script can programmatically be repeated, whereas opening a layout as a user experiences it requires manual action.
During the development, I will occasionally repeat measurements to establish that the baseline, does not change. There may be factors outside my or our control that could cause that and we need to take that into account.
When improving the performance, I will use the same method to establish how fast the result of my work is and continue until I have reached the target of the agreement, or until I have run out of ideas.
You may of course run the measurements of the baseline and the improvement in parallel from your FM client and location. However, in case of differences between our respective measurements, the ones on my side will count, because I can not work from your location ( unless we agree that I work from your location ). Even though there may be differences in our respective measurements, what should count and should be the same is the difference ( in terms of percentage wise improvement ) between the baseline and the improvement.
9D Can you ask me to do an ‘overall speed improvement’?
Yes you can, but how would you specify that in terms that make sure that you will be happy with the result for the price that you pay?
If the database ‘feels sluggish’, the problem may not be solvable through re-factoring. You may need better hardware, more bandwidth or better tuning of the server. I do not offer that.