Ostinato Timed Transmit
Back in May, I implemented Transmit Duration in Ostinato. This was a pre-requisite to the next feature I planned to implement - Timed Transmit. I even teased a GUI image fragment.
Unfortunately, 2 months passed before I could start working on Timed Transmit (Solopreneur, juggling multiple hats!)!
What’s Timed Transmit?
The user specifies a time duration for Transmit and the agent automatically stops the transmit after that time - simple!
If you are a techie, you’ve by now subconsciously translated the above feature definition to
Add a input field in the GUI, start a timer when starting transmit and on timeout stop the transmit.
And you’d be right - that’s what I thought too!
The implementation
It ended up taking a full week to implement - as it often happens, in my excitement I hadn’t spent the time to break down all that was needed to be done before beginning the work!
What all was needed, you ask? Here goes -
- GUI mock-ups and experiments to finalize the widgets required, look and UX
- Work that was done and then discarded as I found better solutions e.g. I added a new RPC first instead of changing the RPC signature for backward compatibility reasons; but when later I found a way to maintain backward compatiblity with the RPC change I discarded the new RPC
- Controller-Agent RPC signature change requiring code changes on both controller and agent side
- Debugging problems with
QTimer
- researching/reading documentation and then working aroundQTimer
documented behaviour/limitations in multi-threaded applications - Handling various edge/error cases (the 80:20 rule!)
- Researching, experimenting on ways to hide the RPC signature change so that existing scripts using the Ostinato Python API do not require changes while still supporting the newer RPC with transmit duration
- Python API changes for the new RPC signature including figuring out how to deprecate the older
startTransmit()
RPC so that script users are forewarned about a future removal - Add automated RPC tests for both new and old (deprecated) APIs
- Debugging RPC test failures because I didn’t read the debug logs carefully and went down the wrong tunnel (What a time sink!)
- Python API documentation update
- Save As Python Script changes in the GUI to use the newer RPC
- User Guide documentation update
- Feature video (see below)
- This blog post! (a previous draft was so long and meandering, that I gave up in the middle of writing it and did a full rewrite).
This is as much a list for me to remind myself next time I underestimate a feature!
Timed Transmit in action
Hope, you enjoyed that!
What do you think of this new feature? Let me know in the comments below!
For more Ostinato related content, subscribe for email updates.
Leave a Comment