Overwhelmed

Kevin Dooley 2016 Anxiety reigns. Note: Dooley states that this is not a drawing, but a photograph/ image of a plastic toy from Mary’s Nativity Scene 2016, straight out of the camera, a Sony RX100 using its watercolor feature.

There are times, when I actually believe that people can learn to cope with stress/ anxiety, and offer myself as an example. To cope with stress, I divide activities into six categories: Routine, Infrequent, Novel, Challenging, Frustrating and Overwhelming. As I approach an activity, I categorize it, as best I can. I have no problems changing a category, should it be necessary. I use the above terms because I can mark each activity I have planned with a single letter category code, without conflicts arising.

The category determines how the activity will be engaged. Routine activities can be performed at any time. The others, including infrequent activities, will be started when I am fresh, usually in the morning. Novel activities require me to write notes about the activity. Challenging activities require me to consult these notes. Frustrating activities require to me consult with another person about the activity, as well as notes. Overwhelming activities, require me to ask others to help.

In this weblog post, I will be looking at these with respect to dealing with some recent computer software and hardware issues, but they also apply to many other areas in life.

Routine Activities

Routine activities are those performed regularly, with little risk of extraordinary situations arising. Typical examples include: updating application and system software, which can occur many times in the course of a year. Some software manufacturers think their updates should take precedence. Thus, I remember one weather broadcast on television that was interrupted because Microsoft had decided that the computer being used to present a weather animation, should be updated, while the animation was being broadcast. I believe companies like Microsoft, now offer their customers the opportunity to specify time slots for updates.

If one is concerned, one can use expired software that is exempt for updates, such as Windows 7 as long as that part of the system is not exposed to the internet. One can also use software with better manners, such as assorted Linux distros. Because routine activities take place so often, there is usually no need to consult a user manual or check list, although pilots, surgeons and others may disagree.

Infrequent Activities

Some routine activity take place infrequently. When the frequency is about once a year, such as a major upgrade of an operating system to a new version, a different approach may be needed.

A typical annual event is the writing and sending out of an annual letter. While writing emails is a routine activity, an annual letter is often sent to many people. Hopefully, everyone has one or more computer address books used for assorted purposes, filled with contact information for family, friends, colleagues and providers of goods and services . One does not send an annual letter to everyone in one’s address book. Instead one makes lists for assorted groups of people. For the residents of Cliff Cottage, one such list involves people to be sent an annual letter in Norwegian. A second list is for those to be sent an annual letter in English. These lists have to be updated annually.

This year I had a strange experience working with these lists. The first one went fine, I was able to add and remove people from it, without any complications. I then waited ten days to work on the second list. By then I had forgotten how to add a person from an address book entry to a list. It did not take long to look up the procedure in the operating manual, and to remember. When working with infrequent activities, it is often appropriate to have a manual or check list available.

Novel Activities

Initial/ novel/ original/ unique activities are those that are being performed for the first time. It is important to write down the sequence of steps used in such activities, so that these notes can be consulted later, if this turns out to be repeated. I have folders of notes on various topics. There is always room in the folder for one more topic. Frequently, I copy then edit instructions from an online source, then paste them into a LibreOffice Writer file, complete with a link to its source. I often edit the file to suit my style of writing, because not every one writes well.

In order to reinstall Windows onto a 2015 Asus AiO computer, I attempted to burn an ISO file onto a USB stick = pendrive = flash drive, from my Linux desktop. This was a routine task, but somewhat irritating, because I had run out of 16 GB USB memory sticks, and felt I was having to waste a 32 GB stick for the installation of an old operating system. Then Linux gave me a warning that the program I had selected was inappropriate for burning a Windows ISO file, and invited me to investigate Ventoy.

I found that Ventoy was an improvement. It allowed multiple ISO files to be installed on a single USB stick. So, I was able to store several: Windows XP, Windows 7, Linux Mint 21.1 with Cinnamon desktop, despite a suspicion that Windows XP will not install from this drive. In the future, I intend to store other Linux flavours for specific purposes on this stick, especially related to CNC control and robotics. Should Mageia ever release a version 9, it will also be included. Then there are other tools, such as GParted (for creating partitions).

From one source, I made appropriate notes about working with Ventoy.

Challenging Activities

An electric vehicle should soon start occupying our carport. Once it arrives, it will have to be fed! The most convenient way is to have a charger in the carport. An Easee Home charging robot was installed 2023-01-04. To control the charger, a smartphone app is required. Installing this app was a challenging experience. There was no problem in downloading or installing the app itself, but it there was a problem opening an account, because a control number failed to arrive.

In the end, I used Easee’s chatbot, and explained the situation. While the chatbot could not offer any solutions, the issue was soon resolved. Easee seemed to have more data about the charger than I expected. They knew who I was, where I lived, even the serial number of the charger, and its pin number. Thus, they were able to open an account for me without me having to do anything.

Frustrating Activities

Recently, Trish and I discovered that our main communication channel, Signal, was disabled on our laptops, because Signal had not been updated. It was still working on our hand-held devices, and on my desktop machine. Signal provided instructions, involving three simple steps, on how to correct this issue. I decided that the most gallant approach was to solve the problem on my laptop, before fixing Trish’s.

After completing these steps, Signal still failed to work, and a message was received that the Linux Mint operating system on my laptop was compromised. Then, and only then, did I ask for advice from my son, who is more experienced than I am working with Linux. He suggested that I uninstall Signal on Trish’s machine, then reinstall it. I followed this advice, and her OS continued to work. Signal accepted the updates, and started working.

The main reason for this problem arose was that I had failed to install TimeShift, a backup and syncronization tool used on Linux systems that protects that system from corruption, by taking incremental snapshots of file system at regular intervals. Should an unfortunate situation arise, TimeShift can roll back the file system. It is the equivalent of System Restore in Windows and Time Machine in Mac OS.

Correcting the errors on my laptop proved to be more challenging. After three failed attempts to reinstall Linux 21 as the operating system, I had to examine what was happening. I had originally used this same USB stick to install Linux Mint on the two new laptops. Then I upgraded them to Linux 21.1. I decided that remnants of the system didn’t want anything to do with Linux Mint 21(.0). Thus, I burned Linux Mint 21.1 onto the stick. This simple change was all that was needed to get the laptop up and running.

Overwhelming Activities

The last situation involving overwhelming activities happened at the end of 2018. In an Email dated 2018-12-30, I admitted to feeling overwhelmed by some imminent digital technology transitions. When I was in my forties, that started in 1988, I had more serious mental health issues related to anxiety and depression. I was not going to allow this to happen again, as I entered my seventies.

  1. Internet changes: a) technology changing from asymmetric digital subscriber line (ADSL) to fiber cable; b) digging a trench, laying then burying forty meters of orange jacket from our property line to our house, Cliff Cottage; c) preparing an indoor wall for placement of a fiber modem. Professionals would then insert the fiber cable into the orange jacket, and put the wiring into the house, and install the modem.
  2. Telephone changes: d) smartphones = hand-held devices replacing a landline; e) transitioning from two different mobile network/ SIM card providers to yet another provider; f) transitioning from two different smartphone models (Huawei 9 Lite & 10 Lite) to a single model from a different company (Xiaomi Pocophone F1).
  3. Server changes: g) technology changing from one server (Asustor AS1004T) to a completely different type of server (retrofitted Dell enterprise rack equipment, with ; h) new server components; i) transitioning from one brand of hard-drive (Western Digital Red) to another brand ( Toshiba N-300); j) transitioning from server access using WiFi to Ethernet cabling throughout the house, including placement of – k) Ethernet (RJ-45) wall sockets, and l) a network of Unify U6 Lite access ports; m) a new server operating system FreeBDS; n) a new file system OpenZFS; o) new server software FreeNAS (now called TrueNAS core).
  4. Printer changes: p) technology changing from inkjet to laser; q) change of supplier from Epson to Canon; r) change from wireless to Ethernet connectivity.
  5. PC changes: s) Transitioning from one laptop (Acer Chromebook 11.5″) to another (Asus Vivobook 14); with a change of operating system from t) Chrome OS to a more familiar Linux Mint.
  6. Media player changes: u) Relocating the media computer and screen; v) accessing the media player via ethernet, rather than WiFi.

Thus, I wanted to alert people close to me, that twenty-two technological changes (a – v) were demanding attention, and asked for help in dealing with them. These fell into six categories:

Then I also commented on other things that to be done, including a need to replace the media player computer. Then added that this would not be happening during the next few months, as the entire computing budget for 2019 has been used up, before we even entered the year.

Control

People can legitimately ask why there were so many changes happening, in such a short space of time? The answers are grouped. Categories 1 to 3 involve changes initiated by others. Categories 4 to 6 increasingly involved my own decisions.

Much of the time a person does not have control over technological choices. Their role is that of a technological bus passenger. At some point they decide to enter that bus and take a ride, not knowing precisely where the route goes, or even where they want to transfer to the next bus. Adventures happen.

For example, we have never had any real options about an internet service provider (ISP). We could either accept ADSL provided over a copper cable network by Telenor, the Norwegian telephone company, or we could use a lower speed, but more expensive local solution, that failed to operate when it was windy, with communications equipment on a tower of Skarnsund bridge. There was no real choice.

Then, Inderøy municipality decided that our rural area would have internet served by fibre cable, provided by our electrical power supplier, Nord-Trøndelag elektrisitetsverk (NTE). We were further told that after it was installed, support for landlines would be terminated, and we would be dependent on smartphones and cellular base stations for telecommunications, including internet, if we didn’t opt in to the fibre solution. Again, there was no real choice.

