๐ CNDO #26: GitHub Copilot Chat
๐๏ธ What's new this week
๐ด Live show: Docker and Kubernetes: Live Q&A (Ep 228)
I'm solo on this week's livestream doing my monthly Q&A focused on my Udemy and Maven course content and all things Kubernetes, Docker, GitOps, GitHub Actions, and Cloud Native DevOps-related.๐
๐ง Podcast
Ep 137: Kasten K10 Kubernetes Backups
Last Friday, we released a podcast where Matt and I welcomed Michael Cade, the field CTO at Kasten by Veeam in this episode.
If you've been around servers for a while, you probably have heard of Veeam. It made its debut back in the late 2000's when virtual machines and implementations of VMs were big. I first found out about them back in those days, because it was a great free product for small virtual machine environments and data centers.
You can get the show notes on the episode page.
๐จโ๐ป What I'm working on / ๐ฆ Tweet of the week
My journey through using GitHub Copilot Chat to build a new app in a new(ish) language.
I'm not a Go programmer (yet). I've watched some videos and started several Udemy Go courses but never got far. I'm not new to Go as an ecosystem, tool, or community. I've used go for 7+ years but more as a Build/DevOps Engineer building and managing dependencies and as a go user with go install
to install various binaries as local utilities.
I've never written a go program from scratch that is real-world useful to me, until last week, and it only took four hours with GitHub Copilot Chat
I had wanted to do a project like this for a while: Write a program (that I intend to use) in a language I'm not well versed in, with an LLM doing 90% of the work. Ideally, avoid using StackOverflow, YouTube, and Googling for answers when I can use an LLM. It worked, and I was already getting better at prompting by the end of the four hours. I was also learning Go as I went.
GitHub Copilot Chat (which uses GPT-4) wrote nearly every line of code and the README.md with only my prompting, my interpreting its results, and then re-prompting. I had to do lots of tweaking, but without an LLM, I would have taken 20+ hours to do this thing that took 4.
I've always been pro-AI (as long as we figure out how to respect copyright and compensate content owners and artists), and this tiny project helped me answer some burning questions I've had in using LLMs for the last two years:
- Could an LLM shortcut the learning process for another language/tool so I could be more productive on day 1? (Answer is Yes) ๐
- Is an LLM in 2023 all I need to learn a new language/tool? (No. Read on for the why) ๐
- Is having a GPT-4 chatbot built into my IDE an essential part of the developer experience that I won't want to live without? (Yes) ๐
GitHub Copilot had grown up
I did some "DevOps demos" of GitHub Copilot two years ago when it was in beta, and I focused on things like YAML, TOML, and Markdown rather than demoing code (which is what everyone else was doing). I've kept Copilot turned on ever since. It has its usefulness, but when ChatGPT went public, and I was able to have conversations with a bot and have it refine my request over and over, it was a gamechanger on the original Copilot feature set of "write some comments, and we'll suggest a solution inline." For a time, I didn't use Copilot as much day-to-day.
The new GitHub Copilot Chat VSCode plugin is essentially Copilot v2, and has allowed me to leave ChatGPT behind and stop the "copy and paste between VSCode and ChatGPT" routine. I now have GPT-4 chat in my editor as a sidebar, inline questions, and even help with PRs. It keeps project history across VSCode restarts so I can continue the AI conversation where I left off. It's also aware of my larger project folder and not just the current file.
Things I'm worried about with Copilot and LLMs
These models are built on open source code and (I assume) some Stack Overflow, and I'm worried about the future of SO. What will the vast internet of resources for developers look like in ten or twenty years when LLMs do so much of our work for us? Will the dev community Q&As like Stack Exchange sites and tech subreddits die? Will code-sharing sites like CodePen, regexr, and JSFiddle go belly up?
Copilot today is nothing like a quality course
The big thing Copilot doesn't do is help me know what questions to ask it. It doesn't know when to keep me on the rails. When I'm using these LLMs and thinking about the difference in how quality courses are laid out, LLMs have big gaps. They tell me the what and how but not the why. They don't teach me best practices by volunteering that info or give me advice on "a better way" to do something, although GitHub Next: Copilot Labs is already starting to do that.
I like to tell stories and help you learn by building on knowledge from the previous lectures. LLMs don't do any of that in their current chat-bot interface, but there's no reason LLMs made for learning can't do it.
I'm excited about that future for learning, but also nervous about what it means for how I sell training.
Copilot doesn't teach me to code in the traditional sense, so I have to know enough to ask the right questions, review the response for errors, and fit its responses into the correct place of my project. It often suggests outdated dependencies, outdated language features or conventions, and rewrites existing code incorrectly in its responses. If I didn't have a programming background, it would often (maybe 30% of responses) give me an unusable answer.
Overall, it was exciting to go from start to finish in a single day, and I have learned (and relearned) some Go along the way. I was able to stay focused on solving my problems rather than gaining knowledge from a video that I might not need to use anytime soon.
๐ In case you missed it
(headlines from last week's newsletter that you can skip if you already read it)
๐ด Live show: CI/CD and GitOps w/Codefresh and Argo (Ep 227), July 27, 2023
Dan Garfield of CodeFresh joined me last week to talk about the growth of GitOps as a standard, growth of Argo, and more.
๐ Sysadmin Appreciation Day
Last Friday was Sysadmin Appreciation Day! Shout out to all the sysadmins out there. I was a Windows IT Pro, help desk and server admin, and occasional Unix sysadmin for the first 20 years of my career. Traditional IT stuff. I still fondly remember those roles (though I didn't realize how lucky I was then).
I respect those jobs even more today because they work as hard as the rest of us, but they also have to interact with their users more directly than the average developer. Imagine every time a user of that web app you built got to interact with you face-to-face when anything went wrong with the app (even unrelated to your work) and that's just part of what it's like to be help desk, desktop support, general IT Pro, etc.
To be good, and enjoy it, you have to know the tech rather deep across an insane range of disciplines and also be DMV-level comfortable with people that are unhappy and will likely use you as a way to vent about all the problems of tech.
It's hard, full of guesswork, and sometimes a thankless job. We all have a bit of this in our jobs or history, so this is an ode to all of you who spend your days helping others.
Here's to you, tech support! From someone who did your job and lived to tell the tale, you are fantastic, and the world "needs you on that wall."
๐ณ DockerCon registration is live ๐ณ
It's Docker's first hybrid conference. Free registration for the virtual conference. For the IRL, I'll be there in LA. We're still working on plans for what I'm doing around (and at) the event, so stay tuned!