VB, Linux, Copilot, AI and a Meme


For a myriad of reasons, my personal interaction with Linux continues to increase. I’d say the biggest contributor to this is, of course, the Raspberry Pi. With that said, having WSL2 has also contributed to this; initially mostly because of, well, Raspberry Pi. The release of Microsoft Windows 11 and it limiting which machines it will install upon has also contributed; what do do with these perfectly usable machines once Windows 7 and Windows 10 are no longer an option?

Combine all of this with .NET “Core” over the past several years and the general idea that .NET could be used to bust through the silo’d walls set forth by the different providers of operating systems. It’s been awesome to be able to write programs that can work cross-platform; so much so that I’ve spent a tremendous amount of time working on Community.VisualBasic in hopes that a good option for writing applications that can work on multiple applications would come along… doing some small part to help nudge in this direction. Until now, been restricted to console programs… utilities and, dare I say, applications that have that very retro sort of feeling; reminiscent of the days of MS-DOS.

So this explains the increase in my personal usage of Linux; but not necessarily the above meme. So what could it be that would cause someone like me to seriously consider what would it take to make the leap.

I’ve also spent a not-so-insignificant amount of time watching javidx9, following along and doing what he’s doing in his videos… but in VB (of course). The olc:PixelGameEngine project is pretty nice… if you are of the C/C++ sort; with that said though, the styling of the API is very straight forward and has really resonated with me. Also, his videos are really this awesome… highly recommend watching them.

OK, but this still doesn’t really explain the meme…

As I pointed out, I’ve followed along with these videos and have, essentially, duplicated much of the olc:PixelGameEngine API for use with VB (as well as the examples done in the videos - like I said, I followed along). Do I keep these to myself or could something be done with these?

Last week I cleaned up a bit of this source, did a bit of re-org on it and made it available at vbPixelGameEngine. Right now it has three samples… will be working on adding more in the future.

Again… what does this have to do with the meme?

One of the things about olc:PixelGameEngine is that it not only works on Windows, but also Linux. I set my mind to seeing if I could tackle the necessary pieces and parts to do the same in vbPixelGameEngine. In the process, it became clear that I needed to segment this functionality out into a separate project to focus on just the necessary functionality of getting an X11 window to show, handle basic events and, ultimately, get the minimal functionality of OpenGL wired up.

After a lot of failed attempts due to bad P/Invoke issues, repeated restarts of WSL2 (wls --shutdown is your friend)… several crashes of Visual Studio (not just crashes, but “gone dumb” is the best phrase I can think of to describe its behavior).

Now, don’t get me wrong, having the ability to be on Windows 11 with the full features (when they are working?) of Visual Studio available for writing and debugging an application for Debian Linux (without a secondary machine) is simply AMAZING!!!! And to be able to do this in VB… MIRACULOUS!!!!

I’ll also share that the documentation for X11 is OK; but really wasn’t able to find any sort of straight forward examples in the “getting started” style. But what is really hard for me to wrap my head around is that the documentation, in at least one instance (maybe more?), doesn’t seem to align with actual usage. Making it so that operating off of the documentation alone a recipe for failure. XClientMessageEvent and message_type… I’m talking about you.

I finally reached the “Hello World” stage with a functioning window drawing multi-colored pixels in all their wonderful splendor!

Hello World

Keep in mind… this is a VB project (.NET 8) in Visual Studio on Windows 11 running (debugging) a Linux (Debian) graphical application (via WSL2). Take a moment to think about that… and then think of the possibilities!

OK, but does this really explain the meme?

Well you got me there. All I’ve done is explain that VB is certainly capable of cross-platform, even graphical, applications. The next “push” causing me to take Linux seriously is for a reason that might not seem logical; but it really comes down to Copilot. I’m really not liking the fact that the beta (Copilot (preview)) was pushed, and activated, automatically by Microsoft on Windows 11 - all without my consent, desire or any associated prompt. This combined with the constant stupidity that is “Microsoft Updates” that can’t simply restart the machine to finish the task; instead has to “tell me something” or ask questions that I’ve already answered many times previously.

Don’t get me wrong, I think these things are great for a lot of people; but the fact that control of my machine is slowly being taken away from me, well, bothers me.

I’m also not keen on the idea that much of what I do on the machine is monitored; it’s already bad enough. By the very nature of what Copilot is supposed to be able to do, this is only going to get worse. This would entail the literal monitoring of everything in order for context to be known… and, what makes this worse, this context will most likely be shared with a cloud service instead of it being local on the machine. And will I be able to opt out of this?

This all sounds very familiar that I’m getting the distinct feeling that a new battle is about to begin and I’m not so sure that I want to go along for the ride this time. Copilot sounds like the next phase of it’s integral to the OS and can’t be unbundled… again, sounds very familiar.

So the more I hear about Windows 12; the more I’m thinking that the writing is on the wall. It’s not a choice to be made lightly and it is my true hope that Microsoft isn’t going to do what I fear they will do. I love Windows! But the move from Windows 10 to Windows 11 was left wanting… it really felt like change-for-change-sake. But the move to Windows 12 outright leaves me strongly considering looking elsewhere!

So having a way to use the language I love on something other than Windows 12 is a welcomed opportunity in the event that Windows 12 is what I fear it will be.

Who knows… maybe the future I fear is unfounded. I can only hope this to be the case - but the gold rush of “AI” I fear is to attractive.

You don’t like the recent advances in “AI”?

Don’t get me wrong, I really love this stuff. Do I think it is going to fundamentally change the world? Yes and know. It, like any other tool, will cause changes in some scenarios; but I think it is being pushed for usage in scenarios that aren’t appropriate. The general public is buying into the hype that “machines can think” and this simply isn’t the case. Being programmed to make a decision isn’t “thinking”; no matter how complex a decision tree is, thought is something that is more than simply processing a decision tree.

To better explain this, I highly recommend listening to someone that is way more versed on the subject than I by watching What’s the future for generative AI? - The Turing Lectures with Mike Wooldridge.

However, one thing that I will say that I’m not a fan of is the idea that the majority of the services making generative AI have done so “in the cloud”. We are continuing to, voluntarily, feed the data collection demon… and, in the process, slowly eating away that any concept of personal privacy.

To be clear, not saying I’m against generative AI; I’m against data logging and collection to feed someones cloud instance of said generative AI. ;-)

  • Note that as of the time of this writing that this effort hasn’t been merged back into the main project; there’s still a bit more to get done, but it will be soon.
This post is licensed under CC BY 4.0 by the author.