Some of these transitions felt minor, some felt less so. Most of the transitions went well:

  1. Additional backup onto external hard-drives.
  2. The transition to fiber went well, despite a couple of misunderstandings, where the supplier enrolled us into using numerous television packages, and an internet speed in excess of what we asked for. These were resolved with a telephone call.
  3. The decommissioning of landline equipment.
  4. Installing new SIM cards on new cell phones.
  5. Physically installing hard drives onto the new server.

Some involved assistance that was appreciated:

  1. Copying data from an old phone to a new phone.
  2. Setting up Signal messaging on computers.
  3. Setting up mail servers.
  4. Installation hardware and software on the new server.
  5. Creating new backup procedures on the new server, since the old server was not backing up data properly.
  6. Copying photos from hand-held devices, so they were available on personal computers, and also saved on the server.
  7. Setting up the printer.

Notes:

When I look at the original floor plan for Cliff Cottage. I don’t understand the placement of anything. I feel the house should have been rotated 90 degrees , counter clockwise, with the kitchen and living room facing the view. It wasn’t, and I have spent the first years of my retirement improving not just the relationship between the house, and the property it sits on, but also changing access between different parts of the house. Among the changes was a better location to access to the living room from the hallway. This was straight forward, but also required the home theatre/ media centre to be moved to a completely different location.

For those who do not know me, I am a sliding/ pocket door junkie. If a conventional door can be replaced with some form of sliding door, it will be replaced. Cliff cottage has seven sliding doors, as well as four sliding doors in the kitchen cabinets. This will increase to thirteen, when the kitchen remodelling is complete.

On 2023-01-13 a 10 year old Acer Revo mini PC computer complete with Windows 7 arrived in the mail. This was acquired to work with a 10 year old 24″ Acer screen, and to work specifically with our household’s library system, BookCAT, with about 4 000 records, and our 35 mm PlusTek OptiFilm 8200i SE slide scanner, and our 4 000 slides. Except, when the computer arrived, I realized that it could be better put to use as a CNC controller in the workshop. I decided that it would be better to use an existing Asus AiO (All in One) computer for the library system and slide scanner. This had had its original Windows system removed, which meant that it needed to have it reinstalled.

Mist Computing

When this post was first envisioned, when writing Made Without Repression, in 2019, I was mainly concerned about developments in Hong Kong. Since then, the situation in other countries has revealed a greater need for insights into the challenge of censorship. It is easier to prepare for censorship before it happens, than after. That said, it is probably time for everyone, everywhere to prepare themselves for internet censorship.

Various organizations, with assorted mandates and disparate reasons, make lists of countries engaging in internet censorship and surveillance. Some of the counties currently on their Countries under surveillance list by Reporters sans frontières, (RSF) = Reporters without borders, include: Australia, France, South Korea, and Norway – the last one with a proviso that states that this only applies to metadata on traffic that crosses the Norwegian border. A more serious RFS list, introduced in 2006 and last updated in 2014, Enemies of the internet, is more important because: all of these countries mark themselves out not just for their capacity to censor news and information online but also for their almost systematic repression of Internet users. Of the twenty countries on this list at its 2014 update are: China, India, Iran, Russia, Saudi Arabia, United Kingdom, United States.

On 2013-12-13, RSF published a Special report on Internet Surveillance, with two new lists: 1) State Enemies of the Internet, countries whose governments are involved in active, intrusive surveillance of news providers, resulting in grave violations of freedom of information and human rights = Bahrain, China, Iran, Syria, and Vietnam. 2) Corporate Enemies of the Internet, companies that sell products that are liable to be used by governments to violate human rights and freedom of information = Amesys (France), Blue Coat Systems (U.S.), Gamma (UK and Germany), Hacking Team (Italy), and Trovicor (Germany).

Of course, not all people, organizations or companies exhorting free speech are sincere. Recently, the current CEO of Twitter has been encouraging free speech, at least for himself and a former president of the United States, but not necessarily for anyone else, especially those who express opposing views.

Thus, everyone should be preparing their own plan for managing an internet censorship situation. In addition, they may want to consider how they can help others already caught in one, such as people living in countries listed on the Enemies of the Internet, list.

There are many approaches to dealing with internet censorship, but an easy one is to become acquainted with Psiphon, an open-source Internet censorship circumvention tool, originally developed by the Citizen Lab in 2006.

The Citizen Lab, was founded in 2001, at the University of Toronto, Canada. It studies information controls that impact internet openness and security that threaten human rights. Computer-generated interrogation, data mining and analysis are combined with intensive field research, qualitative social science, and legal and policy analysis methods.

In 2007, Psiphon, Inc. was established as a Canadian corporation independent of the Citizen Lab and the University of Toronto. It uses a social network of trust model, to provide tools that offer internet access to people who live in censored countries. Psiphonode is server software that is easy to install, while psiphonite is client software, that is even easier. These products give ordinary people the opportunity to circumvent internet controls. The key is that the people involved have to trust each other.

Psiphon is currently engaged in developing/ maintaining two related projects: A cloud-based run-time tunneling system, and a cloud-based secure proxy system. Their original home-based server software is no longer supported. This software has been in development since 2006, initally with psiphonites from all over the world, including central Asia and the Middle East, accessing a test psiphonode server.

While the risk to psiphon users is never zero, if appropriate measures are taken, it is much safer than using any other method to visit a censored site. A psiphonite must connect to a unique, and traceable, IP address. Psiphon has been built to run as a private network connecting to home computers, where the connection information is never publicly disclosed. Encrypted psiphon messages are buried inside other commercial traffic.

The software uses a combination of secure communication and obfuscation technologies, including virtual private networks (VPN), secure shell protocol (SSH) = cryptographic network protocol for operating network services securely over an unsecured network. and a web proxy = an intermediary between a client requesting a service, and a server providing it. It is designed to protect the client, Psiphon is both centrally managed yet geographically diverse. It is a network of thousands of proxy servers, using a performance-oriented, single- and multi-hop routing architecture.

With Psiphon effectively out-sourced, the Citizen Lab has been able to concentrate on investigating situations where internet openness and security are restricted, and human rights are threatened. Notable reports include:

Tracking GhostNet (2009) documented a cyber espionage network of over 1 295 infected hosts in 103 countries between 2007 and 2009, with many high-value targets, including ministries of foreign affairs/ embassies/ international organizations/ news media/ NGOs.

Shadows in the Cloud (2010), documented an ecosystem of cyber espionage that compromised computer network systems for government/ business/ academia at the United Nations, as well as in India and other countries.

Million Dollar Dissident (2016), documented the tracking of Ahmed Mansoor, a human rights defender in the United Arab Emirates, with Pegasus software, developed by Israeli NSO Group.

My views are influenced by La Crise d’Octobre (1970-10-05 – 1970-12-28) that started when members of the Front de libération du Québec (FLQ) kidnapped the Quebec Labour Minister Pierre Laporte and British diplomat James Cross. Canadian Prime Minister Pierre Trudeau then invoked the War Measures Act for the first time in Canadian history during peacetime. This limited civil liberties and granted the police far-reaching powers. There were 3 000 searches, and 497 arrests. Everyone arrested was denied due process. Habeas corpus = an individual’s right to have a judge confirm that they have been lawfully detained, was suspended. The Government of Quebec also requested military aid to support the civil authorities, with Canadian Forces being deployed throughout Quebec. Canadian historian Desmond Morton (1937 – 2019) later wrote: “It was unprecedented. On the basis of facts then and revealed later, it was unjustified. It was also a brilliant success. Shock was the best safeguard against bloodshed.”

In the United States, four coordinated suicide terrorist attacks carried out by 19 al-Qaeda against the United States on Tuesday, 2001-09-11. The attacks killed nearly 3 000 people and instigated the Global War on Terrorism. Criticism of this war has focused on its morality, efficiency and cost. A 2021 Watson Institute for International and Public Affairs study concluded that the several post-9/11 wars have displaced at least 38 million people in Afghanistan, Pakistan, Iraq, Libya, Syria, Yemen, Somalia and the Philippines. It estimated these wars caused about 900 000 deaths and cost $8 trillion. Despite the U.S. Constitution and U.S. law prohibiting the use of torture, this became common practice.

More recently, on 2020-01-06, following Donald Trump’s defeat in the 2020 presidential election, a mob of his supporters attacked the United States Capitol Building in Washington, D.C., seeking to keep Trump in power by preventing a joint session of Congress from counting the electoral college votes to formalize the victory of Joe Biden. This was the seventh and last part of a plan by Trump to overturn the election.

These events show that democracy is not guaranteed anywhere, and that people have to be vigilant.

A Plan to prevent Internet Censorship

One of the first tasks a person can engage in, is to visit the Psiphon website. It claims that: Where other VPNs can not connect, Psiphon will find a way. These connections are free, built on leading edge, research driven security and network technologies. These services are designed to keep people connected. They provide everything from social media, to games, to voice over internet protocol (VOIP) = a telephone service based on the internet, Psiphon is designed to help people access online content and services they appreciate, even if they are blocked by the authorities.

Once these internet connections are in place, it is much easier to provide content to people. My intention is that in 2023, I will set up a website, possibly mist.mclellan.no, but more likely an equivalent website with a more neutral name, that will be able to house courses/ lectures/ labs on technical subjects that will be freely available to people anywhere in the world. I specifically think about political hotspots of the world, currently: Hong Kong, Iran, Ukraine. It is not something I can do alone, since I have no knowledge of Cantonese or Farsi. My knowledge of Ukrainian is so elementary that it is of no practical use. Thus, I hope content can be translated by others, potentially learners who have a good understanding of English.

It would be interesting to know what other people feel they can contribute. They can send me an email at first name @ last name.no, where the first and last names are found as the name of this weblog.

Geoscheme: A Database

The Geoscheme overview showing the 22 of the 26 different areas.

The purpose of this weblog post is to introduce the concept of a database primary key, Without it, a database will not work because data conflicts will arise. A primary key is a single attribute or group of attributes that can uniquely identify an individual record. Part of the challenge of database design, is determining what to use as a primary key.

