Author’s Tools

This page is dedicated to my “author’s tools”. The third edition of “Embedded Software for the IoT” is published by De Gruyter. The main difference from the earlier editions, is not new chapters, but numerous small and big changes, provoked by reviewer and editor. “SQL Server with C#” is published on Amazon – using a subset of the tools used in the IoT book.

The latest book – Microcontrollers with C – is published on Amazon. I guess I like being more in control…


Latex Logo

Word is an OK tool, but as an author you need more than OK. I knew about Latex, and when I saw something written by a good colleague, Jens Hee, I decided to try it out. I have not looked back since. Well, maybe when I was creating my first e-book. I implemented a number of enhancements in the second edition of the IoT book, such as improved micro-kerning. This makes the text even prettier. I am sure that I have benefited from being a programmer. Not that I have programmed anything in Latex, but the entire concept feels good when you are used to programming and compiling. To be precise, I use pdflatex. Before, I used MikTex for editing, however, with Microcontrollers with C I used VS Code.


In the first version of Embedded Software for the IoT, I used MS Visio for diagrams. It has a good collection of elements that you can piece together, but it lacks a number of features. Later, I switched to CorelDraw. I loved Corel in the old days, but believed it was dead. It wasn’t. It’s not straight-forward to use, but neither is Visio.

From the second edition of the IoT-book and onwards, vector-graphics (from Visio and Corel) are exported as PDF into Latex, which in reality passes it “as is” to the printer. This gives much better results than PNG. Excel graphs are also exported as PDF. This ability is a hidden gem in Excel. Getting PDF-graphics right on a printer is a challenge – see my blog-post on Raster-Image-Processing: RIP. Process-wise I would like CorelDraw to have a batch-mode export (see below on backup).

When writing Microcontrollers with C, I went back to Visio. Either it has improved, or I have become used to it from work. Anyway – it works for me now.


The sines, spectra etc. in the DSP-chapter of Embedded Software for the IoT are now (3’rd edition) generated in Python. This is a major change from the earlier editions. One good reason for the use of Python is that it is free. This should make it more interesting for the reader to toy around with the code listed in the book (also found at the downloads page). As Python is also used for network simulations in the same book, this gives a better flow in the book. The graphs in the SPC-chapter are generated in Excel.


I have simply used Microsoft’s Snipping Tool for screen-shots and exported as PNG in all books. For the second edition of Embedded Software for the IoT, I re-did many of these to make them more readable. Mostly this was done by focusing on only parts of the screen, or by increasing font-size. The latter was done with all WireShark images. In the first edition I ran all screen-shots through Gimp, to make them look better in Black & White. It became clear that this added no real value, and the concept was dropped in the second edition. In the third edition many figures are improved by zooming further.

In Microcontrollers with C I try to stay away from larger screen-shots as they easily become unreadable in a book. Instead, I focus on specific windows in e.g., Eclipse or VS Code and adapt size and color to the book format.


There are only a few photographs in the IoT book – and none in the others.  I redid all photos with a Nikon camera and improved lighting for the third edition.


For backup I use “git”. It is one of many tools described in the IoT book, so it makes sense to take my own medicine. See e.g. Table of Contents.

I save versions on a daily basis. This works great with Latex text, but when using graphics there is no compression. I need to save the CDR-files from CorelDraw (and similar from Visio). This takes a lot of space. When the git repo is pulled to another PC to work from there, it is cumbersome to go through all CDR-files manually, exporting them to PDF, so I also save PDFs whenever I believe I am “done” – which is often not correct. Thus the repo grows fast. This would not be so extreme if CorelDraw (or Visio) supported a batch-mode export, allowing me to treat CDR as source and PDF as compiled output.

Originally I did not use git, but a simple backup script that saved all content to a Google Drive (described in the IoT-book as “poor mans backup”). This was easier to work with, from a backup point-of-view, but using git allows me to look at “diff’s” and to retrace my footsteps – just like working with code.


In a way WireShark is just one of many tools demonstrated throughout the IoT-book. However, no other single tool appears on so many screenshots. I owe Gerald Combs, founder of Wireshark, a huge THANK YOU for allowing me to use Wireshark screenshots in the book. Wireshark is the tool to use when capturing & analyzing Ethernet traffic.


Python has been mentioned a few times. I used the Anaconda Spyder for code & debug for the IoT-book. Without Anaconda it is difficult to get a coherent Windows installation. An alternative might be Dockers.


“R” is used to lookup SPC-constants for the SPC-chapter. I have also simulated some of these in Python (the ones I could not calculate in Excel). It took millions of iterations to get to the same constants as R gives in a split-second.


This is handled by De Gruyter for  Embedded Software for the IoT.

Microcontrollers with C now has a so-called TextBook Replica – just like SQL Server with C#