Sensors and Systems: Integrating Sensors into the Ubiquitous Computing Stack

“Smart dust”, tiny leaf sensors, wearable computing — these and a host of other sensors that make measurements and communicate without requiring human intervention can now be readily integrated into dispersed systems to provide ambient intelligence, situational awareness, and the capability for adaptive behaviors or intelligent process automation.

Whether the sensor’s output is used to control the opening and closing of relays or thermostats, or to automatically raise alerts — the integration of sensors into systems is at the heart of the promise of ubiquitous computing. With the ability to place hundreds of embedded sensors within a given coverage area, each wirelessly streaming information, the possibility of self-organizing sensor networks is increasingly becoming a reality.

This article takes a look at the sensor layer of a basic ubiquitous computing stack.

Continue reading this article…

Why Zero Raised to the Zero Power is defined to be One

Updated! February 5, 2017

The value of zero raised to the zero power, (0^0), has been discussed since the time of Euler in the 18th century (1700s). There are three reasonable choices: 1,0, or “indeterminate”. Despite consensus amongst mathematicians that the correct answer is one, computing platforms seem to have reached a variety of conclusions: Google, R, Octave, Ruby, and Microsoft Calculator choose 1; Hexelon Max and TI-36 calculator choose 0; and Maxima and Excel throw an error (indeterminate). In this article, I’ll explain why, for discrete mathematics, the correct answer cannot be anything other than 0^0=1, for reasons that go beyond consistency with the Binomial Theorem (Knuth’s argument).
Continue reading this article…

Maxima (Computer Algebra)

If you haven’t done so already, you may want to start by reading the Preface to the Computing Series: Software as a Force Multiplier, Sections 1-3.

Maxima: a Computer Algebra System (CAS) for symbolic computation

Last updated: Feb 19, 2023 (fixed links). Nov 11, 2022 (added omega-math’s excellent web interface, and generating function calculation of the partition of integers problem).

Maxima is a computer algebra system (CAS) for symbolic computation that is free, open source, runs on multiple operating systems (Win,Mac,Linux), and covers a wide range of mathematical capabilities and graphical capabilities. These include algebraic simplification, polynomials, methods from calculus, matrix equations, differential equations, number theory, combinatorics, hypergeometric functions, tensors, gravitational physics, PDEs, nonlinear systems, plus including 2-D/3-D plotting and animation.  With a large and responsive user community, there is plenty of help to get up the learning curve, and with its active developer base, Maxima and its ecosystem continue to gain capability, including a fantastic web interface by Omega-Math/Vroom-Labs (see the screenshot below, r0*0). The result is a free, versatile, powerful mathematical computing package for engineers, scientists, mathematicians, programmers, and students. This article will help you get started with Maxima and set you up with resources to flatten the learning curve.

Omega-Math’s web interface to Maxima. Used here to calculate the first 10 elements of p(n), the number of ways to partition integer n, using a generating function comprising a truncated series of polynomials up to degree n=10


Continue reading this article…

Bare Bones Programming: The C Language

…for Embedded and Low-Level Systems Development

C provides the convenience of learning one language while retaining the ability to target a variety of platforms including modern operating systems (Linux, Windows, Mac), real-time operating systems, systems-on-a-chip, and a host of microcontrollers for embedded development. And if you have to “mov” the bits around yourself (device drivers, DMA controllers), you can do that too. This is a significant efficiency over assembly languages which are essentially chip-specific control codes and therefore require understanding the architecture of the target chip.

Continue reading this article…

The Place of Insight, Technique, and Computing in Mathematics

The mathematician Alfred North Whitehead1 observed that “[Advancement occurs] by extending the number of important operations which we can perform without thinking of them.” (Introduction to Mathematics, 1911 2) This is certainly true in mathematics where the development of judicious notation, accompanied by good mathematical technique, extends the capability to perform chains of complex reasoning accurately and efficiently. Through proper problem formulation (tractable yet generalizable), one can sometimes pass from a single insight to the solution of a family of problems, and in some cases, to the solution to the general question itself.3