Often, the solution is simply to generate a number in sequence. In many cases this is effective. In other cases, it might be more expedient to use an existing code, that can access more information, when that is needed. In many cases, geographical information is wanted, that is not contained in a database. such as the name of a mayor of a city, or a chronological list of mayors.

Geoscheme is my way of organizing geographical data. The land area of the Earth is divided into 26 different regions, labelled A to Z. Each region is populated by countries that can be further sub-divided. This process can continue into smaller and smaller units.

When a data set about a geographic area is being assembled for inclusion in a database, it is important to assess existing keys to see if one distinguishes itself from others. For geographical jurisdictions, this can be an agreed upon international code, for subdivisions of countries national or other codes may be appropriate.

I have used Geoscheme for so many years, that its origins are lost in the depths of time. Needless to say, the map with regions did not originate with me. I have simply appropriated it for my own purposes. The alphabetic coding, on the other hand, is something I recall creating.

Africa: [A] Southern Africa; [B] Eastern Africa; [C] Middle Africa; [D] Western Africa; [E] Northern Africa. Europe: [F] Southern Europe; [G] Western Europe; [H] Northern Europe; [I] Eastern Europe + North Asia. Asia: [J] Western Asia; [K] Central Asia; [L] Southern Asia; [M] Eastern Asia; [N] South-Eastern Asia. Oceania: [O] Australia and New Zealand; [P] Melanesia; [Q] Micronesia; [R] Polynesia. Americas: [S] Northern America; [T] Caribbean; [U] Central America; [V] South America. Other: [W] Antarctica; [X] Atlantic Ocean; [Y] Pacific Ocean; [Z] Indian Ocean.

My current work with Geoscheme is the collection of outline maps and flags for most countries, often using Fortnight Insider as a source of black on white maps. It provides answers to the Worldle game, that I lost interest in playing, that offer white on black maps.

ISO 3166-1 alpha-3 codes are currently used in Geoscheme as a primary key for countries. These three-letter country codes are defined in the ISO 3166 standard published by the International Organization for Standardization (ISO), to represent countries, dependent territories, and special areas of geographical interest. There is also a two-letter coding system, referred to as ISO 3166-1 alpha-2 codes. The 3 letter codes give a better visual association between the codes and the country names than the two-letter codes. There is also a purely numeric code that offers no visual association. ISO 3166 became a standard in 1974. It is updated at irregular intervals. Some of the codes used are: CAN (Canada); MUS (Mauritius); NOR (Norway); TWN (Taiwan); UKA (Ukraine); URY (Uruguay); USA (United States of America).

Since ISO does not allow duplicate 3166 codes to be used, there are no issues using them as primary keys.

As noted, it is possible to expand these areas to use codes to define areas that are smaller than an unit with a 3-letter code. ISO 3166-2 defines codes for identifying the principal subdivisions. These use two-letter country codes, as well as two-character subdivisions. Thus, the province of British Columbia in Canada is CA-BC; The Moka district in Mauritius is MU-MO; Trøndelag county in Norway is NO-50. It was the result of an amalgamation of North (-17) and South (-16 ) Trøndelag on 2018-01-01; the state of Michigan in the United States is US-MI.

This approach can also work at lower levels. Inderøy municipality has its own municipality number. These representations are not written in stone. Municipality numbers were first introduced with the Norwegian census of 1946. Even municipalities that had dissolved before then, were given municipality numbers, that could be used for statistical purposes. Municipality numbers use four digits, with the first two being the county number.

Inderøy municipality was officially founded in 1837. The municipalities of Hustad and Røra were established on 1907-01-01 when the old municipality of Inderøy was divided into three municipalities: Røra (population: 866) with municipality number 1730, in the southeast, Hustad (population: 732) with municipality number 1728, in the north, and Inderøy (population: 2 976) with municipality number 1730, in the west. In 1912, Hustad changed its name to Sandvollan, but retained municipality number 1728. During the 1960s, there were many municipal mergers across Norway. On 1962-01-01, the three neighboring municipalities of Røra (population: 1003), Sandvollan (population: 750), and Inderøy (population: 3 194) to form a new, larger municipality of Inderøy.

Mosvik and Verran formed a municipality in 1867 that lasted until 1901, when Verran (population: 1 456) became its own municipality. Mosvik (population: 969) had retained the old municipality number, 1723. Adding to the confusion, 1968, the Framverran area on the south side of the Verrasundet strait (population: 395) was transferred from Verran municipality to Mosvik municipality. When Mosvik (population: 811) joined Inderøy in 2012, this newest iteration of Inderøy were assigned municipality number 1756. This lasted until 2018, when it became municipality number 5053.

These amalgamations, splits and transfers are mentioned in detail, because this is the reality of geography in the world. Situations change, and people interested in geographic realities have to be aware of the changes and their consequences. One cannot assume that boundaries are fixed.

Since primary keys are generally confined to database operations, there is no problem making artificial constructs as keys. One example is combining a 3-letter country code with a 2-letter subdivision code, even if this is not an acceptable international standard.

Geographical information about a country/ sub-division can contain a variety of information, that have to be formatted correctly. A jurisdiction name, or the name of its capital are generally a sequence of letters. Its population and its area in square kilometers are often integers. Typically when information about a country is assembled it occupies a single row in a table, but where every column will be formatted to accommodate the data collected.

Some people ask, why not just use longitude and latitude as a primary key? In such a system, the prime meridian and the equator dividing the world into four Eurocentric mathematical quadrants. So that: lines of longitude north of the equator are positive (+) from 0 at the equator to 90° at the north pole, while those south of the equator are negative (-) from 0 at the equator to 90° at the south pole; lines of latitude east of the prime meridian are positive (+) from 0 to 180° in the middle of the Pacific ocean , while those west of it are negative (-) from 0 to 180°at that same position in the middle of the Pacific ocean. One of the major problems with a geographical jurisdiction, is that it occupies an area not a point. So point data is uninteresting, and difficult to specify.

Another approach is to codify a small area. Because of radio interference issues, amateur radio operators are less interested in precision than a short code that gives an approximate position that is gudenuf. John Morris G4ANB originally devised such a system and it was adopted at a meeting of the International Amateur Radio Union (IARU) Very High Frequency (VHF) Working Group in Maidenhead, England, in 1980. The Maidenhead locator has an interesting historical development. A sub-square can be described using two letters, then two digits, ending with two more letters. Two points within the same Maidenhead sub-square are always less than 10.4 km (6.5 mi) apart, which means a Maidenhead locator can give adequate precision from only six easily transmissible characters. There is no guarantee that a Maidenhead sub-square will be located in the same country. EN82lh is such an example. In the north of this map, one finds Detroit, Michigan, USA while the south of the map is in Windsor, Ontario, Canada.

This map shows the EN82 Maidenhead square, that is divided between USA (more to the left) and Canada (more to the right). A blue line indicates the boundary. The EN82lh sub-square is found where lower parts of the letters etro are found in Detroit. The map origin is at the bottom left, with the first square labelled aa. The first lower-case letter (l) indicates the position of a sub-square to the right of origin, while the second lower-case letter (h) indicates its position above the origin. So the sub-square lh occupies the 12th column from the left, and the 8th row from the bottom.

Another approach is to use what3words, which has given every 3m square (9 m2) in the world a unique 3 word address. The words are randomly assigned, but will always remain the same.

Cliff Cottage is located at 63° 50′ 31.596” N and 11° 5′ 26.178” E which converts to 63.8421098 N and 11.0906046 E in decimal format. It occupies Maidenhead sub-square JP53nu. Its What3words are casual.year.messaging (in the middle of the living room), conqueror.lawn.consented (in the middle of the kitchen), popular.feuds.positives (in Trish’s work room) and hides.lake.proclaims (in my work area). The multiplicity of codes for a single dwelling creates its own problems.

While a well designed database-engine can ease the workload of creating data-structures and algorithms, and running a database, database administrators study the types of data that are needed. Some of the most difficult decisions involve finding ways to structure the database content so that a collection of data values, relationships between them, and operations/ manipulations/ functions that can be applied to them, work for the benefit of users. Once that is done, users can concentrate their time on adding/ editing/ deleting data that can go inside a database, and transforming data into valuable information.

Databases

Murder victim Mahsa Amini (2000-09-20 – 2022-09-16)

In a recent weblog post, Classification, I wrote about Geoscheme, my approach to dividing up the geography of the world. Eleven days before this, 2022-09-16, Mahsa Amini (2000-2022), died in a hospital in Tehran, Iran, with a broken skull after being arrested by the Guidance Patrol = the Iranian government’s religious morality police, for not wearing a hijab. A photograph of Amini illustrates this weblog post.

Since then, Iranian women and men, girls and boys have protested daily. They have been joined by others throughout the world. Writer, comedian, and former president of Humanist UK, Shaparak Khorsandi (1971 – ), who fled Iran to Britain with her family following the 1979 revolution, wrote: The Iranian regime kills women for trying to live freely. This is not just Iran’s problem, it is the world’s problem. Do not look away. This denial of basic human rights is an affront to human dignity. Mahsa Amini cannot speak up any more. The world should act in solidarity and amplify her voice and the voices of all Iranian women who dare to speak up for choice and democracy.

On 2022-11-30, I decided that I could amplify Amini’s voice by using some of my working hours on a personal Women, Life, Freedom project to: 1) transform Geoscheme into a database, and 2) use that database as an example to teach the basics of database development. The example will use an open-source database, and the teaching materials will be freely available under a copy-left licence. A third step has yet to be worked out, which involves the translation of the materials into Persian, with the help of a local Iranian refugee, preferably one with little or no understanding of the workings of databases.

