How this site came to be.

During my career at the University of Maryland in the Department of Chemistry and Biochemistry, I did research in analytical chemistry and developed and taught several courses, including an upper-division undergraduate lab course in "Electronics for Chemists", which by the 1980s included a laboratory computer component and one experiment in digital data acquisition and processing dealing with the use of mathematical and numerical techniques used in the processing of experimental data from scientific instruments. When the Web became available to the academic community in the early 90s, like many instructors, I put up a syllabus, experiments, and other reading material for this and for my other courses online for students to access.

When I retired from the University in 1999, after 30 years of service, I noticed that I was getting a lot of page-views on that course site that came from outside the University, especially directed to the lab experiment in digital data processing that I had developed in the 80's, when computers were relatively new in chemistry laboratories. I started getting an increasing number of emails with questions, suggestions, and comments from people in widely varied scientific fields. So, I began to broaden this beyond chemistry and my specific course. Ultimately, I decided to make this a long-term retirement project. My aim is to help science workers learn and apply computer-based mathematical data processing techniques, by producing free tutorial materials that explains things intuitively rather than in mathematical formality, with coding examples, practical software, and guidance/consulting on specific projects. Analytical chemists like myself are basically tool builders. In the early days of our profession, the tools where mainly chemical (e.g., color reagents), but in later years included instruments (e.g., spectroscopy and chromatography), and by the late 20th century included software tools.

To make this work useful for the widest possible audience, including those with limited funding, I made several choices:

a.      Everything is free: the book (in electronic form), the software, and the help and consulting. Only the paperback version of the book, available from Amazon, must be purchased.

b.      The book and documentation are available in multiple digital formats: HTML, PDF, and DOCX.

c.       The writing is at the 11th grade level.

d.      Formal mathematics is minimized. Analogies, graphics, and animations are employed to help explain concepts.

e.       Multiple hardware platforms can be used: PCs, Macs, portable devices, and Raspberry Pi.

f.        Multiple software platforms are used: Matlab, Octave, Python, Spreadsheets. All except Matlab are free.

Who needs this software?

Isn't software already included in every modern scientific instrument hardware purchase? This is true, especially for those who are using conventional instruments in standard ways. But many scientists are working in new research areas for which there are no commercial instruments, or they are building completely new types of instruments, or they are using modifications of existing systems for which there is no software. In some cases, the software provided with commercial instruments is inflexible, inadequately documented, or hard to use. Not every researcher or science worker likes programming, or has time for it, or is good at it. Hired programmers typically do not understand the science and in any case sooner or later move on and no longer maintain their code. Well-documented code is more important than ever. I enjoy writing and coding, so this seemed to be a niche I could fit into.


My project has five parts:

A book, entitled "A Pragmatic Introduction to Signal Processing", available in both paper, Kindle, and in DOCX and PDF format: IntroToSignalProcessing2024.pdf

This Web site (.edu domain), with essentially the same material as the book. No sign-in or registration is required.

Downloadable free software in several different forms, listed here.

Help and consulting via email (optionally with data attachments).

A Facebook group and the Matlab File Exchange for announcements and public discussion.


Although the latest version of the complete book is available freely in DOCX and PDF format, several readers have found it too long to print themselves and have requested a pre-printed version, the 2024 paperback version of which is currently sold through Amazon (ISBN 9798794182446). The on-line materials, software, help, and consulting are all free. Open-source software alternatives are available, namely Octave and OpenOffice/LibreOffice.


My policy is that contact with users ("clients") is initiated only from the clients and is strictly in written form, in English, mostly by email or Facebook group message - not phone or Skype. Requests for direct real-time voice or video communication are politely deflected. This is done to allow extended conversations between time zones, to preserve communications in written form, and to avoid language problems and my own age-related hearing difficulties (readers have come from at least 162 different countries). Written communications via email also allow the use of machine translation apps such as Google Translate. Moreover, clients can send examples of their data via email attachment or via Google drive.

Information about the affiliation of the client and the nature of the project is not solicited and is strictly at the discretion of the client. Client information and data are kept confidential. In many cases, I know nothing about the origin of their data and must treat it as abstract numbers. I usually do not know the age, gender, race, country of origin, level of education, experience, or employment of clients unless they tell me. I must look for clues in their writing to gauge their level of knowledge and experience and to avoid insulting them on the one hand or confusing them on the other. Everyone is welcome.


