Free ARM Programming Book

posted Aug 10, 2019, 8:00 AM by MUHAMMAD MUN`IM AHMAD ZABIDI   [ updated Aug 10, 2019, 8:03 AM ]

Book Description (by 'Amazon Customer')

This book was published by the 'publishing arm' of Computer Concepts (now Xara) around 1988 or so. Acorn was selling the ARM2 (?) development workstations and had just launched the A300 Archimedes computer. My copy was handed to me when I joined Computer Concepts. Incorporating an assembler was par for the course for Acorn, and much of Computer Concepts software was written as assembly code wrapped by a two-pass BASIC for-loop. The book is a slim book, and covers the ARM3 instruction set including the load/store instructions, arithmetic, barrel shifter. It's a decent read and covers the material adequately, but as always, it probably better to actually learn mainly by getting your hands dirty and writing some code. Note that there is no thumb coverage, since this was not introduced to the ARM until much later. This book is more of a historical artifact now, being almost 20 years old, but still of interest.


Free STM32 Book

posted Aug 10, 2019, 7:44 AM by MUHAMMAD MUN`IM AHMAD ZABIDI

Book Description

This book is intended as a hands-on manual for learning how to design systems using the STM32 F1 family of micro-controllers. It was written to support a junior-level computer science course at Indiana University.

The focus of this book is on developing code to utilize the various peripherals available in STM32 F1 micro-controllers and in particular the STM32VL Discovery board. Because there are other fine sources of information on the Cortex-M3, which is the core processor for the STM32 F1 micro-controllers, we do not examine this core in detail; an excellent reference is "The Definitive Guide to the ARM CORTEX-M3."

This book is not exhaustive, but rather provides a single "trail" to learning about programming STM32 micro controller built around a series of laboratory exercises. A key design decision was to utilize readily available off-the-shelf hardware models for all the experiments discussed.

About the Authors

Geoffrey Brown is a Professor of Computer Science, School of Informatics and Computing, Indiana University.


Free C++ Book

posted Aug 10, 2019, 7:34 AM by MUHAMMAD MUN`IM AHMAD ZABIDI   [ updated Aug 10, 2019, 7:35 AM ]

This C++ Notes for Professionals book is compiled from Stack Overflow Documentation, the content is written by the beautiful people at Stack Overflow. Text content is released under Creative Commons BY-SA, see credits at the end of this book whom contributed to the various chapters. Images may be copyright of their respective owners unless otherwise specified.

This is an unofficial free book created for educational purposes and is not affiliated with official C++ group(s) or company(s) nor Stack Overflow. All trademarks and registered trademarks are the property of their respective company owners.

The information presented in this book is not guaranteed to be correct nor accurate, use at your own risk.

Please feel free to share this PDF with anyone for free, latest version of this book can be downloaded from:

A Couple of Halal Software Engineering Books

posted Jul 23, 2019, 1:33 AM by MUHAMMAD MUN`IM AHMAD ZABIDI   [ updated Aug 10, 2019, 7:31 AM ]

Both are all free PDFs.

  • Wikibooks, Introduction to Software Engineering (link)
  • Ivan Marsic, Software Engineering (link)
And while I was not really looking, found this code.

// Use Euclid's algorithm to calculate the GCD.
// See
private long GCD(long a, long b)
  a = Math.Abs(a);
  b = Math.Abs(b);
  for (; ; )
    long remainder = a % b;
    if (remainder == 0) return b;
    a = b;
    b = remainder;

Sort xeno-canto Recordings by Count

posted Jul 14, 2019, 1:37 AM by MUHAMMAD MUN`IM AHMAD ZABIDI   [ updated Jul 14, 2019, 1:44 AM ]

Get metadata for all recordings from Malaysia:

> CR.recs <- querxc(qword="cnt:malaysia")
> summary(CR.recs)
> unique(CR.recs$Locality)
> x <- sort(table(CR.recs$Locality),decreasing = F)
> write.csv(x,"mytable.csv")

$ tail mytable.csv
"424","Stapok area of Batu Kawa, Bahagian Kuching, Sarawak",122
"425","Deremakot forest reserve, Sabah, Borneo",124
"426","Taman Negara, Sungai Relau, Merapoh, Pahang",140
"427","Kuala Selangor, Selangor",140
"428","Mount Kinabalu, Sabah, Borneo",154
"429","Rainforest Discovery Center, Sepilok, Sabah, Borneo",166
"430","Taman Negara, Pahang",209
"431","Borneo Rainforest Lodge, Danum Valley, Sabah, Borneo",291
"432","Fraser's Hill, Pahang",360
"433","Danum Valley, Sabah, Borneo",389

If the command was write.csv(x,"mytable.csv",quote=F) then there won't be any quotes around the linenumber.

Giving the command to get metadata for all quality A recordings from all over the world makes the server work for 30 minutes

> World <- querxc(qword="q:A")
   |+++++++                                           | 14% ~24m 11s     

Bird Sound Databases

posted Jul 13, 2019, 9:43 PM by MUHAMMAD MUN`IM AHMAD ZABIDI   [ updated Jul 25, 2019, 1:24 AM ]

Nikon D7100 vs V2: Which One is Denser?

