What we forsake for the sake of digital data

We tend to think data is king. If it doesn’t exist in the virtual world, it mustn’t exist right? But the stuff on the internet is really a mix of data and information. There’s a difference? Yes. Data needs to be interpreted to be formed into information. Daily rainfall over a year is just data. If it rains 9mm on June 11th, it is hard to understand what that means unless it is put into context. Information might be derived by comparing it to the daily rainfall in the other days of June, or indeed to June’s in other years past. Yet the pseudo data of the internet thwarts the way we think. Some people assume that nothing exists beyond internet bytes, yet the opposite is true. Tangible data exists in the world around us, but then maybe we live in an age where many people tend to ignore this?

The libraries of unscanned books, the historical record, the artifacts that have marked our long existence. Forsaking this data is akin to misinterpreting the world around us. Historians will agree… much of the data they dig for can only be found in non-digital sources. Heaven forbid the idea of experiential anything. Leave the comfort of your tablet? Data on the internet is also sometimes a red herring – you think you have found something, but the reality is often quite the opposite.

On the other hand the internet does allow us to obtain books from all over the world, opening a door that required much more effort before… I’m talking about sites like Abebooks. Another positive is that people who have knowledge opt to share it by means of blogs – free information, shared with all, much like it really should be. There are also copious historic manuscripts like cookbooks that have been digitized. But I have to say I prefer physical books. Their information is timeless. E-books? They didn’t really make the impact they were suppose to, much like AI won’t produce all it purports. Some people view Wikipedia as a source, but it is not a definitive source. So where does that leave us?

People need to think more about the data they look at, and how they interpret it into information. Look beyond the digital world of data and explore the real world of information. One can easily read a book about what Saxons ate, or one could experiment and actually cook some of the food. Or go even further and visit a Saxon-era open-air museum such as West Stow Anglo-Saxon Village.

Invention + making = resilience

There was a time when humans invention was quite diverse. If you look at patents of almost anything during the Victorian era you will find hundreds of different interpretations of an item. The same was true in the early 20th century, and this really peaked during the early 1960s. People invented super interesting things – check out any old copy of Popular Mechanics or Popular Science. Many were never produced commercially, but they were interesting nonetheless. Where is this crazy out-of-the-box thinking today? Sure, there are still inventors out there, but there seems to be fewer. Is it because of the digital world? Maybe.

Consider my generation, Gen X, whose childhood evolved before computer intertwined themselves into our lives. We grew up from the mid 1960s to mid 1980s playing with systems like Lego and Meccano, or even building wooden forts in the woods. We built things, and when computers emerged, we learned how to build them. People don’t build much of anything anymore. Yes, there are makers, but they seem to be a minority. People barely know how to sketch something, or build something simple from wood. Do kids still build go-karts? (likely too dangerous). School shop classes have all but disappeared, and we now live in a world where children need to be swaddled their whole lives. The problem is that without the problem soling skills learned from constructive play, it is harder to make headway in fields where innovation is a daily thing. 

Designing an algorithm requires innovation. People come into computer science dreaming of sky-high salaries and fail to understand that computer science: (i) involves programming, and (ii) involves innovation. You have to understand how to program, even if you feel you will be a “software developer” and never actually have to code. If you don’t understand the nuances of programming languages and their inherent limitations, you will never be able to successfully design algorithms (this is like architects who don’t understand the limitations of materials science). You also have to understand how to design innovative algorithms. This involves trial-and-error, and thinking outside the box. If you spent your life sitting in front of a gaming console, then computer science is likely not for you.

The truth about moisture vaporators

“I Need a Droid That Knows Something about the Binary Language of Independently Programmable Moisture Vaporators”

Owen Lars (Star Wars – A New Hope)

It is ironic that a concept as far fetched as machines that evaporate and collect moisture from the atmosphere could now somewhat relevant in some places in the world we live in. Who also knew that we could change the planet we live on so drastically in such a short period of time? I guess terraforming really is a thing. Interesting how life imitates art. Movies like Mad Max play homage to a future world with limited water resources, or those resources being hoarded by a few. Now while the world argues about climate change, and many countries lament the lack of growth in their oil industries, they fail to see what is right in front of their faces – the worlds next big commodity will be water. You can’t drink oil, and although it is seemingly important to produce a myriad of things – it can be replaced. You can make plastics from corn, and power can be found from other resources (yeah, *not* coal). But water? It’s harder to produce that. You can convert salt water, but that is as yet somewhat expensive, and still leaves the problem of what to do with over-salted brine residuals.

