November 2017 Updates

  • New Auto (Specifier) page under Programming->Languages->C++.
  • New Streams page under Programming->Languages->C++.
  • New Affine Transformations page under Mathematics.
    The standard form of a affine transformation matrix.
  • New Projective Transformations page under Mathematics.
    A quad-to-quad transformation of an image, going from a rectangle to a complex non-rectangular quadrilateral with no parallel edges.
  • New GCC Profiling page under Programming->Compilers->GCC.
    A profile of the execution time of the example code. Graph was created using gprof and the gprof2dot tool.
  • New Premade Recipes page under Programming->Embedded Linux->Yocto.
  • Updated the Python SWIG Bindings From C++ page with a tutorial on how to pass (and call) callbacks from Python code to C++ code, and information on custom typemaps and typechecks (with working code examples).
  • New BlogAssets repository and a central place to store all code examples/diagram source files for this website.
    A screenshot of the GitHub BlogAssets repository.
  • New Visual Studio Code page under Programming->Integrated Development Environments (IDEs).
    The icon for Microsoft’s Visual Studio Code.
  • Fixed many of the broken links (approx. 60) on this blog, via the help of the great WordPress plugin Broken Link Checker.
  • Added new Git Subtrees page under Programming->Version Control Systems->Git.
  • Created a new repo called CppTemplate (on GitHub), with the purpose being for it to provide a way to quick start development on a new C++ project.
  • New GCC Code Coverage page under Programming->Compilers->GCC.

NinjaCalc Is Now A Web App

NinjaCalc, a “collection of embedded engineering related calculators”, is now a web app (go to to try it out)!

NinjaCalc is now a web app! A screenshot while selecting a calculator using the new web app at

Up until now NinjaCalc has been a desktop app written in Java (as NinjaTerm still is). However, the functionality that NinjaCalc provided had no need to be a installable desktop app, and I had long desired to move it to the easily accessible web.

When I recently discovered vue.js, I finally decided to make the move (after trying both React and AngularJS a year or so ago but deciding not to use them). It was the simplicity and flexibility of vue.js which was the deciding factor. Porting took about 3 weeks of full-time work (luckily I was unemployed at the time).

After trying out Heroku as the deployment platform, I eventually choose to deploy it on my server instead due to increased configuration flexibility (incl. the ability to setup the Apache server routing with .htaccess files). rsync is used to copy the production files over ssh onto my server.

The newest version of the Java based NinjaCalc (v1.3.0) can still be downloaded from, although this will slowly deviate from the web app as the web app is developed further.

Existing users of NinjaCalc may appreciate the similarity between the Java app and the web app. The results can be found below!

GitHub Repo:
GitHub Project Page:
NinjaCalc Web-app:

July 2014 Updates

Probably one of the biggest months of updates ever!

  • Added minicom page.
  • Added cat page.
  • Info on variadic macros added to Programming->Languages->C->C Preprocessor.
  • New Memory page under General Programming
  • Updated Alitum Simulation page.
  • New page on the Linux program diff.
  • New page on C variadic functions (to complement the stuff added about variadic macros)
  • New PSoC Fault Finding page.
  • New Automated Code Analysis page.
  • Git repo Code-Template-Files added
  • New Compilers section under Programming with GCC page.
  • New page, How To Properly Use FreeRTOS (as of Dec 2017, URL unavailable).
  • New pages, Naming Conventions, under Programming->General, and C Naming Conventions, under Programming->Languages->C.
  • Removed disqus ads, see this post.
  • New page, Programming->Languages->C->Standards And Versions.
  • Version Control Systems promoted to a sub-menu of Programming.
  • New commands added to the .
  • New page, Programming->Languages->C->Portabillity.
  • Updates to the Programming->Languages->C->Pointers page.
  • Added information about the C ternary operator (?) to the Programming->Languages->C->Logical Operators page. Also added information about the lack of a logical exclusive OR operator, and how to simulate one.
  • Updates to the Programming->Languages->C->Structures page regarding initialisation and object-orientated style programming.
  • Updates to the Programming->Languages->C->Enumerations page, adding info about how to change the data type of enumerations and enumeration syntax.
  • New page, Programming->Operating Systems->FreeRTOS->Common Mistakes. Added info about the main() stack getting overriden when vTaskStartScheduler() gets called.
  • PCB Design got promoted to be a sub-menu of Electronics.
  • New component package added, SOD-123F, to the Component Packages page.
  • New GitHub repo, TemplateCodeFiles, which currently contains template code for the C and C++ languages.
  • New GitHub repo, FreeRtosWrapper-Cpp. Contains wrappers to use FreeRTOS in a object-orientated C++ environment, including the ability to make a class function (a method), a task.
  • Corrected some info on the Using C++ With PSoC Creator page, and added more info about thread-safe static initialisation and virtual functions.
  • New section Methodologies under Programming. New page Inversion of Control (IoC) (as of Dec 2017, URL unavailable).
  • New page on PCB Stencils under Electronics->PCB Design. This includes information of the different etching processes as well as terminology such as aperture size and aspect ratio.
  • Updated to the RingBuff-Cpp GitHub repo.
  • Updates to the Microcontroller IDE Comparison page relating to AVR Studio.
  • New page on PCB Castellation.