Tools & Processes used
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.
The following is a list of tools used in the process, for those interested.
Word-Processing. I use Word a lot in my day-job. Maybe for this reason, I was not too happy about using Word. It simply isn’t good enough. 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 the e-book.
I implemented a number of enhancements in the second edition, 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, with MikTex for editing.
Diagrams. In the first edition, 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. For the second edition, 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 onwards, vector-graphics (from Visio and Corel) are exported as PDF into Latex, which in reality passes it “as is” to the printer. Much better than PNG.
Excel graphs are also exported as PDF. 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).
Graphs. The sines, spectra etc. in the DSP-chapter are now (3’rd edition) generated in Python. This is a major change from the first and second edition. 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 this gives a better flow in the book. The graphs in the SPC-chapter are generated in Excel.
Screen-Shots. I have simply used Microsoft’s Snipping Tool for this and exported as PNG in all three editions. For the second edition 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.
Photographs. There are only a few photographs in the book. They are all redone with a better camera and lighting for the third edition.
Backup. For backup I use “git”. It is one of many tools described in the 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. 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 am “done” – which is often not correct. Thus the repo grows fast. This would not be so extreme if CorelDraw supported a batch-mode export, allowing me to treat CDR as source and PDF as compiled output.
When I worked on the first edition I did not use git, but a simple backup script that saved all content to a Google Drive (described in the 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.
Wireshark. In a way this is just one of many tools demonstrated throughout the 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 use the Anaconda Spyder for code & debug. Without Anaconda it is difficult to get a coherent Windows installation.
Misc. “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 now handled by De Gruyter.