It’s very easy to assume everyone knows everything you know. Frances Buontempo points out that general knowledge is context dependent.
It is, perhaps, common knowledge to our regular readers that I always find an excuse for not writing an editorial. If you are new to this magazine, first, welcome, and second, bear with me. Allow me to explain why, as ever, I have no editorial for you. An editorial would involve a subjective viewpoint on a topic, giving a personal opinion which might open the floodgate to arguments. These, in turn, might stop me from finishing an editorial, so the most efficient way forward is not bothering. Besides, no one likes an argument. Furthermore, trying to spot if something is purely subjective can be difficult. Recently, the BBC news has insisted on reporting what ‘BBC Verify’ has discovered, slapping the label ‘BBC Verify’ on many of its new articles [BBC]. Many of the ‘verifications’ involve an assessment of images, trying to discern if they could be from a particular place by comparing known landmarks, streets and so on, as well as checking whether they have previously been visible on the internet, in order to pinpoint the veracity of the time the picture or film is claimed to have been taken. I am not convinced this approach would spot deep fakes or image alterations. I suspect most ‘fake news’ from bad actors involves sneaking emotive words, possibly along with real pictures, into a social media feed. We need to apply some discernment to anything we are told.
It can be very hard to spot untruths, and I am sure many of us can cite examples where we have changed our minds as more information has come to light. I recently watched Union, by David Olusoga [Olusoga23], which went through the history of the United Kingdom. I was aware of much of what he talked about, though there were some new bits of information. I was left thinking about the economic situation in the UK in 1973, and similarities with today’s ‘cost of living crisis’. I shall keep my opinions to myself, but I do see a coincidence with the Vietnam War causing a spike in the price of oil internationally and the cost of oil today. Further information can provide a new perspective on things.
Regardless of my opinions, verification is difficult. I have recently taken on some work with an open source Bounded Model Checker for C (CBMC) [CBMC]. I haven’t worked on verification software before, so have lots to learn. This style of verification is very different to the BBC’s attempt; however, both can spot things that are wrong but cannot prove things are right. Knowing something is wrong is one thing, but you will always be left with Rumsfeld-style known unknowns and even unknown unknowns. Proof is difficult, and software verification seems to nudge up against Gödel’s incompleteness theorems very quickly. If I manage to understand the specifics fully, I might get round to writing an article, though I cannot promise it will be a complete guide to software verification. Hopefully, it will be consistent.
Mentioning ‘Rumsfeld’ and giving no reference rather assumes you know about the known unknowns phrase, [Wikipedia-1]. When we try to communicate, we need to assume some common knowledge, at very least a common understanding of a few words. It is all too easy to use colloquialisms specific to your own culture and experience when you write or speak. If I watch or listen to so-called ‘general knowledge’ quizzes, I often notice people answering sport-related questions fall into one of two categories. They either know or they don’t know. I am firmly in the latter camp. Piecing together an intelligent guess is impossible with no background knowledge to go on. The same happens for other types of questions. If someone who has lived in the UK for the last ten years is asked about a British TV programme from the 1970s they are unlikely to know or even be able to guess the answer. General knowledge is usually geared towards specific contexts. This is why it is important to provide citations when writing. It allows readers to fill in gaps in their knowledge, as well as verifying your claims.
Many who take part in quizzes spend ages learning lists, say of US states or presidents. Points in a general knowledge quiz tend to demonstrate memorization of these lists or an ability to guess based on, say, Latin roots of words or similar. The culture and cohort specific questions don’t seem to indicate any kind of cleverness. No-one said general knowledge is the same as being clever, to be fair. Sometimes playing quiz games with family or friends can be fun, but occasionally, someone says “Don’t you even know that?” Very unkind. I’ve seen the same happen in teams of coders or even interviews, and am guilty myself. I interviewed someone for a C++ job years ago, and he hadn’t come across std::string
. I’d like to claim I didn’t raise an eyebrow at this, but can’t remember clearly. He got the job anyway and the first thing he said to me when he started was he’d been practising using the standard library, which was great. If someone doesn’t know something you regard as essential knowledge, don’t be arrogant and remember they might be able to learn about the subject, just as you did once.
I’ve been re-watching Babylon 5 [IMDB-1] recently. It’s a 30 year old (!) TV series, based on a space station:
located in neutral territory, … a major focal point for political intrigue, racial tensions and various wars over the course of five years.
This means various different aliens species interact. In order to communicate, they need some kind of commonality. At one point, they used the phrase “20 standard minutes”. As I write this, the clocks have switched from BST to GMT in the UK, which will confuse me silly for a few weeks. I would imagine changing to ‘std::minutes’ might confuse me too. I wonder if a standard minute is an Earth minute, rather like UTC is GMT. David Olusoga might have something to say on the matter. Many ‘common’ ideas are drawn from a geographical and cultural context, making them seem more natural to some people than others. This provides diverse groups and teams with a challenge, which we should willingly embrace.
In order for people who speak different languages to communicate, we usually try to find a lingua franca [Wikipedia-2]. Literally meaning ‘Frankish language’, for many years, English has been used to communicate in business and the like. Lingua franca can also apply to mixed languages or Pidgins [Wikipedia-3]. These provide a general way to communicate, often using pre-existing languages, perhaps simplified or combined. People trying to communicate is one thing, but how do we make computers communicate? In some sense, the C language works as a lingua franca. Providing a C-API for a program, written in C++ or indeed one of many other languages, allows libraries or processes to be called directly. Using a narrow application programming interface hides away details, forming a very useful selective ignorance. There are various other ways to provide APIs, including REST, allowing services to talk. Hiding implementation details frequently enables better general discourse, and likewise making an API simple can facilitate usage. We don’t always need to know historical details behind the definition of UTC in order to tell the time, but the extra details can be of interest. And get you points in a pub quiz.
In order to win at quizzes, you often need a diverse team of people with a mixture of knowledge, including someone who has memorized a list or two. The phrase “Not a lot of people know that” is often ascribed to Michael Caine [Wikipedia-4], since he had a tendency to rattle off obscure facts at the drop of a hat. Being a mind of ‘useless’ information might be very useful in a quiz. Is any information truly useless? I’m not sure. Certainly, someone pointing out everything they can think of about a topic might prove distracting. For example, someone telling a group why a decision was made about a code base can be useful insight in some circumstances; however, it might not help the team find the cause of a bug or figure out how to add a new feature. Watching Dominic Cummings speak to the Covid enquiry in the UK recently was ‘interesting’, or at least fascinating. He frequently rattled off lots of definitions and vague memories, interspersed with various expletives, managing to avoid answering the actual questions. A barrage of irrelevant information is always unhelpful. Discerning useless information is subjective, but spotting irrelevance is easier.
Now, if someone, or even something, can rattle off a stream of facts, does that makes them knowledgeable? We can watch AI chat software stream many words, sometimes including truths; however, this does not prove AI ‘knows’ anything. Similarly, we can type words into a search engine, and get results. The internet does not know anything, but can be a source of knowledge. As with books, or conversations, we need to find a way to pick through what is written or said, and draw our own conclusions. I asked ChatGPT if it knows or understands anything, and it replied,
ChatGPT does not possess knowledge or understanding in the way humans do. It is a machine learning model that processes and generates text based on patterns it has learned from a large dataset of text. While it can provide responses that appear knowledgeable or understanding, it does not have true comprehension or consciousness.
To be fair, some people sometimes prattle off words and maybe do not have a proper understanding either. I notice of a lot of politicians and business people using the word ‘nimble’ recently. I suppose they had been saying ‘agile’ and someone, somewhere said “You keep using that word. I do not think it means what you think it means.” [IMDB-2]
How do we gain understanding? A child may imitate adults while they learn language, and we actively encourage children to sing along with songs, allowing them to mispronounce words as they go. Over time, the child usually learns a few words correctly, and manages to use them outside the context of the song. As adults, we still have to keep learning new words. ‘Have to’ might be a bit strong, but new tech comes into being, so new words and phrases creep in, or old words get repurposed. Zoom, cloud, … I still have to suspend my disbelief/confusion if people say “sick” to indicate something is good. I notice some people struggling with the pronoun “they”, probably for similar reasons. Unfamiliarity with a new context means you might misunderstand because of your expectations. I wonder if learning a new programming language has similar issues. Perhaps to begin with, you copy something from a book, blog or talk, like a child singing a song, or ChatGPT spewing forth code it found on the internet. Maybe you recognize a few parts of the code, but perhaps you stumble a bit. If you have experience of a similar language though, you may assume you understand a statement, but completely miss the point. Sometimes, a little bit of knowledge is a dangerous thing, to slightly misquote Alexander Pope [Wiktionary].
If you start working on a new codebase, in a language you know well, it can still take a while to find your way around. Even someone who has worked on a large codebase for years sometimes has to rely on a search to find definitions or usages. You can’t always know all the things. Managing enough selective ignorance and using a few signposts or heuristics is usually enough to be able to find what you are after.
As the year draws to a close, take time to consider what, if anything, you have learnt this year. Have a look back through the articles in Overload, and if you are an ACCU member, look through this year’s members’ magazine, CVu, to pick your favourites. Then vote in our best article survey (see page 11).
Thank you for reading Overload, and thank you also to all our writers. Hopefully, we manage to keep you informed. Perhaps the citations provided clarify background details if you are interested, and give potential further reading.
We all have different strengths and weaknesses, so let’s continue to help each other by sharing what we have learnt and encouraging each other by acknowledging our writers’ hard work. Hopefully next year will bring more opportunities to continue to learn, while being careful to avoid irrelevant rabbit holes or simply learn lists of facts. Thank you for taking time to read this, and have a happy new year.
References
[BBC] BBC Verify: https://www.bbc.co.uk/news/reality_check
[CBMC] Bounded Model Checking for Software (for C and C++ programs): https://www.cprover.org/cbmc/
[IMDB-1] Babylon 5: https://www.imdb.com/title/tt0105946/
[IMDB-2] The Princess Bride – Quotes:https://www.imdb.com/title/tt0093779/quotes/
[Olusoga23] David Olugosa (2023) ‘The Making of Britain’:https://www.bbc.co.uk/programmes/p0gd25kn
[Wikipedia-1] Unknown unknowns: https://en.wikipedia.org/wiki/There_are_unknown_unknowns
[Wikipedia-2] Lingua franca: https://en.wikipedia.org/wiki/Lingua_franca
[Wikipedia-3] Pidgin: https://en.wikipedia.org/wiki/Pidgin
[Wikipedia-4] Michael Caine: https://en.wikipedia.org/wiki/Michael_Caine
[Wiktionary] ‘A little knowledge is a dangerous thing’:https://en.wiktionary.org/wiki/a_little_knowledge_is_a_dangerous_thing
has a BA in Maths + Philosophy, an MSc in Pure Maths and a PhD using AI and data mining. She's written a book about machine learning: Genetic Algorithms and Machine Learning for Programmers. She has been a programmer since the 90s, and learnt to program by reading the manual for her Dad’s BBC model B machine.