I have attempted to minimize the use of fancy formatting and special effects on my web site, to make it compatible with older operating systems and browsers. No account or registration is needed. I allow no advertising on my web pages. I minimize the use of video, but I do use simple GIF animations where it would be useful, as these can be viewed right on the web page without downloading any addition plug-ins or software. I test my formatting to make sure it viewable on mobile devices (tablet, smartphone).

Influence of the Internet

The Internet spans traditional boundaries. There are many different countries, states, universities, departments, specialties, and journals, but only one global Internet. Most, but not all, of it is accessible to anyone with an internet connection and a computer, tablet, or smartphone. Google (or any search engine) looks at (almost) the entire internet, irrespective of the academic specialization, leading to the possibility that a solution arising in one corner of scholarship will be discovered by a need in another corner. Why, for example, would a neuroscientist, or a cancer researcher, or a linguist, or a music scholar, know anything about my work? They would surely not, if I published only in the scientific journals of my specialty; they don't read those journals. But in fact, all those types of researchers, and hundreds more from other diverse fields, have found my work by "stumbling across it" in a search engine query, rather than by reading scholarly publications, and have found it useful enough to cite in their publications. In my own academic career, I published research only in analytical chemistry journals, which are read mostly by other analytical chemists. In contrast, my Web hits, emails, and citations have come from a much wider range of scientists, engineers, researchers, instructors, and students working in academia, industry, environmental fields, medical, engineering, earth science, space, military, financial, agriculture, communications, and even language and musicology.

‚Äč Writing

I intended my writing to be instructional, not especially scholarly or rigorous. It is unashamedly pragmatic, meaning "Relating to matters of fact or practical affairs, often to the exclusion of intellectual or artistic matters; practical as opposed to idealistic." For many people, abstract mathematics can be a barrier to understanding. I make only basic assumptions about prior knowledge beyond the usual college science major level: minimal math background and an 11th grade reading level, according to several automated readability indexes (Gunning Fog index; Coleman-Liau index; Flesch-Kincaid Grade level; ARI; SMOG; Flesch Reading Ease; ATOS Level). I have tried to minimize slang and obscure idioms and figures of speech that might confuse translators (machine and human), and I try to minimize the use of the passive voice. I often explain the same concept more than once in different contexts because I believe that can help to make some ideas "stick" better. An important part of my writing process is feedback from users, by email, social media, search engine terms, questions, corrections, etc. Moreover, I also regularly re-read older sections with "fresh eyes" correcting errors, and making improvements in phrasing. Questions from readers, and even search terms in Google searches, suggest areas where improvements are possible.

To make access easier, I make my writing available in multiple formats: Web (Simple HTML, with graphics and silent self-running GIF animations, and a site-specific search); DOCX (editable Microsoft Word), the latest version of which display the GIF animations; PDF (Portable Document Format) for printing, and paperback and Kindle versions, through Amazon's Kindle Direct Publishing program. All except for the web version have a detailed table of contents. All except the paperback and Kindle versions are free.

