PID Tuner Tool Released In NinjaCalc

NinjaCalc has a new tool, a PID tuner! This PID tuner tool can be used to simulate/tune a PID controller, which is commonly used in industry to control things such as temperature, flow rates, speeds and all sorts of other things!

This PID tuner tool comes with two predefined processes that you can simulate/tune, a mass/spring/damper and R/C jet engine process. It also allows you to configure you own process to simulate/tune, via an editable JavaScript object.


Once you click the “Start” button, the PID tuner tool simulates the process and shows you the response of the process and PID controller. You can dynamically change the P, I and D terms of the PID controller while the simulation is running and see how this affects the response of the controller.

The PID tuner tool can be found here.

More information on PID Controllers can be found on the PID Control page.

March 2018 Updates

February 2018 Updates

  • Updates to the UART and RS-232 communication protocol pages.

  • New Cross Product page under Mathematics->Geometry.

  • Updated the Fixed Point Mathematics page with more information of multiplication, division and modulo.
  • NinjaCalc got a new ‘Two Coordinate Geodesics’ calculator. This has it’s own post here.

  • Added information on “unused parameter” compiler warnings to the Qt page.

Geodesic Calculator Added To NinjaCalc

NinjaCalc has a new calculator, a “Two Coordinate Geodesics” calculator that can help you analyse properties of two coordinates/points on the earths surface (defined by latitude/longitude).

Given two points in latitude/longitude form (both degrees and radians supported), the calculator can give you the great circle (shortest) distance between the two points, and the initial/final bearings. This calculator can also find an intermediate coordinate/point between the two coordinates, given a fractional amount (such as 0.5). All of these properties are calculated using the Haversine formula.

A screenshot of the “Two Coordinate Geodesics” calculator in NinjaCalc.

All these properties are shown on a interactive model of the earth in 3D (the sphere can be rotated). 

This calculator can be found in the NinjaCalc web app at

January 2018 Updates

  • Updated the C Data Types page with information on software-based floating point arithmetic.
  • New apt page under Programming->Operating Systems->Linux->Programs.

  • New Anaconda page under Programming->Languages->Python.
    The logo for Anaconda (Python distribution/environment).
  • Updated the C++ Exceptions page with information on the noexcept keyword introduced in C++11.

Happy New Year 2018

Happy new year for 2018!

Here are some statistics for 2017:

Num. views 111k (down 40% from last year)
Visitors 64k (down 35% from last year)
Num. Of New Pages 90 (up 30% from last year)

Most Popular Pages:

Altium Tricks And Standards 12.8k
Altium Bugs And Things To Watch Out For 7.0k
Home Page 3.4k
Component Packages 3.0k
A Function Pointer Based State Machine 2.8k

Most Popular Referrers:

Search Engines 64.4k 1k 257
Reddit 235
android-app 193

And here are the visitors in 2017 by country:

The number of visitors to in the year 2017, sorted by country.

I think the biggest reason for the drop in visits (down 40%) in 2017 was due to the moving of to Even though was then setup to redirect to the new URL (you can click the above links if you don’t believe me!), a significant drop in traffic was seen from this point onwards (I’m not that savvy on the details of SEO, but I guess it hurt the site’s reputation). You can see the drop in the image below:

Visitor stats for in 2017, highlighting the drop in visits when the blog was moved from to in March 2017.

The total number of visits (ever) is now at 730k. Bring on 1 million!

Some things I would like the improve on the blog in 2018:

  • Move more and more images away from using image plugins, and instead use the default media handler.
  • Add more child page sections to pages, and make sure each child page has both an image and a intelligible description.
  • Boost visitor count back up to it’s former levels (or better!) by improving content and SEO.
  • Fully retire the use of the QuickLatex plugin, using MathJax-Latex plugin for latex rendering instead.

December 2017 Updates

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.

October 2017 Updates

September 2017 Updates