Later, while I was wondering what else could be built into a database as dinner approached, my housekeeper, Trish, was telling me that she was re-organizing her recipes. It then struck me, that many Iranian women probably knew a lot about cooking, and that combining this existing knowledge with databases, could help improve an understanding of them.

Since food is generally made from ingredients, such a database could also be expanded to include inventories for raw materials, goods in process, and finished products. It also could allow some accounting basics to be explored. In other words, this example offered greater scope.

Another point that could be made is that there is an opportunity for small-scale software-as-a-service (sssaas). No one says a cloud has to be huge and multi-national. In a previous post, titled Clouds & Puddles, I used the Xample family with mother Ada, father Bob, cat Cat and daughter Deb, as an example to explain cloud-based computing. I am sure more Persian sounding names could be found.

Geoscheme data will be discussed in another post, to be published 2022-12-11. The remainder of this post will discuss database choices. It provides a short and incomplete history of the evolution of relational databases.

Rather than using the overworked term, cloud, to describe sssaas, I propose to call it Mist computing. This topic will be explored in yet another post to be published 2022-12-18.

My own interest in databases has nothing to do with either Geoscheme or cooking, but digital asset management (DAM), a system to store and access different types of content, such as texts, photos, videos, audio (including music), so that they can be edited and otherwise combined to produce new content. While such a framework is most often called a DAM, at other times it is referred to as a content management system.

Data structuring

In the beginning there was a bit, the most basic unit of information that expresses either 0 or 1. It first appeared in Claude Shannon’s (1916 – 2001) paper A Mathematical Theory of Communication (1948), but he attributed its origin to John Tukey (1915 – 2000), who in a Bell Labs memo of 1947-01-09 contracted binary information digit to bit. Eight bits form a byte, which can take one of 264 values. The term byte was coined by Werner Buchholz (1922 – 2019) in 1956-06.

The total amount of data created, captured, copied and consumed globally was about 64 zettabytes in 2020. By 2025, this could increase to 180 zettabytes. 1 zetabyte = 1021 = 1 000 000 000 000 000 000 000 bytes = 1 sextillion bytes.

Data storage has always been problematic. In 1951 magnetic disks as well as magnetic tape was developed for data storage. To begin with, there were flat files, often they came with programming languages, with data stored within the program. Then, in the 1960s, hierarchical and network database models appeared and flourished. These early database implementations were imperfect. Some would call them messy, overly large and difficult to use.

Structuring data begins with Edgar Frank “Ted” Codd (1923 – 2003) and his A Relational Model of Data for Large Shared Data Banks (1970). Codd’s model structures data in tables, with columns and rows, where one column holds unique keys. models were unable to use this model, as computer hardware only became powerful enough to deploy it in the mid-1980s. Within a few years (early 1990s), relational databases dominated, and continue to dominate in 2021.

Codd worked for IBM, but it was a mismatch. IBM failed to understand the importance of Codd’s work, and the need for data storage to have a theoretical basis, that ultimately resulted in a need for relational databases. Codd’s twelve rules, from 0 to 12 making 13 altogether, are important for anyone wanting to understand databases. The most important concept is that relational databases store information without unnecessary redundancy.

Initially, tables formed a basic unit for structuring data. These need storage space for data, and programming capabilities to create (insert), modify (update) and remove (delete) content.

Data is useless unless it can be retrieved = accessed in a form that is directly usable or can be further processing by other applications, that make it usable. The retrieved data may be made available in a form basically the same as it is stored in the database or in a new form obtained by altering or combining existing data from the database.

Administrative tasks include registering and monitoring users, enforcing data security, monitoring performance, maintaining data integrity, dealing with concurrency control, and recovering information that has been corrupted by some event such as an unexpected system failure.

The Alpha language was defined in Codd’s A Data Base Sublanguage Founded on the Relational Calculus (1971). It was never implemented, but influenced the design of QUEL, that was implemented by Michael Stonebraker (1943 – ) in 1976. This was part of the University of California, Berkeley project Ingres (Interactive Graphics and Retrieval System), used to demonstrate a practical and efficient implementation of the relational model. QUEL was supplanted by Structured Query Language (SQL, pronounced sequel, by some), based on Codd’s relational algebra defined in Relational Completeness of Data Base Sublanguages (1970).

SQL was (and is) available in several different flavours. It can be housed in the cloud (someone else’s server), one’s own server, a desktop machine, or a laptop. Handheld devices, such as smartphones, are less suitable.

SQL was implemented by Donald Chamberlin (1944 – ) and Raymond Boyce (1946 – 1974), based on an earlier language SQUARE (Specifying Queries As Relational Expressions).

By 1980, relational databases had became mature enough to enter the world of business. A number of startups such as Britton Lee, Relational Technology and Sybase were founded by people actively involved in the Ingres project at Berkeley. These were often implemented on cheap mini-computers, such as VAX machines made by Digital Equipment, rather than on larger, more expensive mainframes, such as System/ 370 machines made by IBM.

Postgres, was a successor project to Ingres, at Berkeley. Its goals were to make evolutionary improvements, including support for more complex data types, and improved performance. Most people exposed to Postgres, praised its extensible nature, allowing it to add new features, as required. This allowed databases to be used in new areas, such as support for geographical data as in geographical information systems (GIS) using a geolocation engine, and/ or time-series. Currently Timescale DB, launched in 2018 as an open-source product, offers the best possibilities for extending PostgreSQL in this area.

In the 1990s, the project drifted closer to SQL, so that by 1996 it was renamed PostgreSQL to reflect this support for SQL. There are many database practitioners who regard PostgreSQL as the standard database system to use, unless something dictates otherwise.

For me, no discussion of databases is complete without a mention of the closed-source Microsoft Office and its Access relational database system. It was promoted as a database for everyone, that provided a graphical user interface and the Access Connectivity Engine (ACE) that I originally knew as Joint Engine Technology (JET). The Norwegian Department of Education, in its wisdom, decided that computer science at the senior secondary school level would be taught with the help of this software. This approach to teaching, was a mistake.

Fortunately, not all Norwegian school programs were using Windows software. The Media and Communications program, that I transitioned to, used Apple equipment, notably iMac G4 machines with flatscreens, and software that included ProTools, to create a digital audio workstation, along with Adobe Creative Suite, and Claris FileMaker database system.

FileMaker is superior, and Access inferior everywhere one looks. FileMaker had more extensive capabilities but, more importantly, it just works. My experience with Access was that it was impossible to make coding changes with it. It was more time-efficient to just scrap an existing database, and to write a new one.

Thus, when it comes to other databases designed for everybody, I take this experience with me. Base, the LibreOffice/ OpenOffice equivalent of Access, performs equally badly. One reviewer noted: It [Base] doesn’t support Insert, Delete, and Update statements [all fundamental to any database] through its query designer, and the SQL tool [is not standard, because it] doesn’t parse [= analyse symbols that are written in] ANSI [American National Standards Institute] compliant SQL. There are no easy solutions.

The next database problem child is MySQL, originally developed by MySQL AB, a Swedish company founded in 1995 by Michael Widenius (1962 – ) who programmed the database system – and named developed products after his children: My, Max and Maria; David Axmark (1962 – ); and Allan Larsson (? – ). It offered dual licence database software. A Gnu General Public Licence (GPL) version was offered free of charge, but the database system was also sold under other licences. This closed-source version included additional components that improved the operation of the database. In 2008, MySQL AB was acquired by Sun Microsystems. In 2010, Sun Microsystems was acquired by Oracle Corporation.

MariaDB is a forked = branched version of MySQL, also developed by the same Michael Widenius, starting in 2009. MariaDB maintains high compatibility with MySQL, allowing it to function as a drop-in replacement for MySQL. However, new features diverged. MariaDB includes new storage engines. While MariaDB was originally entirely open source and non-commercial, a merger with SkySQL in 2013, resulted in a more commercial profile, especially the emergence of software-as-a-service (SAAS) activities on Google Cloud Platform.

Avoiding redundancy is not just a matter of saving space. It is a means of avoiding data conflicts. If, for example, a person’s address is only saved in one place, if that address changes, that change only has to be recorded once. It should be noted that redundancy has nothing to do with backup which, at a minimum should follow the 3-2-1 rule: 3) Create one primary backup and two copies of data. 2) Save backups on two different types of media. 1) Keep at least one backup file offsite.

Relational databases use an ACID test to monitor the suitability of a database. ACID involves atomicity, consistency, isolation and durability properties that guarantee data validity despite errors, power outages, and more. This has to operate at the transaction level. Other types of databases find this test impractical to implement, and accept data loss to a varying degree.

DB-Engines ranks the most popular databases. In 2022-12, the top five ranked databases were, in order: Oracle, MySQL, Microsoft SQL server, PostgreSQL and Mongo DB. Microsoft Access is #9, Maria DB is #13, FileMaker is #22. Base uses the FirebirdSQL DB-engine, which is ranked #32.

So far, one would get the impression that all modern databases are relational, and in some way related to SQL. This is not the case, and is exemplified by Mongo DB in the above list. It is a document database, often described as NoSQL. There are a large and increasing number of NoSQL databases, a 21st century term variously translated as not SQL, not only SQL and not a relational database.

Document databases typically store archived records, then use their database engines to extract metadata. It is a more complex arrangement, and is not the place to begin when teaching database techniques.

It is my intention to encourage everyone to use open-source databases, where these are appropriate. This includes, especially, oppressed women wanting software solutions in a country experiencing sanctions, such as Iran. Even profitable corporations, such as Google, have found it appropriate to develop and support open-source software.

The conclusion of this post is that I will begin to use PostgreSQL to implement a Geoscheme database, with the aim of making it a example to be used for teaching basic database management techniques. After that, everything is open.

Analogue Electric Vehicles

