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)
When designing a system, what should you optimize? If it is a user-interface or process, you should be minimizing clicks, or process steps. But for hardware-software systems, the answer is not obvious, and a common mistake is to fail to consider the end-to-end problem. This article explores what is involved in optimizing end-to-end in hardware-software systems. The goal here is to minimize the overall complexity of the system, i.e. of the triple hardware-software-user combination. The following remarks set the stage for our discussion:
- “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”.
- “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]
- “We are reaching the stage of development [in computer science] 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].
- “The arc of change is long, but it bends towards simplicity”, paraphrasing Martin Luther King.
Between complexity and simplicity, progress, and new layers of abstraction.
Continue reading this article…
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…
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.
Notepad++, by Don Ho, multi-view with syntax highlghting
Continue reading this article…
THIS PAGE HAS MOVED!
The essay has been incorporated into the Software list. You can find it here!
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 of why writing mathematics in LaTeX is easier than in Word.
Continue reading this article…
By Assad Ebrahim, on May 20th, 2010 (14,333 views) |
Topic: Maths--Tools, SWEng--Toolbox
(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.
By Assad Ebrahim, on May 18th, 2010 (22,873 views) |
Topic: Maths--Tools, SWEng--Toolbox
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.
Continue reading this article…
By Assad Ebrahim, on February 22nd, 2010 (63,663 views) |
Topic: Maths--Tools
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,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!
|