Here, mathematical computing can provide a useful benefit: helping to efficiently explore conjectures, dispatch with false directions, and save time during the development, error-checking and validation stages of obtaining general results. In industry, where specific or semi-general results are needed fast, such tools allow rapidly working up the required material and providing the necessary certainty before the fully general results or complete proof are ready.

Continue reading this article…

  1. Whitehead was the major collaborator with Bertrand Russell in the strenuous 10 year attempt, ultimately unsuccessful, at driving through the logicist program in Mathematics, i.e. reducing the entire body of mathematics to a fixed system of logic. The program of logicial reductivism, of which this was perhaps the last major attempt, and certainly one of the best known and most influential, was put to rest by Godel’s discovery of the essential incompleteness of every sufficiently strong logical system (proved in his Incompleteness Theorem). In this, he establishes that any logical system sufficiently strong to obtain arithmetic will be able to generate statements that the system cannot prove.
  2. Whitehead claimed in the original that it is Civilization that advances in this way. I have reduced the claim for the purpose of this article.
  3. Fields Medalist Terence Tao has written a short piece that describes the role of rigor and the value of mathematical technique in the training of a mathematician. In the online discussion of this article, he adds two particularly interesting remarks: the first concerns the difference between the training pathways of physicists and engineers versus mathematicians that acknowledges that the final destination is the same, but the training route is different (pre-rigorous, post-rigrous). He then speculates on the observation that the two pathways are not the same, and that the order in which one traverses them influences the final outcome, and he makes the analogy with the order of learning languages.

Catalysts in the Development of Mathematics

The development of mathematics has had many encouraging forces: societal, technological, cultural. These have served to accelerate mathematics and have been accelerated in turn, in many cases the pair becoming locked into a mutually beneficial resonance that has dramatically energized both.

In this article, I look at some of the significant catalysts, from the rise of the leisured class in ancient times to the impact of computing in modern times.
Continue reading this article…

Demystifying the Assembly Language Toolchain: a look at DOS-DEBUG, NASM (Netwide Assembler) TCC (Tiny C), and Forth

2nd ed., Feb 1, 2024, 1st ed. Jan 9th, 2010


A common misconception is that assembly language programming is a relic of the past. This is certainly not the case, and assembly language remains a core knowledge area for embedded systems development, digital design, and algorithm development in the 21st century.