A Woodpecker skateboard, to encourage young experimenters to investigate battery electric vehicles. Photo: Woodpeck.org

Part 1

On 2021-07-07 Robert N. Charette wrote an article in IEEE Spectrum, How Software Is Eating the Car, The trend toward self-driving and electric vehicles will add hundreds of millions of lines of code to cars. Can the auto industry cope?

As usual, an article in Slash Dot ( /.) is my main source of biased opinions about a serious technological issue, with one typical comment given a score of 4: interesting. It read: “If you get something pre-1978 then the most sophisticated electronics in the vehicle will probably be the radio kit.” This was then followed by numerous comments about 1976 (and later) Chrysler Cordobas. This type of reasoning reaches its zenith with, “What was the last car without this nonsense? Makes me want to buy a classic car or motorcycle, just for the simplicity.”

Yes, for a long time the trend has been towards increasing [Engine Control Units =] ECUs, based on the design philosophy of, “If you want a new feature, you buy a box from a Tier 1 [top-level component suppliers, such as Bosch] that provides the feature, and wire it in. As a general rule, automakers love outsourcing work; for most of them, their dream scenario is that everyone else does all the work for them and they just slap a badge on it and take a cut.

Then Rei adds a score 5: informative, but long, comment: “This article actually has it backwards. The first company to break with this philosophy was Tesla, which has from the beginning had a strong philosophy of in-house software design, and built basically a ‘car OS’ that offloads most vehicle software functionality into a handful of computers (with redundancy on safety-critical functionality). … Eventually everyone is going to have to either make their own ‘car OS’ stack or lease one from someone else. The benefits are just too significant[:] Lower hardware costs, lower assembly costs, lower power consumption, simpler cheaper lighter wiring harness, faster iteration time on new functionality, closer integration between different subsystems, you name it. This trend throws into reverse the notion of ever-increasing numbers of ECUs (which quite simply was an unsustainable trend).”

Who could possibly disagree?

Part 2

What is the minimal vehicle a person needs? Of course, there will be as many answers as there are people, and it will all be dependent on what they are doing. There are a lot of vehicles available, but I will not refer to them as choices. Some places lack trams or other forms of public transit. They may exist in other places, but run at inappropriate frequencies. Some communities lack bike lanes, forcing cyclists to compete for space with cars. Some streets are perpetually gridlocked.

Some people need to work, outside of their residences! Does one have to take children to kindergartens or schools? What distance does one have to travel to attain basic health and nutritional needs? Can this be done as part of a commute, or is a separate trip necessary? What about specialty shops? What is the distance to the nearest bus station/ train station/ airport/ international airport? Is there a need for a social life? Is one dependent on driving a car? Could a bicycle do for some items? Are trains or buses an option? So many questions, so few obvious answers.

Perhaps my own situations could be used as an example. Compared to most people, my life is simple: no job is calling me, and I am no longer responsible for looking after young children. Yesterday, I used a vehicle with a mass of about 1.5 Megagrams (where 1 Mg = 1 000 kg), to drive 40 km. Admittedly, there are vehicles that weigh less than a car. A bicycle is probably the most efficient device for conveying people, and it can have a mass of from about 5 to about 20 kg. Yet, I would not feel safe driving one of these on the roads of rural Norway. There are no buses, but if I plan in advance and contact the appropriate office a day in advance, I might be able to use public transit, essentially a taxi charging bus rates, as long as I am willing to wait up to several hours, for a return trip.

The most basic foods, as well as building supplies, can be purchased with a 14 km return trip across Skarnsund bridge in Mosvik, where there is even a coffee bar, with better than acceptable lattes. Basic health care (doctor, dentist, pharmacy, optometrist) and a larger selection of food and basic necessities are met by driving 26 km for a return trip in the opposite direction, into Straumen. More specialty shops are available in Steinkjer involving a 70 km round trip. This all involves driving. However, there is also a train station at Røra, 40 km round trip by car, that will allow one to connect with an international airport (TRD), and the fourth largest city in Norway, Trondheim, about 120 km away – 240 km round trip, with an even larger selection of shops and activities.

Part 3

I am in agreement with Rei, that more software (and less hardware) is needed in vehicles. Yet, I am reading this week that General Motors is charging purchasers of many GMC, Buick, and Cadillac vehicles, that are shipped with OnStar and Connected Services Premium Plan by default, $1 500 for the three-year plan that was once optional, but is now required. Other companies are doing the same sort of thing. It is estimated that this revenue stream could give GM an additional $20 to 25 billion per year by 2030. BMW has come out with similar claims, giving them an additional revenue of about $5 billion per year by 2030. I do not want to ensure that a wealthy elite continues to take more of an income pie that is already unfairly divided.

At issue is the right of consumers to direct access to vehicle data, which historically has been obtained from an on-board diagnostic (OBD-2) port (North America) or European on-board diagnostic (EOBD) port, since 1996 and 2001, respectively.  These allowed vehicle owners and technicians access to vehicle data to assist with maintenance and repair. This situation is threatened by vehicle manufacturers, who want to use telematics = the sending of data wirelessly and directly, restricting vehicle data to manufacturers. In 2021, 50% of new cars have these connected capabilities, but no country has more than 20% of its vehicle fleet equipped. USA has the most. By 2030, it is estimated that about 95% of new vehicles sold globally will have this connectivity, according to a study by McKinsey. ​

While this data could provide economic and other benefits to car owners, vehicle manufacturer want to act as gatekeeper, determining who can access it, and at what cost. This is a detriment to consumers, which could result in: Increased consumer costs; restrictions on consumer choices for maintenance and repair;  safety and security issues involving the use of non-standard data types and formats; privacy concerns. Automotive mechanics, and other aftermarket providers can also be affected. 

This has resulted in a consumer backlash, which I associate with the right-to-repair movement. There are already open-source groups working to ensure that consumers retain their rights. In addition, Automotive Grade Linux (AGL) is an open source project hosted by The Linux Foundation that is building an open operating system and framework for automotive applications. It was started in 2012, and currently has 146 corporate members.

I imagine that automotive manufacturers will try to add just enough proprietary software to their vehicles, to profit maximally from their investment. On the other hand, I see that there will be an incentive for ordinary consumers to demand right-to-repair legislation, and for guerilla activists to produce generic software substitutes where this is useful.

In Europe, repair is increasingly regarded as an essential consumer right and an environmental necessity. The main objective of the European Green Deal, is to be climate neutral by 2050. The European Commission’s Circular Economy Action Plan (CEAP), published 2020-03, details how this goal is to be reached. To reduce waste, products have to be designed to last. If they don’t last, they shouldn’t be sold. To encourage the development of products that are longer-lasting, there could be lifespan labels, service manuals, and an EU-wide repairability index. This would encourage the market to compete on repairable and durability.

In 2020-11, the European Parliament voted overwhelmingly in favor of a right-to-repair, and insisted that the more conservative European Commission administrative arm, implement it. It also included repairability labeling.

In 2020-11, voters in Massachusetts approved Question 1, involving a right-to-repair Law, with almost 75 percent in favour. The law requires automakers to provide a way for car owners and their chosen repair shops to access vehicle data, including that sent wirelessly to the manufacturer. The intent of this law is to prevent manufacturers and dealerships from having exclusive access to data.

Massachusetts is the state where the first automotive right-to-repair law was passed in 2012. That law made car makers open up the data inside the car. Rather than create a state by state solution, automakers reached a nationwide agreement with car parts makers/ suppliers and repair shops on how to share the data. This agreement opened the OBD-II port. With this new and improved right-to-repair law, similar transformative actions are required.

There are an increasing number of underpaid programmers and other software and hardware specialists, unable to fully live the American (and Scandinavian) dream. Many of these would undoubtedly be willing to work as guerilla technologists to develop the tools needed for retrofitting vehicles with more consumer friendly components, especially after warranties have ended. There are an increasing number of inexpensive microprocessors and systems on a chip that can be used for these purposes.

Part 4

To put electric vehicles in perspective, one needs to return to 1965-11-05, when President Lynden Johnson was given a copy of Restoring the Quality of Our Environment, a report by the Environmental Pollution Panel, President’s Science Advisory Committee. On publication of this blog, people have had 20 735 days or 56 years, 9 months, 8 days to confront this challenge, but have failed miserably at this task.

One fundamental question is, where can younger people learn more about the construction of appropriate vehicles for the 21st century? Currently the most interesting project is Woodpecker, that describes itself as an: “Open source based Carbon negative Electric Vehicle Platform. Woodpecker is a game changing micromobility vehicle to decrease CO2. Electrical propulsion allows to use solar and renewable power. Production of Wooden frame even decreasing CO2 because it is encapsulated by [wood] while growing. Vehicle built on Circular Economy concept – most parts are recyclable.” It appears to have originated in Latvia, and includes partnerships with many higher-educational institutions in the country. One problem with Woodpecker, is that it as an organization is too closely bound to commercial enterprises. For example, a good starting point for most open-source projects is to become acquainted with their documentation. In this case it requires people interested in downloading their technical drawings to have a Trimble account, in order to use Sketchup.

Notes:

1. This post follows up some aspects of Vehicle Devices, published 2020-11-03. The division between parts is not based on content, but time. Part 1 of this weblog post was originally written 2021-06-18 and saved at 10:49. It had been patiently waiting to be published. On 2022-08-12, outdated content was removed, and Part 2, was added, starting at 20:43. Parts 3 was started on 2022-08-13 at about 07:40, while part 4 was started on the same date at 08:48.

2. Trondheim claims to be the third largest city in Norway, but I would give that title to Stavanger. The challenge with Stavanger, is that its metropolitan area is divided between multiple municipalities. Yes, I am aware that I have offended some of my Norwegian readers, because of their origins in Trøndelag. However, Stavanger is the only place in Norway where I have ever been able to find/ buy root beer! This is probably due to Americans working in the oil industry, and living in the Stavanger area.