A paper book is usually read starting from the beginning: the table of contents and the introduction. But web site access, especially via search engines (Google, Bing, etc.), is not related to the order of pages. This is evident in the data for web page accesses: the table of contents and introduction are not the most accessed; in fact, on most days there are no visits at all to the table of contents or to the introduction pages. This can cause a problem with sequencing the topics, which is only partially reduced by including, on each Web page, hot links to the table of contents and to related previous and following material. (The print version has an average of three internal page references per page, plus a table of contents with over 200 entries). Also, to facilitate communication, I have added a "mail-to" link to each page in the Web version that includes my email address and the title of the page as the subject line (so I can tell from the email's subject line what page they were on when they clicked the mail-to link).

Software platform selection criteria

As for software platforms, I chose two types: spreadsheets and Matlab and its clone Octave. Both have the advantage of being multi-platform; they run on PC, Mac, Unix, even on mobile devices (tablets/iPad) and on miniature deployable devices (e.g., Octave on Raspberry Pi). Both are popular development environments that have large user communities with multiple contributors, and both are widely used in science applications. Both have a degree of backward compatibility that allows for interoperability with older legacy versions. Companies, organizations, and college campuses often have site licenses for these products. These platforms also have the advantage that they avoid secret algorithms, that is, their algorithms can be viewed in detail by any user. Their code is distributed in "open source" and "open document" formats that are either in plain text format (such as Matlab ".m" files) or in a format that could be opened and inspected using even free software (e.g., Microsoft Excel .xls and .xlsx spreadsheets can be opened with OpenOffice or LibreOffice). For those who cannot afford expensive software, OpenOffice Calc and Octave can be downloaded without cost.

Most of my Matlab/Octave programs are "functions" which are essentially modular bits of code that fit together in different ways, much like high-tech Lego bricks, rather than self-contained stand-alone programs with elaborate graphical user interfaces, like commercial programs. Functions can be useful on their own but can also be used as components to construct something bigger. You can write your own functions or, if you wish, you can download and use functions written by others.  When using functions, you could simply ignore the internal code and use the well-defined standard inputs and outputs. This is analogous to assembling customized electronics systems using standard AC power adaptors, USB and HDMI ports and cables, or Bluetooth connections between smartphone/tablets/computers and printers/earphones/speakers, etc., without worrying about the internal design of each component. I chose Matlab/Octave because of its high performance, very wide popularity, and its similarity to other languages that have often been used by  scientists, such as Fortran, Basic, and Pascal. Even so, there are other languages that have their champions and would have been valid alternatives, such as R, Python, Mathematica, Julia, and Scilab. In the interests of time and sanity, I have limited myself, for the time being, to Matlab/Octave. (You can get some idea of the differences between Matlab and Python by looking the code of both languages executing the same statistical computation and plotting tasks).


I have tried to strike a balance between cost, speed, ease of use, and learning curve. I have attempted to make my software usable even to those who do not read all the documentation, by providing lots and lots of examples and demos, including animated GIFs that will play on any web browser. Every script or function has built-in help that is internal to the software. In Matlab/Octave; you can display this built-in help simply by typing "help __", where __ is the name of the script or function. These help files contain not only instructions but also simple examples of use and in many cases include references to other similar functions. You can always look at (and even modify) my code if you wish, by opening it in the Matlab/Octave editor, but it is not necessary if the existing action and inputs and outputs provide what you need. The spreadsheet templates and their examples and demos also have built-in instructions, and most of the spreadsheet have pop-up "cell comments" on certain cells (marked by a red dot) that pop up when the mouse pointer is hovered over them, providing an explanation for the function of that cell.


My website has received over 2 million page views and over 100,000 downloads of my software programs (currently several hundred per month), from either my web site or from the Matlab File Exchange. I have received thousands of emails with comments, suggestions, corrections, questions, offers to translate, etc. Comments from readers have been overwhelmingly positive, even enthusiastic, as indicated by these verbatim excerpts from emails about the website and about my software. In fact, many of these comments are so "over the top" that one wonders: why such enthusiasm for such a nerdy topic? After all, most people do not take the time to write to the authors of web sites, especially to compliment them. One factor is that the number of users of the global Internet is so huge that even highly specialized topics can gather a substantial audience. As they say, "A wide net catches even the rarest fish". But I also believe that part of the reason for the enthusiastic response is that software documentation is sometimes poorly written and hard to understand, so more effort is needed in better explaining software and how it works and where it cannot be expected to work. I try to be responsive, answering each email and acting on their suggestions and corrections. The growth in social media is also a contributing factor; for a specific example of that, from the Matlab File Exchange, see


Positive comments and lots of downloads are nice, but not everyone who downloads something tries in their work, and not everyone who does try it finds it valuable enough to cite it in their publications. Most gratifyingly, as of December 2023, 750 publications had cited my website and programs (based on Google Scholar searches), covering an extraordinarily wide range of topics in industry, environment, medical, engineering, earth science, space, military, financial, agriculture, communications, and even occasionally language and musicology.

What's next?

I am old, and you, dear reader, are almost certainly much younger. After I and dead and my ashes sprinkled in my garden, this site will no longer be updated and my work will fade away, to join the terabytes of forgotten material on the Internet that, unless specifically deleted, will presumably hang around forever, like moldy books on abandoned library shelves. But at least this will be historical evidence of some of what was happening back in the early 21st century, before artificial intelligence replaced much of the need for the tools and functions described here.

This page is part of "A Pragmatic Introduction to Signal Processing", created and maintained by Prof. Tom O'Haver , Department of Chemistry and Biochemistry, The University of Maryland at College Park. Comments, suggestions and questions should be directed to Prof. O'Haver at Updated March 11, 2024.