a car and a website – do they have anything in common?

Within the car I have in mind and I came across, its parts communicate using CANopen. The car’s software got mostly implemented in Ada, and once there existed a (home-brewn) software generator Ada code for CANopen message definitions. From the CANopen message definitions the generator created:

  • data structures in Ada
  • marshalling code
  • de-marshalling code

There was still an ongoing development of the car, but because the generator got lost or abandoned, the software developers had to maintain and extend the generated code themselves. That’s a violation of a basic principle of course: Do not touch generated code! And it’s also quite a challenging task. They did a great job, but certainly they failed occasionally, and there are some cars out there with incorrect code.

I found the situation quite sad. And that triggered my creativity.

  • I created a CANopen definition language in XML using RELAX-NG.
  • I reconstructed the definitions of the CANopen messages used in the car.
  • I developed a new generator.
  • I created the code for the 1st car, compared it to the existing code step by step, … and finally the car still worked.
  • I did so for all the cars’ software I found around. But unfortunately the cars themselves were not available on site.

Now for my current project: web development in HTML + Perl + JavaScript + CSS + “a home-brewn web-template-framework in  Perl”. And where would be the similarity? The home-brewn web-template-framework got abandoned. Just the generated code is still in use and gets extended and maintained continuously. So new HTML does no longer get created through the framework but rather on the fly through JavaScript. That’s quite a funny and exciting way of writing HTML. And I am deeply impressed.

I am not sure, which framework would be the right thing to suggest for the next generation of this software.


Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.