Prolog

British propaganda poster from 1939.

Zero

Of course, I am hoping that readers will mistake Prolog for Prologue = an introduction to something. In addition, I have a further hope that the poster, displayed above, will induce a feeling of calmness in these same readers, so that they will be able to approach the real content of this weblog post with detachment, but not indifference. The main problem with the poster, is that almost everything about it, apart from its wording, and especially its signal red background, but also large sans-serif white lettering and the British crown, reinforce a feeling of danger!

Wikipedia tells us, Keep Calm and Carry On was a propaganda poster produced by the British government in 1939 in preparation for World War II. The poster was intended to raise the morale of the British public. Although 2.45 million copies were printed, the poster was only rarely publicly displayed and was little known until a copy was rediscovered in 2000 at Barter Books, a bookshop in Alnwick, a market town in Northumberland, in north-east England.

Some topics, toothaches in particular, or dentistry more generally, do not induce calmness. Instead, they increase the flow of adrenaline, and other forms of psychomotor agitation, resulting in psychological and physical restlessness. Thus, before confessing what this topic is really about, I want to reassure readers that it is a topic that can be fun, if approached correctly. Initially, I had thought of dividing the topic into multiple parts and publishing them at the rate of one part a day, over more than a week. The parts are still subdivided, but each reader will have to determine her/ his/ its etc. own consumption rate.

One

I am used to dealing with actors, people pretending to be someone else. In the process, these people have helped me developed my own acting talents. Some of the actors I had to deal with, had failed their auditions, often called court appearances or trials. One of the consequences of such a failure, could be imprisonment at the Norwegian low security prison where I was assigned as their teacher.

Other actors were youth in the final years of their compulsory education, at senior secondary school. They had to attend school, but some of them were better than others at presenting themselves in a positive light. Not that everyone sought positivity. In a Media and Communication English class, I once asked the pupils to write about something they wanted to accomplish in the future, and why they wanted to do so. The reply that created the most work, not just for myself, but for the student, the school principal, the school psychologist and others, was an essay that detailed how this person wanted to become a mass murderer. Afterwards, he claimed that this was a work of fiction.

I have experienced a lot of acting performances by students. The most problematic actors are those who pretend they understand a topic, when they have absolutely no idea about it. The role of the teacher is to channel student activity so that the student finds a route that suits her/ his personality, and is effective at helping the student learn new sets of knowledge and develop new skills. This route-finding skill is the primary talent needed to teach.

Two

This weblog post’s topic is programming, in a specific language. While numbers vary with the situation, perhaps ten percent of actors will delight in learning the programming language they are confronted with. A similar number, give or take, will not master anything. Those remaining in the middle will accept programming languages as a necessary evil in this internet age. Stated another way, a small percentage will find their own route without assistance, another small percentage will never find a route, while most people in the middle will struggle to varying degrees, but ultimately find a route, hopefully one that suits their personality.

The main difficulty in terms of learning to program, is that schools begin computer science studies assuming that students will want to learn to program the particular language being offered. Admittedly, some languages are fairly general, including some that are designed more for teaching/ learning, than for any more practical applications. Pascal, is probably the best example of such a language. However, my contention is that the first computing course a student takes should look at programming principles.

I was fortunate to read Bruce J. MacLennan’s, Principles of Programming Languages: Design, Evaluation and Implementation (1983). A second edition was published in 1987, and a third in 1999. There is not much difference between the three editions, and the same languages are discussed in all three: pseudo-code interpreters, Fortran, Algol-60, Pascal, Ada, Lisp, Smalltalk and Prolog. All the editions of this book explain that computer languages can have different purposes, and asks readers to examine the purpose of each programming language. Not everyone should learn the same one. Before they decide to learn programming, people should know what they want to do with that language, after they have learned its basics. Much of the time the answer is, learn a more appropriate language.

Three

Books can have multiple uses.

The Prolog in the title of this post refers to the Prolog programming language. Fifty years ago, in 1972, Prolog was created by Alain Colmerauer (1941 – 2017), a French computer scientist, at Aix-Marseille University, based on the work of Robert Kowalski (1941 – ), an American-British computer scientist, at the time at the University of Edinburgh.

Prolog is a logic programming language associated with artificial intelligence and computational linguistics. That doesn’t say much. It might be more understandable to say that students typically learn Prolog by creating a program/ system that shows social relationships between people. Despite their reputation as rather awkward social creatures, even computer scientists have the capability of understanding some social markers: mother, father, daughter, son, at a minimum. Thus, even computer scientists can construct a system that will determine then show relationships between any two people. The system can be constructed slowly, so that initially only, say, four relationships are allowed. Outside of those four choices, people will be labelled as having no relationship. However, in subsequent iterations, the number of relationships can be expanded, almost indefinitely.

Prolog consists of three main components: 1) a knowledge base = a collection of facts and rules fully describing knowledge in the problem domain; 2) an interface engine, that chooses which facts and rules to apply when attempting to solve a user query; 3) a user interface, that takes in the user’s query in a readable form and passes it to the interface engine. Afterwards, it displays results to the user.

Four

Programming in Prolog, written by William F. Clocksin (1955 – ) & Christopher S. Mellish (1954 – ), is the most popular textbook about the language. Originally published in 1981, a revised (read: readable) second edition appeared in 1984. My copy has my name printed on the colophon page in capital letters in blue ink, considerably faded now, along with the date, 12 iii 1985.

It is not the only book about Prolog in my library. Among the thirteen others are: Dennis Merritt, Building Expert Systems in Prolog (1989); Kenneth Bowen, Prolog and Expert Systems (1991); Alain Colmerauer & Philippe Roussel, The Birth of Prolog (1992); Krzysztof R. Apt, From Logic Programming to Prolog (1997) and even an updated 5th edition of Clocksin and Mellish, subtitled Using the ISO Standard, (2003). Part of the reason for this large number, was my using of Prolog to teach expert systems.

Five

Expert systems are not particularly popular, now. In artificial intelligence, popularity contests are being won by machine learning tools. Yet, some people don’t have to be at either the height of fashion or the cutting edge of technological advances, and can appreciate older approaches.

Edward Feigenbaum (1936 – ) constructed some of the first expert systems. He established the Knowledge Systems Laboratory (KSL) at Stanford University. Long words are often strung together to describe his work. A favourite phrase is, “Knowledge representation for shareable engineering knowledge bases and systems.” This was often coded into the phrase expert system. He used it mainly in different fields of science, medicine and engineering. KSL was one of several related organizations at Stanford. Others were: Stanford Medical Informatics (SMI), the Stanford Artificial Intelligence Lab (SAIL), the Stanford Formal Reasoning Group (SFRG), the Stanford Logic Group, and the Stanford Center for Design Research (CDR). KSL ceased to exist in 2007.

The focus of Feigenbaum, and American institutions more generally, was on rules-based systems: Typically, these found their way into shells = computer programs that expose an underlying program’s (including operating system) services to a human user, produced by for-profit corporations, that would sit on top of Lisp, one of the programming languages commented on in two chapters of MacLennan’s book, and used extensively for artificial intelligence applications. Feigenbaum and his colleagures worked with several of these expert systems, including: ACME = Automated Classification of Medical Entities, that automates underlying cause-of-death coding rules; Dendral = a study of scientific hypothesis formation generally, but resulting in an expert system to help organic chemists identify unknown organic molecules, by analyzing their mass spectra, and combining this with an existing but growing chemical knowledgebase; and, Mycin = an early backward chaining expert system that identified infection related bacteria, recommend specific antibiotic treatments, with dosage proposals adjusted for patient’s mass/ weight. He also worked with SUMEX = Stanford University Medical Experimental Computer. Feigenbaum was a co-founder of two shell producing companies: IntelliCorp and Teknowledge. Shells are often used by experts lacking programming skills, but fully capable of constructing if-then rules.

Six

Prolog is frequently contrasted with Lisp, and offers a different approach for developing expert systems. Some users are fond of saying that Prolog has a focus on first-order logic. First-order is most appropriately translated as low-level, or even simple. The most important difference between the two languages, is that anyone with average intelligence should be able to understand, and work with Prolog. Much of the work done with Lisp involves higher-orders of logic, often requiring the insights of real logicians, with advanced mathematics in their backgrounds. An introductory logic course, gives sufficient insight for anyone to work with Prolog.

Prolog is also claimed to be a more European approach. This probably has something to do with the way teaching is organized. In Norway, for example, a (Danish) Royal decree from 1675 and still valid today, required all university students to undertake an Examen philosophicum, devised by advisor Peder Griffenfeld (from griffin, the legendary creature, plus field, but originally, Schumacher = shoemaker, 1635 – 1699). Under the Danish King, Christian V (1646 – 1699), he became the king’s foremost adviser and in reality Denmark’s (and Norway’s) actual ruler. In 1676 he fell into disfavour and was imprisoned. He was sentenced to death, for treason, but the sentence was commuted to life imprisonment. He was a prisoner on Munkholmen, outside Trondheim, and about 55 km directly south-east of Cliff Cottage, for 18 years (1680–1698), and was released after 22 years of captivity.

Until the end of the 1980s, this exam involved an obligatory course in logic, including mathematical logic, along with other subjects. This means that almost every university student (at that time), no matter what they studied, had the necessary prerequisites to work with Prolog.

Seven

Expert systems often involve heuristics, an approach to problem solving using methods that are not expected to be optimal, perfect, or rational, but good enough/ satisfactory for reaching an approximate, immediate or short-term goal. George Pólya (1887-1985), who worked at Stanford 1940 – 1953, and beyond, took up this subject in How to Solve It (1945). He advised: 1) draw a picture, if one has difficulty understanding a problem; 2) work backwards, if one can’t find a solution, assuming there is one, and see what can be derived from it; 3) develop a concrete example, from an abstract problem; 4) solving a more general problem first – this involves the inventor’s paradox where a more ambitious plan may have a greater chance of success.