posted Jul 7, 2019, 8:07 AM by MUHAMMAD MUN`IM AHMAD ZABIDI   [ updated Jul 7, 2019, 8:20 AM ]

Comparing two of my cameras for pixel density. I want to know what is the focal length multiplier if I crop the sensor image 1:1 at Full HD (1920 x 1080). I use Full HD as the benchmark as I often crop to this size for making desktop pictures.

Camera    D7100  V2
Max res
6000 x 4000
 4608 x 3072
Eff pixels 24 M
 14 M
Sensor size 23.5 x 15.6 mm
 13.2 x 8.8 mm
Focal length multiplier
36 / 23.5 = 1.53x
 36 / 13.2 = 2.73x
Linear density
255 pix/mm
 349 pix/mm   
Sensor width at Full HD
7.52 mm
 5.5 mm
Focal length multiplier at Full HD
Focal length multiplier at Full HD with TC1.4

Keras using R on Ubuntu

posted Jul 3, 2019, 2:13 AM by MUHAMMAD MUN`IM AHMAD ZABIDI   [ updated Jul 3, 2019, 2:20 AM ]

Not exactly a breeze to get running.

First, try installing devtools. It's a package that allows other packages to be installed from GitHub.

> install.packages("devtools")

It didn't work for me. After Googling around, I found this:

> install.packages('devtools',dependencies=TRUE, repos='')

If that is ok, install keras R package from GitHub:

> devtools::install_github("rstudio/keras")

Then install both the core Keras library as well as the TensorFlow backend.

> library(keras)
> install_keras()

Next, run some test as recommended by

Here's my output after going all the steps.

What is R?

posted Jul 2, 2019, 3:11 AM by MUHAMMAD MUN`IM AHMAD ZABIDI   [ updated Jul 2, 2019, 3:43 AM ]

The R programming language is an open source scripting language for analytics and data visualization. R acts as free alternative to traditional statistical packages such as SPSS, SAS, and Stata. Such software allows for the user to freely distribute, study, change, and improve the software under the Free Software Foundation's GNU General Public License. These advantages over other statistical software encourage the growing use of R in cutting edge social science research.

Why R?

The "R" name is derived from the first letter of the names of its two developers, Ross Ihaka and Robert Gentleman, who were associated with the University of Auckland at the time. R is a free implementation of the S programming language, which was originally created and distributed by Bell Labs. Most code written in S will run successfully in the R environment.

They are plenty of tools available in the market to perform data analysis.  The picture below depicts the learning curve compared to the business capability a language offers. Excel and PowerBI are simple to learn but don't offer outstanding business capability, especially in term of modeling. In the middle, you can see Python and SAS. SAS is a click and run software tool to run a statistical analysis for business, but it is not free. Python, however, is a language with a monotonous learning curve. Python is a fantastic tool to deploy Machine Learning and AI but lacks communication features. With an identical learning curve, R is a good trade-off between implementation and data analysis.

Who uses R?

Stack Overflow ( is the largest, most trusted online community for developers to learn, share​ ​their programming ​knowledge. Lately, the percentage of question-views has increased sharply for R compared to the other languages. This trend is  highly correlated with the booming age of data science and reflects the demand of R language for data science.

Data scientists use either R and Python. Their job is to understand the data, manipulate it and expose the best approach. Data scientists are not programmers. R is probably the language for non-programmers involved in data science.

Data scientists are heavy users of machine learning. The best algorithms for machine learning can be implemented with R. Packages like Keras and TensorFlow allow the development of machine learning algorithms from R.

Where  obtain R?

Installation files for Windows, Mac, and Linux can be found at the website for the Comprehensive R Archive Network, There is no cost for downloading and using R. You can already use R using the command line after installing the basic software.

To make your work more productive, install RStudio IDE. Get it here.

Wait, there's more...

Installing WarbleR Package

posted Jul 1, 2019, 10:58 PM by MUHAMMAD MUN`IM AHMAD ZABIDI   [ updated Jul 2, 2019, 12:45 AM ]

warbleR is an R package for analysis of animal acoustic signature.

Installing warbleR is easy on macOS and Windows. In R command prompt:

> install.packages("warbleR")

More steps in Ubuntu because warbleR has many unresolved dependencies.

1) Install mvtnorm

  • At the shell give this command:
$ sudo R CMD INSTALL mvtnorm_1.0-8.tar.gz

2) Install soundgen
$ sudo R CMD INSTALL soundgen_1.3.2.tar.gz

3) Install RCurl
$ sudo apt install libcurl4-openssl-dev
$ sudo R CMD INSTALL RCurl_1.95-4.11.tar.gz

4) Install FFTW3 (don't skip this step)

Our R package will require a shared library so we will be installing fftw3 from source:

$ wget
$ tar -xzf fftw-3.3.8.tar.gz
$ cd fftw-3.3.8
$ ./configure --enable-shared
$ make
$ sudo make install

5) Install fftw. It's a wrapper around the fastest fourier transform in the west (FFTW) library.
$  sudo R CMD INSTALL fftw_1.0-5.tar.gz

6) Finally, install warbleR from inside R:

> install.packages("warbleR")

I'm deep indebted to Jonathan Callahan:

1-10 of 125