Acknowledgments

This book is the culmination of so many lectures, books, discussions, conferences, etc. that it is impossible to provide a full accounting to all the people who’ve had an impact on the book. Undoubtedly, there are people I’ve failed to mention here and I apologize in advance to anyone who feels they’ve been overlooked.

Technical

On the subject of Modelica, the primary acknowledgment has to be to Hilding Elmqvist for not only having the technical vision to recognize the potential impact that symbolic manipulation techniques could have on solving engineering problems but having the leadership to push this vision forward as an open standard. Hilding is the undisputed “father of Modelica” and he deserves considerable credit for all that Modelica has become.

Second only to Hilding is Martin Otter, a man who has worked tirelessly for the advancement of Modelica. I can honestly say that Martin works harder than anybody else I know. He has not only made countless technical contributions to Modelica, but he’s taken on the unenviable and generally thankless task of managing the Modelica Association. It is important to remember that having great technical ideas is by no means a recipe for success. Somebody has to be there to push and push and push those ideas along. I’d like to thank Martin for all his hard work in making the Modelica Association what it is today.

Of course, Martin isn’t alone in running the Modelica Association. The Modelica Association Board and the Members are also extremely important for raising awareness about Modelica. In the end, the Modelica Association is an organization committed to open standards that support engineering and I’d like to thank all the members for their hard work in this regard.

There wasn’t always a Modelica Association, but there was always a Modelica Design Group. These are the people who come together several times a year and work on continuously improving the Modelica language. It is astounding how much time and energy people have volunteered toward this effort. I’d like to thank all those people who’ve participated in the development of the Modelica Language and the Modelica Standard Library.

Personal

On a personal note, I am forever indebted to my mother, my father, my wife, my kids and my in-laws for their endless support of my passion for science, engineering and math. They are responsible for cultivating and sustaining my interests in these topics so I owe all the energy and time I’m able to apply to projects like this one to them.

The very idea of a book that is available for free might seem radical to some. The basic premise of this project was largely inspired by listening to and reading the works of Cory Doctorow and Lawrence Lessig. I’d like to thank them for opening my eyes to the idea of Creative Commons licensing. I’d also like to thank Dietmar Winkler for the many discussions we had on alternative publishing models. We would frequently discuss the ideas of Doctorow and Lessig and how their ideas could be applied to the creation of more accessible content for the Modelica world.

Looking back, I feel very fortunate to have worked for several companies that supported my involvement in Modelica. I first got involved with Modelica while I was working at Ford Motor Company and I was fortunate that they were willing to sponsor my participation in many different Modelica related events. After Ford, I went to work at Emmeskay (eventually acquired by LMS). I benefited enormously from the interactions I had with my Emmeskay family. In particular, I’d like to thank my partners, Swami Gopalswamy and Shiva Shivashankar for giving me the opportunity to be part of Emmeskay and for being great friends. While at Emmeskay, it was a privilege to work with Michael Sasena and John Batteh on several Modelica related projects. Emmeskay was an incredible company and this was entirely a reflection on the great group of people who worked there. Finally, I’d like to thank Dassault Systèmes for giving me the opportunity to work with all the excellent people there as well. In particular, I’d like to thank Hilding Elmqvist and Marc Frouin for encouraging me to come work there. I’d also like to thank Martin Malmheden, Dag Brück and Sandrine Loembe for all the good times during my excellent year in Paris.

Contributors

This project was really an experiment to see if the Kickstarter approach to publishing could be applied to a niche technical field like Modelica. I was pleasantly surprised to see that it could and that this project had enough support to be funded. For that reason, I’d like to thank the backers of the Kickstarter project. In particular, I’d like the thank the following people for their exceptionally generous contributions:

  • Hilding Elmqvist
  • Robert Norris
  • Matthis Thorade
  • Henning Francke
  • Yang Ji
  • Christoph Höger
  • Philipp Mossmann
  • John Batteh
  • Dirk Zimmer
  • Jan Brugård
  • Swami Gopalswamy
  • Peter Aronsson
  • Michael P. Case
  • Markus Groetsch
  • Vicente Ramírez Perea
  • Tisha Villanueva
  • Adrian Pop
  • Nimalendiran Kailasanathan
  • Kevin Davies
  • Peter Harman
  • Dietmar Winkler
  • Johan Rhodin

I’d also like to thank the corporate sponsors:

  • Gold Sponsors
    • CyDesign
    • Wolfram Research
    • Modelon
    • Maplesoft
    • Dassault Systèmes
  • Silver Sponsors
    • Ricardo Software
    • ITI
    • Modelica Association
    • Global Crown Technology
    • Siemens
  • Bronze
    • Suzhou Tongyuan
    • Open Source Modelica Consortium
    • DOFWare
    • Bausch-Gall GmbH
    • Technische Universität Hamburg/Harburg
    • Schlegel Simulation GmbH

