The Sacred & the Profane: the search for simplicity in the total hardware-software combination


If you haven’t done so already, you may want to start by reading the Preface to Knowledge Engineering & Emerging Technologies.


January 31st, 2024 (4th ed)1

The aim of this article is to encourage you to take an end-to-end perspective in your designs, seeking to minimize the overall complexity of your system, of the hardware-software-user combination. To achieve this, it is helpful to understand how computing, and within that, how the notions of the sacred and the profane have evolved over the past 60 or so years.2

The following remarks set out a ‘true north’ perspective for this conversation:

  1. “We are reaching the stage of development where each new generation of participants is unaware both of their overall technological ancestry and the history of the development of their speciality, and have no past to build upon.” – J.A.N. Lee, [Lee, 1996, p.54].
  2. “Any [one] can make things bigger, more complex. It takes a touch of genius, and a lot of courage, to move in the opposite direction.” – Ernst F. Schumacher, 1973, from “Small is Beautiful: A Study of Economics As If People Mattered”.3
  3. “The goal [is] simple: to minimize the complexity of the hardware-software combination. [Apart from] some lip service perhaps, no-one is trying to minimize the complexity of anything and that is of great concern to me.” – Chuck Moore, [Moore, 1999] (For a succinct introduction to Chuck Moore’s minimalism, see Less is Moore by Sam Gentle, [Gentle, 2015]
  4. “The arc of change is long, but it bends towards simplicity”, paraphrasing Martin Luther King.4

The discussion requires a familiarity with lower-level computing, i.e. computing that is close to the underlying hardware. If you already have some familiarity with this, you can jump straight in to section 2. For all backgrounds, the discussions in the Interlude (section 4) make for especially enlightening reading. Whether you find yourself in violent agreement or disagreement, your perspective is welcomed in the comments!

Between complexity and simplicity, progress, and new layers of abstraction.

Continue reading this article…

  1. 3rd ed. (Jul 20, 2021), 2nd ed. (Apr 9, 2014, addition of GCC history), 1st ed. (May 2, 2010)
  2. * Sacred: Worthy of respect or dedication. Devoted to a single purpose. Profane: Violating the sacred character of a place or language. Irreverent toward what is held to be sacred.
  3. This quote by Ernst F. Schumacher is often incorrectly attributed to Einstein
  4. Martin Luther King’s actual phrase was “The arc of the moral universe is long, but it bends towards justice.”, 1965 You can see an example of this in Ian Hogarth’s discussion about the contest between tokamak and stellerator in the evolution of nuclear fusion technology. (Short version: the tomkamak surged ahead despite its complexity to operate as it was easy to design, but the real breakthrough will likely be achieved by the stellerator as it is simple to operate though harder to design.)

LOGIC in a Nutshell: Theory & Application (including a Forth simulator, and digital circuit design)


This article looks at Propositional Logic, also called Statement Calculus, from a combinatorial and algebraic point of view (Sections 3-6), its implementation in software (Section 7), and its application to digital electronics (Section 10). Historical sections cover the shift in viewpoint from classical logic based on Aristotle’s syllogism to modern symbolic logic (Section 2) and the axiomatization of logic (Section 9). (See logic sourcebook for the original source papers (1830-1881) that drove this shift.)

In Section 7, we implement the grammar of the statement calculus in the Symbolic Logic Simulator (SLS), a program written in 28 lines of Forth code, that allows computer-aided verification of any theorem in Propositional Logic (see Appendix 1 for source code). The program makes it straight-forward to explore non-obvious logical identities, and verify any propositional logic theorem or conjecture, in particular see Appendix 2 for key identities in the statement calculus (duality, algebraic, and canonical identities).

The concept of linguistic adequacy is developed in Section 8 and the NAND Adequacy Theorem is proved showing that NAND can generate all logical operations. A corollary is that any digital logic circuit can be built up entirely using NAND gates, illustrated using the free Digital Works software.

Continue reading this article…

Notepad++ (Text Editor)

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.

1. Notepad++: a programmable, extensible, feature-rich text editor

NotePad++ (NPP) is an open-source programmer’s text editor with outstanding built-in features that can be further enhanced with powerful plugins and extensively customized with your own configurations. NPPs features include syntax highlighting for a large collection of programming languages, code folding, recordable macros, cloned views, selectable shortcuts, tabbed documents, and a host of other capabilities.
But it is the plugins and customization that NPP an invaluable power-tool, capable of far more than text editing. NPP can serve as an automation engine, a complex calculator (for example between hex, binary, and decimal), or a light-weight IDE for any toolchain you wish. It is the second application (after Total Commander) which I install on a Windows computer.

This article describes a few of the dozens of capabilities. It also shares a pre-configured Notepad++ package that I use (20.0MB compressed, 50.0MB uncompressed, download here), which contains the configurations and capabilities I use. The file is portable and self-contained: just unpack NPP to your drive (in a separate folder to your current running instance) and run notepad++.exe from there.1

Notepad++, by Don Ho, multi-view with syntax highlghting

Notepad++, by Don Ho, multi-view with syntax highlghting


Continue reading this article…

  1. You don’t want to overwrite your current instance, as capabilities are dependent on version of the plugin, and yours may be different than mine.

Computing & software as ‘force-multipliers’: achieving objectives as an ‘army of one’ before requiring high performance teams

“When your vision of what you want to do is what you can do single-handedly, then you should pursue it. The day your vision (what you think needs to be done) is bigger than what you can do single-handedly, then you have to move toward management. The bigger the vision is, the further into management you have to go.” – Richard Hamming, You and Your Research, Talk at Bellcore, 7 Mar 1986, (PDF).

Your computer, kitted out with best in class software tools (mostly open source), can be perhaps the single greatest force multiplier that you have as a scientist, engineer, or mathematician. With the willingness to work hard and persist, and some skill at ‘software joinery’, you can accomplish more than you realize solely through your own capabilities. This article is about achieving those visions which you can do single-handedly, and how this enables having and testing the kind of bigger visions for which you need that next level of force multiplication that comes through larger budgets, high-performance teams, and management.

Continue reading this article…

LaTeX / TeX: Professional Grade Typesetting for Scientific Writing


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.

Introducing the LaTeX typsetting platform

If symbols, formulas, and equations comprise a large portion of your professional communication, then you will gain significantly by becoming proficient with the LaTeX (pronounced “lay-tech”) document preparation platform. With the right tools and a little practice, the relative ease of creating beautiful mathematical documents with LaTeX will likely mean that you leave Office in favor of LaTeX for your technical writing.

This article introduces the LaTeX platform (short for Lamport-TeX, after the mathematician Leslie Lamport), illustrates its capabilities, and highlights the key differences between using LaTeX or WYSIWYG “what you see is what you get” word processing systems such as Office.

For those that like to know the human side of the tools they use, we provide a brief history of the legendary TeX (pronounced “tech”) platform, which underpins all variations of which LaTeX is one, looks at the philosophy motivating the development of TeX, and something about its legendary creator Donald Knuth.

Don Knuth, Leslie Lamport, and an illustration of why writing mathematics in LaTeX is easier than in Word.

Don Knuth, Leslie Lamport, and an illustration of of why writing mathematics in LaTeX is easier than in Word.

Continue reading this article…

Writing Modular TeX Documents


(Mathematical Toolset Series: TeX & LaTeX, Part 3 of 3)

If you write frequently, it is likely that you have certain stock or administrative material that is included in each of your documents. You also likely spend a substantial portion of your overall effort re-writing, editing, or re-arranging material. In this situation, one of the best ways of preserving your time and your sanity is to adopt a modular approach to document development.

In this final article of the three part series on LaTeX / TeX, I will discuss a modular approach to document preparation using TeX. I’ll also provide modular templates that should make your use of TeX more efficient.

LaTeX (Maths Typesetting)

Writing Beautiful Mathematics: Getting Started with LaTeX on Windows

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.

2nd ed. Revised with new templates Sep 21, 2019, 1st ed. May 18, 2010.

Getting Started with LaTex
LaTeX (open source, free) is an essential tool to write beautifully formatted mathematics efficiently. If you have extensive mathematical symbology and have been using MS Word for this, you are using the wrong tool for the job (see Figure below). Setting up LaTeX should take no more than an hour, after which you can produce publication-ready mathematical documents quickly and reliably. This article walks you through setting up a working platform for Windows, and provides the LaTeX templates you’ll need to produce your first examples. Also shared is the source code and compilation instructions for an example paper, which you can download and modify for your own use, containing several advanced stylistic elements (endnotes, figures with captions, URLs, code listings, and epigraphs).

An example of mathematics written in LaTeX, from Finite Summation of Integer Powers (Part 3), A. Ebrahim, C. Ouellette, 2010.

An example of mathematics written in LaTeX, from Finite Summation of Integer Powers (Part 3), A. Ebrahim, C. Ouellette, 2010.

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…

Stats: 1,066,417 article views since 2010 (March 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

Electronic & Software Engineering

  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

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: 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

Math Education

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

Explore…

Timeline