I am an electronics engineer. My field of interest and work is development of systems and products in the scientific, industrial and commercial fields. After spending a number of years with employers, I have been living my dream for the last 15 plus years developing products as a freelance or contract product developer. Lately, developing my own products and IP. I develop products from conception through specification, design, printed circuit board layout, housing design, firmware, manufacturing and the integration of an embedded device into a system and business system. Basically, everything that is these days touted as Internet of Things and a bit more.
The general take away from this talk will be to motivate the use of Python not only as the implementation language to develop your application, but also to use Python to develop your own automation tools that fit your development process. By doing this, you will be able to implement faster, more accurate, have a better tested result and along the way derive many benefits that you won’t foresee when you start.
Although my talk will speak from an embedded engineering point of view and not an IT or web development point of view, I belief the principles applies generally. Over many years and through the life cycle of many products I have evolved a development methodology that uses Python as the language of choice to develop my own tools for code generation (for ‘C’ and Python), software and firmware test automation, systems compliance testing and hardware manufacturing test automation.
My process is that I start a project by defining XML object definitions for all instances of configuration, data or communication objects. From the XML, on the embedded firmware side, I generate ‘C’ structures, enum’s and prototype function bodies to use in my coding. On the PC or server side, I generate Python data object definitions from the XML. These are imported into Python programs that are written to operate on the object definitions, giving me free reuse of all the interfacing, testing, visualization etc. code that I have developed in the past.