Chapter 0: Game Plan
Welcome to my Smalltalk tutorial. In this series of articles, I hope to get you started on your programming journey. No prior experience is assumed, but you are expected to have a minimum of computer literacy, including things like booting an operating system, managing the desktop, managing system settings, installing applications, etc.
Programming tutorials typically revolve around creating a sample application. This could be any kind of application, say, for a website, or for a mobile device, or for video gaming. Web applications are most common because, in our world, the web is all-pervasive. But web apps are so boring!
In this tutorial, we shall try something different. We shall engage in one of the current areas of Information Technology (IT) that are exciting and ground-breaking. Areas such as data science, machine learning, virtual/augmented reality, robotics and the Internet of Things. I’ve chosen the Internet of Things (IoT). (Robotics is a related field since both involve embedded computer hardware.)
I’ve chosen IoT because it’s a good way to introduce you to computer hardware. Many people began their programming journey decades ago starting with computer kits such as Tandy Radio Shack TRS-80, Apple II/Macintosh, Commodore PET/VIC-20/64, Atari 400/800/1040ST, IBM PC, etc., using programming languages like BASIC, Pascal, and assembler. It’s good to continue this tradition with the latest computer kits such as the Raspberry Pi. As you proceed through the world of IT, you will find that having a fundamental understanding of computer hardware is extremely useful.
The Raspberry Pi is a very inexpensive little computer that’s ideal for IoT applications. You can purchase the Raspberry Pi 3 Bundle, which includes the Raspberry Pi 3 Model B board, 32GB SD card with NOOBS (New Out Of Box Software), computer case, and power supply for a mere $75. In addition to the Pi, you’ll also need USB keyboard, USB mouse, and HDMI monitor (with HDMI cable). (Alternatively, you can use your PC to connect to the Pi if you have one.)
NOOBS is the installation manager for Raspbian, the Linux operating system customized for the Raspberry Pi. Even if you are currently using Windows or macOS, it is good for a programmer to become familiar with Linux. Linux is a programmer’s operating system (at a low level, it is similar to macOS). Linux powers most of the world’s computer servers. Most web servers run atop of Linux. The Linux kernel is at the heart of consumer electronics (including Android devices, set-top boxes, smart TVs, PVRs, in-vehicle infotainment, networking gear), industrial automation, medical instrumentation, spaceflight software, etc.
Programming is all about technical problem-solving. And there are many, many different kinds of problems to solve in the course of software development, for example:
- computer hardware problems, including things like firmware update and hardware defects
- operating system problems, including things like driver updates and software defects
- application installation problems
- analyzing and understanding undocumented source code
- program design and architecture
- software testing and debugging
- application deployment and distribution
- code maintenance
- development tool updates and configuration
In this tutorial, we may touch on a few of these problem areas. Raspberry Pi and Linux are a fantastic combination for exposing you to these kinds of problems.
The programming language we’ll be using is Smalltalk. Smalltalk is the ideal teaching language for beginners. It is especially good for teaching object-oriented programming (OOP), which is by far the most popular style of programming in IT.
Smalltalk is supremely easy to learn, being one of the smallest, simplest, and most elegant languages ever created. At the same time, it’s incredibly powerful and versatile. Being a good teaching language is not at odds with being a practical, industrial language.
Throughout the tutorial, I will be providing URL links that you should explore in order to gain an understanding of things like Internet of Things, basic Linux commands, ARM processor architecture, etc.
So, let’s get started!