One list of areas where expert systems can be used, involve system control, in particular: 1) interpretation, making high-level conclusions/ descriptions based on raw data content; 2) prediction, proposing probable future consequences of given situations; 3) diagnosis, determining the origins/ consequences of events, especially in complex situations based on observable data/ symptoms; 4) design, configuring components to meet/ enhance performance goals, while meeting/ satisfying design constraints; 5) planning, sequencing actions to achieve a set of goals with start and run-time constraints; 6) monitoring, comparing observed with expected behaviour, and issuing warnings if excessive variations occur; 7) repair, prescribing and implementing remedies when expected values are exceeded.

Sometimes one comes across Prolog tutorials that begin with subjective knowledge/ considerations. Music is a good example. Unfortunately, it is not always easy to remember if one has labelled something as trash metal or punk, and this may have operational consequences. It is much easier to confirm that person X is person Y’s granddaughter, and that person Y is person X’s grandfather, especially if persons X and Y are members of your own family.

It is always hard to know which Prolog expert system implementation will impress readers most. Here are some choices: Bitcoinolog = configures bitcoin mining rigs for an optimal return on investment; CEED = Cloud-assisted Electronic Eye Doctor, for screening glaucoma (2019); Sudoku = solves sudoku problems; an unnamed system constructed by Singla to diagnose 32 different types of lung disease (2013), another for diabetes (2019); an unnamed system by Iqbal, Maniak, Doctor and Karyotis for automated fault detection and isolation in industrial processes (2019); an unnamed system by Eteng and Udese to diagnose Candidiasis (2020). These are just some of hundreds, if not thousands, many open source.

Eight

One of the challenges/ problems with expert systems is that the scope of its domain can be unknown. In other words, when a person starts using an implemented expert system, it can be unknown just how big or little the range of problems is that can be used successfully with it. There can also be challenges with system feedback. What looks like an answer, may be a default because the system has insufficient insights (read: rules) to process information. Expert systems do not rely on common sense, only on rules and logic. Systems are not always up to date, and do not learn from experience. This means that real living experts are needed to initiate and maintain systems. Frequently, an old system is an out of date system, that may do more harm than good.

This begs a question of responsibility/ liability in case the advice provided by a system is wrong. Consider the following choices: The user, the domain expert, the knowledge engineer, the programmer of the expert system or its shell, the company selling the software or providing it as an open-source product.

Infinity

Just before publication, I learned of the death of crime novelist Susie Steiner (1971 – 2022). I decided to mention her in this weblog post, when I read in her obituary that she had spotted a Keep Calm poster on the kitchen wall at a writing retreat in Devon. She was cheered by its message of stoicism and patience.

Speaking of kitchens, at one point my intention was to use Prolog to develop a nutritional expert system, that will ensure a balanced diet over a week long time frame, along with a varied menu for three meals a day. I still think that this would be a useful system. Unfortunately, I do not think that I am the right person to implement it, lacking both stoicism and patience, to complete the undertaking.

Reflecting on Susie, I am certain that a Prolog system could be made to help writers construct their novels, especially crime fiction. A knowledge base could keep track of the facts, as well as red herrings and other fish introduced to confuse the reader, and prevent them from solving the crime. Conversely, a Prolog system could also be built that would help readers deconstruct these works, and help them solve the crime and find textual inconsistencies.

Confessions

  1. Readers should be delighted to hear that while writing this post I used my original Clocksin and Mellish book on a daily basis! Yes, it held my laptop open at an angle of about 145°, about 10° further open than without it. When writing on other topics, I also use other books for the same purpose. Note to self: ensure that your next laptop opens at least 180 degrees!
  2. The writer should be dismayed about the length of this post. Patricia reminds me, repeatedly, that shorter is better. She felt last week’s post on Transition One was a more appropriate length. Transition One was written in the course of an hour, with a couple of additional proof-reading sessions. Writing Prolog took more than a year, with multiple writing sessions, each adding several paragraphs.

QOI

QOI — The Quite OK Image Format
The Quite OK Image (QOI) logo released to the public domain.

Every time an image is displayed on a hand-held device (cellphone) or other variant of a computer, someone has decided its format. The people who make up the webpage, program or whatever else is being made, have procedures to help them decide what to use. Users have no choice, they simply experience the consequences of choices made by others. The speed at which an image decodes introduces a delay (sometimes called latency) that can be annoying.

QOI = the Quite OK Image format for fast, simple, lossless compression. Compared to PNG = Portable Network Graphics format, it provides 20 – 50 times faster encoding, and 3 – 4 times faster decoding. Lossless images retain their fidelity. The alternative, lossy images, gradually loose their quality each time an image is re-encoded. The simplicity of QOI is found both in its code, which uses about 300 lines of C, a common programming language, and in its file format specification, that occupies a single page in PDF = Portable Document Format, a file format developed by Adobe in 1992 to describe documents, including text and image formatting information.

Dominic Szablewski has developed this file format. It is much better than quite OK because almost every other file format in current use, including JPEG, MOV, MP4, MPEG and PNG, “burst with complexity at the seams.” He adds that they “scream design by consortium… and “require huge libraries, are compute hungry and difficult to work with.”

Szablewski proposed the idea on GitHub, and paid attention to the more than 500 comments generated.

QOI implementations are found for many different languages/ libraries, including C, C#, Elixir, Go, Haskell, Java, Pascal, Python, Rust, Swift, TypeScript and Zig, among others. There are native applications, meaning that they can be run without any external software layers, as well as plugins for Gimp, Paint.NET and XnView MP. Szablewski does not expect it to appear in web browsers anytime soon. It will probably end up in games and other applications where there are performance issues.

Links to additional information:

YouTube video (1h20m)

Reference en-/decoder on Github

File Format Specification

Benchmark Results on 2879 different images

Test images in QOI and PNG format

The QOI-Logo is released as public domain under the CC0 License and may be freely used.

Note: On 2021-01-02, the content of this post was changed to eliminate references to gaming. A separate post about rendering content for video games will be written and published, later in 2022.

Forth