A second misconception, especially amongst those who are only familiar with higher level languages (Python, Ruby, C#/.NET, Perl), is that assembly language is a defective programming language and therefore not worth the time to invest in.

But assembly language is more than ‘just another general purpose programming language’. It is actually the control signal specification for the microprocessor or microcontroller that will be running the instructions, and whose digital design must be reasonably well understood in order to get it to work successfully.

Higher level languages typically hide the underlying toolchains behind turnkey integrated development environments (IDEs). But the toolchains are valuable in their own right, comprising various software components (pre-processor, compiler, assembler, linker, loader) which take the high level code and transform it to executable machine code that can run on the target processor, optionally producing assembly code for inspection along the way. Familiarity with this toolchain can help evaluate how much overhead the high-level tools introduce on the code, which is an important part of understanding how much you’re trading off.

In this article, we’ll look first take a look at the software toolchain involved in general terms, before turning to specific tools you can use on a modern Windows computer (through Windows 11) to target an x86 chip (no longer in your PC but in a DOS Emulator). Similar skills and approaches carry over to the toolchain for the Atmel 328P and ATTiny 85 with a graphics application (TinyPhoto) on the ATTiny85 here.
Continue reading this article…

The Development of Mathematics

The development of mathematics is intimately interwoven with society and culture, influencing the course of history through its applications to science and technology.

But mathematics itself has changed much over its history. Even the mathematics of the early 1800s can now seem quite strange, so great have been the changes in just the past 150 years as it has been reworked in the modern abstract approach. Though advanced mathematics may now appear arcane from the outside looking in, the present state of mathematics is the result of a natural evolution of the subject. And there is much excitement promised ahead with the rise of new mathematics and application areas in subatomic and quantum physics, in the the field of statistical learning (also called artificial intelligence or machine learning), and in numerical computing and simulation.

What follows is the story of mathematics, in a nutshell.

Continue reading this article…

Characteristics of Modern Mathematics

What are the characteristics of mathematics, especially contemporary mathematics?

I’ll consider five groups of characteristics:

  1. Applicability and Effectiveness,
  2. Abstraction and Generality,
  3. Simplicity,
  4. Logical Derivation, Axiomatic Arrangement,
  5. Precision, Correctness, Evolution through Dialectic…

Continue reading this article…

Stats: 1,089,379 article views since 2010 (Aug '24 update)

Dear Readers:

Welcome to the conversation!  We publish long-form pieces as well as a curated collection of spotlighted articles covering a broader range of topics.   Notifications for new long-form articles are through the feeds (you can join below).  We love hearing from you.  Feel free to leave your thoughts in comments, or use the contact information to reach us!

Reading List…

Looking for the best long-form articles on this site? Below is a curated list by the main topics covered.

Mathematics History & Philosophy

  1. What is Mathematics?
  2. Prehistoric Origins of Mathematics
  3. The Mathematics of Uruk & Susa (3500-3000 BCE)
  4. How Algebra Became Abstract: George Peacock & the Birth of Modern Algebra (England, 1830)
  5. The Rise of Mathematical Logic: from Laws of Thoughts to Foundations for Mathematics
  6. Mathematical Finance and The Rise of the Modern Financial Marketplace
  7. A Course in the Philosophy and Foundations of Mathematics
  8. The Development of Mathematics
  9. Catalysts in the Development of Mathematics
  10. Characteristics of Modern Mathematics

Topics in Mathematics: Pure & Applied Mathematics

  1. Fuzzy Classifiers & Quantile Statistics Techniques in Continuous Data Monitoring
  2. LOGIC in a Nutshell: Theory & Applications (including a FORTH simulator and digital circuit design)
  3. Finite Summation of Integer Powers: (Part 1 | Part 2 | Part 3)
  4. The Mathematics of Duelling
  5. A Radar Tracking Approach to Data Mining
  6. Analysis of Visitor Statistics: Data Mining in-the-Small
  7. Why Zero Raised to the Zero Power IS One

Technology: Electronics & Embedded Computing

  1. Electronics in the Junior School - Gateway to Technology
  2. Coding for Pre-Schoolers - A Turtle Logo in Forth
  3. Experimenting with Microcontrollers - an Arduino development kit for under £12
  4. Making Sensors Talk for under £5, and Voice Controlled Hardware
  5. Computer Programming: A brief survey from the 1940s to the present
  6. Forth, Lisp, & Ruby: languages that make it easy to write your own domain specific language (DSL)
  7. Programming Microcontrollers: Low Power, Small Footprints & Fast Prototypes
  8. Building a 13-key pure analog electronic piano.
  9. TinyPhoto: Embedded Graphics and Low-Fat Computing
  10. Computing / Software Toolkits
  11. Assembly Language programming (Part 1 | Part 2 | Part 3)
  12. Bare Bones Programming: The C Language

Technology: Sensors & Intelligent Systems

  1. Knowledge Engineering & the Emerging Technologies of the Next Decade
  2. Sensors and Systems
  3. Unmanned Autonomous Systems & Networks of Sensors
  4. The Advance of Marine Micro-ROVs

Maths Education

  1. Maxima: A Computer Algebra System for Advanced Mathematics & Physics
  2. Teaching Enriched Mathematics, Part 1
  3. Teaching Enriched Mathematics, Part 2: Levelling Student Success Factors
  4. A Course in the Philosophy and Foundations of Mathematics
  5. Logic, Proof, and Professional Communication: five reflections
  6. Good mathematical technique and the case for mathematical insight

Explore…

Timeline