My Five (5) Computer Science Genre’s
Did you ever see the opening scene in The Player, by Robert Altman 1992? It’s a famous long take much like Hitchcock's “Rope” and others.
In the movie, everyone is pitching their new story ideas to the top producers on the Hollywood back movie set, while the camera keeps moving for 8+ minutes. They pitch how the new movie is just like another known movie but different and is described through analogies and stories. e.g. “just like The Graduate, still with Dustin Hoffman but taking place 25 years later”, or a movie that is similar to Star Wars but 2 moons, etc.
These analogies help bring the listener into the mindset of the presenter. This is key to effective story telling, from Aristotle to Steve Jobs. How can computing leverage those analogies?
It’s also been floated, somewhat in jest, that there are only five (5) unique movie themes, and that we are all connected ala the 6 degrees of Kevin Bacon (see books: Linked, Here Comes Everybody, Black Swan, etc).
So I decided to try something similar for Computer Science (CS): create a set of Five (5) Genre’s. They should be concise and powerful, and for me this set is based on the type of systems I’ve explored or developed. And of course these 5 Genre are related to other historically significant types of computer systems. So even if CS giants Turing, Dijkstra, Booch, or Denning, aren’t immediately visible, digging just a little deeper exposes their contributions to these Computer Science Genre’s. That’s why I really enjoy classifying myself as a Computer Scientist.~
A person with paper, pencil, eraser, and subject to strict discipline, is a universal machine. — Alan Turing
Computing is integral to science, not just as a tool for analyzing data but also as a method of thought and discovery. — Peter Denning
Computer science is no more about computers than astronomy is about telescopes — Edsger W. Dijkstra
Dependence on wizardry to mitigate the fundamental limitations of software is called hacking. — Grady Booch
~by earning a BS and MS in 1978–82 vintage UW Computer Science
What’s cool is that my personal agent Mano, the Polynesian name for the mighty shark, I introduced recently (to help put the cable back) leverages these classifications as it navigates the complexities and develops robust architectures. KnowledgeShark.me uses Genre discrimination as a major part of its architecture formalism, especially for story telling; the selling of the ideas. And JITL’s* help download, learn and invoke the right information at the right time (Like Trinity in the movie Matrix).
*JITL = Just In Time Learning.
Genre is a third of my architecture triad (3) developed to capture these inventions. More on the other 2/3rds in a later post.
Enter the FIVE (5) Genre
Genre (from French genre ‘kind, sort’) is any form or type of communication in any mode (written, spoken, digital, artistic, etc.) with socially-agreed-upon conventions developed over time. (wikipedia)
Computer Science has a long history of “Socially-agreed-upon conventions” and software architects in particular have developed their fair share. But finding a way to reduce the complexity through a set of 5 Genre will really help. My list is a great opening. I also found out that Peter Denning, in his excellent “Great Principles of Computing” book which I incorporated into my first Computer Science teaching gig, denoted six categories in their great principles framework. (So my 5 is a good start but also tailored to deployment.)
“One of the things that makes computing so interesting is the utter generality of binary representations. We choose to make the bits mean anything we wish.” — Vint Ceft (2014) forward to Peter Dennings book.
I met Vint Ceft a couple times. I think he invented the ethernet protocols:-)
I’ve also enjoyed working and visiting France, Japan, and other countries. Research started with the Ada computer language, but continued onto real-time distributed computing, mobile systems, and even cool DARPA stuff.
As an intersting analogy, I also just found out that they denoted five genres that literature students should be familiar with: Poetry, Drama, Prose, Nonfiction, and Media.(link)
TODAY a dominate 21st century challenge is scale; too much information is trying to be sent over complex networks such that you either get too much unwanted data; cannot recognize the relevant data quick enough; it gets lost in your inbox; or the information doesn’t arrive, either because it wasn’t addressed to you, or the network routing failed to reliably deliver the information. These can happen in a “connected” but overloaded network but will definitely occur in the ad-hoc “disconnected” or “disadvantaged” network.
This is the crux of modern “distributed computing” which I believe is key to all computing. Just look at the number of processors/cores on a 2021 MacBook Pro (eg., 8-core CPU, 8-core GPU, 16-core Neural Engine).
Managing dynamic changes in information flow and dissemination are dealt with differently by the 5 Genre, as they all must deal with computing complexity across varying constraints.
Or try a Zoom remote meeting in 2020 over a slow two bar internet connection.
Ok, here they are in a few images and words about the genre’s. The fun part is to describe your own systems in relation to these 5 (much like the Player movie).
GENRE 1: Mobile (Factory) Apps
A collection of mobile devices that interact with each other based on location and other attributres. (For example, a fork lift operator drives down to pick up a product and is told to stop by for another product, since their location was being tracked. Something like an uber for the factory.)
GENRE 2: Ad-Hoc Soldier Network
1. Mobile Apps consist of distinct and rapidly changing regions of interest (geographic, time, etc)
2. The ad-hoc network is connection challenged, has a rapidly changing topology, and must work during constant interruptions of service (and any cell tower has a bullseye on it).
3. There are many information domains which require rapidly changing interest groups (tracks, logistics, planning, fires, etc) and more will be continualluy developed.
4. Semantics of domains are defined in different places and over time which stress dissemintaion using typical Object Oriented approaches (e.g., Location, Time, Weather, QoS, etc).
* MANET: Mobile Ad-Hoc NETworks
GENRE 3: Sensor Command and Control (C2)
1. Real-Time Constraints (e.g., add in a new higher rate Radar; plug in a new off-the-shelf garphic monitor, monitor system)
2. Airplane Health and On-Board Apps (e.g., sensor output, how often, what network? Apps could be new market for after market enhancements — fuel savings, route finding, dynamic routing, etc)
3. User interface challenge the end-user to manage volumes of data
GENRE 4: Smart Energy Grid
The concept of the Smart Energy Grid would be smarter creation and distribution of energy products. But the dynamic nature of the grid aspect requires more dynamic Smart Nodes (SN) that are always adapting to their environment and dynamic requirements. (Something like the patent shown next.)
GENRE 5: Internet of Things (IoT)
The Internet of Things (IoT) is currently all the rage. Objects are just flowing around like getting around the Arc de Triomphe. Bluetooth and other dynamic information discovery and dissemination approaches are paramount for successful scaling.
The following shows a collection of devices that are all connected through protocols including BLE Bluetooth, WIFI, MQTT (pub/sub), a collaboration language using JSON, and a cloud infrastructure leveraging node-red. (More on the ESP-32 based devices in a later post as they are a IoT game changer, supporting WIFI and Bluetooth in a $10 part). They are housed in 3D printed devices called PetTutor.
NEXT GENERATION systems and deployment will come up with many new inventions and cool apps. I believe these 5 Genre will help relate those new inventions in a vocabulary and architecture approach that will help make others understand your latest genius idea.
For example, maybe you want to map your local reef stitching together GoPro cameras on an ARM, while using a floating GPS receiver?
Or maybe just remotely monitor and train your animals. The IoT Era potential is exciting. (ps. Energy Harvesting is an approach where the power is created by say clicking a light switch; no more batteries).
The potential for innovative solutions is exciting especially with what I call the IoT era. Managing the newest 21st century complexities requires architecture rigor that will benefit by relating the ideas with historically relevant genres and technologies. The IoT era potential is impressive, and Computer Science is key to their implementation.
Exciting automation approaches are possible when the Genre’s are combined with the other 2/3rds of the KnowledgeShark.me architecture triad (3) — the Architectural models and stakeholder interaction.
Now, how do the Iceberg and Death Star fit into this computer science architecture story? Not to mention the Sparkline (adapted from Resonance approach (link)).
Ok, to diffuse some of the suspense, the following is my modified version of a Sparkline which this computer science story travels along. Notice the flow from excitement, to reality, the iceberg (just inverting the internet) and then pulling out of the complexity gloom (much like the ending of those Hollywood stories pitched in The Player movie).
KnowledgeShark.me will be our navigator through this exciting Computer Science story.
EPILOG: My RTC College Analysis on the Denning Computer Science book:
The book and article goes into more detail where Denning says that Computing differs in 2 ways from other sciences.
(1) Transformation of Information
which is not simply its discovery, classification, storage or communication. Algorithms have the ability to read information into their structure and then modify the structure (creating new information).
(2) The Structure of computing is not just descriptive
but they are “Generative”
WE create a description for problem solving (through programming)
and this “Causes a machine to solve the problem” — generating new information.
This also means that the description can be stored to be acted on later by a computer. This is were the vast scalability of computing comes in: the description (the program) can be distributed world wide (like the app market).
Note, this differs from say a Cooking Recipe: That cooking “algorithm” is something a single human has to follow and must interpret a lot of the steps. So that cook book can’t be run on your computer, which is why most of those recipes end up with us wishing we “had” cooked them as they look great. Now if a factory cooking machine could be programmed, then those algorithms would be computing. Look at Supervisory control and data acquisition (SCADA) for example.
So “to think computationally is to interpret a problem as an information process and see to discover an algorithmic solution”. *Denning