One of the nicest rewards as a software engineer is when you see your users actually enjoy the application you are developing.
Like Luna who demonstrates the usage of Sky Dolly in the following video, shared here with kind permission of the author:
The video illustrates:
- The simple way to record a flight, including automatic persistence in the logbook
- The intuitive way to seek back and forth in the timeline, also at any time during replay (without first having to press “stop” or any other button)
- The correct deployment of e.g. the flaps and starting / stopping the engine at any time during seek
The usage of Sky Dolly starts at the 2:06 timemark where Luna starts recording a roughly six minute flight. Recording is stopped at the 8:18 timemark which also immediatelly persists the flight in the logbook (searchable by date, engine type, departure & arrival and other keywords).
But the feature that gets the most exciting reaction is the smooth seeking on the entire timeline (timemark 9:58) . Again, at any point during replay, whether paused or stopped. Quote:
“Look! How smooth… it is insane! How does that… how can they do that?”
Well, I can give the answer to this question: Sky Dolly uses a simple binary search, extended to an interval search (instead of a simple value), where the time interval is given by the previous and next timestamp of the corresponding sample points.
A binary search essentially always halfes the search space, resulting in a so-called O(log n) runtime behaviour, where n is the number of sample points and the logarithm is base 2. Example: when n = 1024 (number of sample points) the binary search finds the proper interval in log(1024) = 10 seach steps in the worst case (instead of 1024 steps in the worst case for linear search).
And Sky Dolly doesn’t stop there: once the proper time interval has been found the actual position of the aircraft is interpolated with cubic spline interpolation - for this extra smoothness.
All this is even more remarkable considering that Sky Dolly does only sample data when the values actually change. This saves both disk space and CPU usage, as - by implication - Sky Dolly only sends requests to MSFS during replay as needed (again, only the data that actually changes at any given point in time).
Take for example the extension of the flaps at the 10:20 timemark: the last point in time when the position of the flaps have been recorded was probably shortly after take-off. And yet Sky Dolly is able to properly detect the exact point in time when they are extended again. The same is true for starting the engine “from cold and dark”, and stopping it again at the end of the replay at the 11:36 timemark.
Of course all of this is basic software engineering, e.g. you’ll learn about binary search in the first or second semester of any decent software engineering studies (for splines you may want to attent some computer graphics lectures perhaps ;)). The trick is that the users don’t even realise the complexity behind all this: the functionality of any software should be presented in a seamless and intuitive way, without any usability hurdles or artificial limitations.
That is not to say that Sky Dolly is perfect just yet: there is always a walk between new functionality and improving existing usability - and available time ;). But this kind of feedback as just seen in the above video is really what keeps me driving here - so thanks for that, and thanks to the entire community for providing constructive feedback in the past and the future!
Happy flying!
P.S. Just a small correction with respect to the 12:23 timemark: it’s just one developer