This project shows the power of community to achieve the mutual goal of creating more quality educational material around Modelica. Literally, this project could not have happened without them.

The Kickstarter funding allowed me to commit time to this project, but I also had several people helping me on this project. First and foremost, I’d like to once again thank my father who helped proof-read the initial draft of this book. Proof-reading is a necessary but rather boring job so I think he deserves extract credit for making that sacrifice. Similarly, I’d like to thank Dietmar Winkler and Michael O’Keefe for providing additional feedback on the book content. Dietmar has also helped me test publishing issues related to supporting ePub and PDF formats.

I’d like to thank Jeff Waters for being the “voice of the sponsor”. I had several very productive discussions with Jeff during the course of writing this book to make sure that the layout and graphical design lived up to sponsors’ expectations.

Tools

Building a book like this requires a lot of different tools. My productivity was amplified enormously by the use of these tools.

This book was written using Sphinx, a documentation generation tool that supports multiple outputs. Sphinx allows me to focus on the content of the book and takes care of generating the book in multiple formats.

In creating this book, I needed a way to test the models that appear in the book, generate simulation results for plots and generated JavaScript code that allows the browser integrated simulation capabilities in the HTML book. OpenModelica supported all of these use cases. But beyond that, I owe a big “Thank You” to Martin Sjölund and the OpenModelica team for quickly responding to various issues I had during the creation of the book. Many times I would see Martin on Skype late at night (Sweden time) and he was gracious enough to help me out.

The initial version of the book featured browser integrated simulation capabilities in the HTML version. These capabilities were only possible because of a tool called Emscripten which allows ordinary code in languages like C and C++ to be cross-compiled (via LLVM) into JavaScript. Although I knew this was possible, I didn’t really think this avenue was viable until I saw the work of Tom Short integrating OpenModelica and Emscripten. The browser integrated simulation capabilities were greatly enabled by his work in this area. Ultimately, I removed this functionality in part to enhance the use of the book on mobile devices (where memory constraints were an issue). But I am optimistic that at some point we can re-instate those capabilities. Nevertheless, I am greatful to those who contributed to the development of those capabilities.

This book was written using Git as the version control system and GitHub for hosting. Most people think of the version control system as some arcane backup system. But version control systems are at the heart of collaboration and I’d like to see them used more widely in engineering. For this book, the “pull request” system from GitHub was very useful in incorporating feedback from reviewers. I’d like to again thank Dietmar Winkler for enlightening me about many different features in Git. In addition to GitHub, newer versions of the book leverage the Continuous Integration (CI) capabilities of Gitlab. I also leverage Docker to greatly improve the portability and repeatability of the build process.

I used the Emacs editor for this book. Despite the proliferation of really excellent editors that support a wide range of languages and platforms, Emacs remains my editor of choice for most writing work. It seems to support just about every type of file I need to edit out of the box. However, for the code developed for this book (e.g., the interactive UI elements, the static page generation templates in TypeScript), I used Visual Studio Code which is a truly excellent open source editor that is gaining mindshare by leaps and bounds.

While the documention processing was done with Sphinx, the actual HTML generation for v0.6.0+ is done using the server side rendering framework Next.js. This framework leverages the excellent React UI framework (which I use extensively) to create server rendered HTML (for good SEO) that can include dynamic components when rendered client side. This is truly a best of both worlds solution because it makes the book fast to load but provides instant interactivity in the browser. All my React based projects are written in the excellent TypeScript language and leverage the TSX functionality in order to create reusable and strongly typed UI components.

During the production of this book several tool vendors gave me access to their proprietary tools. I didn’t utilize these very much, but I wanted to acknowledge their generosity in providing me with temporary licenses. Specifically, I’d like to thank Dassault Systèmes, Maplesoft, Wolfram Research and ITI for giving me access to Dymola, MapleSim, SystemModeler and SimulationX, respectively.

Much of this book was written on a MacBook Air. My very first computer was an Apple //e. But since that time, I’ve worked mainly with PCs and Unix workstations. Most recently, I’ve done a great deal of development on Linux machines. I always dismissed using Macs because I was convinced they couldn’t support the kind of command-line oriented development work I typically do. I could not have been more wrong. The eco-systems for MacOS is almost identical to the one I was used to in the Linux world. I am able to seamlessly transition between MacOS and Linux environments without any significant adjustments. The power and portability of the MacBook Air gave my entire work process a big boost.

Developing this book involved a lot of testing and debugging of HTML layout, styling and embedded JavaScript. Most of this work was done using Chrome but I’ve also used Firefox from time to time as well. I’d like to thank both the Mozilla Foundation and Google for creating such wonderful, standards compliant browsers.

Prior to v0.6.0, the style of the book owes a fair amount to the Semantic UI CSS framework. After v0.6.0, the styling is mostly due to BlueprintJS.