A Forth interpreter flow chart (Source: https://www.embedded.com/introduction-to-forth/)

Forth is not a mainstream programming language. Whenever it is compared to something, the most operative word is different. It is almost like assembly language, which is how a machine would interpret code, if it used English, rather than 0s and 1s to calculate and communicate. Some refer to Forth as a virtual machine, which is software pretending to be a physical machine. In part, this is because it is not just a programming language, but also an operating system. Despite this, Forth is simple. It can run on a few kilobytes (kB) of memory. When coded appropriately, it seems to be its own independent language, but with a lot of English-like words.

While Forth was invented by Charles (Chuck) Havice Moore II (1938 – ) in 1970. It was operationalized by Elizabeth (Bess) Rather (1940 – ), who – with Moore – started Forth, Inc. in 1973. Rather refined and ported Forth to numerous platforms throughout the 1970s. She also chaired the ANSI Technical Committee that produced the ANSI Standard for Forth (1994).

Forth was made specifically for the real-time control of telescopes at the United States National Radio Astronomy Observatory and, later, at Kitt Peak National Observatory. A real-time response is one that guarantees that something will happen within a specified time period. In other words, it sets a deadline for something to happen, usually one that is relatively short. Thus, a real-time process is one that happens within defined time steps of some maximum duration.

Forth is the antithesis of Ada. Wikipedia defines Ada as “a structured, statically typed, imperative, and object-oriented high-level programming language, extended from Pascal and other languages.” In its purest form, Forth is none of these, with the exception of being imperative. Most computer languages are imperative. They use statements/ commands to change a program’s state. Ada originated in the 1970s because of US Department of Defense (DoD) concerns about the high number of programming languages being used in embedded computer systems. They wanted one language to do everything. Unfortunately, with Ada they created a monster that was far too large and complex, that was slow to compile and difficult to run. A compiler (used with a compiled language) requires code to be translated into machine language, before it can be run. In contrast, an interpreter (used with an interpreted language) directly executes instructions without requiring them to have been translated into a machine language, in advance.

Allegedly, a Forth program can be compiled, but not if it contains words that are only evaluated at runtime: DOES>, EVALUATE and INTERPRET are three such words. If even one word has to be interpreted, the entire Forth dictionary would have to be embedded inside the program. Thus, Forth should always be treated as an interpreted language.

Forth is an appealing language because of its one and only guiding principle, Keep it simple! Part of this simplicity involves how the language is used. Leo Brodie – a third main contributor to the language – explains, in Starting Forth, E2 (1987): The interpreter reads a line of input from the user input device, which is then parsed for a word using spaces as a delimiter. When the interpreter finds a word, it looks it up in the dictionary. If the word is found, the interpreter executes the code associated with the word, and then returns to parse the rest of the input stream. If the word isn’t found, the word is assumed to be a number and an attempt is made to convert it into a number and push it on the stack; if successful, the interpreter continues parsing the input stream. Otherwise, if both the lookup and the number conversion fail, the interpreter prints the word followed by an error message indicating that the word is not recognised, flushes the input stream, and waits for new user input. (p. 14) While the use of unusual words may make the above description seem complex, this is a much simpler approach than that used in most other computer languages. A graphic version is shown in the flowchart above. Parse is a word used extensively by people who construct compilers. It refers to the process of dividing a sentence (or in computing, a statement) into words/ grammatical parts and identifying the parts and their relationships to each other.

One major problem with Forth is that its dictionary, more often referred to as a library in other languages, is not uniform. Some implementations come with an adequate dictionary, others less so. Some use words the same way, others give the same word different meanings. This means that Forth implementations can produce very different results, depending on dictionary content. This weakness is probably the main reason why Forth is not treated seriously, and has not been extensively used.

Forth is a stack machine, a computer where the primary interaction is moving short-lived temporary values to and from a storage location that follows the rule: last in, first out. A stack significantly reduces the complexity of a processor. Tasks are expressed as words. Simple tasks usually involve single words . More complex tasks connect together many smaller words, that each accomplish a distinct sub-task. Thus, a large Forth program is almost like a sentence that involves a hierarchy of words, distinct modules that communicate using a stack. Data is only added to the top of the stack, and removed from the top of the stack. Each word is built and tested independently. Provided that words are chosen appropriately, a Forth program resembles an English-language description of the program’s purpose.

Forthwright

Forthright is an adjective, used to describe a plainspoken/ frank/ blunt person. A person who develops/ modifies/ corrects/ improves/ uses Forth programs is referred to as a forthwright, a noun. Both words are pronounced the same way. A wright is a person who makes or repairs something. The original ca. 700 AD Old English wryhta, referred to someone working with wood. Since then, the term has expanded to include many different occupations. Carpentier, now carpenter, was introduced into England only after the Norman conquest in 1066, effectively replacing wright to describe this role. In Scotland, wright is used much more extensively.

Raspberry Pi Pico

The traditional strength of Forth is its minimalist use of resources. This is more important than it may seem. Gordon Earle Moore (1929 – ) formulated an expectation in 1965, later termed Moore’s law, by others, that computing capacity would double every year, some say every 18 months. This doubling cannot continue indefinitely. Many, including Moore, expect it to be invalid from about 2025, giving it a life span of 60 years. Even so, this means that even the most primitive of microprocessors made today has many magnitudes of capacity compared to anything made in, say, 1970. This is why many people prefer to use computer languages that are less optimal.

In contrast to Moore’s law, Niklaus Emil Wirth (1934 – ) formulated a very different expectation in his 1995 article A Plea for Lean Software, later termed Wirth’s law, by others, that software is getting slower more rapidly than hardware is getting faster. Most computer scientists are no longer making software that optimize/ minimize resource use, because they know that ample resources are available.

The reason some few people continue to use Forth is because of their acute awareness of Wirth’s law, where they see the negative impact of software bloat, on a regular basis.

General Public Licence (GPU) and public-domain Forths exist for most modern operating systems including Windows, Linux, MacOS, Android and some Virtual Machines. Such implementations include: gForth and bigForth. Dale Schumacher forked the Raspberry Pi/ARM port of JonesGorth around 2014, and removed its dependency on Linux. It now runs bare-metal, on a Raspberry Pi, booting directly into the Forth interpreter. Many important words have been re-implemented in assembly, or as part of the built-in definitions. Note: In computing, bare or bare metal refers to a computer executing instructions directly on a processor aka logic hardware, without an intervening operating system.

Iteration #2 of Unit One (#2U1), my personal workshop, will officially commence on 2023-11-01, less than two years away. It will transform a construction-support workshop into a fabrication shop, as my career as a wright/ building constructor/ carpenter comes to an end, and my career as a millwright/ machinist begins. My primary emphasis is broad, mechatronics, but the workshop’s role is limited to fabrication. Electronics and programming will probably be done inside Cliff Cottage, while much of the thinking will take place wandering about in the woods.

The purpose of the workshop is for an old man to have fun, to build upon skills learned in the past, and to learn new 21st century skills, to keep his brain and body active. Hopefully, some useful and environmentally sensitive products will be made at it.

There are plans to use Forth as the official shop language/ operating system for computer numerical control (CNC), the automated use of machine tools, controlled by a computer. I expect to have one primary machine that can move in three dimensions, and change heads as required. The two most important heads will be a router, which can shape materials as well as drill holes, and a laser cutter that cuts more accurately and with less waste than a saw. I expect to concentrate on various types of hardwoods as my primary material focus, but not to the exclusion of other materials. These are subtractive processes that remove material. In contrast, 3D-printers are additive.

There is no need to waste money on expensive silicon if cheap silicon will do. The silicon needed to control a CNC mill will be a Raspberry Pi Pico microcontroller. It costs NOK 55 = US$ 6.05 = CA$ 7.75, on the day before publication. Any money saved on silicon will be put into better bearings, and improved versions of other machine components.

Forth is not for everyone. It is useful where there is a need for a real-time system involving mechanical movements. After milling machines, and other types of tools, robots come to mind first, including unmanned underwater vehicles and drones. It should be mentioned in all fairness that Forth is not the only language I intend to use in the future. Two others are Prolog and Lua. Prolog is a logic programming language developed in France in 1971 with a number of artificial intelligence applications. Lua is a multi-paradigm scripting language, developed in Brazil in 1993. Its basic set of features that can be extended to suit different problems.

A dangling Raspberry Pi Pico microcontroller attached to a USB-C power and data connector. On the laptop pinouts for the Pico are displayed, along with its datasheet. Photo: Raspberry Pi.

Intel 4004

An Intel C4004 microprocessor with gray traces. (Photo: Thomas Nguyen)

Today (2021-11-15) is the 50th anniversary of the Intel 4004 microprocessor. This featured a 4-bit central processing unit (CPU). It was the first microprocessor to be sold as an electronic component. At the time of its development, Intel considered itself a memory chip manufacturer. At about the same time, three other CPU designs were being developed, but for specific projects. These were: Four-Phase Systems AL1, (1969); American Microsystems MP944 (1970); and Texas Instruments TMS-0100 (1971).

The Intel 4004 project began in 1969, when Japanese adding machine manufacturer Busicom, approached Intel to manufacture a chip it had designed. Intel was a start-up, so small that they didn’t have the staff to design the logic required. Thus, they came with a counter proposal, to build a general purpose computer-on-a-chip and to emulate the calculator architecture using a read-only memory (ROM) byte-code interpreter.

Frederico Faggin (1941 – ) was assigned responsibility for the project. He was able to design a customer-programmable microprocessor. The work included logic design, circuit design, chip layout, tester design and test program development. His initials F.F. were incorporated into the chip design. Assisting in the development process was Masotoshi Shima (1943 – ), a Busicom software and logic designer, but without any chip design experience. The chip was first used in the Busicom 141-PF adding machine.

Faggin is known for several microprocessor inventions. These include the buried contact, and the bootstrap load. He also created the basic methodology for random logic design using silicon gate technology. He was particularly vocal inside Intel in advocating the 4004 as a general purpose microprocessor, with a huge market potential. He subsequently led the design of the 4040, 8008 and 8080 processors.

Faggin was presented with the engineering prototype of their calculator with the first 4004. This was subsequently donated to the Computer History Museum.

Faggin and Ralph Ungermann (1942 – 2015) left Intel in 1974 to start Zilog. Intel’s reaction was to disown Faggin, and to rewrite company history. In particular, it credited more loyal, but less competent, employees, with the 4004 design.

Ada Lovelace Day

https://upload.wikimedia.org/wikipedia/commons/thumb/9/95/Ada_Lovelace_color.svg/653px-Ada_Lovelace_color.svg.png
A portrait of Ada Lovelace, based on an original watercolour portrait by Alfred Edward Chalon (1780 – 1860), that has been modified into a woodcut-style graphic by Colin Adams, for the Ada Initiative. It has been converted into SVG format by Fred the Oyster then colourized by Kaldari. The original artwork is in the public domain, and this final Creative Commons derivative has been available in this form since 2011-10-15.

Today is Tuesday, 2021-10-12. Because it is the second Tuesday in October, it is Ada Lovelace Day.

The micro-story behind this posting is that Ada Lovelace (1815 – 1852) collaborated with Charles Babbage (1791 – 1871) on his Analytical Engine. In 1843, she was the first person to publish a computer program. It generated Bernoulli numbers. Lovelace is also considered the first person to foresee the creative potential of the Analytical Engine, especially its ability to create music and art. The date selected for Ada Lovelace day is arbitrary. This day is one that could be one used by people with programming skills to serve humankind in various ways. In many places, it is also a school day, although not this year, and many other years where I live, as a week long autumn school break is being held.

For those wanting more information about Ada Lovelace, one place to begin is her Wikipedia article. In additional to a biography, it also provides other sources of information about her, including books, plays and videos.

At one level this day attempts to raise the profile of women in Science, Technology, Engineering and Mathematics (STEM). Some want to use STEAM, by adding Art. In my time as a teacher of technology, Ada Lovelace day was an opportunity to encourage female students to investigate STEAM, where they might be able to bypass some of those headstrong members of another, weaker gender. This day does not supersede or in any way compete with the International Women’s Day on 03-08,

In terms of the more technical aspects of computing there are many other days that can be celebrated, World computer day is 02-15. It was first celebrated in 2021, with a focus on 75 year old Eniac, described by some as the first programmable, electronic, general-purpose digital computer. At a more practical level, the second Monday in February, is designated the (American) National Clean Out Your Computer Day. Many people have issues regarding the storage of data on their computers, including the taking of regular backups. However, there is also a World Backup Day on 03-31, which could be a better day to focus on such issues.

For those who need more computing days: (Apple) Macintosh Computer Day = 01-24; World Password Day = 05-05; System Administrator Appreciation Day = 07-30; Computer Security Day = 11-30; Computer Literacy Day = 12-02, and National Download Day = 12-28.

Dates in the weblog follow International Standard ISO 8601 formats. Generally, of the form YYYY-MM-DD, however in this specific post there are many in the MM-DD format. ISO 8601 is the only format that the Government of Canada and Standards Council of Canada officially recommend for all-numeric dates. It is my experience that about half the Canadian population uses the American MM-DD-YYYY format, while the other half uses DD-MM-YYYY, necessitating the need for ISO 8601. However, usage differs with context. See: https://en.wikipedia.org/wiki/Date_format_by_country