On my mind and in my feed lately have been the incredible new advances of "AI" stuff. Although I try not to get too caught up in hype and fads, it does look more like this may materially impact my current career in a relevant time frame. At this point I feel like the pragmatic approach is to learn. Learn what it is, learn what it can do, learn what it's limits are, learn how to live and work with it. In the 'worst case' scenario I see a transition through three stages, at various velocities.
With the above in mind, I decided to sign up for GitHub's Copilot, an "AI pair programmer", as its feature page describes it. In reality it's a very advanced code-completion tool that uses a ton of context (and a large AI model trained on "public" code on GitHub) to produce remarkable results compared to traditional code-completion tools. I figured the best choice was to just dive in and start using it for my personal projects, trying and testing it as I went along. For my first experiment, I went searching the depths of my ideas folder and came up with a long-neglected but very small project, Feed Max!
Feed Max is a web game. The idea is that you go to the game page, you see a good boy named Max, and you click a button to feed him. Max's appearance changes depending on how fed he is. Technically, it' a very tiny MMORPG, in the style of thiswebsitewillselfdestruct.com, an excellent jam game. Everyone sees the same Max and everyone feeds the same Max. Max will slowly eat his food (like a good boy) so he needs somebody to keep feeding him all the time. That's it, very simple, very small, a very good project to test my new tool on.
The way I approached developing this game was to do so as normal, but just let Copilot offer things when it felt helpful. This turned out to work great, and far better than I could have thought. It very quickly understood things like Max was a dog and needed to be fed and that should be kept track of with a food counter. The docs mention that it's especially good at the most popular languages (Python, JavaScript, TypeScript, Ruby, Go, C# and C++) but it'll probably work for other languages too. In this project I used HTML, CSS, JS, PHP, and Bash, and it didn't seem to mind either of those last two at all. It had no problem writing nearly the entire back-end (albeit quite small) with just the file-name, and after adding an additional comment giving a file-overview did the rest.
This was fun! Although it might be the novelty of a new tool (I remember when I found ApexSQL), it was a much needed boost to help me remember how much I enjoy software development. To me this is a great sign, maybe I can not just work with these new programs, but also enjoy it. In terms of career prospects, I don't think I'm ready to put this on my resume yet, but it's a start. For now though, I'll keep experimenting and developing.
Happy Hacking!
- Chris
PS: Art by Craiyon, my art is...not that good.