Ivar Tillotson, a Spacecraft Systems Engineer talked to us about how they use LiveCode.
LiveCode has a number of outstanding features. There are so many ways you can optimize your code to get tasks done. The URL functions are so easy to use. I replaced something that used to take 50 steps to download data in an older language with a single line “put URL into URL”. When I first discovered this I practically did a dance through the office.
We use half a dozen LiveCode built applications in support of Landsat 7 operations, most of which have multiple roles. As well as moving data around the center and processing it, each application has unique responsibilities. The most involved application is like a Swiss Army knife with a dozen software blades to do various Landsat 7 jobs.
One of the most valuable modules in that application is the LoadChecker. It’s vital that we check each command to ensure it will execute properly without harming any part of the spacecraft. Each day we load up 3000 to 4000 commands to the spacecraft. That’s a lot of checking to do and it was always being done under a short deadline.
LoadChecker performs all the checks in under 5 seconds that used to be done, by three people for two hours each.
LiveCode also plays a huge role in our automation system. People used to have to be at work night and day to connect up to the tracking stations to watch the spacecraft data and notify the right people if something bad happens. Now there is no one working the night shift at Landsat 7.
Overall, the LiveCode language is the key feature. LiveCode is logical and intuitive, it’s easy to start small and build up features and capabilities and when things don’t work right you are guided right to the problem. It’s a high-level language with a low-level of frustration.
We have to deal with changes on the spacecraft, changes with our ground equipment, new priorities in image collection, almost every aspect of running the mission can change and we still have to fulfil our goal – keep generating quality images of the Earth.
Whenever I need to add a new module I just open up LiveCode and add a new button. There’s a good chance I have an existing component that can be quickly adapted to fit the new role. For example I have a bunch of utilities that do all sorts of little esoteric jobs, for example extracting 32-bit chunks of data from 8-bit words, converting noncontiguous ranges and converting them using an outdated Air Force floating point method, deriving timestamps for each entry and…it goes on like that.
Rapid development is the key, because if it takes longer to write and test the code than just to slog through the task by hand, is it worth writing the code?
We’ve built lots of LiveCode applications that fill important needs. One is a web application that lets us check on certain spacecraft activities while away from the office. Another is a real time display of where Landsat 7 is and which on-board commands it will execute next, along with other goodies like what time it will see the next tracking station and how close it is to running out of on-board commands.
We started some of these applications as a pragmatic way to make some of our data more readable, then we started combining selected information from several files into one report. We then used the information to calculate new information and our usage snowballed like that. One of our LiveCode applications has buttons for retrieving and processing the most current files from assorted directories on assorted computers, delivering the resulting files to different directories on different computer’s transmitting some files out as email and printing others. The modules call each other to complete their own tasks. All the file manipulation is done to improve situational awareness by keeping the most current information together and easily accessible. Most of the actions happen automatically, based on timers or when products appear in a drop box.
About USGS/NASA:
A science organization which provides impartial advice on ecosystems & the environment.
Business Need:
To develop multiple systems quickly and efficiently to meet constantly changing project needs.
Join the conversation