My learning list for 2020
Turning the page into a new year is often useful to reflect on the previous period and look forward to the next one. I usually don’t set hard and fast “new year resolutions” but like some of you out there I have a general idea of what I’d like to dig deeper into over the next 12 months. Here’s some of what’s on that list.
My colleagues Marius Obert and Witalij Rudnicki have already shared their learning bucket lists for this year, and I thought I’d do the same. I find it fascinating to see what other people are interested in, both in how they differ and how they overlap.
Learning is what I do, and 2019 was no exception. While live streaming still reminds me of the art of plate spinning, I’ve become more comfortable with the tech. Along the way of course I’ve also become more proficient in some of the subjects we’ve covered, such as the SAP Cloud Application Programming Model, OData V4, Business Rules (and other business services) on SAP Cloud Platform Cloud Foundry, functional programming and more besides.
That said, I still feel as though I’ve no idea what I’m doing. But I’ve learned to accept that – it’s part of who I am, and that’s fine.
As James Governor and I talked briefly about in the last part of our interview at SAP TechEd 2019 Barcelona I feel quite strongly that the cloud is forming into what I’m going to call “the new mainframe”, with characteristics such as boundless computing resources, different forms of compute unit (from serverless through to VMs, from black box APIs through to software-as-as-service offerings) and consumption-based billing that I remember from the mid 1980s when we ran IBM big iron; in this context the billing was internal, but still measured in a similar way to what we see today.
But I think the most significant part of all of this is that, for the most part, the almost infinite power is at our fingertips in two very simple forms: web browser (i.e. native*) based GUIs and character terminals. In other words, the present and future of computing, in my eyes, is very much mainframe based in that we require very limited compute complexity on our desktops. This is partly why Chrome OS as a workstation operating system makes so much sense to me (beyond it also being more reliable, stable, and secure than anything else I’ve used).
*Yes, native. Web is the true native GUI, everything else is merely OS-specific.
This is the thinking behind my hashtag-based mantra #TheFutureIsTerminal – heck, I even have a tshirt that helps me make the point.
For me the terminal is the ultimate UI. Simple, reliable and pretty much ubiquitous. And it’s built on solid technology that has been around for as long as I have, so it’s stable and well understood. And much of the headless cloud computing power we have runs natively on Linux where remote terminal access is the obvious choice.
Add to this the scriptable nature of command line interfaces (CLIs) and application programming interfaces (APIs), combine it with some shell magic (such as bash or zsh) and you have a wonderful environment in which to work, and that is accessible from pretty much anywhere and from any device, even Windows-based devices! 😉 Joking aside, you may also be interested to listen to a reading aloud of Scott Hanselman‘s post on consoles, terminals & shells: What’s the difference between a console, a terminal, and a shell?
So some of the items that I’d like to dig deeper into and learn more about this year are a result of this way of looking at computing, both in business and as a hobby.
Part 1 – Understanding core things better
And so to the list, where I begin with a category that contains important generic topics that I know something about already, but not enough.
Too often I hack around with core services and utilities on the command line, and find myself googling how to do simple things, instead of reading the manual (the man pages that are automatically available right there in the terminal environment) and building up a more solid and long lasting understanding.
An example this weekend was the Secure Shell (SSH), which I was using without knowing as much as I feel as though I should do. I hacked around with configuration (ssh_config and sshd_config, if you’re interested) until I got things working. But I knew that I was really just doing the equivalent of thrashing around until things stopped being broken.
Another related example is the vast X Windows System, which, while pretty old, still works well and reliably, and compliments the terminal environment nicely. I have a fondness for X which is a little arcane, but hits that sweet spot for me in being both interesting as an old set of technologies to dig into as a hobbyist (or perhaps a computing archaeologist) and useful as tech that still works today. X is perhaps as relevant now in the new mainframe era as it ever was. I have an old book that I’ve taken from my shelves that I’d like to dig into for this.
So SSH and the X Windows System are just two technologies that I’d like to understand better. But that’s only the tip of the iceberg. In the same vein, I’d like to grow my understanding of Cloud Foundry and have the CF CLI be second nature to me. Similarly with Ansible, which I used recently for the first time to manage the Raspberry Pi cluster I set up with my son Joseph to eventually run a local Kubernetes cluster.
Part 2 – New technologies
And so we come to the second part of the list, of technologies that are mostly new to me, but ones that I see will play an important part in the new mainframe era future.
With that, Kubernetes is in first place (this is why I built the cluster over the holiday period), as a specific example of a more general topic that represents containerisation.
This covers virtualisation in the form of virtual machines (VMs), but more specifically LXC powered containers and related technologies such as Docker (if you want to learn more about Docker, Witalij Rudnicki has a nice series “Understanding Containers” here on the SAP Community).
I guess there’s an irony in the title of this part of the list (“New technologies”), in that none of them are really new – the mainframe operating systems that I used in the 1980s ran on virtual machines way back then, specifically I remember that the MVS/XA and MVS/ESA operating system environments were actually hosted on VM/CMS which dates back to the 1970s.
One thing that is relatively new, in terms of being available, is GitHub Actions which is one of the building blocks that has been released on the platform since Microsoft took over, and is one of the things that has helped cement my thoughts about the cloud being the new mainframe. I’ve dabbled already with GitHub Actions, having built an action to auto-assign a new issue to a specific project (and I use this action every day), in an attempt to get my head around the concepts, but I’d like to extend my knowledge here too.
Part 3 – Language and expression
Part 4 – SAP technologies
There’s no particular reason why this part is at the end; as you might have guessed, everything on my list so far is to help my working life in the SAP world. As SAP has moved more and more towards embracing open standards and technologies, it’s natural that the overlap between SAP and non-SAP topics is getting larger and larger all the time.
I’m particularly looking forward to diving deeper into the Cloud SDK, and how to use that, along with services on SAP Cloud Platform generally, to build upon existing “brownfield” installations. This of course means using lots of different technologies together, combining the API Hub as a directory for available services, Cloud Foundry as the deployment target platform, using the Extension Factory (and, by association, Kyma).
So there you have it. If nothing drastic changes, this is the learning trajectory that I hope to keep myself following. One thing is for certain, and that’s I’m looking forward to learning and sharing, whatever the topic.
See you online!