But what about moisture evaporators? Are they a notion of science-fiction? Hardly because we all know you can pull moisture from air – I do it every summer using a dehumidifier in the basement, and air conditioners do the same thing. So technology-wise it is extremely possible. In Star Wars, Luke Skywalker lived on the family farm on the planet Tatooine, where they used “vaporators” to farm moisture from the air. Now these devices work well in a dry climate, because the other essential ingredient in the process is present – power, from the sun. Unlimited solar power in fact. Using the power to somehow cool warm air allows us to remove moisture from the air. This technology exists, and works well in warm humid climates, but not as well in dryer climates such as deserts. A simple method of producing water opts for more passive concepts – a cool surface onto which water vapour can condense.

Some recent research suggests that it is possible to use a new technique, using metal-organic frameworks powered by natural sunlight. This technology could produce 2.8 litres of water a day per 1kg of material, as levels of relative humidity as low as 20% – using only solar energy. In the reality of the future world, such systems will be vital to survival of peoples in arid regions, or perhaps many regions where people can no longer rely on historical sources of water. Yes, moisture vaporators really are a thing. Maybe we could harness other sci-fi technology to fix our planet.

What Dijkstra thought of AI

Q. Speaking of programming bottlenecks—what will the impact of the research in artificial intelligence be?

A. Can you research something that is not science? I feel that the effort to use machines to try to mimic human reasoning is both foolish and dangerous. It is foolish because if you look at human reasoning as is, it is pretty lousy; even the most trained mathematicians are amateur thinkers. Instead of trying to imitate what we are good at, I think it is much more fascinating to investigate what we are poor at. It is foolish to use machines to imitate human beings, while machines are very good at being machines, and that is precisely something that human beings are very poor at. Any successful AI project by its very nature would castrate the machine.

From an Interview with Prof. Dr. Edsger W. Dijkstra, Austin, 04–03–1985

I strongly recommend reading the work of Dijkstra, as it provides a good grounding for computer science past and present.

Why blogging in academia is ok.

People often probably wonder why I write an academic blog(s). The main reason is because I enjoy writing and I enjoy writing things people will read. Why not concentrate on one blog? That’s mostly because it’s hard to have one blog dedicated to so many of my interests. People who read about programming may not be interested in photography, and vice versa. My interests in photography outweigh the digital side, hence why I calved off the new blog (Crafting Pixels). But mostly blogging provides a creative outlet – something academic writing on the whole does not. Blogging also reaches far beyond the small audience of academe. Students are more likely to read a blog, than an academic paper. Unlike the early computing journals, which contained extremely readable articles, many academic journals have become somewhat stuffy – unreadable is the word most associated with some of these articles. On the flip side textbooks are overly expensive bohemoths. Blogging is an outlet. It’s a way of healing. It makes me feel good inside the way that academia just doesn’t anymore. I like blogging articles, I am beginning to dislike the palide world of academia. But I do like teaching people and that’s what really pushes this blog along.

Does academia value blogging? I don’t know. It is far from the traditional way of deciphering information in conferences and journals. Is it useful? Most certainly. Is it stately and does it get citations? Likely not. But this is the age of information, and is it not better to published work in a medium accessible to all? It is 2019, not 1969, and the way the world works has changed… for the better in terms of people’s access to information. People on YouTube and bloggers, Instagram influencers make much more of an impact on society than any academic journal ever will. Blogging is a means of reaching a much broader audience than is possible with traditional means.

This blog has become more than just about programming, and that’s okay as well. If it were just about programming that would likely get boring. But blogging isn’t easy because you have to somehow maintain a certain frequency of publishing. Maybe in the age of social media like Instagram and YouTube it isn’t even important any more – but both Instagram and YouTube are visual, and not often the best medium for describing things. Showing things yes, and I do Instagram, just not computing related stuff. Making videos is a whole other league, and frankly other people do it better. There is a place for blogging, as it is a means of providing information on things that just aren’t readily available anywhere – like weird algorithms. For me, the writing I do on my blog tends to feed my other writing, which mostly exists as books.

A language, is a language, is a language

Programming languages are languages. When it comes to the mechanics of the task, using a programming language is in many ways like learning to speak a human verbal or sign language. In both kinds of language, you must learn new vocabulary, syntax, and semantics (new words, sentence structures, and meanings). Moreover, both kinds of language require considerable practice to make perfect. There is, however, at least one important general difference that may strike you forcibly as you learn:

   Programming languages lack ambiguity and vagueness.

