Introduction
Since a new year has now dawned on us, I thought now would be a pretty good time to write down some thoughts of trends either I've noticed this year, or things I became aware of this year that have been happening for some time.
Due to increased awareness on cybersecurity and the fact that more and more critical infrastructure is being trusted to software, the government is starting to develop recommendations, which could eventually turn into regulations around technical issues like memory safety. I'm happy to see that programmers are meeting the demand and developing languages that are both safe and efficient. At the same time those languages are improving old legacy systems at a pretty quick rate, with some very promising results. I am also seeing more and more code get pushed into the GPU brining parallelism to algorithms that were hard to parallelize, or in domains that typically consume a lot of CPU. I am optimistic that in the future we will see regulations that make sense, safe and efficient languages and more parallelism in our programs.
Government regulations in software
The Albertan government has started to take a stance on who can and cannot call themselves software engineer. As this article lays out APEGA has started to sue companies who have employees that call themselves "software engineer" but are not licensed engineers. Given the fact that in software bugs are the norm, I think this is the right direction even if it needs a little bit of refinment. If your accountant gave you the wrong answer or if your plumber tried to fix your toilet and it didn't work you would be pretty angry. One commenter in the aforementioned article asked rhetorically if we need the governments permission to build an app. I think putting it in those terms is a little glib although it is an interesting question and I think the answer depends on what kind of app. Some apps are minimal harm. Apps that are just a fart button for example, probably don't need the governments permission to be built. But what about software that we trust to govern EMS, or pipelines? Even seemingly innocous apps, like social media, software that routes text messages or word processors could have disastrous consequences if not working properly. For example, someone not receiving a timely text message could cause a relaitonship to break, or if social media broke down loved ones may not be informed of a death in a timely manner, or if the wrong word or comma is saved on a legal document it could have consequences in a court case. As we begin to trust software with more and more of our lives somebody needs to be accountable.
This year we've also started to see regulations and recommendations coming from the government on highly technical issues. A surprising example I learned from Herb Sutter in this video at about 41:31 is that the biden administration launched an executive order in response to ransomware shutting down hospitals and oil pipelines. As Herb Sutter says, it has become "intolerable". The department of commerce issued guidance that says "some programming languages such as C/C++ are not memory safe... where possible do not use" resulting in some critical government infrastructure being rewritten. This is interesting in that never before have I seen a government take a stance on a programming language. I think this is a good direction but I do hope that both academics and industry veterans are invovled in and leading the conversation.
Safe and efficient languages
Software engineers are meeting the demands from the people for more memory safe languages. The most interesting example is Herb Sutters experimental replacement for C++ and carbon. If I were a betting man, I would put money on these languages taking over as opposed to languages like rust, zig or go. As these are more compatible with existing code. We already have examples of languages that are backwards compatible beating perhaps superior languages that were not backwards compatible with existing structures. Look at, Dart vs Typescript or Kotlin's popularity for examples.
We are also beginning to see languages like Rust and Zig take over what previously would have been trust to only C/C++. Such as Rust in the Linux Kernel an Operating System written in Rust and in Bun, a new Javascript engine. Both the OS written in Rust and the java script engine written in Zig are significantly faster than their C/C++ counterparts, showing that it is possible to achieve memory safety and excellent performance.
GPU Programming
Finally I'm beginning to see more and more code being pushed into the GPU. For example Graph BLAS, a framework for doing graph calculations on the GPU is becoming a very solid standard. Then there is this experimental project, which is an interesting approach to building desktop applications that I think holds a lot of promise for complex UI's that demand good performance.
Conclusion
The future is bright for a programmer who is willing to embrace change such as government regulations learn programming languages that make it easier to achieve both memory safety and high performance and begin using the GPU for tasks that traditionally were CPU centric.