Questions raised in English by sentences such as “I saw the man with a telescope” (Who had the telescope?) or “Take a pinch of salt” (How much is a pinch?) simply do not arise. In a programming language a sentence either means one thing or it means nothing!

Programming is fundamentally the same in any language. The constructs of programming such as decision and repetitive statements are conceptually the same. Only the syntax of the particular language makes it different. The syntax of a language is the set of allowed lexical elements and the set of rules used to combine the lexical elements into legitimate constructs. These lexical elements include operators (+, =), reserved words, function names, and variable names. In spoken languages, syntax is concerned with building valid sentences and paragraphs. In a programming language the syntax is concerned with building elements such as expressions and functions. The following sentence contains numerous spelling and punctuations errors, but its meaning can still be deciphered:

   Tha kat saton, tha matt:

A compiler or interpreter is very strict about syntax. A single missing semicolon in a C program could cause a compiler failure. For instance in mathematics, the equation for the area of a circle might be expressed as:

If you wrote this in most programming languages, the compiler would most likely reject it for a number of reasons. First, it might consider the assignment symbol “←” to be incorrect (i.e., it’s not a part of the standard character set). It also has no idea what Greek letters are, so π would be a mystery (unless you are using Julia). Super-scripts aren’t allowed. But if you get something wrong, the compiler will usually produce a syntax error. More about these later. The structure of English is much more flexible, but rules about the structure of sentences do exist. For example consider the process of calculating the area of a circle, which can be described in C in the following manner:

   area = 3.14159 * radius * radius;

If we leave the semicolon out at the end of the statement, the compiler will complain that there is a problem with the syntax, because it expects a semicolon at the end of the statement to terminate it. If it doesn’t find things the way it expects to see them, the compiler will balk. The semantics of a language is the meaning given to its elements. Consider again the area of a circle. The equation for the area of a circle is πr^2. If the statement in the program were to become the equivalent of πr^3, or

area = 3.14159 * radius * radius * radius;

then this becomes a gaffe in the semantics. The compiler will compile the program with no problems, as there are no problems with the syntax. It’s sort of equivalent to writing:

   The cat sat on the hot tin roof.

Maybe it did, and in terms of syntax, it looks good. It has lost its meaning, though.

Languages are often designed with a specific use in mind, and some are better than others for dealing with certain problems. Each language provides slightly different func- tionality, so the language should match the problem. There are many different programming languages: Julia, Fortran, Pascal, Java, Python, Perl, Oberon, Modula-2, Lisp, Eiffel, Ada, ALGOL, Smalltalk, HTML, and Prolog. Consider the problem of calculating the area of a circle. It can be expressed in a similar fashion in a number of languages:

ALGOL     area := 3.14159*r*r;
FORTRAN   area = 3.14159*r**2
C/C++     area = 3.14159*r*r;
MATLAB    area = pi*(r^2);
Ada       area := 3.14159*(r)**2;
Pascal    area := 3.14159*r*r
Python    area = 3.14159*r**2
Java      area = 3.14159*r*r;
Ruby      area = 3.14159*r**2
Julia     area = pi*r^2

As you can see, there isn’t a great deal of difference between the nine languages.


Data, is not information, or knowledge

The terms data, information, and knowledge are overlapping concepts, with the main differ- ence being the level of abstraction. Data by itself holds no meaning. The goal of programming is to interpret data, the end result of which is information, which can in turn be used to derive knowledge. For example, consider the surface of the earth. It cannot be sensed directly; it can be understood only indirectly through the data it generates. If we take a satellite image of a region of the earth, we now have a form of data. This data could be in various forms (e.g., infrared, photographs), which we can use to extract information. For example, we may wish to determine the amount of forest cover or the percentage of land use dedicated to buildings. This information, say on canopy cover, can then be used to identify regions for tree replanting. Canopy cover is then the thing about which we seek information through the various data we can obtain about it.

Data is any perceivable thing from which information can be derived, that is, anything that humans and machines can sense—for example, obvious things such as words, numbers, images, and sound, as well as less discernible items such as color and magnetic state. In some cases, different forms of data can give the same information. For example, both a lightbulb and a candle produce light, which can be interpreted by lux meter, which provides a measure of luminance (SI unit). There are also different ways of interpreting data. The light intensity of both the candle and the lightbulb can be measured using lux, or foot-candles, which is “the luminance cast on a surface by a one-candela source one foot away” (1 foot candle = 10.764 lux). Data may be interpreted by different humans or different machines in different ways, depending on the type of algorithm used. The same information may result from different algorithms interpreting the same data.